summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--UnoControls/util/exports.map10
-rw-r--r--UnoControls/util/makefile.mk2
-rwxr-xr-xaccessibility/bridge/org/openoffice/java/accessibility/makefile.mk11
-rw-r--r--accessibility/util/acc.map2
-rw-r--r--afms/makefile.mk3
-rw-r--r--animations/source/animcore/animcore.map9
-rw-r--r--animations/source/animcore/makefile.mk2
-rw-r--r--apache-commons/download/README16
-rw-r--r--apache-commons/download/commons-codec-1.3-src.tar.gzbin80427 -> 0 bytes
-rw-r--r--apache-commons/download/commons-httpclient-3.1-src.tar.gzbin1882664 -> 0 bytes
-rw-r--r--apache-commons/download/commons-lang-2.3-src.tar.gzbin474681 -> 0 bytes
-rw-r--r--apache-commons/download/commons-logging-1.1.1-src.tar.gzbin189448 -> 0 bytes
-rw-r--r--apache-commons/java/codec/makefile.mk1
-rw-r--r--apache-commons/java/httpclient/makefile.mk1
-rw-r--r--apache-commons/java/lang/makefile.mk1
-rw-r--r--apache-commons/java/logging/makefile.mk1
-rw-r--r--autodoc/source/display/html/cfrstd.cxx2
-rw-r--r--automation/source/testtool/filter.pl20
-rw-r--r--automation/source/testtool/makefile.mk5
-rw-r--r--avmedia/source/quicktime/avmediaQuickTime.map8
-rw-r--r--avmedia/source/quicktime/makefile.mk2
-rw-r--r--basctl/source/basicide/baside4.cxx31
-rw-r--r--basctl/source/basicide/makefile.mk4
-rwxr-xr-xbasctl/util/basctl.map2
-rw-r--r--basebmp/test/basictest.cxx15
-rw-r--r--basebmp/test/bmpmasktest.cxx6
-rw-r--r--basebmp/test/bmptest.cxx6
-rw-r--r--basebmp/test/cliptest.cxx6
-rw-r--r--basebmp/test/export.map4
-rw-r--r--basebmp/test/filltest.cxx6
-rw-r--r--basebmp/test/linetest.cxx6
-rw-r--r--basebmp/test/makefile.mk27
-rw-r--r--basebmp/test/masktest.cxx6
-rw-r--r--basebmp/test/polytest.cxx6
-rw-r--r--basegfx/inc/basegfx/matrix/b2dhommatrixtools.hxx7
-rw-r--r--basegfx/inc/basegfx/numeric/ftools.hxx2
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolygon.hxx6
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx6
-rw-r--r--basegfx/inc/basegfx/polygon/b3dgeometry.hxx70
-rw-r--r--basegfx/inc/basegfx/range/b2dmultirange.hxx114
-rw-r--r--basegfx/inc/basegfx/range/b2dpolyrange.hxx145
-rw-r--r--basegfx/inc/basegfx/range/b2drangeclipper.hxx (renamed from basegfx/source/polygon/b3dgeometry.cxx)40
-rw-r--r--basegfx/inc/basegfx/tools/b2dclipstate.hxx119
-rw-r--r--basegfx/inc/basegfx/tools/gradienttools.hxx18
-rw-r--r--basegfx/inc/basegfx/tools/keystoplerp.hxx100
-rw-r--r--basegfx/inc/basegfx/tools/lerp.hxx (renamed from slideshow/source/inc/lerp.hxx)17
-rw-r--r--basegfx/prj/build.lst2
-rw-r--r--basegfx/prj/d.lst5
-rw-r--r--basegfx/qa/mkpolygons.pl344
-rw-r--r--basegfx/source/color/bcolortools.cxx2
-rw-r--r--basegfx/source/matrix/b2dhommatrixtools.cxx28
-rw-r--r--basegfx/source/polygon/b2dpolygon.cxx106
-rw-r--r--basegfx/source/polygon/b2dpolygontools.cxx3
-rw-r--r--basegfx/source/polygon/b2dpolypolygon.cxx52
-rw-r--r--basegfx/source/polygon/b2dsvgpolypolygon.cxx51
-rw-r--r--basegfx/source/range/b2dmultirange.cxx279
-rw-r--r--basegfx/source/range/b2dpolyrange.cxx423
-rw-r--r--basegfx/source/range/b2drangeclipper.cxx950
-rw-r--r--basegfx/source/range/makefile.mk3
-rw-r--r--basegfx/source/tools/b2dclipstate.cxx662
-rw-r--r--basegfx/source/tools/gradienttools.cxx101
-rw-r--r--basegfx/source/tools/keystoplerp.cxx107
-rwxr-xr-xbasegfx/source/tools/makefile.mk4
-rw-r--r--basegfx/test/basegfx1d.cxx16
-rw-r--r--basegfx/test/basegfx2d.cxx332
-rw-r--r--basegfx/test/basegfx3d.cxx22
-rw-r--r--basegfx/test/basegfxtools.cxx110
-rw-r--r--basegfx/test/boxclipper.cxx419
-rw-r--r--basegfx/test/clipstate.cxx178
-rw-r--r--basegfx/test/export.map4
-rw-r--r--basegfx/test/genericclipper.cxx159
-rw-r--r--basegfx/test/makefile.mk45
-rw-r--r--basegfx/test/tests.txt20
-rw-r--r--basic/source/app/basic.src4
-rw-r--r--basic/source/basmgr/basmgr.cxx27
-rw-r--r--basic/source/classes/sb.cxx7
-rw-r--r--[-rwxr-xr-x]basic/source/classes/sbunoobj.cxx14
-rw-r--r--beanshell/makefile.mk1
-rw-r--r--berkeleydb/db-4.7.25.patch9
-rw-r--r--berkeleydb/makefile.mk6
-rw-r--r--bitstream_vera_fonts/fonts/ttf_dejavu/makefile.mk1
-rw-r--r--bitstream_vera_fonts/fonts/ttf_gentium/makefile.mk1
-rw-r--r--bitstream_vera_fonts/fonts/ttf_liberation/makefile.mk1
-rw-r--r--boost/makefile.mk1
-rw-r--r--bootstrap.15
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/abi.cxx29
-rw-r--r--bridges/test/java_uno/acquire/makefile.mk18
-rw-r--r--bridges/test/java_uno/acquire/testacquire.map8
-rw-r--r--bridges/test/java_uno/any/makefile.mk8
-rw-r--r--bridges/test/java_uno/any/test_javauno_any.map2
-rw-r--r--bridges/test/java_uno/equals/makefile.mk6
-rw-r--r--bridges/test/java_uno/equals/testequals.map8
-rw-r--r--bridges/test/java_uno/nativethreadpool/makefile.mk4
-rw-r--r--cairo/cairo/makefile.mk2
-rw-r--r--cairo/pixman/makefile.mk4
-rw-r--r--canvas/inc/canvas/base/graphicdevicebase.hxx82
-rwxr-xr-x[-rw-r--r--]canvas/inc/canvas/canvastools.hxx35
-rw-r--r--canvas/inc/canvas/parametricpolypolygon.hxx40
-rw-r--r--canvas/prj/build.lst1
-rw-r--r--canvas/source/cairo/cairo_canvas.hxx3
-rw-r--r--canvas/source/cairo/cairo_canvashelper.cxx309
-rw-r--r--canvas/source/cairo/cairo_spritecanvas.hxx3
-rw-r--r--canvas/source/cairo/exports.map8
-rw-r--r--canvas/source/cairo/makefile.mk6
-rw-r--r--canvas/source/directx/dx_canvas.hxx5
-rwxr-xr-xcanvas/source/directx/dx_canvashelper_texturefill.cxx446
-rwxr-xr-xcanvas/source/directx/dx_impltools.cxx2
-rwxr-xr-xcanvas/source/directx/dx_spritecanvas.hxx17
-rw-r--r--canvas/source/factory/canvasfactory.map8
-rw-r--r--canvas/source/factory/makefile.mk2
-rw-r--r--canvas/source/java/BackBuffer.java112
-rw-r--r--canvas/source/java/BezierPolyPolygon.java151
-rw-r--r--canvas/source/java/BitmapCanvas.java136
-rw-r--r--canvas/source/java/BufferedGraphics2D.java600
-rw-r--r--canvas/source/java/CanvasBase.java341
-rw-r--r--canvas/source/java/CanvasBitmap.java252
-rw-r--r--canvas/source/java/CanvasClonedSprite.java185
-rw-r--r--canvas/source/java/CanvasCustomSprite.java204
-rw-r--r--canvas/source/java/CanvasFont.java116
-rw-r--r--canvas/source/java/CanvasGraphicDevice.java222
-rw-r--r--canvas/source/java/CanvasSprite.java308
-rw-r--r--canvas/source/java/CanvasTest_perftest.java676
-rw-r--r--canvas/source/java/CanvasUtils.java627
-rw-r--r--canvas/source/java/JavaCanvas.java675
-rw-r--r--canvas/source/java/LinePolyPolygon.java192
-rw-r--r--canvas/source/java/SpriteBase.java34
-rw-r--r--canvas/source/java/SpriteRep.java175
-rw-r--r--canvas/source/java/SpriteRunner.java200
-rw-r--r--canvas/source/java/TextLayout.java205
-rw-r--r--canvas/source/java/aqua/WindowAdapter.java202
-rw-r--r--canvas/source/java/java_Service.java118
-rw-r--r--canvas/source/java/makefile.mk93
-rw-r--r--canvas/source/java/manifest1
-rw-r--r--canvas/source/java/perftest/PerfTest.java314
-rw-r--r--canvas/source/java/perftest/WindowAdapter.java197
-rw-r--r--canvas/source/java/perftest/makefile.mk55
-rw-r--r--canvas/source/java/perftest/manifest1
-rw-r--r--canvas/source/java/win/WindowAdapter.java199
-rw-r--r--canvas/source/java/x11/WindowAdapter.java197
-rw-r--r--canvas/source/null/exports.map8
-rw-r--r--canvas/source/null/makefile.mk2
-rw-r--r--canvas/source/null/null_spritecanvas.hxx4
-rw-r--r--canvas/source/simplecanvas/exports.map8
-rw-r--r--canvas/source/simplecanvas/makefile.mk2
-rwxr-xr-x[-rw-r--r--]canvas/source/tools/canvastools.cxx48
-rw-r--r--canvas/source/tools/image.cxx2
-rw-r--r--canvas/source/tools/parametricpolypolygon.cxx114
-rw-r--r--canvas/source/tools/verifyinput.cxx4
-rw-r--r--canvas/source/vcl/canvas.hxx3
-rwxr-xr-x[-rw-r--r--]canvas/source/vcl/canvashelper_texturefill.cxx476
-rw-r--r--canvas/source/vcl/exports.map8
-rw-r--r--canvas/source/vcl/makefile.mk2
-rw-r--r--canvas/source/vcl/spritecanvas.hxx3
-rw-r--r--chart2/prj/build.lst1
-rw-r--r--chart2/qa/unoapi/Test.java51
-rw-r--r--chart2/qa/unoapi/makefile.mk30
-rw-r--r--chart2/source/controller/controller.map8
-rw-r--r--chart2/source/controller/makefile.mk2
-rw-r--r--chart2/source/model/makefile.mk2
-rw-r--r--chart2/source/model/model.map8
-rw-r--r--chart2/source/tools/tools.map8
-rw-r--r--chart2/source/view/view.map9
-rw-r--r--cli_ure/source/basetypes/makefile.mk17
-rw-r--r--cli_ure/source/climaker/makefile.mk2
-rw-r--r--cli_ure/source/native/makefile.mk15
-rw-r--r--cli_ure/source/native/msvc.map2
-rw-r--r--cli_ure/source/ure/makefile.mk17
-rw-r--r--cli_ure/version/makefile.mk9
-rw-r--r--codemaker/test/cppumaker/makefile.mk2
-rw-r--r--comphelper/qa/makefile.mk2
-rw-r--r--configmgr/prj/build.lst1
-rw-r--r--configmgr/qa/unit/makefile.mk2
-rw-r--r--configmgr/qa/unoapi/Test.java50
-rw-r--r--configmgr/qa/unoapi/makefile.mk20
-rw-r--r--configure.in289
-rw-r--r--connectivity/com/sun/star/sdbcx/comp/hsqldb/makefile.mk7
-rw-r--r--connectivity/source/cpool/dbpool.map8
-rw-r--r--connectivity/source/cpool/makefile.mk2
-rw-r--r--connectivity/source/dbtools/dbt.map8
-rw-r--r--connectivity/source/drivers/adabas/adabas.map8
-rw-r--r--connectivity/source/drivers/adabas/makefile.mk2
-rw-r--r--connectivity/source/drivers/calc/calc.map8
-rw-r--r--connectivity/source/drivers/calc/makefile.mk2
-rw-r--r--connectivity/source/drivers/dbase/DTable.cxx1
-rw-r--r--connectivity/source/drivers/dbase/dbase.map10
-rw-r--r--connectivity/source/drivers/dbase/makefile.mk2
-rw-r--r--connectivity/source/drivers/evoab/evoab.map8
-rw-r--r--connectivity/source/drivers/evoab/makefile.mk2
-rw-r--r--connectivity/source/drivers/evoab2/evoab2.map8
-rw-r--r--connectivity/source/drivers/evoab2/makefile.mk2
-rw-r--r--connectivity/source/drivers/flat/flat.map8
-rw-r--r--connectivity/source/drivers/flat/makefile.mk2
-rw-r--r--connectivity/source/drivers/jdbc/jdbc.map8
-rw-r--r--connectivity/source/drivers/jdbc/makefile.mk2
-rw-r--r--connectivity/source/drivers/kab/kab.map8
-rw-r--r--connectivity/source/drivers/kab/kabdrv.map2
-rw-r--r--connectivity/source/drivers/kab/makefile.mk2
-rwxr-xr-xconnectivity/source/drivers/macab/MacabConnection.cxx3
-rwxr-xr-xconnectivity/source/drivers/macab/MacabServices.cxx6
-rwxr-xr-xconnectivity/source/drivers/macab/macab.map8
-rwxr-xr-xconnectivity/source/drivers/macab/macab.xcu2
-rwxr-xr-xconnectivity/source/drivers/macab/macabdrv.map6
-rwxr-xr-xconnectivity/source/drivers/macab/makefile.mk4
-rw-r--r--connectivity/source/drivers/mozab/bootstrap/makefile.mk2
-rw-r--r--connectivity/source/drivers/mozab/bootstrap/mozbootstrap.map8
-rw-r--r--connectivity/source/drivers/mozab/makefile.mk2
-rw-r--r--connectivity/source/drivers/mozab/mozab.map8
-rw-r--r--connectivity/source/drivers/mozab/mozabdrv.map2
-rw-r--r--connectivity/source/drivers/mysql/makefile.mk2
-rw-r--r--connectivity/source/drivers/mysql/mysql.map8
-rw-r--r--connectivity/source/drivers/odbc/makefile.mk2
-rw-r--r--connectivity/source/drivers/odbc/odbc.map8
-rw-r--r--connectivity/source/manager/makefile.mk2
-rw-r--r--connectivity/source/manager/sdbc.map8
-rw-r--r--cppcanvas/source/mtfrenderer/implrenderer.cxx371
-rw-r--r--cppu/qa/makefile.mk2
-rw-r--r--cppuhelper/prj/build.lst1
-rw-r--r--cppuhelper/qa/ifcontainer/export.map2
-rw-r--r--cppuhelper/qa/ifcontainer/makefile.mk1
-rw-r--r--cppuhelper/qa/propertysetmixin/comp.map36
-rw-r--r--cppuhelper/qa/propertysetmixin/makefile.mk115
-rw-r--r--cppuhelper/qa/propertysetmixin/test.map2
-rw-r--r--cppuhelper/qa/propertysetmixin/test_propertysetmixin.cxx32
-rw-r--r--cppuhelper/qa/unourl/export.map2
-rw-r--r--cppuhelper/qa/unourl/makefile.mk1
-rw-r--r--cppuhelper/qa/weak/makefile.mk1
-rw-r--r--cppuhelper/test/cfg_test.map8
-rw-r--r--cppunit/cppunit-1.8.0-r1.patch2415
-rw-r--r--cppunit/makefile.mk147
-rw-r--r--cppunit/ooo-DllPlugInTester.mk (renamed from stoc/test/tdmanager/testtdmanager.gcc3.map)32
-rw-r--r--cppunit/ooo-cppunit_dll.mk100
-rw-r--r--cppunit/prj/build.lst5
-rw-r--r--cppunit/prj/d.lst33
-rw-r--r--cppunit/solarisfinite.patch14
-rw-r--r--cppunit/warnings.patch22
-rw-r--r--cppunit/windows.patch12
-rw-r--r--crashrep/source/all/crashrep.ulf12
-rw-r--r--cui/util/cui.map2
-rw-r--r--curl/makefile.mk1
-rw-r--r--dbaccess/prj/build.lst1
-rw-r--r--dbaccess/qa/complex/dbaccess/RowSet.java2
-rw-r--r--dbaccess/qa/unoapi/Test.java52
-rw-r--r--dbaccess/qa/unoapi/makefile.mk39
-rw-r--r--dbaccess/source/core/api/BookmarkSet.cxx4
-rw-r--r--dbaccess/source/core/api/BookmarkSet.hxx2
-rw-r--r--dbaccess/source/core/api/CacheSet.cxx2
-rw-r--r--dbaccess/source/core/api/CacheSet.hxx2
-rw-r--r--dbaccess/source/core/api/KeySet.cxx264
-rw-r--r--dbaccess/source/core/api/KeySet.hxx15
-rw-r--r--dbaccess/source/core/api/RowSet.cxx2
-rw-r--r--dbaccess/source/core/api/RowSetCache.cxx14
-rw-r--r--dbaccess/source/core/api/RowSetCache.hxx3
-rw-r--r--dbaccess/source/core/api/SingleSelectQueryComposer.cxx28
-rw-r--r--dbaccess/source/ext/adabas/adabasui.map8
-rw-r--r--dbaccess/source/ext/adabas/makefile.mk2
-rw-r--r--dbaccess/source/ext/macromigration/dbmm.map8
-rw-r--r--dbaccess/source/ext/macromigration/makefile.mk2
-rw-r--r--dbaccess/source/filter/migration/exports.map9
-rw-r--r--dbaccess/source/filter/migration/makefile.mk2
-rw-r--r--dbaccess/source/filter/xml/exports.map9
-rw-r--r--dbaccess/source/filter/xml/makefile.mk2
-rw-r--r--dbaccess/source/ui/control/tabletree.cxx56
-rw-r--r--dbaccess/source/ui/misc/WCopyTable.cxx3
-rw-r--r--dbaccess/util/dba.map8
-rw-r--r--dbaccess/util/dbu.map8
-rw-r--r--dbaccess/util/makefile.mk4
-rw-r--r--dbaccess/util/sdbt.map8
-rw-r--r--default_images/res/mainapp_16.pngbin948 -> 893 bytes
-rw-r--r--default_images/res/mainapp_16_8.pngbin1020 -> 893 bytes
-rw-r--r--default_images/res/mainapp_16_h.pngbin173 -> 3675 bytes
-rw-r--r--default_images/res/mainapp_32.pngbin2271 -> 2429 bytes
-rw-r--r--default_images/res/mainapp_32_8.pngbin2208 -> 2429 bytes
-rw-r--r--default_images/res/mainapp_32_h.pngbin275 -> 3859 bytes
-rw-r--r--default_images/res/mainapp_48_8.pngbin3577 -> 4184 bytes
-rw-r--r--default_images/res/printeradmin_16.pngbin888 -> 4259 bytes
-rw-r--r--default_images/res/printeradmin_16_8.pngbin869 -> 4259 bytes
-rw-r--r--default_images/res/printeradmin_16_h.pngbin194 -> 3671 bytes
-rw-r--r--default_images/res/printeradmin_32.pngbin1885 -> 5595 bytes
-rw-r--r--default_images/res/printeradmin_32_8.pngbin1756 -> 5595 bytes
-rw-r--r--default_images/res/printeradmin_32_h.pngbin305 -> 3916 bytes
-rw-r--r--default_images/res/printeradmin_48_8.pngbin2902 -> 7337 bytes
-rw-r--r--desktop/qa/deployment_misc/makefile.mk1
-rw-r--r--desktop/source/app/app.cxx36
-rw-r--r--desktop/source/app/appinit.cxx5
-rw-r--r--desktop/source/app/cmdlineargs.cxx13
-rw-r--r--desktop/source/app/cmdlineargs.hxx2
-rw-r--r--desktop/source/app/copyright_ascii_ooo.c8
-rw-r--r--desktop/source/app/copyright_ascii_sun.c14
-rw-r--r--desktop/source/app/desktop.src2
-rw-r--r--desktop/source/app/version.map2
-rw-r--r--desktop/source/deployment/deployment.map8
-rw-r--r--desktop/source/deployment/gui/makefile.mk2
-rw-r--r--desktop/source/deployment/makefile.mk2
-rw-r--r--desktop/source/inc/exithelper.hxx4
-rw-r--r--desktop/source/migration/services/makefile.mk2
-rw-r--r--desktop/source/migration/services/migrationoo2.map8
-rw-r--r--desktop/source/offacc/exports.map10
-rw-r--r--desktop/source/offacc/makefile.mk2
-rw-r--r--desktop/source/pkgchk/unopkg/version.map2
-rw-r--r--desktop/source/so_comp/exports.map10
-rw-r--r--desktop/source/so_comp/makefile.mk2
-rw-r--r--desktop/source/splash/exports.map10
-rw-r--r--desktop/source/splash/makefile.mk2
-rw-r--r--desktop/util/ooverinfo.rc4
-rw-r--r--desktop/util/ooverinfo2.rc2
-rw-r--r--desktop/util/verinfo.rc4
-rw-r--r--desktop/win32/source/applauncher/makefile.mk2
-rw-r--r--desktop/win32/source/applauncher/ooo/makefile.mk2
-rw-r--r--drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx20
-rw-r--r--drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx7
-rw-r--r--drawinglayer/source/primitive3d/hatchtextureprimitive3d.cxx6
-rw-r--r--drawinglayer/source/processor2d/vclhelpergradient.cxx16
-rw-r--r--drawinglayer/source/processor2d/vclprocessor2d.cxx2
-rw-r--r--drawinglayer/source/processor3d/defaultprocessor3d.cxx10
-rw-r--r--drawinglayer/source/texture/texture.cxx130
-rw-r--r--drawinglayer/source/texture/texture3d.cxx2
-rw-r--r--dtrans/source/generic/exports.map9
-rw-r--r--dtrans/source/generic/makefile.mk2
-rw-r--r--dtrans/util/exports.map10
-rw-r--r--dtrans/util/makefile.mk2
-rw-r--r--editeng/source/editeng/editdbg.cxx2
-rw-r--r--epm/makefile.mk1
-rw-r--r--eventattacher/source/exports.map10
-rw-r--r--eventattacher/source/makefile.mk2
-rw-r--r--expat/makefile.mk1
-rw-r--r--extensions/prj/build.lst1
-rw-r--r--extensions/qa/unoapi/Test.java50
-rw-r--r--extensions/qa/unoapi/makefile.mk30
-rw-r--r--extensions/source/abpilot/abp.map8
-rw-r--r--extensions/source/abpilot/makefile.mk2
-rw-r--r--extensions/source/activex/main/makefile.mk4
-rw-r--r--extensions/source/bibliography/exports.map10
-rw-r--r--extensions/source/bibliography/makefile.mk2
-rw-r--r--extensions/source/dbpilots/dbp.map8
-rw-r--r--extensions/source/dbpilots/makefile.mk2
-rw-r--r--extensions/source/logging/log.map8
-rw-r--r--extensions/source/logging/makefile.mk2
-rw-r--r--extensions/source/oooimprovecore/makefile.mk2
-rw-r--r--extensions/source/oooimprovecore/oooimprovecore.map8
-rw-r--r--extensions/source/oooimprovement/makefile.mk2
-rw-r--r--extensions/source/oooimprovement/oooimprovement.map11
-rw-r--r--extensions/source/plugin/unx/npwrap.cxx2
-rw-r--r--extensions/source/plugin/util/exports.map10
-rw-r--r--extensions/source/plugin/util/makefile.mk2
-rw-r--r--extensions/source/preload/makefile.mk2
-rw-r--r--extensions/source/preload/preload.map8
-rw-r--r--extensions/source/preload/preload.src6
-rw-r--r--extensions/source/propctrlr/makefile.mk2
-rw-r--r--extensions/source/propctrlr/pcr.map8
-rw-r--r--extensions/source/resource/exports.map10
-rw-r--r--extensions/source/resource/makefile.mk2
-rw-r--r--extensions/source/scanner/exports.map10
-rw-r--r--extensions/source/scanner/makefile.mk2
-rw-r--r--extensions/source/svg/exports.map10
-rw-r--r--extensions/source/svg/makefile.mk2
-rw-r--r--extensions/source/update/check/makefile.mk2
-rw-r--r--extensions/source/update/check/updatecheckjob.cxx62
-rw-r--r--extensions/source/update/exports.map10
-rw-r--r--extensions/source/update/feed/makefile.mk2
-rw-r--r--extensions/source/update/ui/makefile.mk2
-rw-r--r--extensions/source/xmlextract/exports.map10
-rw-r--r--extensions/source/xmlextract/makefile.mk2
-rw-r--r--external/glibc/makefile.mk1
-rw-r--r--extras/prj/build.lst1
-rw-r--r--extras/source/templates/wizard/styles/lang/bg/sunstyle.otsbin9513 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/cs/sunstyle.otsbin8162 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/da/sunstyle.otsbin7941 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/de/sunstyle.otsbin8247 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/delzip1
-rw-r--r--extras/source/templates/wizard/styles/lang/en-GB/sunstyle.otsbin9726 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/en-US/sunstyle.otsbin8162 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/es/sunstyle.otsbin8024 -> 0 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/eu/sunstyle.otsbin12024 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/fr/sunstyle.otsbin7940 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/hu/sunstyle.otsbin10185 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/it/sunstyle.otsbin8042 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ja/sunstyle.otsbin8357 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/km/sunstyle.otsbin11273 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ko/sunstyle.otsbin8279 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/nl/sunstyle.otsbin7852 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pl/sunstyle.otsbin8017 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt-BR/sunstyle.otsbin8217 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/pt/sunstyle.otsbin7941 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/ru/sunstyle.otsbin7995 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sk/sunstyle.otsbin9134 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sl/sunstyle.otsbin8606 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/sv/sunstyle.otsbin8196 -> 0 bytes
-rwxr-xr-xextras/source/templates/wizard/styles/lang/vi/sunstyle.otsbin11120 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-CN/sunstyle.otsbin8120 -> 0 bytes
-rw-r--r--extras/source/templates/wizard/styles/lang/zh-TW/sunstyle.otsbin8108 -> 0 bytes
-rwxr-xr-xfetch_tarballs.sh143
-rw-r--r--fileaccess/source/exports.map10
-rw-r--r--fileaccess/source/makefile.mk2
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/makefile.mk11
-rw-r--r--filter/source/config/cache/exports.map10
-rw-r--r--filter/source/config/cache/makefile.mk2
-rw-r--r--filter/source/config/fragments/filters/writerglobal8_writer.xcu2
-rw-r--r--filter/source/config/fragments/makefile.mk2
-rw-r--r--filter/source/flash/exports.map9
-rw-r--r--filter/source/flash/makefile.mk2
-rw-r--r--filter/source/graphicfilter/egif/exports.map2
-rw-r--r--filter/source/graphicfilter/eos2met/exports.map2
-rw-r--r--filter/source/graphicfilter/epbm/exports.map2
-rw-r--r--filter/source/graphicfilter/epgm/exports.map2
-rw-r--r--filter/source/graphicfilter/epict/exports.map2
-rw-r--r--filter/source/graphicfilter/eppm/exports.map2
-rw-r--r--filter/source/graphicfilter/eps/exports.map2
-rw-r--r--filter/source/graphicfilter/eras/exports.map2
-rw-r--r--filter/source/graphicfilter/etiff/exports.map2
-rw-r--r--filter/source/graphicfilter/expm/exports.map2
-rw-r--r--filter/source/graphicfilter/icgm/exports.map2
-rw-r--r--filter/source/graphicfilter/idxf/exports.map2
-rw-r--r--filter/source/graphicfilter/ieps/exports.map2
-rw-r--r--filter/source/graphicfilter/ios2met/exports.map2
-rw-r--r--filter/source/graphicfilter/ipbm/exports.map2
-rw-r--r--filter/source/graphicfilter/ipcd/exports.map2
-rw-r--r--filter/source/graphicfilter/ipcx/exports.map2
-rw-r--r--filter/source/graphicfilter/ipict/exports.map2
-rw-r--r--filter/source/graphicfilter/ipsd/exports.map2
-rw-r--r--filter/source/graphicfilter/iras/exports.map2
-rw-r--r--filter/source/graphicfilter/itga/exports.map2
-rw-r--r--filter/source/graphicfilter/itiff/exports.map2
-rw-r--r--filter/source/msfilter/msocximex.cxx13
-rw-r--r--filter/source/msfilter/powerpoint/exports.map9
-rw-r--r--filter/source/msfilter/powerpoint/makefile.mk2
-rw-r--r--filter/source/pdf/exports.map9
-rw-r--r--filter/source/pdf/makefile.mk2
-rw-r--r--filter/source/placeware/makefile.mk2
-rw-r--r--filter/source/placeware/placeware.map8
-rw-r--r--filter/source/svg/exports.map9
-rw-r--r--filter/source/svg/makefile.mk2
-rw-r--r--filter/source/t602/makefile.mk2
-rw-r--r--filter/source/t602/t602filter.map8
-rw-r--r--filter/source/xmlfilteradaptor/makefile.mk2
-rw-r--r--filter/source/xmlfilteradaptor/xmlfa.map10
-rw-r--r--filter/source/xmlfilterdetect/makefile.mk2
-rw-r--r--filter/source/xmlfilterdetect/xmlfd.map10
-rw-r--r--filter/source/xsltfilter/XSLTransformer.java5
-rw-r--r--filter/source/xsltfilter/exports.map10
-rw-r--r--filter/source/xsltfilter/makefile.mk11
-rw-r--r--filter/source/xsltvalidate/makefile.mk4
-rw-r--r--forms/prj/build.lst1
-rw-r--r--forms/qa/unoapi/Test.java51
-rw-r--r--forms/qa/unoapi/makefile.mk38
-rw-r--r--forms/source/component/Columns.cxx20
-rw-r--r--forms/source/component/ListBox.cxx22
-rw-r--r--forms/source/component/ListBox.hxx5
-rw-r--r--forms/source/inc/componenttools.hxx6
-rw-r--r--forms/source/misc/componenttools.cxx12
-rw-r--r--forms/util/frm.map8
-rw-r--r--forms/util/makefile.mk2
-rw-r--r--formula/inc/formula/errorcodes.hxx8
-rw-r--r--formula/util/for.map8
-rw-r--r--formula/util/forui.map8
-rw-r--r--formula/util/makefile.mk1
-rw-r--r--fpicker/source/aqua/exports.map8
-rw-r--r--fpicker/source/aqua/makefile.mk2
-rw-r--r--fpicker/source/generic/exports.map8
-rw-r--r--fpicker/source/generic/makefile.mk2
-rw-r--r--fpicker/source/office/exports.map8
-rw-r--r--fpicker/source/office/makefile.mk2
-rw-r--r--fpicker/source/unx/gnome/exports.map8
-rw-r--r--fpicker/source/unx/gnome/makefile.mk2
-rw-r--r--fpicker/source/win32/filepicker/VistaFilePickerEventHandler.cxx40
-rw-r--r--framework/prj/build.lst2
-rw-r--r--framework/qa/unoapi/Test.java51
-rwxr-xr-xframework/qa/unoapi/makefile.mk33
-rw-r--r--framework/source/classes/resource.src2
-rw-r--r--framework/source/interaction/quietinteraction.cxx16
-rw-r--r--framework/source/services/backingwindow.cxx199
-rw-r--r--framework/source/services/backingwindow.hxx22
-rw-r--r--framework/util/exports.map10
-rw-r--r--framework/util/makefile.mk6
-rw-r--r--graphite/makefile.mk1
-rwxr-xr-xhsqldb/makefile.mk1
-rw-r--r--hunspell/hunspell-1.2.8.patch632
-rw-r--r--hunspell/hunspell-consts-1.2.8.patch22
-rw-r--r--hunspell/hunspell-solaris.patch12
-rw-r--r--hunspell/hunspell-stacksmash.patch28
-rw-r--r--hunspell/hunspell-wntconfig.patch4
-rw-r--r--hunspell/makefile.mk13
-rw-r--r--hwpfilter/source/hwp.map8
-rw-r--r--hwpfilter/source/makefile.mk2
-rw-r--r--hyphen/makefile.mk3
-rw-r--r--i18npool/source/breakiterator/data/dict.map2
-rw-r--r--i18npool/source/breakiterator/data/dict_word.txt2
-rw-r--r--i18npool/source/breakiterator/data/dict_word_prepostdash.txt4
-rw-r--r--i18npool/source/collator/data/collator_data.map2
-rw-r--r--i18npool/source/indexentry/data/index_data.map2
-rw-r--r--i18npool/source/localedata/data/localedata_en.map2
-rw-r--r--i18npool/source/localedata/data/localedata_es.map2
-rw-r--r--i18npool/source/localedata/data/localedata_euro.map2
-rw-r--r--i18npool/source/localedata/data/localedata_others.map2
-rw-r--r--i18npool/source/search/i18nsearch.map10
-rw-r--r--i18npool/source/search/makefile.mk2
-rw-r--r--i18npool/source/textconversion/data/textconv_dict.map2
-rw-r--r--i18npool/util/i18npool.map10
-rw-r--r--i18npool/util/makefile.mk2
-rw-r--r--icc/makefile.mk1
-rw-r--r--icu/createmak.cfg907
-rw-r--r--icu/makefile.mk12
-rw-r--r--idl/util/svidl.hdb25
-rw-r--r--idlc/source/makefile.mk4
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_languages/Control.ulf6
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/ControlC.idt6
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/ControlE.idt10
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/LaunchCo.idt2
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Property.idt4
-rw-r--r--instsetoo_native/prj/d.lst4
-rw-r--r--instsetoo_native/util/makefile.mk118
-rw-r--r--instsetoo_native/util/openoffice.lst5
-rw-r--r--io/source/TextInputStream/makefile.mk2
-rw-r--r--io/source/TextInputStream/tinstrm.map9
-rw-r--r--io/source/TextOutputStream/makefile.mk2
-rw-r--r--io/source/TextOutputStream/toutstrm.map9
-rw-r--r--io/source/acceptor/acceptor.map9
-rw-r--r--io/source/acceptor/makefile.mk2
-rw-r--r--io/source/connector/connectr.map9
-rw-r--r--io/source/connector/makefile.mk2
-rw-r--r--io/source/stm/makefile.mk2
-rw-r--r--io/source/stm/stm.map9
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java1
-rw-r--r--javaunohelper/source/javaunohelper.map2
-rw-r--r--jfreereport/download/core.zipbin764464 -> 0 bytes
-rw-r--r--jfreereport/download/flute.zipbin83503 -> 0 bytes
-rw-r--r--jfreereport/download/libbase.zipbin161294 -> 0 bytes
-rw-r--r--jfreereport/download/libfonts.zipbin1336993 -> 0 bytes
-rw-r--r--jfreereport/download/libformula.zipbin516667 -> 0 bytes
-rw-r--r--jfreereport/download/liblayout.zipbin1449297 -> 0 bytes
-rw-r--r--jfreereport/download/libloader.zipbin166507 -> 0 bytes
-rw-r--r--jfreereport/download/librepository.zipbin89510 -> 0 bytes
-rw-r--r--jfreereport/download/libserializer.zipbin44748 -> 0 bytes
-rw-r--r--jfreereport/download/libxml.zipbin101837 -> 0 bytes
-rw-r--r--jfreereport/download/sacjava-1.3.zipbin153157 -> 0 bytes
-rw-r--r--jfreereport/java/flute/makefile.mk1
-rw-r--r--jfreereport/java/jfreereport/makefile.mk1
-rw-r--r--jfreereport/java/libbase/makefile.mk1
-rw-r--r--jfreereport/java/libfonts/makefile.mk1
-rw-r--r--jfreereport/java/libformula/makefile.mk1
-rw-r--r--jfreereport/java/liblayout/makefile.mk1
-rw-r--r--jfreereport/java/libloader/makefile.mk1
-rw-r--r--jfreereport/java/librepository/makefile.mk1
-rw-r--r--jfreereport/java/libserializer/makefile.mk1
-rw-r--r--jfreereport/java/libxml/makefile.mk1
-rw-r--r--jfreereport/java/sac/makefile.mk1
-rw-r--r--jpeg/makefile.mk1
-rw-r--r--jvmaccess/util/cc5_solaris_sparc.map4
-rw-r--r--jvmaccess/util/gcc3.map4
-rw-r--r--jvmaccess/util/msvc_win32_intel.map4
-rw-r--r--l10ntools/inc/wrdtrans.hxx87
-rw-r--r--l10ntools/java/receditor/java/transex3/model/SdfString.java25
-rw-r--r--l10ntools/scripts/fast_merge.pl10
-rwxr-xr-xl10ntools/scripts/localize.pl38
-rwxr-xr-xl10ntools/scripts/localize_old.pl56
-rw-r--r--l10ntools/source/help/makefile.mk2
-rw-r--r--l10ntools/source/wrdtrans.cxx245
-rw-r--r--libtextcat/makefile.mk1
-rw-r--r--libwpd/makefile.mk1
-rw-r--r--libxml2/makefile.mk1
-rw-r--r--libxmlsec/makefile.mk1
-rw-r--r--libxslt/makefile.mk1
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.map8
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk2
-rw-r--r--lingucomponent/source/languageguessing/guesslang.map8
-rw-r--r--lingucomponent/source/languageguessing/makefile.mk2
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/MacOSXSpell.map8
-rw-r--r--lingucomponent/source/spellcheck/macosxspell/makefile.mk2
-rw-r--r--lingucomponent/source/spellcheck/spell/makefile.mk2
-rw-r--r--lingucomponent/source/spellcheck/spell/spell.map8
-rw-r--r--lingucomponent/source/thesaurus/libnth/lnth.map8
-rw-r--r--lingucomponent/source/thesaurus/libnth/makefile.mk2
-rw-r--r--linguistic/prj/build.lst1
-rw-r--r--linguistic/qa/unoapi/Test.java51
-rw-r--r--linguistic/qa/unoapi/makefile.mk30
-rw-r--r--linguistic/source/convdiclist.cxx37
-rw-r--r--linguistic/source/staticmb.cxx29
-rw-r--r--linguistic/workben/lex.map8
-rw-r--r--linguistic/workben/makefile.mk2
-rw-r--r--lpsolve/makefile.mk1
-rw-r--r--lucene/makefile.mk1
-rw-r--r--moz/extractfiles.mk5
-rw-r--r--moz/makefile.mk13
-rw-r--r--mysqlc/images/sun_extension.pngbin5448 -> 5483 bytes
-rw-r--r--mysqlc/images/sun_extension_hc.pngbin3182 -> 3176 bytes
-rw-r--r--mysqlc/source/description.xml2
-rw-r--r--mysqlc/source/makefile.mk3
-rw-r--r--mysqlc/source/mysqlc_connection.cxx22
-rw-r--r--mysqlc/source/mysqlc_connection.hxx2
-rw-r--r--mysqlc/source/mysqlc_databasemetadata.cxx32
-rw-r--r--mysqlc/source/mysqlc_databasemetadata.hxx6
-rw-r--r--mysqlc/source/mysqlc_driver.cxx2
-rw-r--r--mysqlc/source/mysqlc_driver.hxx2
-rw-r--r--mysqlc/source/mysqlc_general.cxx6
-rw-r--r--mysqlc/source/mysqlc_general.hxx10
-rw-r--r--mysqlc/source/mysqlc_preparedstatement.cxx10
-rw-r--r--mysqlc/source/mysqlc_preparedstatement.hxx2
-rw-r--r--mysqlc/source/mysqlc_resultsetmetadata.hxx4
-rw-r--r--mysqlc/source/mysqlc_statement.hxx2
-rw-r--r--mysqlcppconn/makefile.mk1
-rw-r--r--neon/makefile.mk3
-rw-r--r--neon/neon.patch31
-rw-r--r--neon/neon_exports_unix.patch2
-rw-r--r--neon/neon_exports_win.patch2
-rwxr-xr-xneon/prj/build.lst2
-rw-r--r--nss/makefile.mk5
-rw-r--r--o3tl/inc/o3tl/vector_pool.hxx132
-rw-r--r--o3tl/prj/build.lst2
-rw-r--r--o3tl/qa/export.map4
-rw-r--r--o3tl/qa/makefile.mk15
-rw-r--r--o3tl/qa/test-cow_wrapper.cxx18
-rw-r--r--o3tl/qa/test-heap_ptr.cxx6
-rw-r--r--o3tl/qa/test-range.cxx7
-rw-r--r--o3tl/qa/test-vector_pool.cxx69
-rw-r--r--odk/docs/common/ref/idl.css21
-rw-r--r--[-rwxr-xr-x]odk/docs/cpp/ref/cpp.css36
-rw-r--r--odk/docs/images/arrow-1.gifbin68 -> 98 bytes
-rw-r--r--odk/docs/images/arrow-2.gifbin68 -> 68 bytes
-rw-r--r--odk/docs/images/arrow-3.gifbin68 -> 98 bytes
-rw-r--r--odk/docs/images/bg_table.pngbin0 -> 128 bytes
-rw-r--r--odk/docs/images/bg_table2.pngbin0 -> 128 bytes
-rw-r--r--odk/docs/images/bg_table3.pngbin0 -> 128 bytes
-rw-r--r--odk/docs/images/nav_down.pngbin320 -> 224 bytes
-rw-r--r--odk/docs/images/nav_left.pngbin279 -> 223 bytes
-rw-r--r--odk/docs/images/nav_right.pngbin283 -> 225 bytes
-rw-r--r--odk/docs/images/nav_up.pngbin282 -> 211 bytes
-rw-r--r--odk/docs/images/odk-footer-logo.gifbin0 -> 850 bytes
-rw-r--r--odk/docs/images/ooo-main-app_32.pngbin2271 -> 2429 bytes
-rw-r--r--odk/docs/images/orc-main-app_32.pngbin0 -> 2496 bytes
-rw-r--r--odk/docs/images/sdk_head-1.gifbin10949 -> 0 bytes
-rw-r--r--odk/docs/images/sdk_head-1.pngbin0 -> 12367 bytes
-rw-r--r--odk/docs/images/sdk_head-2.gifbin58 -> 0 bytes
-rw-r--r--odk/docs/images/sdk_head-2.pngbin0 -> 175 bytes
-rw-r--r--odk/docs/images/sdk_head-3.gifbin1528 -> 0 bytes
-rw-r--r--odk/docs/images/sdk_line-1.gifbin51 -> 43 bytes
-rw-r--r--odk/docs/images/sdk_line-2.gifbin66 -> 113 bytes
-rw-r--r--odk/docs/images/so-main-app_32.pngbin2323 -> 0 bytes
-rw-r--r--odk/docs/install.html24
-rw-r--r--odk/docs/notsupported.html5
-rw-r--r--odk/docs/sdk_styles.css9
-rw-r--r--odk/docs/tools.html36
-rw-r--r--odk/examples/DevelopersGuide/examples.html89
-rw-r--r--odk/examples/examples.html62
-rw-r--r--odk/index.html56
-rw-r--r--odk/pack/copying/makefile.mk194
-rw-r--r--odk/util/check.pl16
-rw-r--r--odk/util/makefile.mk2
-rw-r--r--odk/util/makefile.pmk143
-rw-r--r--odk/util/odk_rules.pmk163
-rw-r--r--offapi/com/sun/star/rendering/TexturingMode.idl19
-rw-r--r--offapi/com/sun/star/rendering/XGraphicDevice.idl67
-rw-r--r--offapi/com/sun/star/rendering/XParametricPolyPolygon2DFactory.idl152
-rw-r--r--offapi/com/sun/star/rendering/makefile.mk1
-rw-r--r--officecfg/prj/build.lst1
-rwxr-xr-xofficecfg/registry/data/org/openoffice/Office/Accelerators.xcu71
-rw-r--r--officecfg/util/makefile.mk2
-rw-r--r--oox/inc/oox/drawingml/shape.hxx13
-rw-r--r--oox/inc/oox/drawingml/textbodyproperties.hxx4
-rw-r--r--oox/inc/oox/drawingml/textparagraph.hxx6
-rw-r--r--oox/inc/oox/xls/stylesbuffer.hxx33
-rwxr-xr-x[-rw-r--r--]oox/source/core/filterbase.cxx0
-rw-r--r--oox/source/core/xmlfilterbase.cxx89
-rw-r--r--oox/source/drawingml/makefile.mk1
-rw-r--r--oox/source/drawingml/shape.cxx23
-rw-r--r--oox/source/drawingml/shapecontext.cxx2
-rw-r--r--oox/source/drawingml/shapegroupcontext.cxx2
-rw-r--r--oox/source/drawingml/textbodycontext.cxx2
-rw-r--r--oox/source/drawingml/textbodyproperties.cxx (renamed from testshl2/workben/test_printf.cxx)48
-rw-r--r--oox/source/drawingml/textbodypropertiescontext.cxx17
-rw-r--r--oox/source/drawingml/textcharacterpropertiescontext.cxx21
-rw-r--r--oox/source/drawingml/textparagraph.cxx18
-rw-r--r--oox/source/export/drawingml.cxx11
-rw-r--r--oox/source/ole/axcontrol.cxx25
-rw-r--r--oox/source/ppt/pptshape.cxx57
-rw-r--r--oox/source/ppt/pptshapecontext.cxx28
-rw-r--r--oox/source/ppt/pptshapegroupcontext.cxx2
-rw-r--r--oox/source/ppt/slidepersist.cxx2
-rw-r--r--oox/source/token/properties.txt1
-rw-r--r--oox/source/token/tokenmap.cxx2
-rw-r--r--oox/source/xls/biffhelper.cxx58
-rw-r--r--oox/source/xls/formulabase.cxx123
-rw-r--r--oox/source/xls/stylesbuffer.cxx224
-rw-r--r--openssl/makefile.mk1
-rw-r--r--package/util/exports.map8
-rw-r--r--packimages/pack/makefile.mk4
-rw-r--r--postprocess/checkdeliver/checkdeliver.pl6
-rw-r--r--postprocess/checkdeliver/makefile.mk2
-rw-r--r--postprocess/packregistry/makefile.mk2
-rw-r--r--postprocess/prj/build.lst2
-rwxr-xr-xpostprocess/rebase/rebase.pl4
-rw-r--r--python/makefile.mk5
-rw-r--r--qadevOOo/prj/build.lst1
-rw-r--r--qadevOOo/qa/unoapi/Test.java51
-rwxr-xr-xqadevOOo/qa/unoapi/makefile.mk30
-rw-r--r--qadevOOo/runner/base/java_fat.java13
-rw-r--r--qadevOOo/runner/basicrunner/BasicTestCase.java5
-rw-r--r--qadevOOo/runner/helper/ClParser.java4
-rw-r--r--qadevOOo/runner/lib/TestCase.java20
-rw-r--r--qadevOOo/runner/lib/TestEnvironment.java8
-rw-r--r--qadevOOo/runner/org/openoffice/Runner.java11
-rw-r--r--qadevOOo/runner/util/AccessibilityTools.java13
-rw-r--r--qadevOOo/runner/util/UITools.java20
-rw-r--r--qadevOOo/runner/util/utils.java17
-rw-r--r--qadevOOo/tests/java/ifc/accessibility/_XAccessibleComponent.java39
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XMessageBoxFactory.java134
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XSystemChildFactory.java40
-rw-r--r--qadevOOo/tests/java/ifc/awt/_XToolkit.java5
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XMultiPropertyStates.java7
-rw-r--r--qadevOOo/tests/java/ifc/beans/_XPropertySet.java17
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XRangeSelection.java6
-rw-r--r--qadevOOo/tests/java/mod/_basctl/AccessibleShape.java20
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/ConnectionLineAccessibility.java10
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/JoinViewAccessibility.java10
-rw-r--r--qadevOOo/tests/java/mod/_dbaccess/TableWindowAccessibility.java10
-rwxr-xr-xqadevOOo/tests/java/mod/_fwk/ModuleUIConfigurationManager.java23
-rw-r--r--qadevOOo/tests/java/mod/_sd/DrawController_DrawView.java26
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleBrowseBox.java15
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleBrowseBoxHeaderBar.java14
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleBrowseBoxHeaderCell.java15
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleBrowseBoxTable.java16
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleBrowseBoxTableCell.java20
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleTabBar.java17
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleTreeListBox.java16
-rw-r--r--qadevOOo/tests/java/mod/_svtools/AccessibleTreeListBoxEntry.java16
-rwxr-xr-xqadevOOo/tests/java/mod/_sw/CharacterStyle.java6
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleFixedText.java9
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleMenu.java20
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleMenuBar.java24
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleMenuSeparator.java21
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleStatusBar.java29
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/AccessibleToolBox.java16
-rw-r--r--qadevOOo/tests/java/mod/_toolkit/UnoTreeControl.java22
-rw-r--r--readlicense_oo/source/license/license_en-US.html6
-rw-r--r--readlicense_oo/source/license/license_en-US.rtf645
-rw-r--r--readlicense_oo/source/license/license_en-US.txt4
-rwxr-xr-xreadlicense_oo/util/makefile.pmk4
-rw-r--r--redland/raptor/makefile.mk1
-rw-r--r--redland/raptor/raptor2.map2
-rw-r--r--redland/rasqal/makefile.mk1
-rw-r--r--redland/rasqal/rasqal2.map2
-rw-r--r--redland/redland/makefile.mk1
-rw-r--r--redland/redland/redland2.map2
-rw-r--r--remotebridges/source/bridge/makefile.mk2
-rw-r--r--remotebridges/source/bridge/remotebridge.map9
-rw-r--r--remotebridges/source/factory/brdgfctr.map9
-rw-r--r--remotebridges/source/factory/makefile.mk2
-rw-r--r--remotebridges/source/unourl_resolver/makefile.mk2
-rw-r--r--remotebridges/source/unourl_resolver/uuresolver.map9
-rw-r--r--reportbuilder/images/em47.pngbin5448 -> 5483 bytes
-rw-r--r--reportbuilder/images/em47_hc.pngbin3182 -> 3176 bytes
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/makefile.mk4
-rw-r--r--reportbuilder/java/com/sun/star/report/makefile.mk2
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/makefile.mk4
-rw-r--r--reportbuilder/java/com/sun/star/report/util/makefile.mk2
-rw-r--r--reportbuilder/util/description.xml2
-rw-r--r--reportdesign/util/makefile.mk4
-rw-r--r--reportdesign/util/rpt.map9
-rw-r--r--reportdesign/util/rptui.map8
-rwxr-xr-xrhino/makefile.mk1
-rw-r--r--rhino/rhino1_5R5-find_swing.patch6
-rw-r--r--rsc/source/parser/erscerr.cxx2
-rw-r--r--rsc/source/prj/gui.cxx11
-rw-r--r--rsc/source/prj/start.cxx9
-rw-r--r--sal/cppunittester/cppunittester.cxx65
-rw-r--r--sal/cppunittester/makefile.mk (renamed from testshl2/util/makefile.mk)25
-rw-r--r--sal/inc/osl/semaphor.h19
-rw-r--r--sal/inc/osl/semaphor.hxx4
-rw-r--r--sal/osl/os2/process_impl.cxx5
-rw-r--r--sal/osl/unx/process.c11
-rw-r--r--sal/osl/unx/process_impl.cxx4
-rw-r--r--sal/osl/w32/pipe.c2
-rw-r--r--sal/osl/w32/process.cxx4
-rw-r--r--sal/osl/w32/procimpl.cxx22
-rw-r--r--sal/prj/build.lst8
-rw-r--r--sal/prj/d.lst2
-rw-r--r--sal/qa/ByteSequence/ByteSequence.cxx26
-rw-r--r--sal/qa/ByteSequence/export.exp1
-rw-r--r--sal/qa/ByteSequence/makefile.mk15
-rw-r--r--sal/qa/ByteSequence/rtl_old_testbyteseq.cxx12
-rw-r--r--sal/qa/OStringBuffer/export.exp1
-rw-r--r--sal/qa/OStringBuffer/makefile.mk13
-rw-r--r--sal/qa/OStringBuffer/rtl_OStringBuffer.cxx102
-rw-r--r--sal/qa/OStringBuffer/rtl_String_Const.h1
-rw-r--r--sal/qa/OStringBuffer/rtl_String_Utils.cxx2
-rwxr-xr-xsal/qa/export.map4
-rw-r--r--sal/qa/osl/module/export_dll.map2
-rwxr-xr-xsal/qa/osl/mutex/makefile.mk15
-rwxr-xr-xsal/qa/osl/mutex/osl_Mutex.cxx34
-rwxr-xr-xsal/qa/osl/mutex/osl_Mutex_Const.h4
-rw-r--r--sal/qa/osl/pipe/export.exp1
-rw-r--r--sal/qa/osl/pipe/makefile.mk12
-rw-r--r--sal/qa/osl/pipe/osl_Pipe.cxx121
-rw-r--r--sal/qa/osl/pipe/osl_Pipe.xsce9
-rw-r--r--sal/qa/osl/pipe/osl_Pipe_Const.h1
-rw-r--r--sal/qa/osl/profile/makefile.mk12
-rw-r--r--sal/qa/osl/profile/osl_old_testprofile.cxx15
-rw-r--r--sal/qa/osl/semaphore/makefile.mk61
-rw-r--r--sal/qa/osl/semaphore/osl_Semaphore.cxx525
-rw-r--r--sal/qa/osl/semaphore/osl_Semaphore_Const.h73
-rwxr-xr-xsal/qa/rtl/alloc/makefile.mk2
-rw-r--r--sal/qa/rtl/bootstrap/makefile.mk2
-rw-r--r--sal/qa/rtl/cipher/makefile.mk2
-rwxr-xr-xsal/qa/rtl/crc32/makefile.mk2
-rw-r--r--sal/qa/rtl/digest/makefile.mk2
-rw-r--r--sal/qa/rtl/doublelock/makefile.mk2
-rw-r--r--sal/qa/rtl/locale/makefile.mk2
-rw-r--r--sal/qa/rtl/logfile/makefile.mk2
-rw-r--r--sal/qa/rtl/math/makefile.mk2
-rw-r--r--sal/qa/rtl/ostring/makefile.mk2
-rw-r--r--sal/qa/rtl/oustring/makefile.mk2
-rw-r--r--sal/qa/rtl/oustringbuffer/makefile.mk2
-rw-r--r--sal/qa/rtl/process/makefile.mk2
-rw-r--r--sal/qa/rtl/random/makefile.mk2
-rw-r--r--sal/qa/rtl/strings/makefile.mk2
-rw-r--r--sal/qa/rtl/textenc/makefile.mk10
-rw-r--r--sal/qa/rtl/uri/makefile.mk2
-rw-r--r--sal/qa/rtl/uuid/makefile.mk2
-rw-r--r--sal/util/makefile.mk16
-rw-r--r--salhelper/inc/salhelper/queue.hxx12
-rw-r--r--salhelper/qa/makefile.mk2
-rw-r--r--salhelper/source/makefile.mk5
-rw-r--r--salhelper/source/staticmb.cxx26
-rw-r--r--salhelper/test/rtti/sols.map2
-rw-r--r--sax/source/fastparser/fastparser.cxx495
-rw-r--r--sax/source/fastparser/fastparser.hxx17
-rw-r--r--saxon/makefile.mk1
-rw-r--r--sc/addin/datefunc/makefile.mk4
-rw-r--r--sc/addin/makefile.mk5
-rw-r--r--sc/addin/rot13/exports.map2
-rw-r--r--sc/addin/rot13/makefile.mk5
-rw-r--r--sc/addin/util/makefile.mk4
-rw-r--r--sc/inc/chgtrack.hxx2
-rw-r--r--sc/inc/document.hxx16
-rw-r--r--sc/inc/drwlayer.hxx8
-rw-r--r--sc/inc/externalrefmgr.hxx13
-rw-r--r--sc/inc/global.hxx23
-rw-r--r--sc/inc/rangelst.hxx2
-rw-r--r--sc/inc/sc.hrc2
-rw-r--r--sc/inc/scimpexpmsg.hxx105
-rw-r--r--sc/inc/table.hxx14
-rwxr-xr-xsc/prj/build.lst1
-rw-r--r--sc/qa/unoapi/Test.java51
-rw-r--r--sc/qa/unoapi/knownissues.xcl28
-rw-r--r--sc/qa/unoapi/makefile.mk30
-rw-r--r--sc/source/core/data/documen3.cxx9
-rw-r--r--sc/source/core/data/documen9.cxx2
-rw-r--r--sc/source/core/data/document.cxx18
-rwxr-xr-xsc/source/core/data/drwlayer.cxx39
-rwxr-xr-xsc/source/core/data/makefile.mk2
-rw-r--r--sc/source/core/data/pivot.cxx34
-rw-r--r--sc/source/core/data/scimpexpmsg.cxx113
-rw-r--r--sc/source/core/data/table1.cxx148
-rw-r--r--sc/source/core/data/table2.cxx80
-rw-r--r--[-rwxr-xr-x]sc/source/core/tool/interpr4.cxx2
-rw-r--r--sc/source/core/tool/rangelst.cxx5
-rw-r--r--sc/source/filter/excel/xelink.cxx427
-rw-r--r--sc/source/filter/excel/xihelper.cxx4
-rw-r--r--sc/source/filter/excel/xilink.cxx12
-rw-r--r--sc/source/filter/excel/xistyle.cxx67
-rw-r--r--sc/source/filter/excel/xlformula.cxx184
-rw-r--r--sc/source/filter/excel/xltools.cxx108
-rw-r--r--sc/source/filter/inc/xihelper.hxx6
-rw-r--r--sc/source/filter/inc/xistyle.hxx5
-rw-r--r--sc/source/filter/inc/xltools.hxx2
-rw-r--r--sc/source/ui/app/inputwin.cxx5
-rw-r--r--sc/source/ui/dbgui/pvfundlg.src4
-rw-r--r--sc/source/ui/docshell/dbdocfun.cxx4
-rw-r--r--sc/source/ui/docshell/dbdocimp.cxx2
-rw-r--r--sc/source/ui/docshell/docsh3.cxx10
-rw-r--r--sc/source/ui/docshell/docsh4.cxx2
-rw-r--r--sc/source/ui/docshell/docsh5.cxx37
-rw-r--r--sc/source/ui/docshell/externalrefmgr.cxx50
-rw-r--r--sc/source/ui/inc/dbfunc.hxx2
-rw-r--r--sc/source/ui/inc/docsh.hxx2
-rw-r--r--sc/source/ui/miscdlgs/scuiautofmt.cxx2
-rw-r--r--sc/source/ui/miscdlgs/strindlg.cxx10
-rw-r--r--sc/source/ui/src/globstr.src2
-rw-r--r--sc/source/ui/src/miscdlgs.src8
-rw-r--r--sc/source/ui/unoobj/cellsuno.cxx22
-rw-r--r--sc/source/ui/unoobj/cursuno.cxx6
-rw-r--r--sc/source/ui/view/cellsh.cxx24
-rw-r--r--sc/source/ui/view/cellsh2.cxx2
-rw-r--r--sc/source/ui/view/cellsh3.cxx2
-rw-r--r--sc/source/ui/view/dbfunc.cxx73
-rw-r--r--sc/source/ui/view/spelldialog.cxx7
-rw-r--r--sc/source/ui/view/tabview3.cxx2
-rw-r--r--sc/source/ui/view/tabvwshc.cxx4
-rw-r--r--sc/source/ui/view/viewfun5.cxx2
-rw-r--r--sc/util/hidother.src1
-rw-r--r--sc/util/makefile.mk4
-rw-r--r--sc/util/sc.map8
-rw-r--r--sc/util/scd.map8
-rw-r--r--sc/util/scfilt.map2
-rw-r--r--sc/util/scui.map2
-rw-r--r--sc/util/vbaobj.map9
-rw-r--r--scaddins/source/analysis/exports.map10
-rw-r--r--scaddins/source/analysis/makefile.mk2
-rw-r--r--scaddins/source/datefunc/exports.map10
-rw-r--r--scaddins/source/datefunc/makefile.mk2
-rw-r--r--sccomp/source/solver/exports.map9
-rw-r--r--sccomp/source/solver/makefile.mk2
-rw-r--r--scp2/source/calc/file_calc.scp6
-rw-r--r--scp2/source/calc/module_calc.scp9
-rw-r--r--scp2/source/calc/registryitem_calc.scp14
-rw-r--r--scp2/source/calc/registryitem_calc.ulf4
-rw-r--r--scp2/source/draw/registryitem_draw.ulf4
-rw-r--r--scp2/source/impress/module_impress.scp9
-rw-r--r--scp2/source/impress/registryitem_impress.scp14
-rw-r--r--scp2/source/impress/registryitem_impress.ulf4
-rw-r--r--scp2/source/math/registryitem_math.ulf2
-rw-r--r--scp2/source/ooo/common_brand.scp1
-rw-r--r--[-rwxr-xr-x]scp2/source/ooo/file_library_ooo.scp26
-rwxr-xr-xscp2/source/ooo/file_ooo.scp2
-rw-r--r--scp2/source/ooo/installation_ooo.scp1
-rw-r--r--scp2/source/ooo/registryitem_ooo.scp11
-rw-r--r--scp2/source/ooo/registryitem_ooo.ulf2
-rwxr-xr-xscp2/source/ooo/windowscustomaction_ooo.scp20
-rw-r--r--scp2/source/writer/module_writer.scp10
-rw-r--r--scp2/source/writer/registryitem_writer.scp14
-rw-r--r--scp2/source/writer/registryitem_writer.ulf6
-rw-r--r--scripting/source/basprov/basprov.map9
-rw-r--r--scripting/source/basprov/makefile.mk2
-rw-r--r--scripting/source/dlgprov/dlgprov.map9
-rw-r--r--scripting/source/dlgprov/makefile.mk2
-rw-r--r--scripting/source/stringresource/makefile.mk2
-rw-r--r--scripting/source/stringresource/stringresource.map9
-rw-r--r--[-rwxr-xr-x]scripting/source/vbaevents/makefile.mk2
-rwxr-xr-xscripting/source/vbaevents/vbaevents.map9
-rwxr-xr-xsd/prj/build.lst1
-rw-r--r--sd/prj/make.bat92
-rw-r--r--sd/prj/postdlv.btm2
-rw-r--r--sd/prj/stree.bat151
-rw-r--r--sd/qa/unoapi/Test.java51
-rw-r--r--sd/qa/unoapi/knownissues.xcl4
-rw-r--r--sd/qa/unoapi/makefile.mk30
-rw-r--r--sd/source/ui/app/makefile.mk4
-rw-r--r--sd/source/ui/func/futext2.cxx30
-rw-r--r--sd/source/ui/func/makefile.mk2
-rw-r--r--sd/source/ui/toolpanel/ControlDescriptorIterator.cxx223
-rw-r--r--sd/source/ui/view/DocumentRenderer.src10
-rw-r--r--sd/source/ui/view/makefile.mk1
-rw-r--r--sd/source/ui/view/sdview5.cxx29
-rw-r--r--sd/util/makefile.mk2
-rw-r--r--sd/util/sd.map8
-rw-r--r--sd/util/sdd.map8
-rw-r--r--sd/util/sdfilt.map2
-rw-r--r--sd/util/sdui.map2
-rw-r--r--sdext/source/minimizer/description.xml2
-rw-r--r--sdext/source/minimizer/exports.map9
-rw-r--r--sdext/source/minimizer/images/em47.pngbin5448 -> 5483 bytes
-rw-r--r--sdext/source/minimizer/images/em47_hc.pngbin3182 -> 3176 bytes
-rw-r--r--sdext/source/minimizer/makefile.mk2
-rw-r--r--sdext/source/pdfimport/config/description.xml2
-rw-r--r--sdext/source/pdfimport/exports.map9
-rw-r--r--sdext/source/pdfimport/images/pdfiext.pngbin5448 -> 5483 bytes
-rw-r--r--sdext/source/pdfimport/images/pdfiext_hc.pngbin3182 -> 3176 bytes
-rw-r--r--sdext/source/pdfimport/makefile.mk2
-rwxr-xr-xsdext/source/pdfimport/test/export.map2
-rwxr-xr-xsdext/source/pdfimport/test/makefile.mk2
-rw-r--r--sdext/source/presenter/PresenterGeometryHelper.hxx1
-rw-r--r--sdext/source/presenter/bitmaps/em47.pngbin5448 -> 5483 bytes
-rw-r--r--sdext/source/presenter/bitmaps/em47_hc.pngbin3182 -> 3176 bytes
-rw-r--r--sdext/source/presenter/description.xml2
-rw-r--r--sdext/source/presenter/exports.map9
-rw-r--r--sdext/source/presenter/makefile.mk2
-rw-r--r--set_soenv.in47
-rw-r--r--setup_native/scripts/admin.pl23
-rw-r--r--setup_native/scripts/makefile.mk10
-rwxr-xr-xsetup_native/source/java/javaversion.dat26
-rw-r--r--setup_native/source/java/javaversion2.dat26
-rw-r--r--setup_native/source/win32/customactions/reg4allmsdoc/exports.dxp2
-rw-r--r--setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx213
-rw-r--r--sfx2/inc/sfx2/viewsh.hxx7
-rw-r--r--sfx2/prj/build.lst1
-rw-r--r--sfx2/qa/complex/docinfo/makefile.mk2
-rw-r--r--sfx2/qa/unoapi/Test.java51
-rw-r--r--sfx2/qa/unoapi/makefile.mk30
-rw-r--r--sfx2/source/appl/appuno.cxx286
-rw-r--r--sfx2/source/appl/sfxhelp.cxx15
-rw-r--r--sfx2/source/appl/shutdownicon.cxx23
-rw-r--r--sfx2/source/appl/shutdownicon.hxx1
-rw-r--r--sfx2/source/appl/shutdowniconw32.cxx50
-rw-r--r--sfx2/source/doc/commitlistener.cxx81
-rw-r--r--sfx2/source/doc/commitlistener.hxx57
-rw-r--r--sfx2/source/doc/docfile.cxx1
-rw-r--r--sfx2/source/doc/makefile.mk1
-rw-r--r--sfx2/source/doc/objstor.cxx2
-rw-r--r--sfx2/source/doc/opostponedtruncationstream.cxx491
-rw-r--r--sfx2/source/doc/opostponedtruncationstream.hxx122
-rwxr-xr-xsfx2/source/doc/printhelper.cxx20
-rw-r--r--sfx2/source/view/view.hxx27
-rw-r--r--sfx2/source/view/viewimp.hxx26
-rw-r--r--sfx2/source/view/viewprn.cxx10
-rwxr-xr-xshell/qa/makefile.mk2
-rw-r--r--shell/source/backends/kdebe/makefile.mk2
-rw-r--r--shell/source/backends/localebe/exports.map10
-rw-r--r--shell/source/backends/localebe/makefile.mk2
-rw-r--r--shell/source/backends/macbe/exports.map10
-rw-r--r--shell/source/backends/macbe/makefile.mk2
-rw-r--r--shell/source/backends/wininetbe/exports.map10
-rw-r--r--shell/source/backends/wininetbe/makefile.mk2
-rw-r--r--shell/source/cmdmail/exports.map10
-rw-r--r--shell/source/cmdmail/makefile.mk2
-rw-r--r--shell/source/tools/lngconvex/lngconvex.cxx3
-rw-r--r--shell/source/unix/exec/exports.map10
-rw-r--r--shell/source/unix/exec/makefile.mk2
-rwxr-xr-xshell/source/unix/sysshell/recfile.map2
-rw-r--r--slideshow/source/engine/OGLTrans/exports.map8
-rw-r--r--slideshow/source/engine/OGLTrans/makefile.mk2
-rw-r--r--slideshow/source/engine/activities/activitybase.cxx2
-rw-r--r--slideshow/source/engine/activities/continuouskeytimeactivitybase.cxx69
-rw-r--r--slideshow/source/engine/activities/continuouskeytimeactivitybase.hxx7
-rw-r--r--slideshow/source/engine/activities/interpolation.hxx21
-rw-r--r--slideshow/source/engine/shapes/viewshape.cxx7
-rw-r--r--slideshow/source/engine/slide/layer.cxx11
-rw-r--r--slideshow/source/engine/slide/layer.hxx6
-rw-r--r--slideshow/source/engine/tools.cxx26
-rw-r--r--slideshow/test/export.map2
-rw-r--r--slideshow/util/exports.map8
-rw-r--r--slideshow/util/makefile.mk2
-rwxr-xr-xsmoketestoo_native/check_setup.pl69
-rwxr-xr-xsmoketestoo_native/config.pl83
-rwxr-xr-xsmoketestoo_native/data/TestExtension.oxtbin4210 -> 0 bytes
-rw-r--r--smoketestoo_native/data/dbgsv.ini42
-rwxr-xr-xsmoketestoo_native/data/scripts/Global.xba739
-rwxr-xr-xsmoketestoo_native/data/scripts/Test_10er.xba907
-rwxr-xr-xsmoketestoo_native/data/scripts/Test_DB.xba135
-rwxr-xr-xsmoketestoo_native/data/scripts/Test_Ext.xba95
-rwxr-xr-xsmoketestoo_native/data/scripts/script.xlb8
-rwxr-xr-xsmoketestoo_native/data/smoketestdoc.sxwbin35157 -> 35384 bytes
-rw-r--r--smoketestoo_native/data/solaris/sparc/admin6
-rwxr-xr-xsmoketestoo_native/data/solaris/sparc/getuid.sobin4108 -> 0 bytes
-rw-r--r--smoketestoo_native/data/solaris/x86/admin6
-rwxr-xr-xsmoketestoo_native/data/solaris/x86/getuid.sobin3796 -> 0 bytes
-rw-r--r--smoketestoo_native/makefile.mk60
-rw-r--r--smoketestoo_native/prj/build.lst2
-rw-r--r--smoketestoo_native/smoketest.cxx169
-rwxr-xr-xsmoketestoo_native/smoketest.pl1279
-rwxr-xr-xsmoketestoo_native/testlog.pl286
-rw-r--r--smoketestoo_native/version.map (renamed from cppuhelper/qa/propertysetmixin/test.gcc3.map)6
-rw-r--r--soldep/util/perl.mk5
-rw-r--r--solenv/bin/addsym.awk30
-rwxr-xr-xsolenv/bin/checkapi71
-rw-r--r--solenv/bin/checkapi.btm44
-rwxr-xr-xsolenv/bin/cwscheckapi361
-rwxr-xr-xsolenv/bin/cwscheckapi.btm206
-rw-r--r--solenv/bin/dbgsv.ini29
-rwxr-xr-xsolenv/bin/deliver.pl40
-rwxr-xr-xsolenv/bin/installoffice107
-rwxr-xr-xsolenv/bin/installoffice.btm120
-rwxr-xr-xsolenv/bin/installoffice.pl933
-rw-r--r--solenv/bin/macosx-change-install-names.pl8
-rw-r--r--solenv/bin/make_installer.pl9
-rw-r--r--[-rwxr-xr-x]solenv/bin/modules/SourceConfig.pm40
-rw-r--r--solenv/bin/modules/installer/control.pm2
-rw-r--r--solenv/bin/modules/installer/download.pm294
-rw-r--r--solenv/bin/modules/installer/globals.pm9
-rw-r--r--solenv/bin/modules/installer/parameter.pm7
-rw-r--r--solenv/bin/modules/installer/servicesfile.pm16
-rw-r--r--solenv/bin/modules/installer/simplepackage.pm46
-rw-r--r--solenv/bin/modules/installer/windows/registry.pm2
-rwxr-xr-xsolenv/bin/receditor2
-rwxr-xr-xsolenv/bin/reportErrorCheckAPI.btm17
-rwxr-xr-xsolenv/bin/subsequenttests131
-rw-r--r--solenv/config/sdev300.ini62
-rw-r--r--solenv/config/ssolar.cmn8
-rw-r--r--solenv/inc/_cppunit.mk250
-rw-r--r--solenv/inc/_tg_shl.mk40
-rw-r--r--solenv/inc/cppunit.mk34
-rw-r--r--solenv/inc/installationtest.mk122
-rw-r--r--solenv/inc/javaunittest.mk5
-rw-r--r--solenv/inc/libs.mk16
-rw-r--r--solenv/inc/minor.mk6
-rw-r--r--solenv/inc/settings.mk36
-rw-r--r--solenv/inc/startup/AIX/macros.mk2
-rw-r--r--solenv/inc/startup/FREEBSD/macros.mk2
-rw-r--r--solenv/inc/startup/HPUX/macros.mk2
-rw-r--r--solenv/inc/startup/IRIX/macros.mk2
-rw-r--r--solenv/inc/startup/LINUX/macros.mk2
-rw-r--r--solenv/inc/startup/MACOSX/macros.mk2
-rw-r--r--solenv/inc/startup/NETBSD/macros.mk2
-rw-r--r--solenv/inc/startup/OS2/macros.mk55
-rw-r--r--solenv/inc/startup/Readme3
-rw-r--r--solenv/inc/startup/SOLARIS/macros.mk2
-rw-r--r--solenv/inc/startup/UNIX/macros.mk19
-rw-r--r--solenv/inc/startup/startup.mk37
-rw-r--r--solenv/inc/startup/wnt/macros.mk23
-rw-r--r--solenv/inc/target.mk4
-rw-r--r--solenv/inc/tg_ext.mk38
-rw-r--r--solenv/inc/tg_shl.mk4
-rw-r--r--solenv/inc/unitools.mk22
-rw-r--r--solenv/inc/unx.mk15
-rw-r--r--solenv/inc/unxmacx.mk22
-rw-r--r--solenv/inc/unxmacxi.mk5
-rw-r--r--solenv/inc/wnt.mk7
-rw-r--r--soltools/mkdepend/cppsetup.c16
-rw-r--r--soltools/mkdepend/def.h25
-rw-r--r--soltools/mkdepend/ifparser.c2
-rw-r--r--soltools/mkdepend/ifparser.h5
-rw-r--r--soltools/mkdepend/imakemdep.h142
-rw-r--r--soltools/mkdepend/main.c48
-rw-r--r--soltools/mkdepend/parse.c10
-rw-r--r--soltools/mkdepend/pr.c1
-rw-r--r--soltools/testhxx/create.pl22
-rw-r--r--soltools/testhxx/makefile.mk14
-rw-r--r--sot/source/sdstor/sdintern.hdb22
-rw-r--r--starmath/prj/build.lst1
-rw-r--r--starmath/qa/unoapi/Test.java51
-rw-r--r--starmath/qa/unoapi/makefile.mk30
-rw-r--r--starmath/source/smres.src2
-rw-r--r--starmath/util/makefile.mk6
-rw-r--r--starmath/util/sm.map8
-rw-r--r--starmath/util/smd.map8
-rw-r--r--stax/makefile.mk1
-rw-r--r--stlport/download/STLport-4.0.tar.gzbin686207 -> 0 bytes
-rw-r--r--stlport/download/STLport-4.5-0119.tar.gzbin2424604 -> 0 bytes
-rw-r--r--stlport/download/STLport-4.5.tar.gzbin728789 -> 0 bytes
-rw-r--r--stlport/makefile.mk16
-rw-r--r--stoc/prj/build.lst1
-rw-r--r--stoc/source/corereflection/corefl.map9
-rw-r--r--stoc/source/corereflection/makefile.mk2
-rw-r--r--stoc/source/inspect/introspection.map8
-rw-r--r--stoc/source/inspect/makefile.mk2
-rw-r--r--stoc/source/invocation/inv.map9
-rw-r--r--stoc/source/invocation/makefile.mk2
-rw-r--r--stoc/source/invocation_adapterfactory/invadp.map9
-rw-r--r--stoc/source/invocation_adapterfactory/makefile.mk2
-rw-r--r--stoc/source/javaloader/javaloader.map8
-rw-r--r--stoc/source/javaloader/makefile.mk2
-rw-r--r--stoc/source/javavm/jen.map8
-rw-r--r--stoc/source/javavm/makefile.mk2
-rw-r--r--stoc/source/namingservice/makefile.mk2
-rw-r--r--stoc/source/namingservice/namingservice.map9
-rw-r--r--stoc/source/proxy_factory/makefile.mk2
-rw-r--r--stoc/source/proxy_factory/proxyfac.map9
-rw-r--r--stoc/test/registry_tdprovider/makefile.mk7
-rw-r--r--stoc/test/registry_tdprovider/testregistrytdprovider.gcc3.map38
-rw-r--r--stoc/test/registry_tdprovider/testregistrytdprovider.map36
-rw-r--r--stoc/test/tdmanager/makefile.mk7
-rw-r--r--stoc/test/tdmanager/testtdmanager.map36
-rw-r--r--stoc/test/testsmgr_cpnt.map2
-rw-r--r--stoc/test/uriproc/makefile.mk50
-rw-r--r--stoc/test/uriproc/test_uriproc.cxx25
-rw-r--r--stoc/test/uriproc/version.map2
-rw-r--r--stoc/util/bootstrap.map9
-rw-r--r--stoc/util/makefile.mk4
-rw-r--r--stoc/util/stocservices.map9
-rw-r--r--svl/qa/complex/ConfigItems/helper/exports.map10
-rw-r--r--svl/qa/complex/ConfigItems/helper/makefile.mk2
-rw-r--r--svl/qa/makefile.mk2
-rw-r--r--svl/source/fsstor/exports.map8
-rw-r--r--svl/source/fsstor/makefile.mk2
-rw-r--r--svl/source/passwordcontainer/exports.map8
-rw-r--r--svl/source/passwordcontainer/makefile.mk2
-rw-r--r--svtools/prj/build.lst1
-rw-r--r--svtools/qa/unoapi/Test.java51
-rw-r--r--svtools/qa/unoapi/makefile.mk30
-rw-r--r--svtools/source/hatchwindow/exports.map8
-rw-r--r--svtools/source/hatchwindow/makefile.mk2
-rw-r--r--svtools/source/misc/transfer.cxx24
-rw-r--r--svtools/source/productregistration/exports.map8
-rw-r--r--svtools/source/productregistration/makefile.mk2
-rw-r--r--svtools/workben/unodialog/makefile.mk2
-rw-r--r--svtools/workben/unodialog/udlg.map8
-rw-r--r--svx/prj/build.lst1
-rw-r--r--svx/qa/unoapi/Test.java51
-rw-r--r--svx/qa/unoapi/makefile.mk30
-rw-r--r--svx/source/dialog/docrecovery.src4
-rw-r--r--svx/source/engine3d/makefile.mk8
-rw-r--r--svx/source/engine3d/viewpt3d.cxx32
-rw-r--r--svx/source/engine3d/volume3d.cxx32
-rw-r--r--svx/source/form/fmshimp.cxx104
-rw-r--r--svx/source/inc/fmshimp.hxx8
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx3
-rw-r--r--svx/source/sdr/properties/attributeproperties.cxx14
-rw-r--r--svx/source/svdraw/makefile.mk2
-rw-r--r--svx/source/svdraw/svdcrtmt.hxx32
-rw-r--r--svx/source/svdraw/svdobj.cxx1
-rw-r--r--svx/source/svdraw/svdoimp.cxx33
-rw-r--r--svx/source/svdraw/svdotext.cxx1
-rw-r--r--svx/source/svdraw/svdscrol.cxx33
-rw-r--r--svx/source/svdraw/svdscrol.hxx31
-rw-r--r--svx/source/unodialogs/textconversiondlgs/export.map8
-rw-r--r--svx/source/unodialogs/textconversiondlgs/makefile.mk2
-rw-r--r--sw/inc/ndarr.hxx8
-rwxr-xr-x[-rw-r--r--]sw/inc/printdata.hxx9
-rw-r--r--sw/inc/unotextrange.hxx2
-rwxr-xr-x[-rw-r--r--]sw/inc/unotxdoc.hxx3
-rwxr-xr-xsw/prj/build.lst1
-rw-r--r--sw/qa/core/export.map2
-rw-r--r--sw/qa/core/makefile.mk2
-rw-r--r--sw/qa/unoapi/Test.java51
-rw-r--r--sw/qa/unoapi/knownissues.xcl5
-rw-r--r--sw/qa/unoapi/makefile.mk31
-rwxr-xr-x[-rw-r--r--]sw/source/core/doc/doc.cxx50
-rw-r--r--sw/source/core/docnode/ndtbl.cxx64
-rw-r--r--sw/source/core/text/inftxt.cxx4
-rw-r--r--sw/source/core/text/inftxt.hxx4
-rw-r--r--sw/source/core/text/itrform2.cxx3
-rw-r--r--sw/source/core/text/portxt.cxx8
-rw-r--r--sw/source/core/unocore/unotext.cxx20
-rwxr-xr-x[-rw-r--r--]sw/source/core/view/makefile.mk11
-rwxr-xr-xsw/source/core/view/printdata.cxx546
-rwxr-xr-x[-rw-r--r--]sw/source/core/view/viewsh.cxx3
-rwxr-xr-x[-rw-r--r--]sw/source/core/view/vprint.cxx555
-rw-r--r--sw/source/filter/rtf/wrtrtf.cxx11
-rwxr-xr-x[-rw-r--r--]sw/source/ui/config/optdlg.src6
-rw-r--r--sw/source/ui/dbui/dbmgr.cxx3
-rw-r--r--sw/source/ui/dbui/dbui.src2
-rw-r--r--sw/source/ui/dialog/makefile.mk4
-rw-r--r--sw/source/ui/envelp/mailmrge.cxx6
-rw-r--r--sw/source/ui/inc/tbxmgr.hxx52
-rw-r--r--sw/source/ui/ribbar/tblctrl.cxx1
-rw-r--r--sw/source/ui/ribbar/tbxmgr.cxx180
-rw-r--r--sw/source/ui/ribbar/workctrl.cxx1
-rwxr-xr-x[-rw-r--r--]sw/source/ui/uno/unotxdoc.cxx63
-rw-r--r--sw/util/makefile.mk4
-rwxr-xr-x[-rw-r--r--]sw/util/msword.map2
-rw-r--r--sw/util/sw.map8
-rw-r--r--sw/util/swd.map8
-rw-r--r--sw/util/swui.map2
-rw-r--r--sw/util/vbaswobj.map9
-rw-r--r--swext/mediawiki/src/description.xml2
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/hicolor/16x16/apps/printeradmin.pngbin963 -> 4259 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/hicolor/32x32/apps/printeradmin.pngbin2534 -> 5595 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/hicolor/48x48/apps/printeradmin.pngbin4058 -> 7337 bytes
-rw-r--r--sysui/desktop/icons/makefile.mk2
-rwxr-xr-xsysui/desktop/icons/ooo3_open.icobin0 -> 295606 bytes
-rwxr-xr-xsysui/desktop/icons/so9_open.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/share/launcher_comment.ulf2
-rw-r--r--sysui/desktop/slackware/makefile.mk6
-rw-r--r--test/inc/makefile.mk (renamed from sal/qa/rtl/textenc/gcc3_export.map)22
-rw-r--r--test/inc/pch/precompiled_test.cxx26
-rw-r--r--test/inc/pch/precompiled_test.hxx30
-rw-r--r--test/inc/test/detail/testdllapi.hxx39
-rw-r--r--test/inc/test/getargument.hxx44
-rw-r--r--test/inc/test/officeconnection.hxx65
-rw-r--r--test/inc/test/oustringostreaminserter.hxx48
-rw-r--r--test/inc/test/toabsolutefileurl.hxx44
-rw-r--r--test/prj/build.lst4
-rw-r--r--test/prj/d.lst12
-rw-r--r--test/source/cpp/getargument.cxx42
-rw-r--r--test/source/cpp/makefile.mk (renamed from testshl2/workben/skeleton/makefile.mk)48
-rw-r--r--test/source/cpp/officeconnection.cxx159
-rw-r--r--test/source/cpp/toabsolutefileurl.cxx83
-rw-r--r--test/source/java/OfficeConnection.java207
-rw-r--r--test/source/java/makefile.mk (renamed from testshl2/source/testshlrunner/makefile.mk)37
-rwxr-xr-x[-rw-r--r--]testautomation/chart2/optional/includes/ch2_lvl1a.inc4
-rwxr-xr-x[-rw-r--r--]testautomation/chart2/tools/ch_tools_select.inc2
-rw-r--r--testautomation/global/win/edia_p_s.win3
-rwxr-xr-x[-rw-r--r--]testautomation/spreadsheet/required/includes/c_upd_formatmenu2.inc23
-rw-r--r--testshl2/README8
-rw-r--r--testshl2/inc/makefile.mk47
-rw-r--r--testshl2/inc/pch/precompiled_testshl2.cxx29
-rw-r--r--testshl2/inc/testshl/additionalfunc.hxx61
-rw-r--r--testshl2/inc/testshl/autoregister/callbackstructure.h86
-rw-r--r--testshl2/inc/testshl/autoregister/htestresult.h6
-rw-r--r--testshl2/inc/testshl/autoregister/registerfunc.h47
-rw-r--r--testshl2/inc/testshl/autoregister/registertestfunction.h51
-rw-r--r--testshl2/inc/testshl/autoregisterhelper.hxx62
-rw-r--r--testshl2/inc/testshl/checkboom.hxx37
-rw-r--r--testshl2/inc/testshl/cmdlinebits.hxx49
-rw-r--r--testshl2/inc/testshl/dynamicregister.hxx64
-rw-r--r--testshl2/inc/testshl/filehelper.hxx47
-rw-r--r--testshl2/inc/testshl/getopt.hxx332
-rw-r--r--testshl2/inc/testshl/joblist.hxx96
-rw-r--r--testshl2/inc/testshl/log.hxx113
-rw-r--r--testshl2/inc/testshl/nocopy.hxx13
-rw-r--r--testshl2/inc/testshl/result/SynchronizedObject.h82
-rw-r--r--testshl2/inc/testshl/result/TestListener.h62
-rw-r--r--testshl2/inc/testshl/result/TestResult.h123
-rw-r--r--testshl2/inc/testshl/result/TestResultCollector.h165
-rw-r--r--testshl2/inc/testshl/result/TestSucessListener.h40
-rw-r--r--testshl2/inc/testshl/result/TextTestResult.h62
-rw-r--r--testshl2/inc/testshl/result/callbackfunc.h25
-rw-r--r--testshl2/inc/testshl/result/emacsTestResult.hxx79
-rw-r--r--testshl2/inc/testshl/result/log.hxx103
-rw-r--r--testshl2/inc/testshl/result/optionhelper.hxx95
-rw-r--r--testshl2/inc/testshl/result/outputter.hxx82
-rw-r--r--testshl2/inc/testshl/result/testshlTestResult.h72
-rw-r--r--testshl2/inc/testshl/signaltest.h62
-rw-r--r--testshl2/inc/testshl/simpleheader.hxx43
-rw-r--r--testshl2/inc/testshl/stringhelper.hxx39
-rw-r--r--testshl2/inc/testshl/taghelper.hxx88
-rw-r--r--testshl2/inc/testshl/tresstatewrapper.h63
-rw-r--r--testshl2/inc/testshl/tresstatewrapper.hxx57
-rw-r--r--testshl2/inc/testshl/versionhelper.hxx84
-rw-r--r--testshl2/inc/testshl/winstuff.hxx40
-rw-r--r--testshl2/prj/build.lst9
-rw-r--r--testshl2/prj/d.lst29
-rw-r--r--testshl2/source/autoregisterhelper.cxx140
-rw-r--r--testshl2/source/codegen/codegen.pl601
-rw-r--r--testshl2/source/cppunit/cmdlinebits.cxx141
-rw-r--r--testshl2/source/cppunit/joblist.cxx221
-rw-r--r--testshl2/source/cppunit/makefile.mk99
-rw-r--r--testshl2/source/cppunit/registertestfunction.cxx57
-rw-r--r--testshl2/source/cppunit/result/SynchronizedObject.cpp38
-rw-r--r--testshl2/source/cppunit/result/TestResult.cpp264
-rw-r--r--testshl2/source/cppunit/result/TestResultCollector.cpp150
-rw-r--r--testshl2/source/cppunit/result/TestSucessListener.cpp50
-rw-r--r--testshl2/source/cppunit/result/TextTestResult.cpp194
-rw-r--r--testshl2/source/cppunit/result/emacsTestResult.cxx190
-rw-r--r--testshl2/source/cppunit/result/log.cxx122
-rw-r--r--testshl2/source/cppunit/result/makefile.mk79
-rw-r--r--testshl2/source/cppunit/result/optionhelper.cxx314
-rw-r--r--testshl2/source/cppunit/result/outputter.cxx103
-rw-r--r--testshl2/source/cppunit/result/signal.cxx996
-rw-r--r--testshl2/source/cppunit/result/signal.hxx39
-rw-r--r--testshl2/source/cppunit/result/testshlTestResult.cxx425
-rw-r--r--testshl2/source/cppunit/result/treswrapper.cxx259
-rw-r--r--testshl2/source/cppunit/signaltest.cxx89
-rw-r--r--testshl2/source/cppunit/t_print.cxx95
-rw-r--r--testshl2/source/cppunit/tresregister.cxx66
-rw-r--r--testshl2/source/cppunit/tresstatewrapper.cxx166
-rw-r--r--testshl2/source/cppunit/win32/makefile.mk60
-rw-r--r--testshl2/source/cppunit/win32/winstuff.cxx140
-rw-r--r--testshl2/source/dynamicregister.cxx207
-rw-r--r--testshl2/source/file.cxx74
-rw-r--r--testshl2/source/filehelper.cxx228
-rw-r--r--testshl2/source/getopt.cxx919
-rw-r--r--testshl2/source/makefile.mk130
-rw-r--r--testshl2/source/terminate.cxx289
-rw-r--r--testshl2/source/testshl.cxx396
-rw-r--r--testshl2/source/testshlrunner/ProcessHandler.java355
-rw-r--r--testshl2/source/testshlrunner/TestShl2Runner.java937
-rw-r--r--testshl2/source/versioner.cxx117
-rw-r--r--testshl2/source/versionhelper.cxx124
-rw-r--r--testshl2/workben/codegen/README9
-rw-r--r--testshl2/workben/codegen/checkfile7
-rw-r--r--testshl2/workben/codegen/cleanup10
-rw-r--r--testshl2/workben/codegen/makefile.mk45
-rw-r--r--testshl2/workben/codegen/selftest49
-rw-r--r--testshl2/workben/codegen/test.job17
-rw-r--r--testshl2/workben/codegen/w32/checkfile.btm7
-rw-r--r--testshl2/workben/codegen/w32/cleanup.btm9
-rw-r--r--testshl2/workben/codegen/w32/makefile.mk45
-rw-r--r--testshl2/workben/codegen/w32/selftest.btm47
-rw-r--r--testshl2/workben/codegen/w32/test.job17
-rw-r--r--testshl2/workben/dlltest/export.exp1
-rw-r--r--testshl2/workben/dlltest/makefile.mk126
-rw-r--r--testshl2/workben/dlltest/onefuncstarter.cxx140
-rw-r--r--testshl2/workben/dlltest/registerfunc.h41
-rw-r--r--testshl2/workben/examples/makefile.mk64
-rw-r--r--testshl2/workben/examples/testshl_test.cxx286
-rw-r--r--testshl2/workben/garbage_dump/float.cxx137
-rw-r--r--testshl2/workben/garbage_dump/nippondir.cxx316
-rw-r--r--testshl2/workben/garbage_dump/some_tips.cxx126
-rw-r--r--testshl2/workben/getopt/makefile.mk60
-rw-r--r--testshl2/workben/getopt/test_getopt.cxx140
-rw-r--r--testshl2/workben/makefile.mk126
-rw-r--r--testshl2/workben/runner/unxlngi4.config.file34
-rw-r--r--testshl2/workben/runner/unxsols3.config.file34
-rw-r--r--testshl2/workben/runner/wntmsci9.config.file46
-rw-r--r--testshl2/workben/selftest/README.txt30
-rw-r--r--testshl2/workben/selftest/delivertest.cxx61
-rw-r--r--testshl2/workben/selftest/export.map8
-rw-r--r--testshl2/workben/selftest/makefile.mk87
-rw-r--r--testshl2/workben/selftest/notdeliveredtest.cxx61
-rw-r--r--testshl2/workben/singleton.cxx49
-rw-r--r--testshl2/workben/skeleton/export.map7
-rw-r--r--testshl2/workben/skeleton/skeleton.cxx79
-rw-r--r--testshl2/workben/test_autoptr.cxx100
-rw-r--r--testshl2/workben/test_filter.cxx230
-rw-r--r--testshl2/workben/test_member.cxx97
-rw-r--r--testshl2/workben/test_ostringstream.cxx116
-rw-r--r--testshl2/workben/test_preproc.cxx55
-rw-r--r--testshl2/workben/test_string.cxx138
-rw-r--r--testshl2/workben/uno/export.exp1
-rwxr-xr-xtestshl2/workben/uno/export.map8
-rw-r--r--testshl2/workben/uno/makefile.mk79
-rw-r--r--testshl2/workben/uno/unotest.cxx114
-rw-r--r--testtools/source/bridgetest/component.gcc3.map38
-rw-r--r--testtools/source/bridgetest/component.map36
-rw-r--r--testtools/source/bridgetest/makefile.mk26
-rw-r--r--testtools/source/bridgetest/pyuno/makefile.mk19
-rw-r--r--tomcat/download/jakarta-tomcat-5.0.30-src.tar.gzbin3568559 -> 0 bytes
-rwxr-xr-xtomcat/makefile.mk1
-rw-r--r--toolkit/prj/build.lst1
-rw-r--r--toolkit/qa/unoapi/Test.java51
-rw-r--r--toolkit/qa/unoapi/knownissues.xcl12
-rw-r--r--toolkit/qa/unoapi/makefile.mk33
-rw-r--r--toolkit/qa/unoapi/toolkit.sce8
-rw-r--r--tools/bootstrp/command.cxx8
-rw-r--r--tools/bootstrp/rscdep.cxx8
-rw-r--r--tools/inc/bootstrp/command.hxx4
-rw-r--r--tools/inc/tools/debug.hxx31
-rw-r--r--tools/inc/tools/postextstl.h (renamed from testshl2/inc/pch/precompiled_testshl2.hxx)12
-rw-r--r--tools/inc/tools/preextstl.h64
-rw-r--r--tools/prj/d.lst3
-rw-r--r--tools/qa/makefile.mk1
-rw-r--r--tools/source/debug/debug.cxx32
-rw-r--r--tools/source/fsys/tdir.cxx2
-rw-r--r--tools/source/stream/strmunx.cxx6
-rw-r--r--tools/test/export.map2
-rw-r--r--tools/test/makefile.mk2
-rw-r--r--ucb/prj/build.lst1
-rw-r--r--ucb/qa/unoapi/Test.java51
-rw-r--r--ucb/qa/unoapi/makefile.mk30
-rw-r--r--ucb/source/cacher/exports.map8
-rw-r--r--ucb/source/cacher/makefile.mk2
-rw-r--r--ucb/source/core/exports.map8
-rw-r--r--ucb/source/core/makefile.mk2
-rw-r--r--ucb/source/sorter/exports.map8
-rw-r--r--ucb/source/sorter/makefile.mk2
-rw-r--r--ucb/source/ucp/expand/makefile.mk2
-rw-r--r--ucb/source/ucp/expand/ucpexpand1.uno.map8
-rw-r--r--ucb/source/ucp/file/exports.map8
-rw-r--r--ucb/source/ucp/file/makefile.mk2
-rw-r--r--ucb/source/ucp/ftp/makefile.mk2
-rw-r--r--ucb/source/ucp/ftp/ucpftp.map8
-rw-r--r--ucb/source/ucp/gio/exports.map8
-rw-r--r--ucb/source/ucp/gio/makefile.mk2
-rw-r--r--ucb/source/ucp/gvfs/exports.map8
-rw-r--r--ucb/source/ucp/gvfs/makefile.mk2
-rw-r--r--ucb/source/ucp/hierarchy/makefile.mk2
-rw-r--r--ucb/source/ucp/hierarchy/ucphier.map8
-rw-r--r--ucb/source/ucp/odma/exports.map8
-rw-r--r--ucb/source/ucp/odma/makefile.mk2
-rw-r--r--ucb/source/ucp/package/exports.map8
-rw-r--r--ucb/source/ucp/package/makefile.mk2
-rw-r--r--ucb/source/ucp/tdoc/exports.map8
-rw-r--r--ucb/source/ucp/tdoc/makefile.mk2
-rw-r--r--ucb/source/ucp/webdav/exports.map8
-rw-r--r--ucb/source/ucp/webdav/makefile.mk2
-rw-r--r--ucbhelper/workben/myucp/exports.map8
-rw-r--r--ucbhelper/workben/myucp/makefile.mk2
-rw-r--r--unotools/source/misc/desktopterminationobserver.cxx6
-rw-r--r--unoxml/source/rdf/makefile.mk2
-rw-r--r--unoxml/source/service/exports.map10
-rw-r--r--unoxml/source/service/makefile.mk2
-rw-r--r--unoxml/test/export.map2
-rw-r--r--unoxml/test/makefile.mk2
-rw-r--r--ure/source/uretest/version.map2
-rw-r--r--uui/util/exports.map10
-rw-r--r--uui/util/makefile.mk2
-rw-r--r--vbahelper/util/makefile.mk2
-rw-r--r--vbahelper/util/msforms.map9
-rw-r--r--vcl/aqua/source/dtrans/aqua_clipboard.cxx13
-rw-r--r--vcl/aqua/source/gdi/aquaprintaccessoryview.mm9
-rw-r--r--vcl/aqua/source/gdi/salgdi.cxx3
-rw-r--r--vcl/aqua/source/gdi/salprn.cxx202
-rw-r--r--vcl/inc/postgraphitestl.h9
-rw-r--r--vcl/inc/pregraphitestl.h30
-rw-r--r--vcl/inc/vcl/graphite_adaptors.hxx6
-rw-r--r--vcl/inc/vcl/graphite_features.hxx4
-rw-r--r--vcl/inc/vcl/graphite_layout.hxx4
-rw-r--r--vcl/inc/vcl/ppdparser.hxx30
-rw-r--r--vcl/inc/vcl/prndlg.hxx5
-rw-r--r--vcl/source/app/dbggui.cxx25
-rw-r--r--vcl/source/gdi/outdev3.cxx5
-rw-r--r--vcl/source/gdi/print3.cxx204
-rw-r--r--vcl/source/glyphs/graphite_adaptors.cxx2
-rw-r--r--vcl/source/glyphs/graphite_cache.cxx4
-rw-r--r--vcl/source/glyphs/graphite_features.cxx6
-rw-r--r--vcl/source/glyphs/graphite_layout.cxx12
-rw-r--r--vcl/source/glyphs/graphite_textsrc.cxx10
-rw-r--r--vcl/source/glyphs/graphite_textsrc.hxx6
-rw-r--r--vcl/source/helper/xconnection.cxx16
-rw-r--r--vcl/source/window/printdlg.cxx147
-rw-r--r--vcl/source/window/window.cxx2
-rw-r--r--vcl/unx/headless/svpinst.cxx26
-rw-r--r--vcl/unx/headless/svpinst.hxx3
-rw-r--r--vcl/unx/source/printer/ppdparser.cxx87
-rw-r--r--vcl/util/makefile2.pmk2
-rw-r--r--vigra/makefile.mk1
-rw-r--r--wizards/com/sun/star/wizards/makefile.mk2
-rw-r--r--wizards/com/sun/star/wizards/web/data/makefile.mk2
-rw-r--r--wizards/com/sun/star/wizards/web/export/makefile.mk2
-rw-r--r--wizards/com/sun/star/wizards/web/makefile.mk2
-rw-r--r--writerfilter/inc/resourcemodel/Protocol.hxx98
-rw-r--r--writerfilter/inc/resourcemodel/TableData.hxx27
-rw-r--r--writerfilter/inc/resourcemodel/TableManager.hxx662
-rw-r--r--writerfilter/inc/resourcemodel/TagLogger.hxx4
-rw-r--r--writerfilter/inc/resourcemodel/WW8ResourceModel.hxx1
-rw-r--r--writerfilter/inc/resourcemodel/util.hxx3
-rw-r--r--writerfilter/prj/build.lst2
-rw-r--r--writerfilter/qa/cppunittests/doctok/export.map2
-rw-r--r--writerfilter/qa/cppunittests/doctok/makefile.mk1
-rw-r--r--writerfilter/qa/cppunittests/odiapi/export.map2
-rw-r--r--writerfilter/qa/cppunittests/odiapi/makefile.mk2
-rw-r--r--writerfilter/qa/cppunittests/qname/export.map2
-rw-r--r--writerfilter/qa/cppunittests/qname/makefile.mk2
-rw-r--r--writerfilter/qa/cppunittests/sl/export.map2
-rw-r--r--writerfilter/qa/cppunittests/sl/makefile.mk2
-rw-r--r--writerfilter/qa/cppunittests/xxml/export.map2
-rw-r--r--writerfilter/qa/cppunittests/xxml/makefile.mk2
-rw-r--r--writerfilter/qa/documents/HeaderFooter.docbin0 -> 23040 bytes
-rw-r--r--writerfilter/qa/documents/HeaderFooter.docxbin0 -> 12913 bytes
-rw-r--r--writerfilter/qa/documents/Paragraph with footnote.docbin0 -> 24064 bytes
-rw-r--r--writerfilter/qa/documents/Paragraph with footnote.docxbin0 -> 13217 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/Table in B2.docxbin0 -> 10353 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/table in A1.docxbin0 -> 10340 bytes
-rw-r--r--writerfilter/qa/documents/docx/tables/~$sted-tables3.docxbin0 -> 162 bytes
-rw-r--r--writerfilter/source/dmapper/BorderHandler.cxx19
-rw-r--r--writerfilter/source/dmapper/CellColorHandler.cxx14
-rwxr-xr-x[-rw-r--r--]writerfilter/source/dmapper/DomainMapper.cxx186
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableHandler.cxx489
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableHandler.hxx6
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableManager.cxx110
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableManager.hxx2
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx39
-rwxr-xr-x[-rw-r--r--]writerfilter/source/dmapper/DomainMapper_Impl.hxx12
-rw-r--r--writerfilter/source/dmapper/FontTable.cxx23
-rw-r--r--writerfilter/source/dmapper/FontTable.hxx5
-rw-r--r--writerfilter/source/dmapper/GraphicImport.cxx974
-rw-r--r--writerfilter/source/dmapper/LFOTable.cxx429
-rw-r--r--writerfilter/source/dmapper/ListTable.cxx483
-rw-r--r--writerfilter/source/dmapper/PropertyIds.cxx1
-rw-r--r--writerfilter/source/dmapper/PropertyIds.hxx13
-rw-r--r--writerfilter/source/dmapper/PropertyMap.cxx57
-rw-r--r--writerfilter/source/dmapper/PropertyMap.hxx27
-rw-r--r--writerfilter/source/dmapper/PropertyMapHelper.cxx129
-rw-r--r--writerfilter/source/dmapper/PropertyMapHelper.hxx (renamed from testshl2/workben/dlltest/onefunc.cxx)37
-rwxr-xr-x[-rw-r--r--]writerfilter/source/dmapper/SettingsTable.cxx251
-rwxr-xr-x[-rw-r--r--]writerfilter/source/dmapper/SettingsTable.hxx76
-rw-r--r--writerfilter/source/dmapper/StyleSheetTable.cxx631
-rw-r--r--writerfilter/source/dmapper/StyleSheetTable.hxx19
-rw-r--r--writerfilter/source/dmapper/TablePropertiesHandler.cxx28
-rw-r--r--writerfilter/source/dmapper/TblStylePrHandler.cxx18
-rwxr-xr-x[-rw-r--r--]writerfilter/source/dmapper/ThemeTable.cxx2
-rw-r--r--writerfilter/source/dmapper/dmapperLoggers.cxx (renamed from sc/inc/eetext.hxx)14
-rw-r--r--writerfilter/source/dmapper/dmapperLoggers.hxx (renamed from testshl2/inc/testshl/autoregister/testfunc.h)27
-rwxr-xr-x[-rw-r--r--]writerfilter/source/dmapper/makefile.mk54
-rw-r--r--writerfilter/source/doctok/WW8DocumentImpl.cxx56
-rw-r--r--writerfilter/source/doctok/WW8DocumentImpl.hxx10
-rw-r--r--writerfilter/source/doctok/WW8LFOLevel.cxx45
-rw-r--r--writerfilter/source/doctok/WW8LFOTable.cxx34
-rw-r--r--writerfilter/source/doctok/WW8ListTable.cxx22
-rw-r--r--writerfilter/source/doctok/WW8PropertySetImpl.cxx35
-rw-r--r--writerfilter/source/doctok/WW8PropertySetImpl.hxx9
-rw-r--r--writerfilter/source/doctok/WW8StructBase.cxx23
-rw-r--r--writerfilter/source/doctok/WW8Sttbf.cxx79
-rw-r--r--writerfilter/source/doctok/WW8Sttbf.hxx29
-rwxr-xr-xwriterfilter/source/doctok/cleanupresources5
-rw-r--r--writerfilter/source/doctok/compactxmi.xsl262
-rw-r--r--writerfilter/source/doctok/resources.xmi7280
-rw-r--r--writerfilter/source/doctok/resources.xsl1
-rw-r--r--writerfilter/source/doctok/xmigen.el3
-rw-r--r--writerfilter/source/doctok/xmigen.xsl507
-rw-r--r--writerfilter/source/filter/ImportFilter.cxx4
-rw-r--r--writerfilter/source/ooxml/OOXMLDocumentImpl.cxx20
-rwxr-xr-xwriterfilter/source/ooxml/OOXMLFactory.cxx333
-rwxr-xr-xwriterfilter/source/ooxml/OOXMLFactory.hxx176
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.cxx518
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.hxx199
-rw-r--r--writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx14
-rw-r--r--writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx3
-rw-r--r--writerfilter/source/ooxml/OOXMLFastHelper.hxx53
-rw-r--r--writerfilter/source/ooxml/OOXMLParserState.cxx104
-rw-r--r--writerfilter/source/ooxml/OOXMLParserState.hxx14
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx43
-rw-r--r--writerfilter/source/ooxml/README.efforts131
-rw-r--r--writerfilter/source/ooxml/analyzemodel.xsl103
-rw-r--r--writerfilter/source/ooxml/analyzer.xsl46
-rw-r--r--writerfilter/source/ooxml/analyzestage2.xsl32
-rw-r--r--writerfilter/source/ooxml/analyzestage3.xsl40
-rw-r--r--writerfilter/source/ooxml/effort.xsl39
-rwxr-xr-xwriterfilter/source/ooxml/efforts.sh3
-rw-r--r--writerfilter/source/ooxml/factory.xsl (renamed from writerfilter/source/ooxml/values.xsl)37
-rw-r--r--writerfilter/source/ooxml/factory_ns.xsl (renamed from writerfilter/source/ooxml/fastresources_dml-shape3DScene.xsl)109
-rw-r--r--writerfilter/source/ooxml/factory_values.xsl (renamed from writerfilter/source/ooxml/fastresources_dml-baseTypes.xsl)62
-rw-r--r--writerfilter/source/ooxml/factoryimpl.xsl386
-rw-r--r--writerfilter/source/ooxml/factoryimpl_ns.xsl824
-rw-r--r--writerfilter/source/ooxml/factoryimpl_values.xsl (renamed from writerfilter/source/ooxml/fastresources_.xsl)63
-rw-r--r--writerfilter/source/ooxml/factoryinc.xsl (renamed from writerfilter/source/ooxml/fastresources_dml-shape3DCamera.xsl)62
-rw-r--r--writerfilter/source/ooxml/factorytools.xsl345
-rw-r--r--writerfilter/source/ooxml/fastresources.xsl116
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-baseStylesheet.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-chartDrawing.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-documentProperties.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-graphicalObject.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shape3DLighting.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shape3DStyles.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shapeEffects.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shapeGeometry.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shapeLineProperties.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shapeProperties.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-styleDefaults.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-stylesheet.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-textCharacter.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-wordprocessingDrawing.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_shared-math.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_shared-relationshipReference.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_sml-customXmlMappings.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_vml-main.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_vml-officeDrawing.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_vml-wordprocessingDrawing.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresources_wml.xsl98
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl.xsl95
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-baseStylesheet.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-baseTypes.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-chartDrawing.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-documentProperties.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-graphicalObject.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DCamera.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DLighting.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DScene.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DStyles.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shapeEffects.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shapeGeometry.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shapeLineProperties.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-styleDefaults.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-stylesheet.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-textCharacter.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-wordprocessingDrawing.xsl94
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_shared-math.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_shared-relationshipReference.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_sml-customXmlMappings.xsl93
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_vml-main.xsl94
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_vml-officeDrawing.xsl94
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_vml-wordprocessingDrawing.xsl94
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_wml.xsl94
-rw-r--r--writerfilter/source/ooxml/fasttokens.xsl20
-rw-r--r--writerfilter/source/ooxml/fasttokensimpl.xsl77
-rw-r--r--writerfilter/source/ooxml/gperffasttokenhandler.xsl26
-rw-r--r--writerfilter/source/ooxml/makefile.mk127
-rw-r--r--writerfilter/source/ooxml/model.xml4067
-rw-r--r--writerfilter/source/ooxml/modelcleanup.xsl118
-rw-r--r--writerfilter/source/ooxml/modelpreprocess.xsl9
-rw-r--r--writerfilter/source/ooxml/namespaceids.xsl13
-rw-r--r--writerfilter/source/ooxml/nostatus.xsl20
-rw-r--r--writerfilter/source/ooxml/qnametostr.xsl61
-rw-r--r--writerfilter/source/ooxml/resourceids.xsl22
-rw-r--r--writerfilter/source/ooxml/resourcestools.xsl2338
-rwxr-xr-xwriterfilter/source/ooxml/status.sh26
-rw-r--r--writerfilter/source/ooxml/todo.xsl29
-rw-r--r--writerfilter/source/ooxml/valuesimpl.xsl85
-rw-r--r--writerfilter/source/resourcemodel/Protocol.cxx216
-rw-r--r--writerfilter/source/resourcemodel/TagLogger.cxx45
-rw-r--r--writerfilter/source/resourcemodel/makefile.mk48
-rw-r--r--writerfilter/source/resourcemodel/namespace_preprocess.pl (renamed from writerfilter/source/ooxml/namespace_preprocess.pl)0
-rwxr-xr-xwriterfilter/source/resourcemodel/setdebugflags3
-rw-r--r--writerfilter/source/resourcemodel/util.cxx24
-rw-r--r--writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.cxx12
-rw-r--r--writerfilter/util/exports.map9
-rw-r--r--writerfilter/util/makefile.mk2
-rw-r--r--writerperfect/util/makefile.mk2
-rw-r--r--writerperfect/util/wpft.map8
-rw-r--r--xmlhelp/source/com/sun/star/help/makefile.mk4
-rw-r--r--xmlhelp/source/treeview/makefile.mk2
-rw-r--r--xmlhelp/source/treeview/tvhlp.map9
-rw-r--r--xmlhelp/util/exports.map8
-rw-r--r--xmlhelp/util/makefile.mk2
-rw-r--r--xmloff/prj/build.lst1
-rw-r--r--xmloff/qa/unoapi/Test.java51
-rw-r--r--xmloff/qa/unoapi/makefile.mk30
-rw-r--r--xmloff/source/core/xmlexp.cxx23
-rw-r--r--xmloff/source/transform/makefile.mk2
-rw-r--r--xmloff/source/transform/xof.map8
-rw-r--r--xmlsecurity/source/xmlsec/diagnose.cxx2
-rw-r--r--xmlsecurity/util/makefile.mk2
-rw-r--r--xmlsecurity/util/xmlsecurity.map8
-rw-r--r--xpdf/download/xpdf-3.02.tar.gzbin674912 -> 0 bytes
-rw-r--r--xpdf/makefile.mk1
-rwxr-xr-xxsltml/makefile.mk1
-rw-r--r--zlib/makefile.mk1
1655 files changed, 31634 insertions, 58616 deletions
diff --git a/UnoControls/util/exports.map b/UnoControls/util/exports.map
deleted file mode 100644
index ba501f9ae076..000000000000
--- a/UnoControls/util/exports.map
+++ /dev/null
@@ -1,10 +0,0 @@
-UDK_3_0_0 {
- global:
- GetVersionInfo;
- component_getImplementationEnvironment;
- component_getFactory;
- component_writeInfo;
-
- local:
- *;
-};
diff --git a/UnoControls/util/makefile.mk b/UnoControls/util/makefile.mk
index 5cd23262a481..aacddb23c0ad 100644
--- a/UnoControls/util/makefile.mk
+++ b/UnoControls/util/makefile.mk
@@ -44,7 +44,7 @@ LIB1FILES= $(SLB)$/base.lib \
SHL1TARGET= $(TARGET)$(DLLPOSTFIX)
SHL1IMPLIB= i$(TARGET)
-SHL1VERSIONMAP=exports.map
+SHL1VERSIONMAP=$(SOLARENV)/src/component.map
SHL1DEF=$(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
diff --git a/accessibility/bridge/org/openoffice/java/accessibility/makefile.mk b/accessibility/bridge/org/openoffice/java/accessibility/makefile.mk
index f99b19cd6590..0d98760a31df 100755
--- a/accessibility/bridge/org/openoffice/java/accessibility/makefile.mk
+++ b/accessibility/bridge/org/openoffice/java/accessibility/makefile.mk
@@ -102,7 +102,6 @@ PRODUCTSWITCH = false
DEBUGSWITCH = true
.ENDIF
-.IF "$(GUI)"=="UNX" || "$(USE_SHELL)" != "4nt"
$(JAVADIR)$/$(PACKAGE)$/%.java: makefile.mk
@@-$(MKDIRHIER) $(JAVADIR)$/$(PACKAGE)
@-echo package org.openoffice.java.accessibility\; > $@
@@ -110,16 +109,6 @@ $(JAVADIR)$/$(PACKAGE)$/%.java: makefile.mk
@-echo public static final boolean DEBUG = $(DEBUGSWITCH)\; >> $@
@-echo public static final boolean PRODUCT = $(PRODUCTSWITCH)\; >> $@
@-echo } >> $@
-.ELSE
-$(JAVADIR)$/$(PACKAGE)$/%.java: makefile.mk
- @@-$(MKDIRHIER) $(JAVADIR)$/$(PACKAGE)
- @-echo package org.openoffice.java.accessibility; > $@
- @-echo public class Build { >> $@
- @-echo public static final boolean DEBUG = $(DEBUGSWITCH); >> $@
- @-echo public static final boolean PRODUCT = $(PRODUCTSWITCH); >> $@
- @-echo } >> $@
-.ENDIF
-
$(CLASSDIR)$/$(PACKAGE)$/Build.class : $(JAVADIR)$/$(PACKAGE)$/Build.java
-$(JAVAC) -d $(CLASSDIR) $(JAVADIR)$/$(PACKAGE)$/Build.java
diff --git a/accessibility/util/acc.map b/accessibility/util/acc.map
index 5678c95e71fd..b9e53f414df5 100644
--- a/accessibility/util/acc.map
+++ b/accessibility/util/acc.map
@@ -1,4 +1,4 @@
-FORMS_1_0 {
+UDK_3_0_0 {
global:
getStandardAccessibleFactory;
getSvtAccessibilityComponentFactory;
diff --git a/afms/makefile.mk b/afms/makefile.mk
index 2d61ed2dfa12..b1d2eafe7555 100644
--- a/afms/makefile.mk
+++ b/afms/makefile.mk
@@ -37,9 +37,8 @@ TARGET=afms
# --- Files --------------------------------------------------------
TARFILE_NAME=Adobe-Core35_AFMs-314
+TARFILE_MD5=1756c4fa6c616ae15973c104cd8cb256
TARFILE_ROOTDIR=Adobe-Core35_AFMs-314
-# TAR_EXCLUDES broken for solaris tar - #i77247#
-# TAR_EXCLUDES=*/*Helvetica-Narrow*
# --- Targets ------------------------------------------------------
diff --git a/animations/source/animcore/animcore.map b/animations/source/animcore/animcore.map
deleted file mode 100644
index 30c5bb729ac7..000000000000
--- a/animations/source/animcore/animcore.map
+++ /dev/null
@@ -1,9 +0,0 @@
-UDK_3_0_0 {
- global:
- component_getImplementationEnvironment;
- component_writeInfo;
- component_getFactory;
- component_canUnload;
- local:
- *;
-};
diff --git a/animations/source/animcore/makefile.mk b/animations/source/animcore/makefile.mk
index 645ea8233d64..b78460ada157 100644
--- a/animations/source/animcore/makefile.mk
+++ b/animations/source/animcore/makefile.mk
@@ -48,7 +48,7 @@ SLOFILES = $(SLO)$/animcore.obj\
$(SLO)$/targetpropertiescreator.obj
SHL1TARGET= $(TARGET)
-SHL1VERSIONMAP= $(TARGET).map
+SHL1VERSIONMAP=$(SOLARENV)/src/unloadablecomponent.map
SHL1STDLIBS= \
$(SALLIB) \
diff --git a/apache-commons/download/README b/apache-commons/download/README
deleted file mode 100644
index 38fc135536d7..000000000000
--- a/apache-commons/download/README
+++ /dev/null
@@ -1,16 +0,0 @@
-commons-codec-1.3-src.tar.gz
-commons-logging-1.1.1-src.tar.gz
-commons-lang-2.3-src.tar.gz
-
-downloaded from
-
-http://archive.apache.org/dist/commons
-
----
-
-commons-httpclient-3.1-src.tar.gz
-
-downloaded from
-
-http://hc.apache.org/downloads.cgi
-
diff --git a/apache-commons/download/commons-codec-1.3-src.tar.gz b/apache-commons/download/commons-codec-1.3-src.tar.gz
deleted file mode 100644
index 13e0063fbdf9..000000000000
--- a/apache-commons/download/commons-codec-1.3-src.tar.gz
+++ /dev/null
Binary files differ
diff --git a/apache-commons/download/commons-httpclient-3.1-src.tar.gz b/apache-commons/download/commons-httpclient-3.1-src.tar.gz
deleted file mode 100644
index f52b40704b2f..000000000000
--- a/apache-commons/download/commons-httpclient-3.1-src.tar.gz
+++ /dev/null
Binary files differ
diff --git a/apache-commons/download/commons-lang-2.3-src.tar.gz b/apache-commons/download/commons-lang-2.3-src.tar.gz
deleted file mode 100644
index f517cbd8ab4f..000000000000
--- a/apache-commons/download/commons-lang-2.3-src.tar.gz
+++ /dev/null
Binary files differ
diff --git a/apache-commons/download/commons-logging-1.1.1-src.tar.gz b/apache-commons/download/commons-logging-1.1.1-src.tar.gz
deleted file mode 100644
index 14a9371be57a..000000000000
--- a/apache-commons/download/commons-logging-1.1.1-src.tar.gz
+++ /dev/null
Binary files differ
diff --git a/apache-commons/java/codec/makefile.mk b/apache-commons/java/codec/makefile.mk
index 208bb2970dd3..6976731477de 100644
--- a/apache-commons/java/codec/makefile.mk
+++ b/apache-commons/java/codec/makefile.mk
@@ -43,6 +43,7 @@ ANT_BUILDFILE=build.xml
# --- Files --------------------------------------------------------
TARFILE_NAME=commons-codec-1.3-src
+TARFILE_MD5=af3c3acf618de6108d65fcdc92b492e1
TARFILE_ROOTDIR=commons-codec-1.3
diff --git a/apache-commons/java/httpclient/makefile.mk b/apache-commons/java/httpclient/makefile.mk
index 338c1832b164..6e05150c7c20 100644
--- a/apache-commons/java/httpclient/makefile.mk
+++ b/apache-commons/java/httpclient/makefile.mk
@@ -45,6 +45,7 @@ TAR!:=$(GNUTAR)
# --- Files --------------------------------------------------------
TARFILE_NAME=commons-httpclient-3.1-src
+TARFILE_MD5=2c9b0f83ed5890af02c0df1c1776f39b
TARFILE_ROOTDIR=commons-httpclient-3.1
diff --git a/apache-commons/java/lang/makefile.mk b/apache-commons/java/lang/makefile.mk
index 97501563e242..0bf15d0020ce 100644
--- a/apache-commons/java/lang/makefile.mk
+++ b/apache-commons/java/lang/makefile.mk
@@ -45,6 +45,7 @@ TAR!:=$(GNUTAR)
# --- Files --------------------------------------------------------
TARFILE_NAME=commons-lang-2.3-src
+TARFILE_MD5=2ae988b339daec234019a7066f96733e
TARFILE_ROOTDIR=commons-lang-2.3-src
diff --git a/apache-commons/java/logging/makefile.mk b/apache-commons/java/logging/makefile.mk
index 6e3a1d2314d9..5df8c34dde3a 100644
--- a/apache-commons/java/logging/makefile.mk
+++ b/apache-commons/java/logging/makefile.mk
@@ -43,6 +43,7 @@ ANT_BUILDFILE=build.xml
# --- Files --------------------------------------------------------
TARFILE_NAME=commons-logging-1.1.1-src
+TARFILE_MD5=3c219630e4302863a9a83d0efde889db
TARFILE_ROOTDIR=commons-logging-1.1.1-src
diff --git a/autodoc/source/display/html/cfrstd.cxx b/autodoc/source/display/html/cfrstd.cxx
index 3bf56afb07cc..3b45576c17ae 100644
--- a/autodoc/source/display/html/cfrstd.cxx
+++ b/autodoc/source/display/html/cfrstd.cxx
@@ -338,7 +338,7 @@ MakeCopyRight()
cr << "Copyright &copy; 1995, "
<< year
- << ", Oracle and/or its affiliates. All rights reserved.";
+ << ", Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.";
return String(cr.c_str());
}
diff --git a/automation/source/testtool/filter.pl b/automation/source/testtool/filter.pl
index 79b7add5c5b3..8f45073b0934 100644
--- a/automation/source/testtool/filter.pl
+++ b/automation/source/testtool/filter.pl
@@ -71,28 +71,13 @@ sub read_block {
print "Leaving read_block at the end\n" if $debug;
}
-sub convert_path {
-
- $_ = $_[0];
- $GUI = $ENV {"GUI"};
- $use_shell = $ENV {"USE_SHELL"};
- if ( $GUI eq "WNT" )
- {
- if ( defined( $use_shell ) && "$use_shell" eq "4nt" )
- {
- s/\//\\/g;
- }
- }
- $_;
-}
-
# Read a file.
# first parameter ist the filename
sub read_file {
local ($filename,$file) = @_;
$file++; # String increment
- local $TempFileName = &convert_path( $basename."/".$filename );
+ local $TempFileName = $basename."/".$filename;
print "reading file $TempFileName as $file\n" if $debug;
open($file, $TempFileName) || die "error: Could not open file $TempFileName. ";
@@ -103,9 +88,6 @@ sub read_file {
# main starts here
-print &convert_path ("/\n\n\n") if ( $debug );
-
-
$basename = ".";
$basename = $ARGV[0] if defined($ARGV[0]);
diff --git a/automation/source/testtool/makefile.mk b/automation/source/testtool/makefile.mk
index 962f9d6e2694..db8464130c1b 100644
--- a/automation/source/testtool/makefile.mk
+++ b/automation/source/testtool/makefile.mk
@@ -87,13 +87,8 @@ $(INCCOM)$/res_type.hxx : $(SOLARVERSION)$/$(INPATH)$/inc$(UPDMINOREXT)$/tools$/
$(MISC)$/xfilter.pl : filter.pl
-.IF "$(GUI)" == "UNX" || "$(USE_SHELL)"!="4nt"
tr -d "\015" < filter.pl > $(MISC)$/xfilter.pl
chmod 664 $(MISC)$/xfilter.pl
-.ELSE
- $(COPY) filter.pl $(MISC)$/xfilter.pl
- attrib -r $(MISC)$/xfilter.pl
-.ENDIF
diff --git a/avmedia/source/quicktime/avmediaQuickTime.map b/avmedia/source/quicktime/avmediaQuickTime.map
deleted file mode 100644
index bf1fbe0696c8..000000000000
--- a/avmedia/source/quicktime/avmediaQuickTime.map
+++ /dev/null
@@ -1,8 +0,0 @@
-LEXPS_1_0 {
- global:
- component_getFactory;
- component_getImplementationEnvironment;
- component_writeInfo;
- local:
- *;
-};
diff --git a/avmedia/source/quicktime/makefile.mk b/avmedia/source/quicktime/makefile.mk
index 088f3b5d0ef3..f3c9f244f357 100644
--- a/avmedia/source/quicktime/makefile.mk
+++ b/avmedia/source/quicktime/makefile.mk
@@ -73,7 +73,7 @@ SHL1LIBS=$(SLB)$/$(TARGET).lib
SHL1IMPLIB=i$(TARGET)
SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-SHL1VERSIONMAP= $(TARGET).map
+SHL1VERSIONMAP=$(SOLARENV)/src/component.map
# --- Targets ------------------------------------------------------
diff --git a/basctl/source/basicide/baside4.cxx b/basctl/source/basicide/baside4.cxx
deleted file mode 100644
index c080427ee013..000000000000
--- a/basctl/source/basicide/baside4.cxx
+++ /dev/null
@@ -1,31 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_basctl.hxx"
-
-
diff --git a/basctl/source/basicide/makefile.mk b/basctl/source/basicide/makefile.mk
index 6a08349b0979..62c4755112d1 100644
--- a/basctl/source/basicide/makefile.mk
+++ b/basctl/source/basicide/makefile.mk
@@ -90,11 +90,7 @@ $(INCCOM)$/dllname.hxx: makefile.mk
$(RM) $@
echo \#define DLL_NAME \"libbasctl$(DLLPOSTFIX)$(DLLPOST)\" >$@
.ELSE
-.IF "$(USE_SHELL)"!="4nt"
echo \#define DLL_NAME \"basctl$(DLLPOSTFIX)$(DLLPOST)\" >$@
-.ELSE # "$(USE_SHELL)"!="4nt"
- echo #define DLL_NAME "basctl$(DLLPOSTFIX)$(DLLPOST)" >$@
-.ENDIF # "$(USE_SHELL)"!="4nt"
.ENDIF
$(SLO)$/basiclib.obj : $(INCCOM)$/dllname.hxx
diff --git a/basctl/util/basctl.map b/basctl/util/basctl.map
index 6b132e93cc3d..80359606ccc8 100755
--- a/basctl/util/basctl.map
+++ b/basctl/util/basctl.map
@@ -1,4 +1,4 @@
-BASCTL_1.0 {
+UDK_3_0_0 {
global:
basicide_choose_macro;
basicide_macro_organizer;
diff --git a/basebmp/test/basictest.cxx b/basebmp/test/basictest.cxx
index 4129cebdbd3d..6f96cf56f492 100644
--- a/basebmp/test/basictest.cxx
+++ b/basebmp/test/basictest.cxx
@@ -27,7 +27,10 @@
// autogenerated file with codegen.pl
-#include <testshl/simpleheader.hxx>
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "cppunit/plugin/TestPlugIn.h"
#include <basegfx/vector/b2isize.hxx>
#include <basegfx/point/b2ipoint.hxx>
@@ -291,13 +294,7 @@ public:
};
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(BasicTest, "BasicTest");
+CPPUNIT_TEST_SUITE_REGISTRATION(BasicTest);
}
-
-// -----------------------------------------------------------------------------
-
-// this macro creates an empty function, which will called by the RegisterAllFunctions()
-// to let the user the possibility to also register some functions by hand.
-NOADDITIONAL;
-
+CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/basebmp/test/bmpmasktest.cxx b/basebmp/test/bmpmasktest.cxx
index e65c5e569d3c..9be504819fe8 100644
--- a/basebmp/test/bmpmasktest.cxx
+++ b/basebmp/test/bmpmasktest.cxx
@@ -27,7 +27,9 @@
// autogenerated file with codegen.pl
-#include <testshl/simpleheader.hxx>
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
#include <basegfx/vector/b2isize.hxx>
#include <basegfx/range/b2irange.hxx>
@@ -177,7 +179,7 @@ public:
};
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(BmpMaskTest, "BmpMaskTest");
+CPPUNIT_TEST_SUITE_REGISTRATION(BmpMaskTest);
}
diff --git a/basebmp/test/bmptest.cxx b/basebmp/test/bmptest.cxx
index ce2e2440dcd1..9e33f0a8d713 100644
--- a/basebmp/test/bmptest.cxx
+++ b/basebmp/test/bmptest.cxx
@@ -27,7 +27,9 @@
// autogenerated file with codegen.pl
-#include <testshl/simpleheader.hxx>
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
#include <basegfx/vector/b2isize.hxx>
#include <basegfx/range/b2irange.hxx>
@@ -204,7 +206,7 @@ public:
};
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(BmpTest, "BmpTest");
+CPPUNIT_TEST_SUITE_REGISTRATION(BmpTest);
}
diff --git a/basebmp/test/cliptest.cxx b/basebmp/test/cliptest.cxx
index 1c4a20bc0d86..875016d878cc 100644
--- a/basebmp/test/cliptest.cxx
+++ b/basebmp/test/cliptest.cxx
@@ -27,7 +27,9 @@
// autogenerated file with codegen.pl
-#include <testshl/simpleheader.hxx>
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
#include <basegfx/vector/b2isize.hxx>
#include <basegfx/point/b2ipoint.hxx>
@@ -271,7 +273,7 @@ public:
};
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(ClipTest, "ClipTest");
+CPPUNIT_TEST_SUITE_REGISTRATION(ClipTest);
}
diff --git a/basebmp/test/export.map b/basebmp/test/export.map
index 709047ae63e5..3308588ef6f8 100644
--- a/basebmp/test/export.map
+++ b/basebmp/test/export.map
@@ -25,9 +25,9 @@
#
#*************************************************************************
-UDK_3.1 {
+UDK_3_0_0 {
global:
- registerAllTestFunction;
+ cppunitTestPlugIn;
local:
*;
diff --git a/basebmp/test/filltest.cxx b/basebmp/test/filltest.cxx
index ea801de8111f..150fa11b3a72 100644
--- a/basebmp/test/filltest.cxx
+++ b/basebmp/test/filltest.cxx
@@ -27,7 +27,9 @@
// autogenerated file with codegen.pl
-#include <testshl/simpleheader.hxx>
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
#include <basegfx/vector/b2isize.hxx>
#include <basegfx/range/b2drange.hxx>
@@ -265,7 +267,7 @@ public:
};
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(FillTest, "FillTest");
+CPPUNIT_TEST_SUITE_REGISTRATION(FillTest);
}
diff --git a/basebmp/test/linetest.cxx b/basebmp/test/linetest.cxx
index 3c30ed718b70..fcd383fccdb0 100644
--- a/basebmp/test/linetest.cxx
+++ b/basebmp/test/linetest.cxx
@@ -27,7 +27,9 @@
// autogenerated file with codegen.pl
-#include <testshl/simpleheader.hxx>
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
#include <basegfx/vector/b2isize.hxx>
#include <basegfx/point/b2ipoint.hxx>
@@ -213,7 +215,7 @@ public:
};
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(LineTest, "LineTest");
+CPPUNIT_TEST_SUITE_REGISTRATION(LineTest);
}
diff --git a/basebmp/test/makefile.mk b/basebmp/test/makefile.mk
index a11dacc1125d..ca77721716f7 100644
--- a/basebmp/test/makefile.mk
+++ b/basebmp/test/makefile.mk
@@ -60,6 +60,8 @@ CDEFS+=-xalias_level=compatible
.ENDIF
.ENDIF
+CFLAGSCXX += $(CPPUNIT_CFLAGS)
+
# --- Common ----------------------------------------------------------
.IF "$(L10N_framework)"==""
@@ -74,17 +76,10 @@ SHL1OBJS= \
$(SLO)$/linetest.obj \
$(SLO)$/masktest.obj \
$(SLO)$/polytest.obj \
- $(SLO)$/tools.obj \
- $(SLO)$/bitmapdevice.obj \
- $(SLO)$/debug.obj \
- $(SLO)$/polypolygonrenderer.obj
-# last three objs are a bit of a hack: cannot link against LIBBASEBMP
-# here, because not yet delivered. Need the functionality to test, so
-# we're linking it in statically. Need to keep this in sync with
-# source/makefile.mk
+ $(SLO)$/tools.obj
SHL1TARGET= tests
-SHL1STDLIBS= $(SALLIB) \
- $(TESTSHL2LIB)\
+SHL1STDLIBS= $(BASEBMPLIB) \
+ $(SALLIB) \
$(CPPUNITLIB) \
$(BASEGFXLIB)
@@ -92,6 +87,8 @@ SHL1IMPLIB= i$(SHL1TARGET)
DEF1NAME =$(SHL1TARGET)
SHL1VERSIONMAP = export.map
+SHL1RPATH = NONE
+
.ENDIF
# END ------------------------------------------------------------------
@@ -121,16 +118,8 @@ SLOFILES=$(SHL1OBJS)
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk
-.INCLUDE : _cppunit.mk
# --- Enable test execution in normal build ------------------------
.IF "$(L10N_framework)"==""
-
-unittest : $(SHL1TARGETN)
- @echo ----------------------------------------------------------
- @echo - start unit test on library $(SHL1TARGETN)
- @echo ----------------------------------------------------------
- $(TESTSHL2) -sf $(mktmp ) $(SHL1TARGETN)
-
-ALLTAR : unittest
+.INCLUDE : _cppunit.mk
.ENDIF
diff --git a/basebmp/test/masktest.cxx b/basebmp/test/masktest.cxx
index e3843eba389a..77cd05588d5a 100644
--- a/basebmp/test/masktest.cxx
+++ b/basebmp/test/masktest.cxx
@@ -27,7 +27,9 @@
// autogenerated file with codegen.pl
-#include <testshl/simpleheader.hxx>
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
#include <basegfx/vector/b2isize.hxx>
#include <basegfx/range/b2irange.hxx>
@@ -165,7 +167,7 @@ public:
};
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(MaskTest, "MaskTest");
+CPPUNIT_TEST_SUITE_REGISTRATION(MaskTest);
}
diff --git a/basebmp/test/polytest.cxx b/basebmp/test/polytest.cxx
index c8290668d1f8..f3b1f0018e17 100644
--- a/basebmp/test/polytest.cxx
+++ b/basebmp/test/polytest.cxx
@@ -27,7 +27,9 @@
// autogenerated file with codegen.pl
-#include <testshl/simpleheader.hxx>
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
#include <basegfx/vector/b2isize.hxx>
#include <basegfx/range/b2irange.hxx>
@@ -285,7 +287,7 @@ public:
};
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(PolyTest, "PolyTest");
+CPPUNIT_TEST_SUITE_REGISTRATION(PolyTest);
}
diff --git a/basegfx/inc/basegfx/matrix/b2dhommatrixtools.hxx b/basegfx/inc/basegfx/matrix/b2dhommatrixtools.hxx
index 3941ee19cb42..7ce9e75c3058 100644
--- a/basegfx/inc/basegfx/matrix/b2dhommatrixtools.hxx
+++ b/basegfx/inc/basegfx/matrix/b2dhommatrixtools.hxx
@@ -32,6 +32,8 @@
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <basegfx/vector/b2dvector.hxx>
+namespace rtl { class OUString; }
+
///////////////////////////////////////////////////////////////////////////////
namespace basegfx
@@ -132,6 +134,7 @@ namespace basegfx
rPoint.getX(), rPoint.getY(),
fRadiant);
}
+
} // end of namespace tools
} // end of namespace basegfx
@@ -220,6 +223,10 @@ namespace basegfx
double getShearX() const { const_cast< B2DHomMatrixBufferedOnDemandDecompose* >(this)->impCheckDecompose(); return mfShearX; }
};
} // end of namespace tools
+
+ /// Returns a string with svg's "matrix(m00,m10,m01,m11,m02,m12)" representation
+ ::rtl::OUString exportToSvg( const B2DHomMatrix& rMatrix );
+
} // end of namespace basegfx
///////////////////////////////////////////////////////////////////////////////
diff --git a/basegfx/inc/basegfx/numeric/ftools.hxx b/basegfx/inc/basegfx/numeric/ftools.hxx
index 0a4cdfcffdaa..65a6566dae25 100644
--- a/basegfx/inc/basegfx/numeric/ftools.hxx
+++ b/basegfx/inc/basegfx/numeric/ftools.hxx
@@ -109,7 +109,7 @@ namespace basegfx
/** clamp given value against given minimum and maximum values
*/
- template <class T> const T& clamp(const T& value, const T& minimum, const T& maximum)
+ template <class T> inline const T& clamp(const T& value, const T& minimum, const T& maximum)
{
if(value < minimum)
{
diff --git a/basegfx/inc/basegfx/polygon/b2dpolygon.hxx b/basegfx/inc/basegfx/polygon/b2dpolygon.hxx
index 30f7786a6981..a12120b5f441 100644
--- a/basegfx/inc/basegfx/polygon/b2dpolygon.hxx
+++ b/basegfx/inc/basegfx/polygon/b2dpolygon.hxx
@@ -260,6 +260,12 @@ namespace basegfx
/// apply transformation given in matrix form
void transform(const basegfx::B2DHomMatrix& rMatrix);
+
+ // point iterators (same iterator validity conditions as for vector)
+ const B2DPoint* begin() const;
+ const B2DPoint* end() const;
+ B2DPoint* begin();
+ B2DPoint* end();
};
} // end of namespace basegfx
diff --git a/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx b/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx
index 1ccaaa8330ec..0032cc47ce4e 100644
--- a/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx
+++ b/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx
@@ -125,6 +125,12 @@ namespace basegfx
// apply transformation given in matrix form to the polygon
void transform(const basegfx::B2DHomMatrix& rMatrix);
+
+ // polygon iterators (same iterator validity conditions as for vector)
+ const B2DPolygon* begin() const;
+ const B2DPolygon* end() const;
+ B2DPolygon* begin();
+ B2DPolygon* end();
};
} // end of namespace basegfx
diff --git a/basegfx/inc/basegfx/polygon/b3dgeometry.hxx b/basegfx/inc/basegfx/polygon/b3dgeometry.hxx
deleted file mode 100644
index ec66f3e3a570..000000000000
--- a/basegfx/inc/basegfx/polygon/b3dgeometry.hxx
+++ /dev/null
@@ -1,70 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _BGFX_POLYGON_B3DGEOMETRY_HXX
-#define _BGFX_POLYGON_B3DGEOMETRY_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// predeclarations
-
-namespace basegfx
-{
-} // end of namespace basegfx
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace basegfx
-{
- class B3DGeometry
- {
- private:
- B2DPolyPolygon maPolyPolygon; // the PolyPolygon geometry data, defines point number
- B3DHomMatrix maPolygonTo3D; // transformation to create 3D PolyPolygon
- B3DPolyPolygon maPolyNormal; // normal for each point or empty -> unified normal
- B2DPolyPolygon maPolyTexture; // texture coordinate for each point or empty -> unified coordinate
- B3DVector maUnifiedVector; // used when maNormal is empty
-
- // bitfield
- unsigned mbUnifiedVectorValid : 1; // flag to know if uvec is calculated yet
-
- public:
- B3DGeometry();
- ~B3DGeometry();
-
- // compare operators
- bool operator==(const B3DGeometry& rGeometry) const;
- bool operator!=(const B3DGeometry& rGeometry) const { return (!operator==(rGeometry)); }
-
- // member count
- sal_uInt32 count() const { return maPolyPolygon.count(); }
- };
-} // end of namespace basegfx
-
-//////////////////////////////////////////////////////////////////////////////
-
-
-#endif /* _BGFX_POLYGON_B3DPOLYGON_HXX */
diff --git a/basegfx/inc/basegfx/range/b2dmultirange.hxx b/basegfx/inc/basegfx/range/b2dmultirange.hxx
deleted file mode 100644
index 4c1eb37be036..000000000000
--- a/basegfx/inc/basegfx/range/b2dmultirange.hxx
+++ /dev/null
@@ -1,114 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _BGFX_RANGE_B2DMULTIRANGE_HXX
-#define _BGFX_RANGE_B2DMULTIRANGE_HXX
-
-#include <o3tl/cow_wrapper.hxx>
-#include <memory>
-
-
-namespace basegfx
-{
- class B2DTuple;
- class B2DRange;
- class B2DPolyPolygon;
- class ImplB2DMultiRange;
-
- /** Multiple ranges in one object.
-
- This class combines multiple ranges in one object, providing a
- total, enclosing range for it.
-
- You can use this class e.g. when updating views containing
- rectangular objects. Add each modified object to a
- B2DMultiRange, then test each viewable object against
- intersection with the multi range.
- */
- class B2DMultiRange
- {
- public:
- B2DMultiRange();
- ~B2DMultiRange();
-
- /** Create a multi range with exactly one containing range
- */
- explicit B2DMultiRange( const B2DRange& rRange );
-
- B2DMultiRange( const B2DMultiRange& );
- B2DMultiRange& operator=( const B2DMultiRange& );
-
- /** Check whether range is empty.
-
- @return true, if this object either contains no ranges at
- all, or all contained ranges are empty.
- */
- bool isEmpty() const;
-
- /** Reset to empty.
-
- After this call, the object will not contain any ranges,
- and isEmpty() will return true.
- */
- void reset();
-
- /** Test whether given tuple is inside one or more of the
- included ranges.
- */
- bool isInside( const B2DTuple& rTuple ) const;
-
- /** Test whether given range is inside one or more of the
- included ranges.
- */
- bool isInside( const B2DRange& rRange ) const;
-
- /** Test whether given range overlaps one or more of the
- included ranges.
- */
- bool overlaps( const B2DRange& rRange ) const;
-
- /** Add given range to the number of contained ranges.
- */
- void addRange( const B2DRange& rRange );
-
- /** Get overall bound rect for all included ranges.
- */
- B2DRange getBounds() const;
-
- /** Request poly-polygon representing the added ranges.
-
- This method creates a poly-polygon, consisting exactly out
- of the contained ranges.
- */
- B2DPolyPolygon getPolyPolygon() const;
-
- private:
- o3tl::cow_wrapper< ImplB2DMultiRange > mpImpl;
- };
-}
-
-#endif /* _BGFX_RANGE_B2DMULTIRANGE_HXX */
diff --git a/basegfx/inc/basegfx/range/b2dpolyrange.hxx b/basegfx/inc/basegfx/range/b2dpolyrange.hxx
new file mode 100644
index 000000000000..2202869dc921
--- /dev/null
+++ b/basegfx/inc/basegfx/range/b2dpolyrange.hxx
@@ -0,0 +1,145 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: b2dmultirange.hxx,v $
+ * $Revision: 1.6 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _BGFX_RANGE_B2DPOLYRANGE_HXX
+#define _BGFX_RANGE_B2DPOLYRANGE_HXX
+
+#include <o3tl/cow_wrapper.hxx>
+#include <boost/tuple/tuple.hpp>
+#include <basegfx/vector/b2enums.hxx>
+
+namespace basegfx
+{
+ class B2DTuple;
+ class B2DRange;
+ class B2DPolyPolygon;
+ class ImplB2DPolyRange;
+
+ /** Multiple ranges in one object.
+
+ This class combines multiple ranges in one object, providing a
+ total, enclosing range for it.
+
+ You can use this class e.g. when updating views containing
+ rectangular objects. Add each modified object to a
+ B2DMultiRange, then test each viewable object against
+ intersection with the multi range.
+
+ Similar in spirit to the poly-polygon vs. polygon relationship.
+
+ Note that comparable to polygons, a poly-range can also
+ contain 'holes' - this is encoded via polygon orientation at
+ the poly-polygon, and via explicit flags for the poly-range.
+ */
+ class B2DPolyRange
+ {
+ public:
+ typedef boost::tuple<B2DRange,B2VectorOrientation> ElementType ;
+
+ B2DPolyRange();
+ ~B2DPolyRange();
+
+ /** Create a multi range with exactly one containing range
+ */
+ explicit B2DPolyRange( const ElementType& rElement );
+ B2DPolyRange( const B2DRange& rRange, B2VectorOrientation eOrient );
+ B2DPolyRange( const B2DPolyRange& );
+ B2DPolyRange& operator=( const B2DPolyRange& );
+
+ /// unshare this poly-range with all internally shared instances
+ void makeUnique();
+
+ bool operator==(const B2DPolyRange&) const;
+ bool operator!=(const B2DPolyRange&) const;
+
+ /// Number of included ranges
+ sal_uInt32 count() const;
+
+ ElementType getElement(sal_uInt32 nIndex) const;
+ void setElement(sal_uInt32 nIndex, const ElementType& rElement );
+ void setElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient );
+
+ // insert/append a single range
+ void insertElement(sal_uInt32 nIndex, const ElementType& rElement, sal_uInt32 nCount = 1);
+ void insertElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount = 1);
+ void appendElement(const ElementType& rElement, sal_uInt32 nCount = 1);
+ void appendElement(const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount = 1);
+
+ // insert/append multiple ranges
+ void insertPolyRange(sal_uInt32 nIndex, const B2DPolyRange&);
+ void appendPolyRange(const B2DPolyRange&);
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount = 1);
+ void clear();
+
+ // flip range orientations - converts holes to solids, and vice versa
+ void flip();
+
+ /** Get overall range
+
+ @return
+ The union range of all contained ranges
+ */
+ B2DRange getBounds() const;
+
+ /** Test whether given tuple is inside one or more of the
+ included ranges. Does *not* use overall range, but checks
+ individually.
+ */
+ bool isInside( const B2DTuple& rTuple ) const;
+
+ /** Test whether given range is inside one or more of the
+ included ranges. Does *not* use overall range, but checks
+ individually.
+ */
+ bool isInside( const B2DRange& rRange ) const;
+
+ /** Test whether given range overlaps one or more of the
+ included ranges. Does *not* use overall range, but checks
+ individually.
+ */
+ bool overlaps( const B2DRange& rRange ) const;
+
+ /** Request a poly-polygon with solved cross-overs
+ */
+ B2DPolyPolygon solveCrossovers() const;
+
+ // element iterators (same iterator validity conditions as for vector)
+ const B2DRange* begin() const;
+ const B2DRange* end() const;
+ B2DRange* begin();
+ B2DRange* end();
+
+ private:
+ o3tl::cow_wrapper< ImplB2DPolyRange > mpImpl;
+ };
+}
+
+#endif /* _BGFX_RANGE_B2DPOLYRANGE_HXX */
diff --git a/basegfx/source/polygon/b3dgeometry.cxx b/basegfx/inc/basegfx/range/b2drangeclipper.hxx
index 6c1537bac0a6..3285ffeaffe1 100644
--- a/basegfx/source/polygon/b3dgeometry.cxx
+++ b/basegfx/inc/basegfx/range/b2drangeclipper.hxx
@@ -2,10 +2,13 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
+ * $RCSfile: b2dmultirange.hxx,v $
+ * $Revision: 1.6 $
+ *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -25,31 +28,26 @@
*
************************************************************************/
-#include <osl/diagnose.h>
-#include <basegfx/polygon/b3dgeometry.hxx>
+#ifndef _BGFX_RANGE_B2DRANGECLIPPER_HXX
+#define _BGFX_RANGE_B2DRANGECLIPPER_HXX
-//////////////////////////////////////////////////////////////////////////////
+#include <basegfx/range/b2dpolyrange.hxx>
+#include <vector>
namespace basegfx
{
- B3DGeometry::B3DGeometry()
- : mbUnifiedVectorValid(false)
+ namespace tools
{
- }
+ /** Extract poly-polygon w/o self-intersections from poly-range
- B3DGeometry::~B3DGeometry()
- {
+ Similar to the solveCrossovers(const B2DPolyPolygon&)
+ method, this one calculates a self-intersection-free
+ poly-polygon with the same topology, and encoding
+ inside/outsidedness via polygon orientation and layering.
+ */
+ B2DPolyPolygon solveCrossovers(const std::vector<B2DRange>& rRanges,
+ const std::vector<B2VectorOrientation>& rOrientations);
}
+}
- bool B3DGeometry::operator==(const B3DGeometry& rGeometry) const
- {
- return (maPolyPolygon == maPolyPolygon
- && maPolygonTo3D == maPolygonTo3D
- && maPolyNormal == maPolyNormal
- && maPolyTexture == maPolyTexture
- }
-
-} // end of namespace basegfx
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
+#endif /* _BGFX_RANGE_B2DRANGECLIPPER_HXX */
diff --git a/basegfx/inc/basegfx/tools/b2dclipstate.hxx b/basegfx/inc/basegfx/tools/b2dclipstate.hxx
new file mode 100644
index 000000000000..7d336d8cb48e
--- /dev/null
+++ b/basegfx/inc/basegfx/tools/b2dclipstate.hxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: rectcliptools.hxx,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _BGFX_TOOLS_CLIPSTATE_HXX
+#define _BGFX_TOOLS_CLIPSTATE_HXX
+
+#include <sal/types.h>
+#include <o3tl/cow_wrapper.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class B2DRange;
+ class B2DPolyRange;
+ class B2DPolygon;
+ class B2DPolyPolygon;
+
+ namespace tools
+ {
+ class ImplB2DClipState;
+
+ /** This class provides an optimized, symbolic clip state for graphical output
+
+ Having a current 'clip' state is a common attribute of
+ almost all graphic output APIs, most of which internally
+ represent it via a list of rectangular bands. In contrast,
+ this implementation purely uses symbolic clips, but in a
+ quite efficient manner, deferring actual evaluation until
+ a clip representation is requested, and using faster code
+ paths for common special cases (like all-rectangle clips)
+ */
+ class B2DClipState
+ {
+ public:
+ typedef o3tl::cow_wrapper< ImplB2DClipState > ImplType;
+
+ private:
+ ImplType mpImpl;
+
+ public:
+ /// Init clip, in 'cleared' state - everything is visible
+ B2DClipState();
+ ~B2DClipState();
+ B2DClipState( const B2DClipState& );
+ explicit B2DClipState( const B2DRange& );
+ explicit B2DClipState( const B2DPolygon& );
+ explicit B2DClipState( const B2DPolyPolygon& );
+ B2DClipState& operator=( const B2DClipState& );
+
+ /// unshare this poly-range with all internally shared instances
+ void makeUnique();
+
+ /// Set clip to 'null' - nothing is visible
+ void makeNull();
+ /// returns true when clip is 'null' - nothing is visible
+ bool isNull() const;
+
+ /// Set clip 'cleared' - everything is visible
+ void makeClear();
+ /// returns true when clip is 'cleared' - everything is visible
+ bool isCleared() const;
+
+ bool operator==(const B2DClipState&) const;
+ bool operator!=(const B2DClipState&) const;
+
+ void unionRange(const B2DRange& );
+ void unionPolygon(const B2DPolygon& );
+ void unionPolyPolygon(const B2DPolyPolygon& );
+ void unionClipState(const B2DClipState& );
+
+ void intersectRange(const B2DRange& );
+ void intersectPolygon(const B2DPolygon& );
+ void intersectPolyPolygon(const B2DPolyPolygon& );
+ void intersectClipState(const B2DClipState& );
+
+ void subtractRange(const B2DRange& );
+ void subtractPolygon(const B2DPolygon& );
+ void subtractPolyPolygon(const B2DPolyPolygon& );
+ void subtractClipState(const B2DClipState& );
+
+ void xorRange(const B2DRange& );
+ void xorPolygon(const B2DPolygon& );
+ void xorPolyPolygon(const B2DPolyPolygon& );
+ void xorClipState(const B2DClipState& );
+
+ B2DPolyPolygon getClipPoly() const;
+ };
+ }
+}
+
+#endif // _BGFX_TOOLS_CLIPSTATE_HXX
diff --git a/basegfx/inc/basegfx/tools/gradienttools.hxx b/basegfx/inc/basegfx/tools/gradienttools.hxx
index 0dab1a5117ff..2f436fa1d717 100644
--- a/basegfx/inc/basegfx/tools/gradienttools.hxx
+++ b/basegfx/inc/basegfx/tools/gradienttools.hxx
@@ -34,6 +34,9 @@
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <basegfx/numeric/ftools.hxx>
+#include <vector>
+#include <algorithm>
+
namespace basegfx
{
/** Gradient definition as used in ODF 1.2
@@ -75,6 +78,8 @@ namespace basegfx
{
/** Create matrix for ODF's linear gradient definition
+ Note that odf linear gradients are varying in y direction.
+
@param o_rGradientInfo
Receives the calculated texture transformation matrix (for
use with standard [0,1]x[0,1] texture coordinates)
@@ -106,7 +111,7 @@ namespace basegfx
@param rUV
Current uv coordinate. Values outside [0,1] will be
- clamped.
+ clamped. Assumes gradient color varies along the y axis.
@param rGradInfo
Gradient info, for transformation and number of steps
@@ -126,6 +131,14 @@ namespace basegfx
/** Create matrix for ODF's axial gradient definition
+ Note that odf axial gradients are varying in y
+ direction. Note further that you can map the axial
+ gradient to a linear gradient (in case you want or need to
+ avoid an extra gradient renderer), by using
+ createLinearODFGradientInfo() instead, shifting the
+ resulting texture transformation by 0.5 to the top and
+ appending the same stop colors again, but mirrored.
+
@param o_rGradientInfo
Receives the calculated texture transformation matrix (for
use with standard [0,1]x[0,1] texture coordinates)
@@ -157,7 +170,7 @@ namespace basegfx
@param rUV
Current uv coordinate. Values outside [0,1] will be
- clamped.
+ clamped. Assumes gradient color varies along the y axis.
@param rGradInfo
Gradient info, for transformation and number of steps
@@ -391,7 +404,6 @@ namespace basegfx
{
return getSquareGradientAlpha(rUV, rGradInfo); // only matrix setup differs
}
-
}
}
diff --git a/basegfx/inc/basegfx/tools/keystoplerp.hxx b/basegfx/inc/basegfx/tools/keystoplerp.hxx
new file mode 100644
index 000000000000..a54b3485b1a1
--- /dev/null
+++ b/basegfx/inc/basegfx/tools/keystoplerp.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: canvastools.hxx,v $
+ * $Revision: 1.10 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _BGFX_TOOLS_KEYSTOPLERP_HXX
+#define _BGFX_TOOLS_KEYSTOPLERP_HXX
+
+#include <basegfx/numeric/ftools.hxx>
+#include <vector>
+
+namespace com{ namespace sun{ namespace star{ namespace uno {
+ template<typename T> class Sequence;
+}}}}
+
+namespace basegfx
+{
+ namespace tools
+ {
+ /** Lerp in a vector of key stops
+
+ This class holds a key stop vector and provides the
+ functionality to lerp inside it. Useful e.g. for
+ multi-stop gradients, or the SMIL key time activity.
+
+ For those, given a global [0,1] lerp alpha, one need to
+ find the suitable bucket index from key stop vector, and
+ then calculate the relative alpha between the two buckets
+ found.
+ */
+ class KeyStopLerp
+ {
+ public:
+ typedef std::pair<std::ptrdiff_t,double> ResultType;
+
+ /** Create lerper with given vector of stops
+
+ @param rKeyStops
+
+ Vector of stops, must contain at least two elements
+ (though preferrably more, otherwise you probably don't
+ need key stop lerping in the first place). All
+ elements must be of monotonically increasing value.
+ */
+ explicit KeyStopLerp( const std::vector<double>& rKeyStops );
+
+ /** Create lerper with given sequence of stops
+
+ @param rKeyStops
+
+ Sequence of stops, must contain at least two elements
+ (though preferrably more, otherwise you probably don't
+ need key stop lerping in the first place). All
+ elements must be of monotonically increasing value.
+ */
+ explicit KeyStopLerp( const ::com::sun::star::uno::Sequence<double>& rKeyStops );
+
+ /** Find two nearest bucket index & interpolate
+
+ @param fAlpha
+ Find bucket index i, with keyStops[i] < fAlpha <=
+ keyStops[i+1]. Return new alpha value in [0,1),
+ proportional to fAlpha's position between keyStops[i]
+ and keyStops[i+1]
+ */
+ ResultType lerp(double fAlpha) const;
+
+ private:
+ std::vector<double> maKeyStops;
+ mutable std::ptrdiff_t mnLastIndex;
+ };
+ }
+}
+
+#endif
diff --git a/slideshow/source/inc/lerp.hxx b/basegfx/inc/basegfx/tools/lerp.hxx
index 5aad41f4099f..590ef34c2009 100644
--- a/slideshow/source/inc/lerp.hxx
+++ b/basegfx/inc/basegfx/tools/lerp.hxx
@@ -2,10 +2,13 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
+ * $RCSfile: lerp.hxx,v $
+ * $Revision: 1.6 $
+ *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -25,16 +28,15 @@
*
************************************************************************/
-#ifndef INCLUDED_SLIDESHOW_LERP_HXX
-#define INCLUDED_SLIDESHOW_LERP_HXX
+#ifndef _BGFX_TOOLS_LERP_HXX
+#define _BGFX_TOOLS_LERP_HXX
#include <sal/types.h>
-namespace slideshow
+namespace basegfx
{
- namespace internal
+ namespace tools
{
-
/** Generic linear interpolator
@tpl ValueType
@@ -52,8 +54,7 @@ namespace slideshow
// types should be okay here.
return static_cast<ValueType>( (1.0-t)*rFrom + t*rTo );
}
-
}
}
-#endif /* INCLUDED_SLIDESHOW_LERP_HXX */
+#endif /* _BGFX_TOOLS_LERP_HXX */
diff --git a/basegfx/prj/build.lst b/basegfx/prj/build.lst
index 418b3822a7ee..fe3354b3f256 100644
--- a/basegfx/prj/build.lst
+++ b/basegfx/prj/build.lst
@@ -1,4 +1,4 @@
-fx basegfx : o3tl sal offuh cppuhelper cppu testshl2 NULL
+fx basegfx : o3tl sal offuh cppuhelper cppu CPPUNIT:cppunit NULL
fx basegfx usr1 - all fx_mkout NULL
fx basegfx\inc nmake - all fx_inc NULL
fx basegfx\prj get - all fx_prj NULL
diff --git a/basegfx/prj/d.lst b/basegfx/prj/d.lst
index 68ab880eef62..3d4d985f3ae6 100644
--- a/basegfx/prj/d.lst
+++ b/basegfx/prj/d.lst
@@ -27,7 +27,7 @@ mkdir: %_DEST%\inc%_EXT%\basegfx\range
..\inc\basegfx\range\basicrange.hxx %_DEST%\inc%_EXT%\basegfx\range\basicrange.hxx
..\inc\basegfx\range\basicbox.hxx %_DEST%\inc%_EXT%\basegfx\range\basicbox.hxx
..\inc\basegfx\range\b1drange.hxx %_DEST%\inc%_EXT%\basegfx\range\b1drange.hxx
-..\inc\basegfx\range\b2dmultirange.hxx %_DEST%\inc%_EXT%\basegfx\range\b2dmultirange.hxx
+..\inc\basegfx\range\b2dpolyrange.hxx %_DEST%\inc%_EXT%\basegfx\range\b2dpolyrange.hxx
..\inc\basegfx\range\b2drange.hxx %_DEST%\inc%_EXT%\basegfx\range\b2drange.hxx
..\inc\basegfx\range\b2drectangle.hxx %_DEST%\inc%_EXT%\basegfx\range\b2drectangle.hxx
..\inc\basegfx\range\b2dconnectedranges.hxx %_DEST%\inc%_EXT%\basegfx\range\b2dconnectedranges.hxx
@@ -90,7 +90,10 @@ mkdir: %_DEST%\inc%_EXT%\basegfx\tuple
mkdir: %_DEST%\inc%_EXT%\basegfx\tools
..\inc\basegfx\tools\canvastools.hxx %_DEST%\inc%_EXT%\basegfx\tools\canvastools.hxx
+..\inc\basegfx\tools\keystoplerp.hxx %_DEST%\inc%_EXT%\basegfx\tools\keystoplerp.hxx
+..\inc\basegfx\tools\lerp.hxx %_DEST%\inc%_EXT%\basegfx\tools\lerp.hxx
..\inc\basegfx\tools\unopolypolygon.hxx %_DEST%\inc%_EXT%\basegfx\tools\unopolypolygon.hxx
+..\inc\basegfx\tools\b2dclipstate.hxx %_DEST%\inc%_EXT%\basegfx\tools\b2dclipstate.hxx
..\inc\basegfx\tools\rectcliptools.hxx %_DEST%\inc%_EXT%\basegfx\tools\rectcliptools.hxx
..\inc\basegfx\tools\tools.hxx %_DEST%\inc%_EXT%\basegfx\tools\tools.hxx
..\inc\basegfx\tools\gradienttools.hxx %_DEST%\inc%_EXT%\basegfx\tools\gradienttools.hxx
diff --git a/basegfx/qa/mkpolygons.pl b/basegfx/qa/mkpolygons.pl
new file mode 100644
index 000000000000..b465a4f845ab
--- /dev/null
+++ b/basegfx/qa/mkpolygons.pl
@@ -0,0 +1,344 @@
+:
+eval 'exec perl -wS $0 ${1+"$@"}'
+ if 0;
+
+#
+# 2009 Copyright Novell, Inc. & Sun Microsystems, Inc.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+
+use IO::File;
+use Cwd;
+use File::Spec;
+use File::Spec::Functions;
+use File::Temp;
+use File::Path;
+
+$TempDir = "";
+
+
+# all the XML package generation is a blatant rip from AF's
+# write-calc-doc.pl
+
+
+###############################################################################
+# Open a file with the given name.
+# First it is checked if the temporary directory, in which all files for
+# the document are gathered, is already present and create it if it is not.
+# Then create the path to the file inside the temporary directory.
+# Finally open the file and return a file handle to it.
+#
+sub open_file
+{
+ my $filename = pop @_;
+
+ # Create base directory of temporary directory tree if not alreay
+ # present.
+ if ($TempDir eq "")
+ {
+ $TempDir = File::Temp::tempdir (CLEANUP => 1);
+ }
+
+ # Create the path to the file.
+ my $fullname = File::Spec->catfile ($TempDir, $filename);
+ my ($volume,$directories,$file) = File::Spec->splitpath ($fullname);
+ mkpath (File::Spec->catpath ($volume,$directories,""));
+
+ # Open the file and return a file handle to it.
+ return new IO::File ($fullname, "w");
+}
+
+
+###############################################################################
+# Zip the files in the directory tree into the given file.
+#
+sub zip_dirtree
+{
+ my $filename = pop @_;
+
+ my $cwd = getcwd;
+ my $zip_name = $filename;
+
+ # We are about to change the directory.
+ # Therefore create an absolute pathname for the zip archive.
+
+ # First transfer the drive from $cwd to $zip_name. This is a
+ # workaround for a bug in file_name_is_absolute which thinks
+ # the the path \bla is an absolute path under DOS.
+ my ($volume,$directories,$file) = File::Spec->splitpath ($zip_name);
+ my ($volume_cwd,$directories_cwd,$file_cwd) = File::Spec->splitpath ($cwd);
+ $volume = $volume_cwd if ($volume eq "");
+ $zip_name = File::Spec->catpath ($volume,$directories,$file);
+
+ # Add the current working directory to a relative path.
+ if ( ! file_name_is_absolute ($zip_name))
+ {
+ $zip_name = File::Spec->catfile ($cwd, $zip_name);
+
+ # Try everything to clean up the name.
+ $zip_name = File::Spec->rel2abs ($filename);
+ $zip_name = File::Spec->canonpath ($zip_name);
+
+ # Remove .. directories from the middle of the path.
+ while ($zip_name =~ /\/[^\/][^\.\/][^\/]*\/\.\.\//)
+ {
+ $zip_name = $` . "/" . $';
+ }
+ }
+
+ # Just in case the zip program gets confused by an existing file with the
+ # same name as the one to be written that file is removed first.
+ if ( -e $filename)
+ {
+ if (unlink ($filename) == 0)
+ {
+ print "Existing file $filename could not be deleted.\n";
+ print "Please close the application that uses it, then try again.\n";
+ return;
+ }
+ }
+
+ # Finally create the zip file. First change into the temporary directory
+ # so that the resulting zip file contains only paths relative to it.
+ print "zipping [$ZipCmd $ZipFlags $zip_name *]\n";
+ chdir ($TempDir);
+ system ("$ZipCmd $ZipFlags $zip_name *");
+ chdir ($cwd);
+}
+
+
+sub writeHeader
+{
+ print $OUT qq~<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" office:version="1.0">
+ <office:scripts/>
+ <office:automatic-styles>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties presentation:background-visible="true" presentation:background-objects-visible="true" presentation:display-footer="true" presentation:display-page-number="false" presentation:display-date-time="true"/>
+ </style:style>
+ <style:style style:name="gr1" style:family="graphic" style:parent-style-name="standard">
+ <style:graphic-properties draw:textarea-horizontal-align="center" draw:fill="none" draw:stroke="none" draw:textarea-vertical-align="middle"/>
+ </style:style>
+ <style:style style:name="gr2" style:family="graphic" style:parent-style-name="standard">
+ <style:graphic-properties draw:textarea-horizontal-align="center" draw:textarea-vertical-align="middle"/>
+ </style:style>
+ <style:style style:name="pr1" style:family="presentation" style:parent-style-name="Default-title">
+ <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="3.508cm"/>
+ </style:style>
+ <style:style style:name="pr2" style:family="presentation" style:parent-style-name="Default-notes">
+ <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="13.367cm"/>
+ </style:style>
+ <style:style style:name="P1" style:family="paragraph">
+ <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph">
+ <style:paragraph-properties fo:margin-left="0.6cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/>
+ </style:style>
+ <text:list-style style:name="L1">
+ <text:list-level-style-bullet text:level="1" text:bullet-char="●">
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="2" text:bullet-char="●">
+ <style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="3" text:bullet-char="●">
+ <style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="4" text:bullet-char="●">
+ <style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="5" text:bullet-char="●">
+ <style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="6" text:bullet-char="●">
+ <style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="7" text:bullet-char="●">
+ <style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="8" text:bullet-char="●">
+ <style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="9" text:bullet-char="●">
+ <style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/>
+ <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
+ </text:list-level-style-bullet>
+ </text:list-style>
+ </office:automatic-styles>
+ <office:body>
+ <office:presentation>
+~;
+
+}
+
+sub writeSlideHeader
+{
+ my $titleText = pop @_;
+ my $slideNum = pop @_;
+
+ print $OUT " <draw:page draw:name=\"page1\" draw:style-name=\"dp1\" draw:master-page-name=\"Default\">\n";
+ print $OUT " <office:forms form:automatic-focus=\"false\" form:apply-design-mode=\"false\"/>\n";
+ print $OUT " <draw:rect draw:style-name=\"gr1\" draw:text-style-name=\"P1\" draw:id=\"id$slideNum\" draw:layer=\"layout\" svg:width=\"17.5cm\" svg:height=\"6cm\" svg:x=\"5cm\" svg:y=\"4cm\">\n";
+ print $OUT " <text:p text:style-name=\"P2\">Slide: $slideNum</text:p>\n";
+ print $OUT " <text:p text:style-name=\"P2\">Path: $titleText</text:p>\n";
+ print $OUT " </draw:rect>\n";
+}
+
+
+sub writeSlideFooter
+{
+ print $OUT " <presentation:notes draw:style-name=\"dp1\">\n";
+ print $OUT " <draw:page-thumbnail draw:style-name=\"gr1\" draw:layer=\"layout\" svg:width=\"14.851cm\" svg:height=\"11.138cm\" svg:x=\"3.068cm\" svg:y=\"2.257cm\" draw:page-number=\"1\" presentation:class=\"page\"/>\n";
+ print $OUT " <draw:frame presentation:style-name=\"pr3\" draw:layer=\"layout\" svg:width=\"16.79cm\" svg:height=\"13.116cm\" svg:x=\"2.098cm\" svg:y=\"14.109cm\" presentation:class=\"notes\" presentation:placeholder=\"true\">\n";
+ print $OUT " <draw:text-box/>\n";
+ print $OUT " </draw:frame>\n";
+ print $OUT " </presentation:notes>\n";
+ print $OUT " </draw:page>\n";
+}
+
+sub writeFooter
+{
+ print $OUT qq~ <presentation:settings presentation:full-screen="false"/>
+ </office:presentation>
+ </office:body>
+</office:document-content>
+~;
+
+}
+
+sub writePath
+{
+ my $pathAry = pop @_;
+ my $path = $pathAry->[1];
+ my $viewBox = $pathAry->[0];
+
+ print $OUT " <draw:path draw:style-name=\"gr2\" draw:text-style-name=\"P1\" draw:layer=\"layout\" svg:width=\"10cm\" svg:height=\"10cm\" svg:x=\"5cm\" svg:y=\"5cm\" svg:viewBox=\"";
+ print $OUT $viewBox;
+ print $OUT "\" svg:d=\"";
+ print $OUT $path;
+ print $OUT "\">\n";
+ print $OUT " <text:p/>\n";
+ print $OUT " </draw:path>\n";
+}
+
+sub writeManifest
+{
+ my $outFile = open_file("META-INF/manifest.xml");
+
+ print $outFile qq~<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
+<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
+ <manifest:file-entry manifest:media-type="application/vnd.oasis.opendocument.presentation" manifest:full-path="/"/>
+ <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="content.xml"/>
+</manifest:manifest>
+~;
+
+ $outFile->close;
+}
+
+
+###############################################################################
+# Print usage information.
+#
+sub usage ()
+{
+ print <<END_OF_USAGE;
+usage: $0 <option>* [<SvgD-values>]
+
+output-file-name defaults to polygons.odp.
+
+ -h Print this usage information.
+ -o output-file-name
+END_OF_USAGE
+}
+
+###############################################################################
+# Process the command line.
+#
+sub process_command_line
+{
+ foreach (@ARGV)
+ {
+ if (/^-h/)
+ {
+ usage;
+ exit 0;
+ }
+ }
+
+ $global_output_name = "polygons.odp";
+ my $j = 0, $noMoreOptions = 0;
+ for (my $i=0; $i<$#ARGV; $i++)
+ {
+ if ( !$noMoreOptions and $ARGV[$i] eq "-o")
+ {
+ $i++;
+ $global_output_name = $ARGV[$i];
+ }
+ elsif ( !$noMoreOptions and $ARGV[$i] eq "--")
+ {
+ $noMoreOptions = 1;
+ }
+ elsif ( !$noMoreOptions and $ARGV[$i] =~ /^-/)
+ {
+ print "Unknown option $ARGV[$i]\n";
+ usage;
+ exit 1;
+ }
+ else
+ {
+ push(@paths, [$ARGV[$i],$ARGV[$i+1]]);
+ $i++;
+ }
+ }
+
+ print "output to $global_output_name\n";
+}
+
+###############################################################################
+# Main
+###############################################################################
+
+$ZipCmd = $ENV{LOG_FILE_ZIP_CMD};
+$ZipFlags = $ENV{LOG_FILE_ZIP_FLAGS};
+# Provide default values for the zip command and it's flags.
+if ( ! defined $ZipCmd)
+{
+ $ZipCmd = "zip" unless defined $ZipCmd;
+ $ZipFlags = "-r -q" unless defined $ZipFlags;
+}
+
+process_command_line();
+
+writeManifest();
+
+$OUT = open_file( "content.xml" );
+
+writeHeader();
+
+$pathNum=0;
+foreach $path (@paths)
+{
+ writeSlideHeader($pathNum, $path->[1]);
+ writePath($path);
+ writeSlideFooter();
+ $pathNum++;
+}
+
+writeFooter();
+
+$OUT->close;
+
+zip_dirtree ($global_output_name);
+
diff --git a/basegfx/source/color/bcolortools.cxx b/basegfx/source/color/bcolortools.cxx
index f7f26c6dd843..543097de3d77 100644
--- a/basegfx/source/color/bcolortools.cxx
+++ b/basegfx/source/color/bcolortools.cxx
@@ -61,7 +61,7 @@ namespace basegfx { namespace tools
else if( g == maxVal )
h = 2.0 + (b - r)/d;
else
- h = 4.0 + (r - h)/d;
+ h = 4.0 + (r - g)/d;
h *= 60.0;
diff --git a/basegfx/source/matrix/b2dhommatrixtools.cxx b/basegfx/source/matrix/b2dhommatrixtools.cxx
index 0f294d6a262f..0b85ee229ecc 100644
--- a/basegfx/source/matrix/b2dhommatrixtools.cxx
+++ b/basegfx/source/matrix/b2dhommatrixtools.cxx
@@ -29,11 +29,39 @@
#include "precompiled_basegfx.hxx"
#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <rtl/ustring.hxx>
+#include <rtl/ustrbuf.hxx>
///////////////////////////////////////////////////////////////////////////////
namespace basegfx
{
+ ::rtl::OUString exportToSvg( const B2DHomMatrix& rMatrix )
+ {
+ rtl::OUStringBuffer aStrBuf;
+ aStrBuf.appendAscii("matrix(");
+
+ aStrBuf.append(rMatrix.get(0,0));
+ aStrBuf.appendAscii(", ");
+
+ aStrBuf.append(rMatrix.get(1,0));
+ aStrBuf.appendAscii(", ");
+
+ aStrBuf.append(rMatrix.get(0,1));
+ aStrBuf.appendAscii(", ");
+
+ aStrBuf.append(rMatrix.get(1,1));
+ aStrBuf.appendAscii(", ");
+
+ aStrBuf.append(rMatrix.get(0,2));
+ aStrBuf.appendAscii(", ");
+
+ aStrBuf.append(rMatrix.get(1,2));
+ aStrBuf.appendAscii(")");
+
+ return aStrBuf.makeStringAndClear();
+ }
+
namespace tools
{
void createSinCosOrthogonal(double& o_rSin, double& o_rCos, double fRadiant)
diff --git a/basegfx/source/polygon/b2dpolygon.cxx b/basegfx/source/polygon/b2dpolygon.cxx
index dc16938a3f99..d8255dc7ec10 100644
--- a/basegfx/source/polygon/b2dpolygon.cxx
+++ b/basegfx/source/polygon/b2dpolygon.cxx
@@ -41,38 +41,24 @@
//////////////////////////////////////////////////////////////////////////////
-class CoordinateData2D
+struct CoordinateData2D : public basegfx::B2DPoint
{
- basegfx::B2DPoint maPoint;
-
public:
- CoordinateData2D()
- : maPoint()
- {}
+ CoordinateData2D() {}
explicit CoordinateData2D(const basegfx::B2DPoint& rData)
- : maPoint(rData)
+ : B2DPoint(rData)
{}
- const basegfx::B2DPoint& getCoordinate() const
+ CoordinateData2D& operator=(const basegfx::B2DPoint& rData)
{
- return maPoint;
- }
-
- void setCoordinate(const basegfx::B2DPoint& rValue)
- {
- if(rValue != maPoint)
- maPoint = rValue;
- }
-
- bool operator==(const CoordinateData2D& rData ) const
- {
- return (maPoint == rData.getCoordinate());
+ B2DPoint::operator=(rData);
+ return *this;
}
void transform(const basegfx::B2DHomMatrix& rMatrix)
{
- maPoint *= rMatrix;
+ *this *= rMatrix;
}
};
@@ -112,12 +98,12 @@ public:
const basegfx::B2DPoint& getCoordinate(sal_uInt32 nIndex) const
{
- return maVector[nIndex].getCoordinate();
+ return maVector[nIndex];
}
void setCoordinate(sal_uInt32 nIndex, const basegfx::B2DPoint& rValue)
{
- maVector[nIndex].setCoordinate(rValue);
+ maVector[nIndex] = rValue;
}
void reserve(sal_uInt32 nCount)
@@ -228,6 +214,38 @@ public:
aStart->transform(rMatrix);
}
}
+
+ const basegfx::B2DPoint* begin() const
+ {
+ if(maVector.empty())
+ return 0;
+ else
+ return &maVector.front();
+ }
+
+ const basegfx::B2DPoint* end() const
+ {
+ if(maVector.empty())
+ return 0;
+ else
+ return (&maVector.back())+1;
+ }
+
+ basegfx::B2DPoint* begin()
+ {
+ if(maVector.empty())
+ return 0;
+ else
+ return &maVector.front();
+ }
+
+ basegfx::B2DPoint* end()
+ {
+ if(maVector.empty())
+ return 0;
+ else
+ return (&maVector.back())+1;
+ }
};
//////////////////////////////////////////////////////////////////////////////
@@ -1149,6 +1167,28 @@ public:
maPoints.transform(rMatrix);
}
}
+
+ const basegfx::B2DPoint* begin() const
+ {
+ return maPoints.begin();
+ }
+
+ const basegfx::B2DPoint* end() const
+ {
+ return maPoints.end();
+ }
+
+ basegfx::B2DPoint* begin()
+ {
+ mpBufferedData.reset();
+ return maPoints.begin();
+ }
+
+ basegfx::B2DPoint* end()
+ {
+ mpBufferedData.reset();
+ return maPoints.end();
+ }
};
//////////////////////////////////////////////////////////////////////////////
@@ -1586,6 +1626,26 @@ namespace basegfx
mpPolygon->transform(rMatrix);
}
}
+
+ const B2DPoint* B2DPolygon::begin() const
+ {
+ return mpPolygon->begin();
+ }
+
+ const B2DPoint* B2DPolygon::end() const
+ {
+ return mpPolygon->end();
+ }
+
+ B2DPoint* B2DPolygon::begin()
+ {
+ return mpPolygon->begin();
+ }
+
+ B2DPoint* B2DPolygon::end()
+ {
+ return mpPolygon->end();
+ }
} // end of namespace basegfx
//////////////////////////////////////////////////////////////////////////////
diff --git a/basegfx/source/polygon/b2dpolygontools.cxx b/basegfx/source/polygon/b2dpolygontools.cxx
index e54a5e2707c9..e9db491ecd48 100644
--- a/basegfx/source/polygon/b2dpolygontools.cxx
+++ b/basegfx/source/polygon/b2dpolygontools.cxx
@@ -2346,7 +2346,8 @@ namespace basegfx
// polygon must be closed to resemble a rect, and contain
// at least four points.
if( !rPoly.isClosed() ||
- rPoly.count() < 4 )
+ rPoly.count() < 4 ||
+ rPoly.areControlPointsUsed() )
{
return false;
}
diff --git a/basegfx/source/polygon/b2dpolypolygon.cxx b/basegfx/source/polygon/b2dpolypolygon.cxx
index 767d2b25ced5..9b28dffd19af 100644
--- a/basegfx/source/polygon/b2dpolypolygon.cxx
+++ b/basegfx/source/polygon/b2dpolypolygon.cxx
@@ -163,6 +163,38 @@ public:
maPolygons.end(),
std::mem_fun_ref( &basegfx::B2DPolygon::makeUnique ));
}
+
+ const basegfx::B2DPolygon* begin() const
+ {
+ if(maPolygons.empty())
+ return 0;
+ else
+ return &maPolygons.front();
+ }
+
+ const basegfx::B2DPolygon* end() const
+ {
+ if(maPolygons.empty())
+ return 0;
+ else
+ return (&maPolygons.back())+1;
+ }
+
+ basegfx::B2DPolygon* begin()
+ {
+ if(maPolygons.empty())
+ return 0;
+ else
+ return &maPolygons.front();
+ }
+
+ basegfx::B2DPolygon* end()
+ {
+ if(maPolygons.empty())
+ return 0;
+ else
+ return &(maPolygons.back())+1;
+ }
};
//////////////////////////////////////////////////////////////////////////////
@@ -375,6 +407,26 @@ namespace basegfx
mpPolyPolygon->transform(rMatrix);
}
}
+
+ const B2DPolygon* B2DPolyPolygon::begin() const
+ {
+ return mpPolyPolygon->begin();
+ }
+
+ const B2DPolygon* B2DPolyPolygon::end() const
+ {
+ return mpPolyPolygon->end();
+ }
+
+ B2DPolygon* B2DPolyPolygon::begin()
+ {
+ return mpPolyPolygon->begin();
+ }
+
+ B2DPolygon* B2DPolyPolygon::end()
+ {
+ return mpPolyPolygon->end();
+ }
} // end of namespace basegfx
// eof
diff --git a/basegfx/source/polygon/b2dsvgpolypolygon.cxx b/basegfx/source/polygon/b2dsvgpolypolygon.cxx
index bbb6db4c064a..d2815337edaf 100644
--- a/basegfx/source/polygon/b2dsvgpolypolygon.cxx
+++ b/basegfx/source/polygon/b2dsvgpolypolygon.cxx
@@ -65,10 +65,8 @@ namespace basegfx
}
}
- inline bool lcl_isOnNumberChar(const ::rtl::OUString& rStr, const sal_Int32 nPos, bool bSignAllowed = true)
+ inline bool lcl_isOnNumberChar(const sal_Unicode aChar, bool bSignAllowed = true)
{
- const sal_Unicode aChar(rStr[nPos]);
-
const bool bPredicate( (sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar)
|| (bSignAllowed && sal_Unicode('+') == aChar)
|| (bSignAllowed && sal_Unicode('-') == aChar) );
@@ -76,6 +74,12 @@ namespace basegfx
return bPredicate;
}
+ inline bool lcl_isOnNumberChar(const ::rtl::OUString& rStr, const sal_Int32 nPos, bool bSignAllowed = true)
+ {
+ return lcl_isOnNumberChar(rStr[nPos],
+ bSignAllowed);
+ }
+
bool lcl_getDoubleChar(double& o_fRetval,
sal_Int32& io_rPos,
const ::rtl::OUString& rStr,
@@ -231,16 +235,16 @@ namespace basegfx
lcl_skipSpacesAndCommas(io_rPos, rStr, nLen);
}
- void lcl_putNumberChar( ::rtl::OUString& rStr,
- double fValue )
+ void lcl_putNumberChar( ::rtl::OUStringBuffer& rStr,
+ double fValue )
{
- rStr += ::rtl::OUString::valueOf( fValue );
+ rStr.append( fValue );
}
- void lcl_putNumberCharWithSpace( ::rtl::OUString& rStr,
- double fValue,
- double fOldValue,
- bool bUseRelativeCoordinates )
+ void lcl_putNumberCharWithSpace( ::rtl::OUStringBuffer& rStr,
+ double fValue,
+ double fOldValue,
+ bool bUseRelativeCoordinates )
{
if( bUseRelativeCoordinates )
fValue -= fOldValue;
@@ -248,11 +252,10 @@ namespace basegfx
const sal_Int32 aLen( rStr.getLength() );
if(aLen)
{
- if( lcl_isOnNumberChar(rStr, aLen - 1, false) &&
+ if( lcl_isOnNumberChar(rStr.charAt(aLen - 1), false) &&
fValue >= 0.0 )
{
- rStr += ::rtl::OUString::valueOf(
- sal_Unicode(' ') );
+ rStr.append( sal_Unicode(' ') );
}
}
@@ -876,7 +879,7 @@ namespace basegfx
bool bDetectQuadraticBeziers)
{
const sal_uInt32 nCount(rPolyPolygon.count());
- ::rtl::OUString aResult;
+ ::rtl::OUStringBuffer aResult;
B2DPoint aCurrentSVGPosition(0.0, 0.0); // SVG assumes (0,0) as the initial current point
for(sal_uInt32 i(0); i < nCount; i++)
@@ -893,7 +896,7 @@ namespace basegfx
// handle polygon start point
B2DPoint aEdgeStart(aPolygon.getB2DPoint(0));
- aResult += ::rtl::OUString::valueOf(lcl_getCommand('M', 'm', bUseRelativeCoordinates));
+ aResult.append(lcl_getCommand('M', 'm', bUseRelativeCoordinates));
lcl_putNumberCharWithSpace(aResult, aEdgeStart.getX(), aCurrentSVGPosition.getX(), bUseRelativeCoordinates);
lcl_putNumberCharWithSpace(aResult, aEdgeStart.getY(), aCurrentSVGPosition.getY(), bUseRelativeCoordinates);
aLastSVGCommand = lcl_getCommand('L', 'l', bUseRelativeCoordinates);
@@ -954,7 +957,7 @@ namespace basegfx
if(aLastSVGCommand != aCommand)
{
- aResult += ::rtl::OUString::valueOf(aCommand);
+ aResult.append(aCommand);
aLastSVGCommand = aCommand;
}
@@ -969,7 +972,7 @@ namespace basegfx
if(aLastSVGCommand != aCommand)
{
- aResult += ::rtl::OUString::valueOf(aCommand);
+ aResult.append(aCommand);
aLastSVGCommand = aCommand;
}
@@ -990,7 +993,7 @@ namespace basegfx
if(aLastSVGCommand != aCommand)
{
- aResult += ::rtl::OUString::valueOf(aCommand);
+ aResult.append(aCommand);
aLastSVGCommand = aCommand;
}
@@ -1007,7 +1010,7 @@ namespace basegfx
if(aLastSVGCommand != aCommand)
{
- aResult += ::rtl::OUString::valueOf(aCommand);
+ aResult.append(aCommand);
aLastSVGCommand = aCommand;
}
@@ -1046,7 +1049,7 @@ namespace basegfx
if(aLastSVGCommand != aCommand)
{
- aResult += ::rtl::OUString::valueOf(aCommand);
+ aResult.append(aCommand);
aLastSVGCommand = aCommand;
}
@@ -1060,7 +1063,7 @@ namespace basegfx
if(aLastSVGCommand != aCommand)
{
- aResult += ::rtl::OUString::valueOf(aCommand);
+ aResult.append(aCommand);
aLastSVGCommand = aCommand;
}
@@ -1074,7 +1077,7 @@ namespace basegfx
if(aLastSVGCommand != aCommand)
{
- aResult += ::rtl::OUString::valueOf(aCommand);
+ aResult.append(aCommand);
aLastSVGCommand = aCommand;
}
@@ -1092,12 +1095,12 @@ namespace basegfx
// close path if closed poly (Z and z are equivalent here, but looks nicer when case is matched)
if(aPolygon.isClosed())
{
- aResult += ::rtl::OUString::valueOf(lcl_getCommand('Z', 'z', bUseRelativeCoordinates));
+ aResult.append(lcl_getCommand('Z', 'z', bUseRelativeCoordinates));
}
}
}
- return aResult;
+ return aResult.makeStringAndClear();
}
}
}
diff --git a/basegfx/source/range/b2dmultirange.cxx b/basegfx/source/range/b2dmultirange.cxx
deleted file mode 100644
index 3a47be3b7dc9..000000000000
--- a/basegfx/source/range/b2dmultirange.cxx
+++ /dev/null
@@ -1,279 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_basegfx.hxx"
-#include <basegfx/range/b2drange.hxx>
-#include <basegfx/tuple/b2dtuple.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <basegfx/range/b2dmultirange.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <basegfx/polygon/b2dpolypolygoncutter.hxx>
-#include <boost/bind.hpp>
-#include <boost/mem_fn.hpp>
-#include <algorithm>
-#include <vector>
-
-
-namespace basegfx
-{
- class ImplB2DMultiRange
- {
- public:
- ImplB2DMultiRange() :
- maBounds(),
- maRanges()
- {
- }
-
- explicit ImplB2DMultiRange( const B2DRange& rRange ) :
- maBounds(),
- maRanges( 1, rRange )
- {
- }
-
- bool isEmpty() const
- {
- // no ranges at all, or all ranges empty
- return maRanges.empty() ||
- ::std::count_if( maRanges.begin(),
- maRanges.end(),
- ::boost::mem_fn( &B2DRange::isEmpty ) )
- == static_cast<VectorOfRanges::difference_type>(maRanges.size());
- }
-
- void reset()
- {
- // swap in empty vector
- VectorOfRanges aTmp;
- maRanges.swap( aTmp );
-
- maBounds.reset();
- }
-
- template< typename ValueType > bool isInside( const ValueType& rValue ) const
- {
- if( !maBounds.isInside( rValue ) )
- return false;
-
- // cannot use ::boost::bind here, since isInside is overloaded.
- // It is currently not possible to resolve the overload
- // by considering one of the other template arguments.
- VectorOfRanges::const_iterator aCurr( maRanges.begin() );
- const VectorOfRanges::const_iterator aEnd ( maRanges.end() );
- while( aCurr != aEnd )
- if( aCurr->isInside( rValue ) )
- return true;
-
- return false;
- }
-
- bool overlaps( const B2DRange& rRange ) const
- {
- if( !maBounds.overlaps( rRange ) )
- return false;
-
- const VectorOfRanges::const_iterator aEnd( maRanges.end() );
- return ::std::find_if( maRanges.begin(),
- aEnd,
- ::boost::bind<bool>( ::boost::mem_fn( &B2DRange::overlaps ),
- _1,
- rRange ) ) != aEnd;
- }
-
- void addRange( const B2DRange& rRange )
- {
- maRanges.push_back( rRange );
- maBounds.expand( rRange );
- }
-
- B2DRange getBounds() const
- {
- return maBounds;
- }
-
- B2DPolyPolygon getPolyPolygon() const
- {
- B2DPolyPolygon aRes;
-
- // Make range vector unique ( have to avoid duplicate
- // rectangles. The polygon clipper will return an empty
- // result in this case).
- VectorOfRanges aUniqueRanges;
- aUniqueRanges.reserve( maRanges.size() );
-
- VectorOfRanges::const_iterator aCurr( maRanges.begin() );
- const VectorOfRanges::const_iterator aEnd ( maRanges.end() );
- while( aCurr != aEnd )
- {
- // TODO(F3): It's plain wasted resources to apply a
- // general clipping algorithm to the problem at
- // hand. Go for a dedicated, scan-line-based approach.
- VectorOfRanges::const_iterator aCurrScan( aCurr+1 );
- VectorOfRanges::const_iterator aFound( aEnd );
- while( aCurrScan != aEnd )
- {
- if( aCurrScan->equal( *aCurr ) ||
- aCurrScan->isInside( *aCurr ) )
- {
- // current probe is equal to aCurr, or
- // completely contains aCurr. Thus, stop
- // searching, because aCurr is definitely not
- // a member of the unique rect list
- aFound = aCurrScan;
- break;
- }
-
- ++aCurrScan;
- }
-
- if( aFound == aEnd )
- {
- // check whether aCurr is fully contained in one
- // of the already added rects. If yes, we can skip
- // it.
- bool bUnique( true );
- VectorOfRanges::const_iterator aCurrUnique( aUniqueRanges.begin() );
- VectorOfRanges::const_iterator aEndUnique ( aUniqueRanges.end() );
- while( aCurrUnique != aEndUnique )
- {
- if( aCurrUnique->isInside( *aCurr ) )
- {
- // fully contained, no need to add
- bUnique = false;
- break;
- }
-
- ++aCurrUnique;
- }
-
- if( bUnique )
- aUniqueRanges.push_back( *aCurr );
- }
-
- ++aCurr;
- }
-
- VectorOfRanges::const_iterator aCurrUnique( aUniqueRanges.begin() );
- const VectorOfRanges::const_iterator aEndUnique ( aUniqueRanges.end() );
- while( aCurrUnique != aEndUnique )
- {
- // simply merge all unique parts (OR)
- aRes.append( tools::createPolygonFromRect( *aCurrUnique++ ) );
- }
-
- // remove redundant intersections. Note: since all added
- // rectangles are positively oriented, this method cannot
- // generate any holes.
- aRes = basegfx::tools::solveCrossovers(aRes);
- aRes = basegfx::tools::stripNeutralPolygons(aRes);
- aRes = basegfx::tools::stripDispensablePolygons(aRes, false);
-
- return aRes;
- }
-
- private:
- typedef ::std::vector< B2DRange > VectorOfRanges;
-
- B2DRange maBounds;
- VectorOfRanges maRanges;
- };
-
-
- // ====================================================================
-
-
- B2DMultiRange::B2DMultiRange() :
- mpImpl()
- {
- }
-
- B2DMultiRange::B2DMultiRange( const B2DRange& rRange ) :
- mpImpl( ImplB2DMultiRange( rRange ) )
- {
- }
-
- B2DMultiRange::~B2DMultiRange()
- {
- // otherwise, ImplB2DMultiRange would be an incomplete type
- }
-
- B2DMultiRange::B2DMultiRange( const B2DMultiRange& rSrc ) :
- mpImpl( rSrc.mpImpl )
- {
- }
-
- B2DMultiRange& B2DMultiRange::operator=( const B2DMultiRange& rSrc )
- {
- mpImpl = rSrc.mpImpl;
- return *this;
- }
-
- bool B2DMultiRange::isEmpty() const
- {
- return mpImpl->isEmpty();
- }
-
- void B2DMultiRange::reset()
- {
- mpImpl->reset();
- }
-
- bool B2DMultiRange::isInside( const B2DTuple& rTuple ) const
- {
- return mpImpl->isInside( rTuple );
- }
-
- bool B2DMultiRange::isInside( const B2DRange& rRange ) const
- {
- return mpImpl->isInside( rRange );
- }
-
- bool B2DMultiRange::overlaps( const B2DRange& rRange ) const
- {
- return mpImpl->overlaps( rRange );
- }
-
- void B2DMultiRange::addRange( const B2DRange& rRange )
- {
- mpImpl->addRange( rRange );
- }
-
- B2DRange B2DMultiRange::getBounds() const
- {
- return mpImpl->getBounds();
- }
-
- B2DPolyPolygon B2DMultiRange::getPolyPolygon() const
- {
- return mpImpl->getPolyPolygon();
- }
-
-} // end of namespace basegfx
-
-// eof
diff --git a/basegfx/source/range/b2dpolyrange.cxx b/basegfx/source/range/b2dpolyrange.cxx
new file mode 100644
index 000000000000..e212e083ef55
--- /dev/null
+++ b/basegfx/source/range/b2dpolyrange.cxx
@@ -0,0 +1,423 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: b2dmultirange.cxx,v $
+ * $Revision: 1.8 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/range/b2dpolyrange.hxx>
+
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2drangeclipper.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+#include <boost/bind.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <algorithm>
+#include <vector>
+
+static basegfx::B2VectorOrientation flipOrientation(
+ basegfx::B2VectorOrientation eOrient)
+{
+ return eOrient == basegfx::ORIENTATION_POSITIVE ?
+ basegfx::ORIENTATION_NEGATIVE : basegfx::ORIENTATION_POSITIVE;
+}
+
+namespace basegfx
+{
+ class ImplB2DPolyRange
+ {
+ void updateBounds()
+ {
+ maBounds.reset();
+ std::for_each(maRanges.begin(),
+ maRanges.end(),
+ boost::bind(
+ (void (B2DRange::*)(const B2DRange&))(
+ &B2DRange::expand),
+ boost::ref(maBounds),
+ _1));
+ }
+
+ public:
+ ImplB2DPolyRange() :
+ maBounds(),
+ maRanges(),
+ maOrient()
+ {}
+
+ explicit ImplB2DPolyRange( const B2DPolyRange::ElementType& rElem ) :
+ maBounds( boost::get<0>(rElem) ),
+ maRanges( 1, boost::get<0>(rElem) ),
+ maOrient( 1, boost::get<1>(rElem) )
+ {}
+
+ explicit ImplB2DPolyRange( const B2DRange& rRange, B2VectorOrientation eOrient ) :
+ maBounds( rRange ),
+ maRanges( 1, rRange ),
+ maOrient( 1, eOrient )
+ {}
+
+ bool operator==(const ImplB2DPolyRange& rRHS) const
+ {
+ return maRanges == rRHS.maRanges && maOrient == rRHS.maOrient;
+ }
+
+ sal_uInt32 count() const
+ {
+ return maRanges.size();
+ }
+
+ B2DPolyRange::ElementType getElement(sal_uInt32 nIndex) const
+ {
+ return boost::make_tuple(maRanges[nIndex],
+ maOrient[nIndex]);
+ }
+
+ void setElement(sal_uInt32 nIndex, const B2DPolyRange::ElementType& rElement )
+ {
+ maRanges[nIndex] = boost::get<0>(rElement);
+ maOrient[nIndex] = boost::get<1>(rElement);
+ updateBounds();
+ }
+
+ void setElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient )
+ {
+ maRanges[nIndex] = rRange;
+ maOrient[nIndex] = eOrient;
+ updateBounds();
+ }
+
+ void insertElement(sal_uInt32 nIndex, const B2DPolyRange::ElementType& rElement, sal_uInt32 nCount)
+ {
+ maRanges.insert(maRanges.begin()+nIndex, nCount, boost::get<0>(rElement));
+ maOrient.insert(maOrient.begin()+nIndex, nCount, boost::get<1>(rElement));
+ maBounds.expand(boost::get<0>(rElement));
+ }
+
+ void insertElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount)
+ {
+ maRanges.insert(maRanges.begin()+nIndex, nCount, rRange);
+ maOrient.insert(maOrient.begin()+nIndex, nCount, eOrient);
+ maBounds.expand(rRange);
+ }
+
+ void appendElement(const B2DPolyRange::ElementType& rElement, sal_uInt32 nCount)
+ {
+ maRanges.insert(maRanges.end(), nCount, boost::get<0>(rElement));
+ maOrient.insert(maOrient.end(), nCount, boost::get<1>(rElement));
+ maBounds.expand(boost::get<0>(rElement));
+ }
+
+ void appendElement(const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount)
+ {
+ maRanges.insert(maRanges.end(), nCount, rRange);
+ maOrient.insert(maOrient.end(), nCount, eOrient);
+ maBounds.expand(rRange);
+ }
+
+ void insertPolyRange(sal_uInt32 nIndex, const ImplB2DPolyRange& rPolyRange)
+ {
+ maRanges.insert(maRanges.begin()+nIndex, rPolyRange.maRanges.begin(), rPolyRange.maRanges.end());
+ maOrient.insert(maOrient.begin()+nIndex, rPolyRange.maOrient.begin(), rPolyRange.maOrient.end());
+ updateBounds();
+ }
+
+ void appendPolyRange(const ImplB2DPolyRange& rPolyRange)
+ {
+ maRanges.insert(maRanges.end(),
+ rPolyRange.maRanges.begin(),
+ rPolyRange.maRanges.end());
+ maOrient.insert(maOrient.end(),
+ rPolyRange.maOrient.begin(),
+ rPolyRange.maOrient.end());
+ updateBounds();
+ }
+
+ void remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ maRanges.erase(maRanges.begin()+nIndex,maRanges.begin()+nIndex+nCount);
+ maOrient.erase(maOrient.begin()+nIndex,maOrient.begin()+nIndex+nCount);
+ updateBounds();
+ }
+
+ void clear()
+ {
+ std::vector<B2DRange> aTmpRanges;
+ std::vector<B2VectorOrientation> aTmpOrient;
+
+ maRanges.swap(aTmpRanges);
+ maOrient.swap(aTmpOrient);
+
+ maBounds.reset();
+ }
+
+ void flip()
+ {
+ std::for_each(maOrient.begin(),
+ maOrient.end(),
+ boost::bind(
+ &flipOrientation,
+ _1));
+ }
+
+ B2DRange getBounds() const
+ {
+ return maBounds;
+ }
+
+ template< typename ValueType > bool isInside( const ValueType& rValue ) const
+ {
+ if( !maBounds.isInside( rValue ) )
+ return false;
+
+ // cannot use boost::bind here, since isInside is overloaded.
+ // It is currently not possible to resolve the overload
+ // by considering one of the other template arguments.
+ std::vector<B2DRange>::const_iterator aCurr( maRanges.begin() );
+ const std::vector<B2DRange>::const_iterator aEnd ( maRanges.end() );
+ while( aCurr != aEnd )
+ if( aCurr->isInside( rValue ) )
+ return true;
+
+ return false;
+ }
+
+ bool overlaps( const B2DRange& rRange ) const
+ {
+ if( !maBounds.overlaps( rRange ) )
+ return false;
+
+ const std::vector<B2DRange>::const_iterator aEnd( maRanges.end() );
+ return std::find_if( maRanges.begin(),
+ aEnd,
+ boost::bind<bool>( boost::mem_fn( &B2DRange::overlaps ),
+ _1,
+ boost::cref(rRange) ) ) != aEnd;
+ }
+
+ B2DPolyPolygon solveCrossovers() const
+ {
+ return tools::solveCrossovers(maRanges,maOrient);
+ }
+
+ const B2DRange* begin() const
+ {
+ if(maRanges.empty())
+ return 0;
+ else
+ return &maRanges.front();
+ }
+
+ const B2DRange* end() const
+ {
+ if(maRanges.empty())
+ return 0;
+ else
+ return (&maRanges.back())+1;
+ }
+
+ B2DRange* begin()
+ {
+ if(maRanges.empty())
+ return 0;
+ else
+ return &maRanges.front();
+ }
+
+ B2DRange* end()
+ {
+ if(maRanges.empty())
+ return 0;
+ else
+ return (&maRanges.back())+1;
+ }
+
+ private:
+ B2DRange maBounds;
+ std::vector<B2DRange> maRanges;
+ std::vector<B2VectorOrientation> maOrient;
+ };
+
+ B2DPolyRange::B2DPolyRange() :
+ mpImpl()
+ {}
+
+ B2DPolyRange::~B2DPolyRange()
+ {}
+
+ B2DPolyRange::B2DPolyRange( const ElementType& rElem ) :
+ mpImpl( ImplB2DPolyRange( rElem ) )
+ {}
+
+ B2DPolyRange::B2DPolyRange( const B2DRange& rRange, B2VectorOrientation eOrient ) :
+ mpImpl( ImplB2DPolyRange( rRange, eOrient ) )
+ {}
+
+ B2DPolyRange::B2DPolyRange( const B2DPolyRange& rRange ) :
+ mpImpl( rRange.mpImpl )
+ {}
+
+ B2DPolyRange& B2DPolyRange::operator=( const B2DPolyRange& rRange )
+ {
+ mpImpl = rRange.mpImpl;
+ return *this;
+ }
+
+ void B2DPolyRange::makeUnique()
+ {
+ mpImpl.make_unique();
+ }
+
+ bool B2DPolyRange::operator==(const B2DPolyRange& rRange) const
+ {
+ if(mpImpl.same_object(rRange.mpImpl))
+ return true;
+
+ return ((*mpImpl) == (*rRange.mpImpl));
+ }
+
+ bool B2DPolyRange::operator!=(const B2DPolyRange& rRange) const
+ {
+ return !(*this == rRange);
+ }
+
+ sal_uInt32 B2DPolyRange::count() const
+ {
+ return mpImpl->count();
+ }
+
+ B2DPolyRange::ElementType B2DPolyRange::getElement(sal_uInt32 nIndex) const
+ {
+ return mpImpl->getElement(nIndex);
+ }
+
+ void B2DPolyRange::setElement(sal_uInt32 nIndex, const ElementType& rElement )
+ {
+ mpImpl->setElement(nIndex, rElement);
+ }
+
+ void B2DPolyRange::setElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient )
+ {
+ mpImpl->setElement(nIndex, rRange, eOrient );
+ }
+
+ void B2DPolyRange::insertElement(sal_uInt32 nIndex, const ElementType& rElement, sal_uInt32 nCount)
+ {
+ mpImpl->insertElement(nIndex, rElement, nCount );
+ }
+
+ void B2DPolyRange::insertElement(sal_uInt32 nIndex, const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount)
+ {
+ mpImpl->insertElement(nIndex, rRange, eOrient, nCount );
+ }
+
+ void B2DPolyRange::appendElement(const ElementType& rElement, sal_uInt32 nCount)
+ {
+ mpImpl->appendElement(rElement, nCount);
+ }
+
+ void B2DPolyRange::appendElement(const B2DRange& rRange, B2VectorOrientation eOrient, sal_uInt32 nCount)
+ {
+ mpImpl->appendElement(rRange, eOrient, nCount );
+ }
+
+ void B2DPolyRange::insertPolyRange(sal_uInt32 nIndex, const B2DPolyRange& rRange)
+ {
+ mpImpl->insertPolyRange(nIndex, *rRange.mpImpl);
+ }
+
+ void B2DPolyRange::appendPolyRange(const B2DPolyRange& rRange)
+ {
+ mpImpl->appendPolyRange(*rRange.mpImpl);
+ }
+
+ void B2DPolyRange::remove(sal_uInt32 nIndex, sal_uInt32 nCount)
+ {
+ mpImpl->remove(nIndex, nCount);
+ }
+
+ void B2DPolyRange::clear()
+ {
+ mpImpl->clear();
+ }
+
+ void B2DPolyRange::flip()
+ {
+ mpImpl->flip();
+ }
+
+ B2DRange B2DPolyRange::getBounds() const
+ {
+ return mpImpl->getBounds();
+ }
+
+ bool B2DPolyRange::isInside( const B2DTuple& rTuple ) const
+ {
+ return mpImpl->isInside(rTuple);
+ }
+
+ bool B2DPolyRange::isInside( const B2DRange& rRange ) const
+ {
+ return mpImpl->isInside(rRange);
+ }
+
+ bool B2DPolyRange::overlaps( const B2DRange& rRange ) const
+ {
+ return mpImpl->overlaps(rRange);
+ }
+
+ B2DPolyPolygon B2DPolyRange::solveCrossovers() const
+ {
+ return mpImpl->solveCrossovers();
+ }
+
+ const B2DRange* B2DPolyRange::begin() const
+ {
+ return mpImpl->begin();
+ }
+
+ const B2DRange* B2DPolyRange::end() const
+ {
+ return mpImpl->end();
+ }
+
+ B2DRange* B2DPolyRange::begin()
+ {
+ return mpImpl->begin();
+ }
+
+ B2DRange* B2DPolyRange::end()
+ {
+ return mpImpl->end();
+ }
+
+} // end of namespace basegfx
+
+// eof
diff --git a/basegfx/source/range/b2drangeclipper.cxx b/basegfx/source/range/b2drangeclipper.cxx
new file mode 100644
index 000000000000..524479b4fde0
--- /dev/null
+++ b/basegfx/source/range/b2drangeclipper.cxx
@@ -0,0 +1,950 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: b2dmultirange.cxx,v $
+ * $Revision: 1.8 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <rtl/math.hxx>
+
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2dpolyrange.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+
+#include <o3tl/vector_pool.hxx>
+#include <boost/bind.hpp>
+#include <boost/utility.hpp>
+
+#include <algorithm>
+#include <deque>
+#include <list>
+
+
+namespace basegfx
+{
+ namespace
+ {
+ // Generating a poly-polygon from a bunch of rectangles
+ //
+ // Helper functionality for sweep-line algorithm
+ // ====================================================
+
+ typedef std::vector<B2DRange> VectorOfRanges;
+
+ class ImplPolygon;
+ typedef o3tl::vector_pool<ImplPolygon> VectorOfPolygons;
+
+
+ /** This class represents an active edge
+
+ As the sweep line traverses across the overall area,
+ rectangle edges parallel to it generate events, and
+ rectangle edges orthogonal to it generate active
+ edges. This class represents the latter.
+ */
+ class ActiveEdge
+ {
+ public:
+ /** The two possible active rectangle edges differ by one
+ coordinate value - the upper edge has the lower, the
+ lower edge the higher value.
+ */
+ enum EdgeType {
+ /// edge with lower coordinate value
+ UPPER=0,
+ /// edge with higher coordinate value
+ LOWER=1
+ };
+
+ enum EdgeDirection {
+ /// edge proceeds to the left
+ PROCEED_LEFT=0,
+ /// edge proceeds to the right
+ PROCEED_RIGHT=1
+ };
+
+ /** Create active edge
+
+ @param rRect
+ Rectangle this edge is part of
+
+ @param fInvariantCoord
+ The invariant ccordinate value of this edge
+
+ @param eEdgeType
+ Is fInvariantCoord the lower or the higher value, for
+ this rect?
+ */
+ ActiveEdge( const B2DRectangle& rRect,
+ const double& fInvariantCoord,
+ std::ptrdiff_t nPolyIdx,
+ EdgeType eEdgeType,
+ EdgeDirection eEdgeDirection ) :
+ mfInvariantCoord(fInvariantCoord),
+ mpAssociatedRect( &rRect ),
+ mnPolygonIdx( nPolyIdx ),
+ meEdgeType( eEdgeType ),
+ meEdgeDirection( eEdgeDirection )
+ {}
+
+ double getInvariantCoord() const { return mfInvariantCoord; }
+ const B2DRectangle& getRect() const { return *mpAssociatedRect; }
+ std::ptrdiff_t getTargetPolygonIndex() const { return mnPolygonIdx; }
+ void setTargetPolygonIndex( std::ptrdiff_t nIdx ) { mnPolygonIdx = nIdx; }
+ EdgeType getEdgeType() const { return meEdgeType; }
+ EdgeDirection getEdgeDirection() const { return meEdgeDirection; }
+
+ /// For STL sort
+ bool operator<( const ActiveEdge& rRHS ) const { return mfInvariantCoord < rRHS.mfInvariantCoord; }
+
+ private:
+ /** The invariant coordinate value of this edge (e.g. the
+ common y value, for a horizontal edge)
+ */
+ double mfInvariantCoord;
+
+ /** Associated rectangle
+
+ This on the one hand saves some storage space (the
+ vector of rectangles is persistent, anyway), and on
+ the other hand provides an identifier to match active
+ edges and x events (see below)
+
+ Ptr because class needs to be assignable
+ */
+ const B2DRectangle* mpAssociatedRect;
+
+ /** Index of the polygon this edge is currently involved
+ with.
+
+ Note that this can change for some kinds of edge
+ intersection, as the algorithm tends to swap
+ associated polygons there.
+
+ -1 denotes no assigned polygon
+ */
+ std::ptrdiff_t mnPolygonIdx;
+
+ /// 'upper' or 'lower' edge of original rectangle.
+ EdgeType meEdgeType;
+
+ /// 'left' or 'right'
+ EdgeDirection meEdgeDirection;
+ };
+
+ // Needs to be list - various places hold ptrs to elements
+ typedef std::list< ActiveEdge > ListOfEdges;
+
+
+ /** Element of the sweep line event list
+
+ As the sweep line traverses across the overall area,
+ rectangle edges parallel to it generate events, and
+ rectangle edges orthogonal to it generate active
+ edges. This class represents the former.
+
+ The class defines an element of the sweep line list. The
+ sweep line's position jumps in steps defined by the
+ coordinates of the sorted SweepLineEvent entries.
+ */
+ class SweepLineEvent
+ {
+ public:
+ /** The two possible sweep line rectangle edges differ by
+ one coordinate value - the starting edge has the
+ lower, the finishing edge the higher value.
+ */
+ enum EdgeType {
+ /// edge with lower coordinate value
+ STARTING_EDGE=0,
+ /// edge with higher coordinate value
+ FINISHING_EDGE=1
+ };
+
+ /** The two possible sweep line directions
+ */
+ enum EdgeDirection {
+ PROCEED_UP=0,
+ PROCEED_DOWN=1
+ };
+
+ /** Create sweep line event
+
+ @param fPos
+ Coordinate position of the event
+
+ @param rRect
+ Rectangle this event is generated for.
+
+ @param eEdgeType
+ Is fPos the lower or the higher value, for the
+ rectangle this event is generated for?
+ */
+ SweepLineEvent( double fPos,
+ const B2DRectangle& rRect,
+ EdgeType eEdgeType,
+ EdgeDirection eDirection) :
+ mfPos( fPos ),
+ mpAssociatedRect( &rRect ),
+ meEdgeType( eEdgeType ),
+ meEdgeDirection( eDirection )
+ {}
+
+ double getPos() const { return mfPos; }
+ const B2DRectangle& getRect() const { return *mpAssociatedRect; }
+ EdgeType getEdgeType() const { return meEdgeType; }
+ EdgeDirection getEdgeDirection() const { return meEdgeDirection; }
+
+ /// For STL sort
+ bool operator<( const SweepLineEvent& rRHS ) const { return mfPos < rRHS.mfPos; }
+
+ private:
+ /// position of the event, in the direction of the line sweep
+ double mfPos;
+
+ /** Rectangle this event is generated for
+
+ This on the one hand saves some storage space (the
+ vector of rectangles is persistent, anyway), and on
+ the other hand provides an identifier to match active
+ edges and events (see below)
+
+ Ptr because class needs to be assignable
+ */
+ const B2DRectangle* mpAssociatedRect;
+
+ /// 'upper' or 'lower' edge of original rectangle.
+ EdgeType meEdgeType;
+
+ /// 'up' or 'down'
+ EdgeDirection meEdgeDirection;
+ };
+
+ typedef std::vector< SweepLineEvent > VectorOfEvents;
+
+
+ /** Smart point container for B2DMultiRange::getPolyPolygon()
+
+ This class provides methods needed only here, and is used
+ as a place to store some additional information per
+ polygon. Also, most of the intersection logic is
+ implemented here.
+ */
+ class ImplPolygon
+ {
+ public:
+ /** Create polygon
+ */
+ ImplPolygon() :
+ mpLeadingRightEdge(NULL),
+ mnIdx(-1),
+ maPoints(),
+ mbIsFinished(false)
+ {
+ // completely ad-hoc. but what the hell.
+ maPoints.reserve(11);
+ }
+
+ void setPolygonPoolIndex( std::ptrdiff_t nIdx ) { mnIdx = nIdx; }
+ bool isFinished() const { return mbIsFinished; }
+
+ /// Add point to the end of the existing points
+ void append( const B2DPoint& rPoint )
+ {
+ OSL_PRECOND( maPoints.empty() ||
+ maPoints.back().getX() == rPoint.getX() ||
+ maPoints.back().getY() == rPoint.getY(),
+ "ImplPolygon::append(): added point violates 90 degree line angle constraint!" );
+
+ if( maPoints.empty() ||
+ maPoints.back() != rPoint )
+ {
+ // avoid duplicate points
+ maPoints.push_back( rPoint );
+ }
+ }
+
+ /** Perform the intersection of this polygon with an
+ active edge.
+
+ @param rEvent
+ The vertical line event that generated the
+ intersection
+
+ @param rActiveEdge
+ The active edge that generated the intersection
+
+ @param rPolygonPool
+ Polygon pool, we sometimes need to allocate a new one
+
+ @param bIsFinishingEdge
+ True, when this is hitting the last edge of the
+ vertical sweep - every vertical sweep starts and ends
+ with upper and lower edge of the _same_ rectangle.
+
+ @return the new current polygon (that's the one
+ processing must proceed with, when going through the
+ list of upcoming active edges).
+ */
+ std::ptrdiff_t intersect( SweepLineEvent& rEvent,
+ ActiveEdge& rActiveEdge,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes,
+ bool isFinishingEdge )
+ {
+ OSL_PRECOND( !isFinished(),
+ "ImplPolygon::intersect(): called on already finished polygon!" );
+ OSL_PRECOND( !isFinishingEdge
+ || (isFinishingEdge && &rEvent.getRect() == &rActiveEdge.getRect()),
+ "ImplPolygon::intersect(): inconsistent ending!" );
+
+ const B2DPoint aIntersectionPoint( rEvent.getPos(),
+ rActiveEdge.getInvariantCoord() );
+
+ // intersection point, goes to our polygon
+ // unconditionally
+ append(aIntersectionPoint);
+
+ const bool isSweepLineEnteringRect(
+ rEvent.getEdgeType() == SweepLineEvent::STARTING_EDGE);
+ if( isFinishingEdge )
+ {
+ if( isSweepLineEnteringRect )
+ handleFinalOwnRightEdge(rActiveEdge);
+ else
+ handleFinalOwnLeftEdge(rActiveEdge,
+ rPolygonPool,
+ rRes);
+
+ // we're done with this rect & sweep line
+ return -1;
+ }
+ else if( metOwnEdge(rEvent,rActiveEdge) )
+ {
+ handleInitialOwnEdge(rEvent, rActiveEdge);
+
+ // point already added, all init done, continue
+ // with same poly
+ return mnIdx;
+ }
+ else
+ {
+ OSL_ENSURE( rActiveEdge.getTargetPolygonIndex() != -1,
+ "ImplPolygon::intersect(): non-trivial intersection hit empty polygon!" );
+
+ const bool isHittingLeftEdge(
+ rActiveEdge.getEdgeDirection() == ActiveEdge::PROCEED_LEFT);
+
+ if( isHittingLeftEdge )
+ return handleComplexLeftEdge(rActiveEdge,
+ aIntersectionPoint,
+ rPolygonPool,
+ rRes);
+ else
+ return handleComplexRightEdge(rActiveEdge,
+ aIntersectionPoint,
+ rPolygonPool);
+ }
+ }
+
+ private:
+ std::ptrdiff_t getPolygonPoolIndex() const { return mnIdx; }
+
+ void handleInitialOwnEdge(SweepLineEvent& rEvent,
+ ActiveEdge& rActiveEdge)
+ {
+ const bool isActiveEdgeProceedLeft(
+ rActiveEdge.getEdgeDirection() == ActiveEdge::PROCEED_LEFT);
+ const bool isSweepLineEnteringRect(
+ rEvent.getEdgeType() == SweepLineEvent::STARTING_EDGE);
+ (void)isActiveEdgeProceedLeft;
+ (void)isSweepLineEnteringRect;
+
+ OSL_ENSURE( isSweepLineEnteringRect == isActiveEdgeProceedLeft,
+ "ImplPolygon::intersect(): sweep initial own edge hit: wrong polygon order" );
+
+ OSL_ENSURE( isSweepLineEnteringRect ||
+ mpLeadingRightEdge == &rActiveEdge,
+ "ImplPolygon::intersect(): sweep initial own edge hit: wrong leading edge" );
+ }
+
+ void handleFinalOwnRightEdge(ActiveEdge& rActiveEdge)
+ {
+ OSL_ENSURE( rActiveEdge.getEdgeDirection() == ActiveEdge::PROCEED_RIGHT,
+ "ImplPolygon::handleInitialOwnRightEdge(): start edge wrong polygon order" );
+
+ rActiveEdge.setTargetPolygonIndex(mnIdx);
+ mpLeadingRightEdge = &rActiveEdge;
+ }
+
+ void handleFinalOwnLeftEdge(ActiveEdge& rActiveEdge,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes)
+ {
+ OSL_ENSURE( rActiveEdge.getEdgeDirection() == ActiveEdge::PROCEED_LEFT,
+ "ImplPolygon::handleFinalOwnLeftEdge(): end edge wrong polygon order" );
+
+ const bool isHittingOurTail(
+ rActiveEdge.getTargetPolygonIndex() == mnIdx);
+
+ if( isHittingOurTail )
+ finish(rRes); // just finish. no fuss.
+ else
+ {
+ // temp poly hits final left edge
+ const std::ptrdiff_t nTmpIdx=rActiveEdge.getTargetPolygonIndex();
+ ImplPolygon& rTmp=rPolygonPool.get(nTmpIdx);
+
+ // active edge's polygon has points
+ // already. ours need to go in front of them.
+ maPoints.insert(maPoints.end(),
+ rTmp.maPoints.begin(),
+ rTmp.maPoints.end());
+
+ // adjust leading edges, we're switching the polygon
+ ActiveEdge* const pFarEdge=rTmp.mpLeadingRightEdge;
+
+ mpLeadingRightEdge = pFarEdge;
+ pFarEdge->setTargetPolygonIndex(mnIdx);
+
+ // nTmpIdx is an empty shell, get rid of it
+ rPolygonPool.free(nTmpIdx);
+ }
+ }
+
+ std::ptrdiff_t handleComplexLeftEdge(ActiveEdge& rActiveEdge,
+ const B2DPoint& rIntersectionPoint,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes)
+ {
+ const bool isHittingOurTail(
+ rActiveEdge.getTargetPolygonIndex() == mnIdx);
+ if( isHittingOurTail )
+ {
+ finish(rRes);
+
+ // so "this" is done - need new polygon to collect
+ // further points
+ const std::ptrdiff_t nIdxNewPolygon=rPolygonPool.alloc();
+ rPolygonPool.get(nIdxNewPolygon).setPolygonPoolIndex(nIdxNewPolygon);
+ rPolygonPool.get(nIdxNewPolygon).append(rIntersectionPoint);
+
+ rActiveEdge.setTargetPolygonIndex(nIdxNewPolygon);
+
+ return nIdxNewPolygon;
+ }
+ else
+ {
+ const std::ptrdiff_t nTmpIdx=rActiveEdge.getTargetPolygonIndex();
+ ImplPolygon& rTmp=rPolygonPool.get(nTmpIdx);
+
+ // active edge's polygon has points
+ // already. ours need to go in front of them.
+ maPoints.insert(maPoints.end(),
+ rTmp.maPoints.begin(),
+ rTmp.maPoints.end());
+
+ rTmp.maPoints.clear();
+ rTmp.append(rIntersectionPoint);
+
+ // adjust leading edges, we're switching the polygon
+ ActiveEdge* const pFarEdge=rTmp.mpLeadingRightEdge;
+ ActiveEdge* const pNearEdge=&rActiveEdge;
+
+ rTmp.mpLeadingRightEdge = NULL;
+ pNearEdge->setTargetPolygonIndex(nTmpIdx);
+
+ mpLeadingRightEdge = pFarEdge;
+ pFarEdge->setTargetPolygonIndex(mnIdx);
+
+ return nTmpIdx;
+ }
+ }
+
+ std::ptrdiff_t handleComplexRightEdge(ActiveEdge& rActiveEdge,
+ const B2DPoint& rIntersectionPoint,
+ VectorOfPolygons& rPolygonPool)
+ {
+ const std::ptrdiff_t nTmpIdx=rActiveEdge.getTargetPolygonIndex();
+ ImplPolygon& rTmp=rPolygonPool.get(nTmpIdx);
+
+ rTmp.append(rIntersectionPoint);
+
+ rActiveEdge.setTargetPolygonIndex(mnIdx);
+ mpLeadingRightEdge = &rActiveEdge;
+
+ rTmp.mpLeadingRightEdge = NULL;
+
+ return nTmpIdx;
+ }
+
+ /// True when sweep line hits our own active edge
+ bool metOwnEdge(const SweepLineEvent& rEvent,
+ ActiveEdge& rActiveEdge)
+ {
+ const bool bHitOwnEdge=&rEvent.getRect() == &rActiveEdge.getRect();
+ return bHitOwnEdge;
+ }
+
+ /// Retrieve B2DPolygon from this object
+ B2DPolygon getPolygon() const
+ {
+ B2DPolygon aRes;
+ std::for_each( maPoints.begin(),
+ maPoints.end(),
+ boost::bind(
+ &B2DPolygon::append,
+ boost::ref(aRes),
+ _1,
+ 1 ) );
+ aRes.setClosed( true );
+ return aRes;
+ }
+
+ /** Finish this polygon, push to result set.
+ */
+ void finish(B2DPolyPolygon& rRes)
+ {
+ OSL_PRECOND( maPoints.empty() ||
+ maPoints.front().getX() == maPoints.back().getX() ||
+ maPoints.front().getY() == maPoints.back().getY(),
+ "ImplPolygon::finish(): first and last point violate 90 degree line angle constraint!" );
+
+ mbIsFinished = true;
+ mpLeadingRightEdge = NULL;
+
+ rRes.append(getPolygon());
+ }
+
+ /** Refers to the current leading edge element of this
+ polygon, or NULL. The leading edge denotes the 'front'
+ of the polygon vertex sequence, i.e. the coordinates
+ at the polygon's leading edge are returned from
+ maPoints.front()
+ */
+ ActiveEdge* mpLeadingRightEdge;
+
+ /// current index into vector pool
+ std::ptrdiff_t mnIdx;
+
+ /// Container for the actual polygon points
+ std::vector<B2DPoint> maPoints;
+
+ /// When true, this polygon is 'done', i.e. nothing must be added anymore.
+ bool mbIsFinished;
+ };
+
+ /** Init sweep line event list
+
+ This method fills the event list with the sweep line
+ events generated from the input rectangles, and sorts them
+ with increasing x.
+ */
+ void setupSweepLineEventListFromRanges( VectorOfEvents& o_rEventVector,
+ const std::vector<B2DRange>& rRanges,
+ const std::vector<B2VectorOrientation>& rOrientations )
+ {
+ // we need exactly 2*rectVec.size() events: one for the
+ // left, and one for the right edge of each rectangle
+ o_rEventVector.clear();
+ o_rEventVector.reserve( 2*rRanges.size() );
+
+ // generate events
+ // ===============
+
+ // first pass: add all left edges in increasing order
+ std::vector<B2DRange>::const_iterator aCurrRect=rRanges.begin();
+ std::vector<B2VectorOrientation>::const_iterator aCurrOrientation=rOrientations.begin();
+ const std::vector<B2DRange>::const_iterator aEnd=rRanges.end();
+ const std::vector<B2VectorOrientation>::const_iterator aEndOrientation=rOrientations.end();
+ while( aCurrRect != aEnd && aCurrOrientation != aEndOrientation )
+ {
+ const B2DRectangle& rCurrRect( *aCurrRect++ );
+
+ o_rEventVector.push_back(
+ SweepLineEvent( rCurrRect.getMinX(),
+ rCurrRect,
+ SweepLineEvent::STARTING_EDGE,
+ (*aCurrOrientation++) == ORIENTATION_POSITIVE ?
+ SweepLineEvent::PROCEED_UP : SweepLineEvent::PROCEED_DOWN) );
+ }
+
+ // second pass: add all right edges in reversed order
+ std::vector<B2DRange>::const_reverse_iterator aCurrRectR=rRanges.rbegin();
+ std::vector<B2VectorOrientation>::const_reverse_iterator aCurrOrientationR=rOrientations.rbegin();
+ const std::vector<B2DRange>::const_reverse_iterator aEndR=rRanges.rend();
+ const std::vector<B2VectorOrientation>::const_reverse_iterator aEndOrientationR=rOrientations.rend();
+ while( aCurrRectR != aEndR )
+ {
+ const B2DRectangle& rCurrRect( *aCurrRectR++ );
+
+ o_rEventVector.push_back(
+ SweepLineEvent( rCurrRect.getMaxX(),
+ rCurrRect,
+ SweepLineEvent::FINISHING_EDGE,
+ (*aCurrOrientationR++) == ORIENTATION_POSITIVE ?
+ SweepLineEvent::PROCEED_DOWN : SweepLineEvent::PROCEED_UP ) );
+ }
+
+ // sort events
+ // ===========
+
+ // since we use stable_sort, the order of events with the
+ // same x value will not change. The elaborate two-pass
+ // add above thus ensures, that for each two rectangles
+ // with similar left and right x coordinates, the
+ // rectangle whose left event comes first will have its
+ // right event come last. This is advantageous for the
+ // clip algorithm below, see handleRightEdgeCrossing().
+
+ // TODO(P3): Use radix sort (from
+ // b2dpolypolygonrasterconverter, or have your own
+ // templatized version).
+ std::stable_sort( o_rEventVector.begin(),
+ o_rEventVector.end() );
+ }
+
+ /** Insert two active edge segments for the given rectangle.
+
+ This method creates two active edge segments from the
+ given rect, and inserts them into the active edge list,
+ such that this stays sorted (if it was before).
+
+ @param io_rEdgeList
+ Active edge list to insert into
+
+ @param io_rPolygons
+ Vector of polygons. Each rectangle added creates one
+ tentative result polygon in this vector, and the edge list
+ entries holds a reference to that polygon (this _requires_
+ that the polygon vector does not reallocate, i.e. it must
+ have at least the maximal number of rectangles reserved)
+
+ @param o_CurrentPolygon
+ The then-current polygon when processing this sweep line
+ event
+
+ @param rCurrEvent
+ The actual event that caused this call
+ */
+ void createActiveEdgesFromStartEvent( ListOfEdges& io_rEdgeList,
+ VectorOfPolygons& io_rPolygonPool,
+ SweepLineEvent& rCurrEvent )
+ {
+ ListOfEdges aNewEdges;
+ const B2DRectangle& rRect=rCurrEvent.getRect();
+ const bool bGoesDown=rCurrEvent.getEdgeDirection() == SweepLineEvent::PROCEED_DOWN;
+
+ // start event - new rect starts here, needs polygon to
+ // collect points into
+ const std::ptrdiff_t nIdxPolygon=io_rPolygonPool.alloc();
+ io_rPolygonPool.get(nIdxPolygon).setPolygonPoolIndex(nIdxPolygon);
+
+ // upper edge
+ aNewEdges.push_back(
+ ActiveEdge(
+ rRect,
+ rRect.getMinY(),
+ bGoesDown ? nIdxPolygon : -1,
+ ActiveEdge::UPPER,
+ bGoesDown ? ActiveEdge::PROCEED_LEFT : ActiveEdge::PROCEED_RIGHT) );
+ // lower edge
+ aNewEdges.push_back(
+ ActiveEdge(
+ rRect,
+ rRect.getMaxY(),
+ bGoesDown ? -1 : nIdxPolygon,
+ ActiveEdge::LOWER,
+ bGoesDown ? ActiveEdge::PROCEED_RIGHT : ActiveEdge::PROCEED_LEFT ) );
+
+ // furthermore, have to respect a special tie-breaking
+ // rule here, for edges which share the same y value:
+ // newly added upper edges must be inserted _before_ any
+ // other edge with the same y value, and newly added lower
+ // edges must be _after_ all other edges with the same
+ // y. This ensures that the left vertical edge processing
+ // below encounters the upper edge of the current rect
+ // first, and the lower edge last, which automatically
+ // starts and finishes this rect correctly (as only then,
+ // the polygon will have their associated active edges
+ // set).
+ const double nMinY( rRect.getMinY() );
+ const double nMaxY( rRect.getMaxY() );
+ ListOfEdges::iterator aCurr( io_rEdgeList.begin() );
+ const ListOfEdges::iterator aEnd ( io_rEdgeList.end() );
+ while( aCurr != aEnd )
+ {
+ const double nCurrY( aCurr->getInvariantCoord() );
+
+ if( nCurrY >= nMinY &&
+ aNewEdges.size() == 2 ) // only add, if not yet done.
+ {
+ // insert upper edge _before_ aCurr. Thus, it will
+ // be the first entry for a range of equal y
+ // values. Using splice here, since we hold
+ // references to the moved list element!
+ io_rEdgeList.splice( aCurr,
+ aNewEdges,
+ aNewEdges.begin() );
+ }
+
+ if( nCurrY > nMaxY )
+ {
+ // insert lower edge _before_ aCurr. Thus, it will
+ // be the last entry for a range of equal y values
+ // (aCurr is the first entry strictly larger than
+ // nMaxY). Using splice here, since we hold
+ // references to the moved list element!
+ io_rEdgeList.splice( aCurr,
+ aNewEdges,
+ aNewEdges.begin() );
+ // done with insertion, can early-exit here.
+ return;
+ }
+
+ ++aCurr;
+ }
+
+ // append remainder of aNewList (might still contain 2 or
+ // 1 elements, depending of the contents of io_rEdgeList).
+ io_rEdgeList.splice( aCurr,
+ aNewEdges );
+ }
+
+ inline bool isSameRect(ActiveEdge& rEdge,
+ const basegfx::B2DRange& rRect)
+ {
+ return &rEdge.getRect() == &rRect;
+ }
+
+ // wow what a hack. necessary because stl's list::erase does
+ // not eat reverse_iterator
+ template<typename Cont, typename Iter> Iter eraseFromList(Cont&, Iter);
+ template<> inline ListOfEdges::iterator eraseFromList(
+ ListOfEdges& rList, ListOfEdges::iterator aIter)
+ {
+ return rList.erase(aIter);
+ }
+ template<> inline ListOfEdges::reverse_iterator eraseFromList(
+ ListOfEdges& rList, ListOfEdges::reverse_iterator aIter)
+ {
+ return ListOfEdges::reverse_iterator(
+ rList.erase(boost::prior(aIter.base())));
+ }
+
+ template<int bPerformErase,
+ typename Iterator> inline void processActiveEdges(
+ Iterator first,
+ Iterator last,
+ ListOfEdges& rActiveEdgeList,
+ SweepLineEvent& rCurrEvent,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes )
+ {
+ const basegfx::B2DRange& rCurrRect=rCurrEvent.getRect();
+
+ // fast-forward to rCurrEvent's first active edge (holds
+ // for both starting and finishing sweep line events, a
+ // rect is regarded _outside_ any rects whose events have
+ // started earlier
+ first = std::find_if(first, last,
+ boost::bind(
+ &isSameRect,
+ _1,
+ boost::cref(rCurrRect)));
+
+ if(first == last)
+ return;
+
+ int nCount=0;
+ std::ptrdiff_t nCurrPolyIdx=-1;
+ while(first != last)
+ {
+ if( nCurrPolyIdx == -1 )
+ nCurrPolyIdx=first->getTargetPolygonIndex();
+
+ OSL_ASSERT(nCurrPolyIdx != -1);
+
+ // second encounter of my rect -> second edge
+ // encountered, done
+ const bool bExit=
+ nCount &&
+ isSameRect(*first,
+ rCurrRect);
+
+ // deal with current active edge
+ nCurrPolyIdx =
+ rPolygonPool.get(nCurrPolyIdx).intersect(
+ rCurrEvent,
+ *first,
+ rPolygonPool,
+ rRes,
+ bExit);
+
+ // prune upper & lower active edges, if requested
+ if( bPerformErase && (bExit || !nCount) )
+ first = eraseFromList(rActiveEdgeList,first);
+ else
+ ++first;
+
+ // delayed exit, had to prune first
+ if( bExit )
+ return;
+
+ ++nCount;
+ }
+ }
+
+ template<int bPerformErase> inline void processActiveEdgesTopDown(
+ SweepLineEvent& rCurrEvent,
+ ListOfEdges& rActiveEdgeList,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes )
+ {
+ processActiveEdges<bPerformErase>(
+ rActiveEdgeList. begin(),
+ rActiveEdgeList. end(),
+ rActiveEdgeList,
+ rCurrEvent,
+ rPolygonPool,
+ rRes);
+ }
+
+ template<int bPerformErase> inline void processActiveEdgesBottomUp(
+ SweepLineEvent& rCurrEvent,
+ ListOfEdges& rActiveEdgeList,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes )
+ {
+ processActiveEdges<bPerformErase>(
+ rActiveEdgeList. rbegin(),
+ rActiveEdgeList. rend(),
+ rActiveEdgeList,
+ rCurrEvent,
+ rPolygonPool,
+ rRes);
+ }
+
+ enum{ NoErase=0, PerformErase=1 };
+
+ void handleStartingEdge( SweepLineEvent& rCurrEvent,
+ ListOfEdges& rActiveEdgeList,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes)
+ {
+ // inject two new active edges for rect
+ createActiveEdgesFromStartEvent( rActiveEdgeList,
+ rPolygonPool,
+ rCurrEvent );
+
+ if( SweepLineEvent::PROCEED_DOWN == rCurrEvent.getEdgeDirection() )
+ processActiveEdgesTopDown<NoErase>(
+ rCurrEvent, rActiveEdgeList, rPolygonPool, rRes);
+ else
+ processActiveEdgesBottomUp<NoErase>(
+ rCurrEvent, rActiveEdgeList, rPolygonPool, rRes);
+ }
+
+ void handleFinishingEdge( SweepLineEvent& rCurrEvent,
+ ListOfEdges& rActiveEdgeList,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes)
+ {
+ if( SweepLineEvent::PROCEED_DOWN == rCurrEvent.getEdgeDirection() )
+ processActiveEdgesTopDown<PerformErase>(
+ rCurrEvent, rActiveEdgeList, rPolygonPool, rRes);
+ else
+ processActiveEdgesBottomUp<PerformErase>(
+ rCurrEvent, rActiveEdgeList, rPolygonPool, rRes);
+ }
+
+ inline void handleSweepLineEvent( SweepLineEvent& rCurrEvent,
+ ListOfEdges& rActiveEdgeList,
+ VectorOfPolygons& rPolygonPool,
+ B2DPolyPolygon& rRes)
+ {
+ if( SweepLineEvent::STARTING_EDGE == rCurrEvent.getEdgeType() )
+ handleStartingEdge(rCurrEvent,rActiveEdgeList,rPolygonPool,rRes);
+ else
+ handleFinishingEdge(rCurrEvent,rActiveEdgeList,rPolygonPool,rRes);
+ }
+ }
+
+ namespace tools
+ {
+ B2DPolyPolygon solveCrossovers(const std::vector<B2DRange>& rRanges,
+ const std::vector<B2VectorOrientation>& rOrientations)
+ {
+ // sweep-line algorithm to generate a poly-polygon
+ // from a bunch of rectangles
+ // ===============================================
+ //
+ // This algorithm uses the well-known sweep line
+ // concept, explained in every good text book about
+ // computational geometry.
+ //
+ // We start with creating two structures for every
+ // rectangle, one representing the left x coordinate,
+ // one representing the right x coordinate (and both
+ // referencing the original rect). These structs are
+ // sorted with increasing x coordinates.
+ //
+ // Then, we start processing the resulting list from
+ // the beginning. Every entry in the list defines a
+ // point in time of the line sweeping from left to
+ // right across all rectangles.
+ VectorOfEvents aSweepLineEvents;
+ setupSweepLineEventListFromRanges( aSweepLineEvents,
+ rRanges,
+ rOrientations );
+
+ B2DPolyPolygon aRes;
+ VectorOfPolygons aPolygonPool;
+ ListOfEdges aActiveEdgeList;
+
+ // sometimes not enough, but a usable compromise
+ aPolygonPool.reserve( rRanges.size() );
+
+ std::for_each( aSweepLineEvents.begin(),
+ aSweepLineEvents.end(),
+ boost::bind(
+ &handleSweepLineEvent,
+ _1,
+ boost::ref(aActiveEdgeList),
+ boost::ref(aPolygonPool),
+ boost::ref(aRes)) );
+
+ return aRes;
+ }
+ }
+}
+
diff --git a/basegfx/source/range/makefile.mk b/basegfx/source/range/makefile.mk
index 04d8e8e66fa2..5e05eeda94d9 100644
--- a/basegfx/source/range/makefile.mk
+++ b/basegfx/source/range/makefile.mk
@@ -43,7 +43,8 @@ SLOFILES= \
$(SLO)$/b1drange.obj \
$(SLO)$/b2drange.obj \
$(SLO)$/b2xrange.obj \
- $(SLO)$/b2dmultirange.obj \
+ $(SLO)$/b2dpolyrange.obj \
+ $(SLO)$/b2drangeclipper.obj \
$(SLO)$/b3drange.obj
# --- Targets ----------------------------------
diff --git a/basegfx/source/tools/b2dclipstate.cxx b/basegfx/source/tools/b2dclipstate.cxx
new file mode 100644
index 000000000000..005dca1aa66a
--- /dev/null
+++ b/basegfx/source/tools/b2dclipstate.cxx
@@ -0,0 +1,662 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: b2dmultirange.cxx,v $
+ * $Revision: 1.8 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+#include <basegfx/tools/b2dclipstate.hxx>
+
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2dpolyrange.hxx>
+#include <basegfx/range/b2drangeclipper.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygoncutter.hxx>
+
+namespace basegfx
+{
+namespace tools
+{
+ struct ImplB2DClipState
+ {
+ public:
+ enum Operation {UNION, INTERSECT, XOR, SUBTRACT};
+
+ ImplB2DClipState() :
+ maPendingPolygons(),
+ maPendingRanges(),
+ maClipPoly(),
+ mePendingOps(UNION)
+ {}
+
+ explicit ImplB2DClipState( const B2DRange& rRange ) :
+ maPendingPolygons(),
+ maPendingRanges(),
+ maClipPoly(
+ tools::createPolygonFromRect(rRange)),
+ mePendingOps(UNION)
+ {}
+
+ explicit ImplB2DClipState( const B2DPolygon& rPoly ) :
+ maPendingPolygons(),
+ maPendingRanges(),
+ maClipPoly(rPoly),
+ mePendingOps(UNION)
+ {}
+
+ explicit ImplB2DClipState( const B2DPolyPolygon& rPoly ) :
+ maPendingPolygons(),
+ maPendingRanges(),
+ maClipPoly(rPoly),
+ mePendingOps(UNION)
+ {}
+
+ bool isCleared() const
+ {
+ return !maClipPoly.count()
+ && !maPendingPolygons.count()
+ && !maPendingRanges.count();
+ }
+
+ void makeClear()
+ {
+ maPendingPolygons.clear();
+ maPendingRanges.clear();
+ maClipPoly.clear();
+ mePendingOps = UNION;
+ }
+
+ bool isNullClipPoly() const
+ {
+ return maClipPoly.count() == 1
+ && !maClipPoly.getB2DPolygon(0).count();
+ }
+
+ bool isNull() const
+ {
+ return !maPendingPolygons.count()
+ && !maPendingRanges.count()
+ && isNullClipPoly();
+ }
+
+ void makeNull()
+ {
+ maPendingPolygons.clear();
+ maPendingRanges.clear();
+ maClipPoly.clear();
+ maClipPoly.append(B2DPolygon());
+ mePendingOps = UNION;
+ }
+
+ bool operator==(const ImplB2DClipState& rRHS) const
+ {
+ return maPendingPolygons == rRHS.maPendingPolygons
+ && maPendingRanges == rRHS.maPendingRanges
+ && maClipPoly == rRHS.maClipPoly
+ && mePendingOps == rRHS.mePendingOps;
+ }
+
+ void addRange(const B2DRange& rRange, Operation eOp)
+ {
+ if( rRange.isEmpty() )
+ return;
+
+ commitPendingPolygons();
+ if( mePendingOps != eOp )
+ commitPendingRanges();
+
+ mePendingOps = eOp;
+ maPendingRanges.appendElement(
+ rRange,
+ ORIENTATION_POSITIVE);
+ }
+
+ void addPolygon(B2DPolygon aPoly, Operation eOp)
+ {
+ commitPendingRanges();
+ if( mePendingOps != eOp )
+ commitPendingPolygons();
+
+ mePendingOps = eOp;
+ maPendingPolygons.append(aPoly);
+ }
+
+ void addPolyPolygon(B2DPolyPolygon aPoly, Operation eOp)
+ {
+ commitPendingRanges();
+ if( mePendingOps != eOp )
+ commitPendingPolygons();
+
+ mePendingOps = eOp;
+ maPendingPolygons.append(aPoly);
+ }
+
+ void addClipState(const ImplB2DClipState& rOther, Operation eOp)
+ {
+ if( rOther.mePendingOps == mePendingOps
+ && !rOther.maClipPoly.count()
+ && !rOther.maPendingPolygons.count() )
+ {
+ maPendingRanges.appendPolyRange( rOther.maPendingRanges );
+ }
+ else
+ {
+ commitPendingRanges();
+ commitPendingPolygons();
+ rOther.commitPendingRanges();
+ rOther.commitPendingPolygons();
+
+ maPendingPolygons = rOther.maClipPoly;
+ mePendingOps = eOp;
+ }
+ }
+
+ void unionRange(const B2DRange& rRange)
+ {
+ if( isCleared() )
+ return;
+
+ addRange(rRange,UNION);
+ }
+
+ void unionPolygon(const B2DPolygon& rPoly)
+ {
+ if( isCleared() )
+ return;
+
+ addPolygon(rPoly,UNION);
+ }
+
+ void unionPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ if( isCleared() )
+ return;
+
+ addPolyPolygon(rPolyPoly,UNION);
+ }
+
+ void unionClipState(const ImplB2DClipState& rOther)
+ {
+ if( isCleared() )
+ return;
+
+ addClipState(rOther, UNION);
+ }
+
+ void intersectRange(const B2DRange& rRange)
+ {
+ if( isNull() )
+ return;
+
+ addRange(rRange,INTERSECT);
+ }
+
+ void intersectPolygon(const B2DPolygon& rPoly)
+ {
+ if( isNull() )
+ return;
+
+ addPolygon(rPoly,INTERSECT);
+ }
+
+ void intersectPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ if( isNull() )
+ return;
+
+ addPolyPolygon(rPolyPoly,INTERSECT);
+ }
+
+ void intersectClipState(const ImplB2DClipState& rOther)
+ {
+ if( isNull() )
+ return;
+
+ addClipState(rOther, INTERSECT);
+ }
+
+ void subtractRange(const B2DRange& rRange )
+ {
+ if( isNull() )
+ return;
+
+ addRange(rRange,SUBTRACT);
+ }
+
+ void subtractPolygon(const B2DPolygon& rPoly)
+ {
+ if( isNull() )
+ return;
+
+ addPolygon(rPoly,SUBTRACT);
+ }
+
+ void subtractPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ if( isNull() )
+ return;
+
+ addPolyPolygon(rPolyPoly,SUBTRACT);
+ }
+
+ void subtractClipState(const ImplB2DClipState& rOther)
+ {
+ if( isNull() )
+ return;
+
+ addClipState(rOther, SUBTRACT);
+ }
+
+ void xorRange(const B2DRange& rRange)
+ {
+ addRange(rRange,XOR);
+ }
+
+ void xorPolygon(const B2DPolygon& rPoly)
+ {
+ addPolygon(rPoly,XOR);
+ }
+
+ void xorPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ addPolyPolygon(rPolyPoly,XOR);
+ }
+
+ void xorClipState(const ImplB2DClipState& rOther)
+ {
+ addClipState(rOther, XOR);
+ }
+
+ B2DPolyPolygon getClipPoly() const
+ {
+ commitPendingRanges();
+ commitPendingPolygons();
+
+ return maClipPoly;
+ }
+
+ private:
+ void commitPendingPolygons() const
+ {
+ if( !maPendingPolygons.count() )
+ return;
+
+ // assumption: maClipPoly has kept polygons prepared for
+ // clipping; i.e. no neutral polygons & correct
+ // orientation
+ maPendingPolygons = tools::prepareForPolygonOperation(maPendingPolygons);
+ const bool bIsEmpty=isNullClipPoly();
+ const bool bIsCleared=!maClipPoly.count();
+ switch(mePendingOps)
+ {
+ case UNION:
+ OSL_ASSERT( !bIsCleared );
+
+ if( bIsEmpty )
+ maClipPoly = maPendingPolygons;
+ else
+ maClipPoly = tools::solvePolygonOperationOr(
+ maClipPoly,
+ maPendingPolygons);
+ break;
+ case INTERSECT:
+ OSL_ASSERT( !bIsEmpty );
+
+ if( bIsCleared )
+ maClipPoly = maPendingPolygons;
+ else
+ maClipPoly = tools::solvePolygonOperationAnd(
+ maClipPoly,
+ maPendingPolygons);
+ break;
+ case XOR:
+ if( bIsEmpty )
+ maClipPoly = maPendingPolygons;
+ else if( bIsCleared )
+ {
+ // not representable, strictly speaking,
+ // using polygons with the common even/odd
+ // or nonzero winding number fill rule. If
+ // we'd want to represent it, fill rule
+ // would need to be "non-negative winding
+ // number" (and we then would return
+ // 'holes' here)
+
+ // going for an ugly hack meanwhile
+ maClipPoly = tools::solvePolygonOperationXor(
+ B2DPolyPolygon(
+ tools::createPolygonFromRect(B2DRange(-1E20,-1E20,1E20,1E20))),
+ maPendingPolygons);
+ }
+ else
+ maClipPoly = tools::solvePolygonOperationXor(
+ maClipPoly,
+ maPendingPolygons);
+ break;
+ case SUBTRACT:
+ OSL_ASSERT( !bIsEmpty );
+
+ // first union all pending ones, subtract en bloc then
+ maPendingPolygons = solveCrossovers(maPendingPolygons);
+ maPendingPolygons = stripNeutralPolygons(maPendingPolygons);
+ maPendingPolygons = stripDispensablePolygons(maPendingPolygons, false);
+
+ if( bIsCleared )
+ {
+ // not representable, strictly speaking,
+ // using polygons with the common even/odd
+ // or nonzero winding number fill rule. If
+ // we'd want to represent it, fill rule
+ // would need to be "non-negative winding
+ // number" (and we then would return
+ // 'holes' here)
+
+ // going for an ugly hack meanwhile
+ maClipPoly = tools::solvePolygonOperationDiff(
+ B2DPolyPolygon(
+ tools::createPolygonFromRect(B2DRange(-1E20,-1E20,1E20,1E20))),
+ maPendingPolygons);
+ }
+ else
+ maClipPoly = tools::solvePolygonOperationDiff(
+ maClipPoly,
+ maPendingPolygons);
+ break;
+ }
+
+ maPendingPolygons.clear();
+ mePendingOps = UNION;
+ }
+
+ void commitPendingRanges() const
+ {
+ if( !maPendingRanges.count() )
+ return;
+
+ // use the specialized range clipper for the win
+ B2DPolyPolygon aCollectedRanges;
+ const bool bIsEmpty=isNullClipPoly();
+ const bool bIsCleared=!maClipPoly.count();
+ switch(mePendingOps)
+ {
+ case UNION:
+ OSL_ASSERT( !bIsCleared );
+
+ aCollectedRanges = maPendingRanges.solveCrossovers();
+ aCollectedRanges = stripNeutralPolygons(aCollectedRanges);
+ aCollectedRanges = stripDispensablePolygons(aCollectedRanges, false);
+ if( bIsEmpty )
+ maClipPoly = aCollectedRanges;
+ else
+ maClipPoly = tools::solvePolygonOperationOr(
+ maClipPoly,
+ aCollectedRanges);
+ break;
+ case INTERSECT:
+ OSL_ASSERT( !bIsEmpty );
+
+ aCollectedRanges = maPendingRanges.solveCrossovers();
+ aCollectedRanges = stripNeutralPolygons(aCollectedRanges);
+ if( maPendingRanges.count() > 1 )
+ aCollectedRanges = stripDispensablePolygons(aCollectedRanges, true);
+
+ if( bIsCleared )
+ maClipPoly = aCollectedRanges;
+ else
+ maClipPoly = tools::solvePolygonOperationAnd(
+ maClipPoly,
+ aCollectedRanges);
+ break;
+ case XOR:
+ aCollectedRanges = maPendingRanges.solveCrossovers();
+ aCollectedRanges = stripNeutralPolygons(aCollectedRanges);
+ aCollectedRanges = correctOrientations(aCollectedRanges);
+
+ if( bIsEmpty )
+ maClipPoly = aCollectedRanges;
+ else if( bIsCleared )
+ {
+ // not representable, strictly speaking,
+ // using polygons with the common even/odd
+ // or nonzero winding number fill rule. If
+ // we'd want to represent it, fill rule
+ // would need to be "non-negative winding
+ // number" (and we then would return
+ // 'holes' here)
+
+ // going for an ugly hack meanwhile
+ maClipPoly = tools::solvePolygonOperationXor(
+ B2DPolyPolygon(
+ tools::createPolygonFromRect(B2DRange(-1E20,-1E20,1E20,1E20))),
+ aCollectedRanges);
+ }
+ else
+ maClipPoly = tools::solvePolygonOperationXor(
+ maClipPoly,
+ aCollectedRanges);
+ break;
+ case SUBTRACT:
+ OSL_ASSERT( !bIsEmpty );
+
+ // first union all pending ranges, subtract en bloc then
+ aCollectedRanges = maPendingRanges.solveCrossovers();
+ aCollectedRanges = stripNeutralPolygons(aCollectedRanges);
+ aCollectedRanges = stripDispensablePolygons(aCollectedRanges, false);
+
+ if( bIsCleared )
+ {
+ // not representable, strictly speaking,
+ // using polygons with the common even/odd
+ // or nonzero winding number fill rule. If
+ // we'd want to represent it, fill rule
+ // would need to be "non-negative winding
+ // number" (and we then would return
+ // 'holes' here)
+
+ // going for an ugly hack meanwhile
+ maClipPoly = tools::solvePolygonOperationDiff(
+ B2DPolyPolygon(
+ tools::createPolygonFromRect(B2DRange(-1E20,-1E20,1E20,1E20))),
+ aCollectedRanges);
+ }
+ else
+ maClipPoly = tools::solvePolygonOperationDiff(
+ maClipPoly,
+ aCollectedRanges);
+ break;
+ }
+
+ maPendingRanges.clear();
+ mePendingOps = UNION;
+ }
+
+ mutable B2DPolyPolygon maPendingPolygons;
+ mutable B2DPolyRange maPendingRanges;
+ mutable B2DPolyPolygon maClipPoly;
+ mutable Operation mePendingOps;
+ };
+
+ B2DClipState::B2DClipState() :
+ mpImpl()
+ {}
+
+ B2DClipState::~B2DClipState()
+ {}
+
+ B2DClipState::B2DClipState( const B2DClipState& rOrig ) :
+ mpImpl(rOrig.mpImpl)
+ {}
+
+ B2DClipState::B2DClipState( const B2DRange& rRange ) :
+ mpImpl( ImplB2DClipState(rRange) )
+ {}
+
+ B2DClipState::B2DClipState( const B2DPolygon& rPoly ) :
+ mpImpl( ImplB2DClipState(rPoly) )
+ {}
+
+ B2DClipState::B2DClipState( const B2DPolyPolygon& rPolyPoly ) :
+ mpImpl( ImplB2DClipState(rPolyPoly) )
+ {}
+
+ B2DClipState& B2DClipState::operator=( const B2DClipState& rRHS )
+ {
+ mpImpl = rRHS.mpImpl;
+ return *this;
+ }
+
+ void B2DClipState::makeUnique()
+ {
+ mpImpl.make_unique();
+ }
+
+ void B2DClipState::makeNull()
+ {
+ mpImpl->makeNull();
+ }
+
+ bool B2DClipState::isNull() const
+ {
+ return mpImpl->isNull();
+ }
+
+ void B2DClipState::makeClear()
+ {
+ mpImpl->makeClear();
+ }
+
+ bool B2DClipState::isCleared() const
+ {
+ return mpImpl->isCleared();
+ }
+
+ bool B2DClipState::operator==(const B2DClipState& rRHS) const
+ {
+ if(mpImpl.same_object(rRHS.mpImpl))
+ return true;
+
+ return ((*mpImpl) == (*rRHS.mpImpl));
+ }
+
+ bool B2DClipState::operator!=(const B2DClipState& rRHS) const
+ {
+ return !(*this == rRHS);
+ }
+
+ void B2DClipState::unionRange(const B2DRange& rRange)
+ {
+ mpImpl->unionRange(rRange);
+ }
+
+ void B2DClipState::unionPolygon(const B2DPolygon& rPoly)
+ {
+ mpImpl->unionPolygon(rPoly);
+ }
+
+ void B2DClipState::unionPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ mpImpl->unionPolyPolygon(rPolyPoly);
+ }
+
+ void B2DClipState::unionClipState(const B2DClipState& rState)
+ {
+ mpImpl->unionClipState(*rState.mpImpl);
+ }
+
+ void B2DClipState::intersectRange(const B2DRange& rRange)
+ {
+ mpImpl->intersectRange(rRange);
+ }
+
+ void B2DClipState::intersectPolygon(const B2DPolygon& rPoly)
+ {
+ mpImpl->intersectPolygon(rPoly);
+ }
+
+ void B2DClipState::intersectPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ mpImpl->intersectPolyPolygon(rPolyPoly);
+ }
+
+ void B2DClipState::intersectClipState(const B2DClipState& rState)
+ {
+ mpImpl->intersectClipState(*rState.mpImpl);
+ }
+
+ void B2DClipState::subtractRange(const B2DRange& rRange)
+ {
+ mpImpl->subtractRange(rRange);
+ }
+
+ void B2DClipState::subtractPolygon(const B2DPolygon& rPoly)
+ {
+ mpImpl->subtractPolygon(rPoly);
+ }
+
+ void B2DClipState::subtractPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ mpImpl->subtractPolyPolygon(rPolyPoly);
+ }
+
+ void B2DClipState::subtractClipState(const B2DClipState& rState)
+ {
+ mpImpl->subtractClipState(*rState.mpImpl);
+ }
+
+ void B2DClipState::xorRange(const B2DRange& rRange)
+ {
+ mpImpl->xorRange(rRange);
+ }
+
+ void B2DClipState::xorPolygon(const B2DPolygon& rPoly)
+ {
+ mpImpl->xorPolygon(rPoly);
+ }
+
+ void B2DClipState::xorPolyPolygon(const B2DPolyPolygon& rPolyPoly)
+ {
+ mpImpl->xorPolyPolygon(rPolyPoly);
+ }
+
+ void B2DClipState::xorClipState(const B2DClipState& rState)
+ {
+ mpImpl->xorClipState(*rState.mpImpl);
+ }
+
+ B2DPolyPolygon B2DClipState::getClipPoly() const
+ {
+ return mpImpl->getClipPoly();
+ }
+
+} // end of namespace tools
+} // end of namespace basegfx
+
+// eof
diff --git a/basegfx/source/tools/gradienttools.cxx b/basegfx/source/tools/gradienttools.cxx
index 89293cfcb61c..857b668da68e 100644
--- a/basegfx/source/tools/gradienttools.cxx
+++ b/basegfx/source/tools/gradienttools.cxx
@@ -49,6 +49,8 @@ namespace basegfx
o_rGradientInfo.maBackTextureTransform.identity();
o_rGradientInfo.mnSteps = nSteps;
+ fAngle = -fAngle;
+
double fTargetSizeX(rTargetRange.getWidth());
double fTargetSizeY(rTargetRange.getHeight());
double fTargetOffsetX(rTargetRange.getMinX());
@@ -67,17 +69,30 @@ namespace basegfx
fTargetSizeY = fNewY;
}
- // add object scale before rotate
+ const double fSizeWithoutBorder=1.0 - fBorder;
+ if( bAxial )
+ {
+ o_rGradientInfo.maTextureTransform.scale(1.0, fSizeWithoutBorder * .5);
+ o_rGradientInfo.maTextureTransform.translate(0.0, 0.5);
+ }
+ else
+ {
+ if(!fTools::equal(fSizeWithoutBorder, 1.0))
+ {
+ o_rGradientInfo.maTextureTransform.scale(1.0, fSizeWithoutBorder);
+ o_rGradientInfo.maTextureTransform.translate(0.0, fBorder);
+ }
+ }
+
o_rGradientInfo.maTextureTransform.scale(fTargetSizeX, fTargetSizeY);
// add texture rotate after scale to keep perpendicular angles
if(0.0 != fAngle)
{
- B2DPoint aCenter(0.5, 0.5);
- aCenter *= o_rGradientInfo.maTextureTransform;
-
- o_rGradientInfo.maTextureTransform = basegfx::tools::createRotateAroundPoint(aCenter, fAngle)
- * o_rGradientInfo.maTextureTransform;
+ const B2DPoint aCenter(0.5*fTargetSizeX,
+ 0.5*fTargetSizeY);
+ o_rGradientInfo.maTextureTransform *=
+ basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
}
// add object translate
@@ -86,24 +101,9 @@ namespace basegfx
// prepare aspect for texture
o_rGradientInfo.mfAspectRatio = (0.0 != fTargetSizeY) ? fTargetSizeX / fTargetSizeY : 1.0;
- // build transform from u,v to [0.0 .. 1.0]. As base, use inverse texture transform
+ // build transform from u,v to [0.0 .. 1.0].
o_rGradientInfo.maBackTextureTransform = o_rGradientInfo.maTextureTransform;
o_rGradientInfo.maBackTextureTransform.invert();
-
- double fSizeWithoutBorder=0;
- if( bAxial )
- {
- fSizeWithoutBorder = (1.0 - fBorder) * 0.5;
- o_rGradientInfo.maBackTextureTransform.translate(0.0, -0.5);
- }
- else
- {
- fSizeWithoutBorder = 1.0 - fBorder;
- o_rGradientInfo.maBackTextureTransform.translate(0.0, -fBorder);
- }
-
- if(!fTools::equal(fSizeWithoutBorder, 0.0))
- o_rGradientInfo.maBackTextureTransform.scale(1.0, 1.0 / fSizeWithoutBorder);
}
/** Most of the setup for radial & ellipsoidal gradient is the same,
@@ -121,6 +121,8 @@ namespace basegfx
o_rGradientInfo.maBackTextureTransform.identity();
o_rGradientInfo.mnSteps = nSteps;
+ fAngle = -fAngle;
+
double fTargetSizeX(rTargetRange.getWidth());
double fTargetSizeY(rTargetRange.getHeight());
double fTargetOffsetX(rTargetRange.getMinX());
@@ -143,20 +145,19 @@ namespace basegfx
fTargetSizeY = 1.4142 * fTargetSizeY;
}
- // add object scale before rotate
+ const double fHalfBorder((1.0 - fBorder) * 0.5);
+ o_rGradientInfo.maTextureTransform.scale(fHalfBorder, fHalfBorder);
+
+ o_rGradientInfo.maTextureTransform.translate(0.5, 0.5);
o_rGradientInfo.maTextureTransform.scale(fTargetSizeX, fTargetSizeY);
- if( !bCircular )
+ // add texture rotate after scale to keep perpendicular angles
+ if( !bCircular && 0.0 != fAngle)
{
- // add texture rotate after scale to keep perpendicular angles
- if(0.0 != fAngle)
- {
- B2DPoint aCenter(0.5, 0.5);
- aCenter *= o_rGradientInfo.maTextureTransform;
-
- o_rGradientInfo.maTextureTransform = basegfx::tools::createRotateAroundPoint(aCenter, fAngle)
- * o_rGradientInfo.maTextureTransform;
- }
+ const B2DPoint aCenter(0.5*fTargetSizeX,
+ 0.5*fTargetSizeY);
+ o_rGradientInfo.maTextureTransform *=
+ basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
}
// add defined offsets after rotation
@@ -173,17 +174,9 @@ namespace basegfx
// prepare aspect for texture
o_rGradientInfo.mfAspectRatio = (0.0 != fTargetSizeY) ? fTargetSizeX / fTargetSizeY : 1.0;
- // build transform from u,v to [0.0 .. 1.0]. As base, use inverse texture transform
+ // build transform from u,v to [0.0 .. 1.0].
o_rGradientInfo.maBackTextureTransform = o_rGradientInfo.maTextureTransform;
o_rGradientInfo.maBackTextureTransform.invert();
- o_rGradientInfo.maBackTextureTransform.translate(-0.5, -0.5);
- const double fHalfBorder((1.0 - fBorder) * 0.5);
-
- if(!fTools::equal(fHalfBorder, 0.0))
- {
- const double fFactor(1.0 / fHalfBorder);
- o_rGradientInfo.maBackTextureTransform.scale(fFactor, fFactor);
- }
}
/** Setup for rect & square gradient is exactly the same. Factored out
@@ -200,6 +193,8 @@ namespace basegfx
o_rGradientInfo.maBackTextureTransform.identity();
o_rGradientInfo.mnSteps = nSteps;
+ fAngle = -fAngle;
+
double fTargetSizeX(rTargetRange.getWidth());
double fTargetSizeY(rTargetRange.getHeight());
double fTargetOffsetX(rTargetRange.getMinX());
@@ -218,17 +213,19 @@ namespace basegfx
fTargetSizeY = fNewY;
}
- // add object scale before rotate
+ const double fHalfBorder((1.0 - fBorder) * 0.5);
+ o_rGradientInfo.maTextureTransform.scale(fHalfBorder, fHalfBorder);
+
+ o_rGradientInfo.maTextureTransform.translate(0.5, 0.5);
o_rGradientInfo.maTextureTransform.scale(fTargetSizeX, fTargetSizeY);
// add texture rotate after scale to keep perpendicular angles
if(0.0 != fAngle)
{
- B2DPoint aCenter(0.5, 0.5);
- aCenter *= o_rGradientInfo.maTextureTransform;
-
- o_rGradientInfo.maTextureTransform = basegfx::tools::createRotateAroundPoint(aCenter, fAngle)
- * o_rGradientInfo.maTextureTransform;
+ const B2DPoint aCenter(0.5*fTargetSizeX,
+ 0.5*fTargetSizeY);
+ o_rGradientInfo.maTextureTransform *=
+ basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
}
// add defined offsets after rotation
@@ -248,14 +245,6 @@ namespace basegfx
// build transform from u,v to [0.0 .. 1.0]. As base, use inverse texture transform
o_rGradientInfo.maBackTextureTransform = o_rGradientInfo.maTextureTransform;
o_rGradientInfo.maBackTextureTransform.invert();
- o_rGradientInfo.maBackTextureTransform.translate(-0.5, -0.5);
- const double fHalfBorder((1.0 - fBorder) * 0.5);
-
- if(!fTools::equal(fHalfBorder, 0.0))
- {
- const double fFactor(1.0 / fHalfBorder);
- o_rGradientInfo.maBackTextureTransform.scale(fFactor, fFactor);
- }
}
namespace tools
diff --git a/basegfx/source/tools/keystoplerp.cxx b/basegfx/source/tools/keystoplerp.cxx
new file mode 100644
index 000000000000..883bfec6bc96
--- /dev/null
+++ b/basegfx/source/tools/keystoplerp.cxx
@@ -0,0 +1,107 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: canvastools.hxx,v $
+ * $Revision: 1.10 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include "basegfx/tools/keystoplerp.hxx"
+#include <com/sun/star/uno/Sequence.hxx>
+
+#include <algorithm>
+
+static void validateInput(const std::vector<double>& rKeyStops)
+{
+ (void)rKeyStops;
+#ifdef DBG_UTIL
+ OSL_ENSURE( rKeyStops.size() > 1,
+ "KeyStopLerp::KeyStopLerp(): key stop vector must have two entries or more" );
+
+ // rKeyStops must be sorted in ascending order
+ for( ::std::size_t i=1, len=rKeyStops.size(); i<len; ++i )
+ {
+ if( rKeyStops[i-1] > rKeyStops[i] )
+ OSL_ENSURE( false,
+ "KeyStopLerp::KeyStopLerp(): time vector is not sorted in ascending order!" );
+ }
+#endif
+}
+
+namespace basegfx
+{
+ namespace tools
+ {
+ KeyStopLerp::KeyStopLerp( const std::vector<double>& rKeyStops ) :
+ maKeyStops(rKeyStops),
+ mnLastIndex(0)
+ {
+ validateInput(maKeyStops);
+ }
+
+ KeyStopLerp::KeyStopLerp( const ::com::sun::star::uno::Sequence<double>& rKeyStops ) :
+ maKeyStops(rKeyStops.getLength()),
+ mnLastIndex(0)
+ {
+ std::copy( rKeyStops.getConstArray(),
+ rKeyStops.getConstArray()+rKeyStops.getLength(),
+ maKeyStops.begin() );
+ validateInput(maKeyStops);
+ }
+
+ KeyStopLerp::ResultType KeyStopLerp::lerp(double fAlpha) const
+ {
+ // cached value still okay?
+ if( maKeyStops.at(mnLastIndex) < fAlpha ||
+ maKeyStops.at(mnLastIndex+1) >= fAlpha )
+ {
+ // nope, find new index
+ mnLastIndex = std::min<std::ptrdiff_t>(
+ maKeyStops.size()-2,
+ // range is ensured by max below
+ std::max<std::ptrdiff_t>(
+ 0,
+ std::distance( maKeyStops.begin(),
+ std::lower_bound( maKeyStops.begin(),
+ maKeyStops.end(),
+ fAlpha )) - 1 ));
+ }
+
+ // lerp between stop and stop+1
+ const double fRawLerp=
+ (fAlpha-maKeyStops.at(mnLastIndex)) /
+ (maKeyStops.at(mnLastIndex+1) - maKeyStops.at(mnLastIndex));
+
+ // clamp to permissible range (input fAlpha might be
+ // everything)
+ return ResultType(
+ mnLastIndex,
+ clamp(fRawLerp,0.0,1.0));
+ }
+ }
+}
diff --git a/basegfx/source/tools/makefile.mk b/basegfx/source/tools/makefile.mk
index c70b78be5d4b..0a0977f7305d 100755
--- a/basegfx/source/tools/makefile.mk
+++ b/basegfx/source/tools/makefile.mk
@@ -37,9 +37,11 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files -------------------------------------
-SLOFILES= $(SLO)$/canvastools.obj \
+SLOFILES= $(SLO)$/b2dclipstate.obj \
+ $(SLO)$/canvastools.obj \
$(SLO)$/gradienttools.obj \
$(SLO)$/debugplotter.obj \
+ $(SLO)$/keystoplerp.obj \
$(SLO)$/liangbarsky.obj \
$(SLO)$/tools.obj \
$(SLO)$/unopolypolygon.obj
diff --git a/basegfx/test/basegfx1d.cxx b/basegfx/test/basegfx1d.cxx
index 5cc823d3daca..41ac65da56e3 100644
--- a/basegfx/test/basegfx1d.cxx
+++ b/basegfx/test/basegfx1d.cxx
@@ -30,7 +30,10 @@
#include "precompiled_basegfx.hxx"
// autogenerated file with codegen.pl
-#include <testshl/simpleheader.hxx>
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "cppunit/plugin/TestPlugIn.h"
namespace basegfx1d
{
@@ -52,7 +55,6 @@ public:
void EmptyMethod()
{
// CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
- CPPUNIT_ASSERT_STUB();
}
// Change the following lines only, if you add, remove or rename
@@ -65,13 +67,7 @@ public:
}; // class b1drange
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(basegfx1d::b1drange, "basegfx1d");
+CPPUNIT_TEST_SUITE_REGISTRATION(basegfx1d::b1drange);
} // namespace basegfx1d
-
-// -----------------------------------------------------------------------------
-
-// this macro creates an empty function, which will called by the RegisterAllFunctions()
-// to let the user the possibility to also register some functions by hand.
-NOADDITIONAL;
-
+CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/basegfx/test/basegfx2d.cxx b/basegfx/test/basegfx2d.cxx
index b169d35ed96a..31005a158982 100644
--- a/basegfx/test/basegfx2d.cxx
+++ b/basegfx/test/basegfx2d.cxx
@@ -30,7 +30,9 @@
#include "precompiled_basegfx.hxx"
// autogenerated file with codegen.pl
-#include <testshl/simpleheader.hxx>
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
@@ -38,7 +40,9 @@
#include <basegfx/curve/b2dcubicbezier.hxx>
#include <basegfx/curve/b2dbeziertools.hxx>
#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <basegfx/range/b2dmultirange.hxx>
+#include <basegfx/polygon/b2dpolygonclipper.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/range/b2dpolyrange.hxx>
#include <basegfx/numeric/ftools.hxx>
#include <basegfx/color/bcolor.hxx>
#include <basegfx/color/bcolortools.hxx>
@@ -53,214 +57,6 @@ using namespace ::basegfx;
namespace basegfx2d
{
-/// Gets a random ordinal [0,n)
-inline double getRandomOrdinal( const ::std::size_t n )
-{
- return double(n) * rand() / (RAND_MAX + 1.0);
-}
-
-class b2dmultirange : public CppUnit::TestFixture
-{
-private:
- B2DMultiRange aDisjunctRanges;
- B2DMultiRange aEqualRanges;
- B2DMultiRange aIntersectionN;
- B2DMultiRange aIntersectionE;
- B2DMultiRange aIntersectionS;
- B2DMultiRange aIntersectionW;
- B2DMultiRange aIntersectionNE;
- B2DMultiRange aIntersectionSE;
- B2DMultiRange aIntersectionSW;
- B2DMultiRange aIntersectionNW;
- B2DMultiRange aRingIntersection;
- B2DMultiRange aComplexIntersections;
- B2DMultiRange aRandomIntersections;
-
-public:
- // initialise your test code values here.
- void setUp()
- {
- B2DRange aCenter(1.0, 1.0, -1.0, -1.0);
- B2DRange aOffside(9.0, 9.0, 11.0, 11.0);
- B2DRange aNorth(1.0, 0.0, -1.0, -2.0);
- B2DRange aSouth(1.0, 2.0, -1.0, 0.0);
- B2DRange aEast(0.0, 1.0, 2.0, -1.0);
- B2DRange aWest(-2.0, 1.0, 0.0, -1.0);
- B2DRange aNorthEast(0.0, 0.0, 2.0, -2.0);
- B2DRange aSouthEast(0.0, 0.0, 2.0, 2.0);
- B2DRange aSouthWest(0.0, 0.0, -2.0, 2.0);
- B2DRange aNorthWest(0.0, 0.0, -2.0, -2.0);
-
- B2DRange aNorth2(-1.5, 0.5, 1.5, 3.5);
- B2DRange aSouth2(-1.5, -0.5, 1.5, -3.5);
- B2DRange aEast2 (0.5, -1.5, 3.5, 1.5);
- B2DRange aWest2 (-0.5, -1.5,-3.5, 1.5);
-
- ::std::ofstream output("multirange_testcases.gnuplot");
- DebugPlotter aPlotter( "multirange testcases",
- output );
-
- aPlotter.plot( aCenter, "center" );
- aPlotter.plot( aOffside, "offside" );
- aPlotter.plot( aNorth, "north" );
- aPlotter.plot( aSouth, "south" );
- aPlotter.plot( aEast, "east" );
- aPlotter.plot( aWest, "west" );
- aPlotter.plot( aNorthEast, "northeast" );
- aPlotter.plot( aSouthEast, "southeast" );
- aPlotter.plot( aSouthWest, "southwest" );
- aPlotter.plot( aNorthWest, "northwest" );
-
- aDisjunctRanges.addRange( aCenter );
- aDisjunctRanges.addRange( aOffside );
-
- aEqualRanges.addRange( aCenter );
- aEqualRanges.addRange( aCenter );
-
- aIntersectionN.addRange( aCenter );
- aIntersectionN.addRange( aNorth );
-
- aIntersectionE.addRange( aCenter );
- aIntersectionE.addRange( aEast );
-
- aIntersectionS.addRange( aCenter );
- aIntersectionS.addRange( aSouth );
-
- aIntersectionW.addRange( aCenter );
- aIntersectionW.addRange( aWest );
-
- aIntersectionNE.addRange( aCenter );
- aIntersectionNE.addRange( aNorthEast );
-
- aIntersectionSE.addRange( aCenter );
- aIntersectionSE.addRange( aSouthEast );
-
- aIntersectionSW.addRange( aCenter );
- aIntersectionSW.addRange( aSouthWest );
-
- aIntersectionNW.addRange( aCenter );
- aIntersectionNW.addRange( aNorthWest );
-
- aRingIntersection.addRange( aNorth2 );
- aRingIntersection.addRange( aEast2 );
- aRingIntersection.addRange( aSouth2 );
- aRingIntersection.addRange( aWest2 );
-
- aComplexIntersections.addRange( aCenter );
- aComplexIntersections.addRange( aOffside );
- aComplexIntersections.addRange( aCenter );
- aComplexIntersections.addRange( aNorth );
- aComplexIntersections.addRange( aEast );
- aComplexIntersections.addRange( aSouth );
- aComplexIntersections.addRange( aWest );
- aComplexIntersections.addRange( aNorthEast );
- aComplexIntersections.addRange( aSouthEast );
- aComplexIntersections.addRange( aSouthWest );
- aComplexIntersections.addRange( aNorthWest );
-
-/*
- for( int i=0; i<10; ++i )
- {
- B2DRange aRandomRange(
- getRandomOrdinal( 10 ),
- getRandomOrdinal( 10 ),
- getRandomOrdinal( 10 ),
- getRandomOrdinal( 10 ) );
-
- aRandomIntersections.addRange( aRandomRange );
- }
-*/
- }
-
- void tearDown()
- {
- }
-
- ::basegfx::B2DPolyPolygon shiftPoly( int nCount,
- const ::basegfx::B2DPolyPolygon& rPoly )
- {
- B2DHomMatrix aMatrix;
- aMatrix.translate( nCount*4.0,
- 10.0-nCount*2.0 );
-
- ::basegfx::B2DPolyPolygon aRes( rPoly );
- aRes.transform( aMatrix );
-
- return aRes;
- }
-
- void getPolyPolygon()
- {
- ::std::ofstream output("multirange_getpolypolygon.gnuplot");
- DebugPlotter aPlotter( "multirange getPolyPolygon",
- output );
-
- B2DPolyPolygon result;
-
- aPlotter.plot( shiftPoly(
- 0,
- aDisjunctRanges.getPolyPolygon() ),
- "disjunct" );
- aPlotter.plot( shiftPoly(
- 1,
- aEqualRanges.getPolyPolygon() ),
- "equal" );
- aPlotter.plot( shiftPoly(
- 2,
- aIntersectionN.getPolyPolygon() ),
- "intersectionN" );
- aPlotter.plot( shiftPoly(
- 3,
- aIntersectionE.getPolyPolygon() ),
- "intersectionE" );
- aPlotter.plot( shiftPoly(
- 4,
- aIntersectionS.getPolyPolygon() ),
- "intersectionS" );
- aPlotter.plot( shiftPoly(
- 5,
- aIntersectionW.getPolyPolygon() ),
- "intersectionW" );
- aPlotter.plot( shiftPoly(
- 6,
- aIntersectionNE.getPolyPolygon() ),
- "intersectionNE" );
- aPlotter.plot( shiftPoly(
- 7,
- aIntersectionSE.getPolyPolygon() ),
- "intersectionSE" );
- aPlotter.plot( shiftPoly(
- 8,
- aIntersectionSW.getPolyPolygon() ),
- "intersectionSW" );
- aPlotter.plot( shiftPoly(
- 9,
- aIntersectionNW.getPolyPolygon() ),
- "intersectionNW" );
- aPlotter.plot( shiftPoly(
- 10,
- aRingIntersection.getPolyPolygon() ),
- "intersection ring" );
- aPlotter.plot( shiftPoly(
- 11,
- aComplexIntersections.getPolyPolygon() ),
- "intersection complex" );
- aPlotter.plot( shiftPoly(
- 12,
- aRandomIntersections.getPolyPolygon() ),
- "intersection random" );
-
- CPPUNIT_ASSERT_MESSAGE("getPolyPolygon", true );
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2dmultirange);
- CPPUNIT_TEST(getPolyPolygon);
- CPPUNIT_TEST_SUITE_END();
-}; // class b2dmultirange
class b2dsvgdimpex : public CppUnit::TestFixture
{
@@ -465,33 +261,6 @@ public:
CPPUNIT_ASSERT_MESSAGE("exporting complex polygon to SVG-D (round-trip)",
!aExport.compareToAscii(sExportString2));
- const B2DPolygon aCircle(
- tools::createPolygonFromEllipse( B2DPoint(4000,4000),
- 1000.0, 2000.0 ));
- aExport = tools::exportToSvgD( B2DPolyPolygon(aCircle), false, false);
-
- // count number of spaces, in lieu of a better way - no real
- // point in comparing with a gold standard, as fractional
- // parts of the coordinates will differ between systems.
- sal_Int32 nIndex=0, nCount=0;
- do
- {
- rtl::OUString aToken = aExport.getToken( 0, ' ', nIndex );
- ++nCount;
- }
- while ( nIndex >= 0 );
-
- // Adapted number of spaces to 50 and 67 because of the new circle construction
- // methods which produce more points and thus more spaces, too. Use both since
- // depending on float precision and the getContinuity() implemetation using
- // fTools::equal, linux and mac produce more 'C' than 'S' statements, while WIN32
- // uses more 'S' statements (as it should be for circles)
-#ifdef S390X
- CPPUNIT_ASSERT_MESSAGE("exporting to circle does not produce the expected number of coordinates", nCount==61 );
-#else
- CPPUNIT_ASSERT_MESSAGE("exporting to circle does not produce the expected number of coordinates", nCount==67 || nCount==50 );
-#endif
-
const B2DPolygon aRect(
tools::createPolygonFromRect( B2DRange(0.0,0.0,4000.0,4000.0) ));
aExport = tools::exportToSvgD( B2DPolyPolygon(aRect), false, false);
@@ -510,6 +279,45 @@ public:
CPPUNIT_TEST_SUITE_END();
}; // class b2dsvgdimpex
+class b2dpolyrange : public CppUnit::TestFixture
+{
+private:
+public:
+ void setUp()
+ {}
+
+ void tearDown()
+ {}
+
+ void check()
+ {
+ B2DPolyRange aRange;
+ aRange.appendElement(B2DRange(0,0,1,1),ORIENTATION_POSITIVE);
+ aRange.appendElement(B2DRange(2,2,3,3),ORIENTATION_POSITIVE);
+
+ CPPUNIT_ASSERT_MESSAGE("simple poly range - count",
+ aRange.count() == 2);
+ CPPUNIT_ASSERT_MESSAGE("simple poly range - first element",
+ aRange.getElement(0).head == B2DRange(0,0,1,1));
+ CPPUNIT_ASSERT_MESSAGE("simple poly range - second element",
+ aRange.getElement(1).head == B2DRange(2,2,3,3));
+
+ // B2DPolyRange relies on correctly orientated rects
+ const B2DRange aRect(0,0,1,1);
+ CPPUNIT_ASSERT_MESSAGE("createPolygonFromRect - correct orientation",
+ tools::getOrientation(
+ tools::createPolygonFromRect(aRect)) == ORIENTATION_POSITIVE );
+ }
+
+ // Change the following lines only, if you add, remove or rename
+ // member functions of the current class,
+ // because these macros are need by auto register mechanism.
+
+ CPPUNIT_TEST_SUITE(b2dpolyrange);
+ CPPUNIT_TEST(check);
+ CPPUNIT_TEST_SUITE_END();
+};
+
class b2dbeziertools : public CppUnit::TestFixture
{
private:
@@ -758,7 +566,6 @@ public:
{
// this is demonstration code
// CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
- CPPUNIT_ASSERT_STUB();
}
// Change the following lines only, if you add, remove or rename
@@ -1110,7 +917,6 @@ public:
// insert your test code here.
void EmptyMethod()
{
- CPPUNIT_ASSERT_STUB();
}
// Change the following lines only, if you add, remove or rename
@@ -1140,7 +946,6 @@ public:
void EmptyMethod()
{
// CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
- CPPUNIT_ASSERT_STUB();
}
// Change the following lines only, if you add, remove or rename
@@ -1283,6 +1088,14 @@ public:
aNonRect4.append( B2DPoint(1,1) );
aNonRect4.append( B2DPoint(0,1) );
+ B2DPolygon aNonRect5;
+ aNonRect5.append( B2DPoint(0,0) );
+ aNonRect5.append( B2DPoint(1,0) );
+ aNonRect5.append( B2DPoint(1,1) );
+ aNonRect5.append( B2DPoint(0,1) );
+ aNonRect5.setControlPoints(1,B2DPoint(1,0),B2DPoint(-11,0));
+ aNonRect5.setClosed(true);
+
CPPUNIT_ASSERT_MESSAGE("checking rectangle-ness of rectangle 1",
tools::isRectangle( aRect1 ));
CPPUNIT_ASSERT_MESSAGE("checking rectangle-ness of rectangle 2",
@@ -1295,6 +1108,8 @@ public:
!to