diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2010-01-29 15:26:37 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2010-01-29 15:26:37 +0000 |
commit | 04a59adcc7fd221ee6b7644aa1fa53fed8dd3c0e (patch) | |
tree | 98e45c3b1a1418ca54ef4a83f6022691099078e0 | |
parent | 554b7023a920d8701ef9d38c6e4952ebb41d1b5f (diff) | |
parent | c0bfd066e3d8355d35c2ea22d5a98ac7f43406da (diff) |
ab71: merge with DEV300_m54
499 files changed, 22869 insertions, 12172 deletions
diff --git a/basebmp/test/makefile.mk b/basebmp/test/makefile.mk index 43165b831a64..7d0dc6e3967a 100644 --- a/basebmp/test/makefile.mk +++ b/basebmp/test/makefile.mk @@ -132,6 +132,6 @@ unittest : $(SHL1TARGETN) @echo ---------------------------------------------------------- @echo - start unit test on library $(SHL1TARGETN) @echo ---------------------------------------------------------- - $(AUGMENT_LIBRARY_PATH) testshl2 -sf $(mktmp ) $(SHL1TARGETN) + $(TESTSHL2) -sf $(mktmp ) $(SHL1TARGETN) ALLTAR : unittest diff --git a/basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx b/basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx index 9474e51e3904..12532ff078f3 100644 --- a/basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx +++ b/basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx @@ -104,6 +104,15 @@ namespace basegfx // DIFF: Return all areas where CandidateA is not covered by CandidateB (cut B out of A) B2DPolyPolygon solvePolygonOperationDiff(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); + /** merge all single PolyPolygons to a single, OR-ed PolyPolygon + + @param rInput + The source PolyPolygons + + @return A single PolyPolygon containing the Or-merged result + */ + B2DPolyPolygon mergeToSinglePolyPolygon(const std::vector< basegfx::B2DPolyPolygon >& rInput); + } // end of namespace tools } // end of namespace basegfx diff --git a/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx b/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx index 5c75edd7f262..c4687b3cfc5f 100644 --- a/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx +++ b/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx @@ -262,6 +262,20 @@ namespace basegfx bool equal(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB, const double& rfSmallValue); bool equal(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); + /** snap some polygon coordinates to discrete coordinates + + This method allows to snap some polygon points to discrete (integer) values + which equals e.g. a snap to discrete coordinates. It will snap points of + horizontal and vertical edges + + @param rCandidate + The source polygon + + @return + The modified version of the source polygon + */ + B2DPolyPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolyPolygon& rCandidate); + } // end of namespace tools } // end of namespace basegfx diff --git a/basegfx/source/curve/b2dcubicbezier.cxx b/basegfx/source/curve/b2dcubicbezier.cxx index 76d1b74ddbca..e7247a95333b 100644 --- a/basegfx/source/curve/b2dcubicbezier.cxx +++ b/basegfx/source/curve/b2dcubicbezier.cxx @@ -443,21 +443,32 @@ namespace basegfx bool bAIsTrivial(aVecA.equalZero()); bool bBIsTrivial(aVecB.equalZero()); + // #i102241# prepare inverse edge length to normalize cross values; + // else the small compare value used in fTools::equalZero + // will be length dependent and this detection will work as less + // precise as longer the edge is. In principle, the length of the control + // vector would need to be used too, but to be trivial it is assumed to + // be of roughly equal length to the edge, so edge length can be used + // for both. Only needed when one of both is not trivial per se. + const double fInverseEdgeLength(bAIsTrivial && bBIsTrivial + ? 1.0 + : 1.0 / aEdge.getLength()); + // if A is not zero, check if it could be if(!bAIsTrivial) { - // parallel to edge? Check aVecA, aEdge - // B2DVector::areParallel is too correct, uses differences in the e15 region, - // thus do own test here - const double fValA(aVecA.getX() * aEdge.getY()); - const double fValB(aVecA.getY() * aEdge.getX()); + // #i102241# parallel to edge? Check aVecA, aEdge. Use cross() which does what + // we need here with the precision we need + const double fCross(aVecA.cross(aEdge) * fInverseEdgeLength); - if(fTools::equalZero(fabs(fValA) - fabs(fValB))) + if(fTools::equalZero(fCross)) { // get scale to edge. Use bigger distance for numeric quality - const double fScale(fabs(aEdge.getX()) > fabs(aEdge.getY()) ? aVecA.getX() / aEdge.getX() : aVecA.getY() / aEdge.getY()); + const double fScale(fabs(aEdge.getX()) > fabs(aEdge.getY()) + ? aVecA.getX() / aEdge.getX() + : aVecA.getY() / aEdge.getY()); - // end point of vector in edge range? + // relative end point of vector in edge range? if(fTools::moreOrEqual(fScale, 0.0) && fTools::lessOrEqual(fScale, 1.0)) { bAIsTrivial = true; @@ -470,13 +481,14 @@ namespace basegfx if(bAIsTrivial && !bBIsTrivial) { // parallel to edge? Check aVecB, aEdge - const double fValA(aVecB.getX() * aEdge.getY()); - const double fValB(aVecB.getY() * aEdge.getX()); + const double fCross(aVecB.cross(aEdge) * fInverseEdgeLength); - if(fTools::equalZero(fabs(fValA) - fabs(fValB))) + if(fTools::equalZero(fCross)) { // get scale to edge. Use bigger distance for numeric quality - const double fScale(fabs(aEdge.getX()) > fabs(aEdge.getY()) ? aVecB.getX() / aEdge.getX() : aVecB.getY() / aEdge.getY()); + const double fScale(fabs(aEdge.getX()) > fabs(aEdge.getY()) + ? aVecB.getX() / aEdge.getX() + : aVecB.getY() / aEdge.getY()); // end point of vector in edge range? Caution: controlB is directed AGAINST edge if(fTools::lessOrEqual(fScale, 0.0) && fTools::moreOrEqual(fScale, -1.0)) diff --git a/basegfx/source/polygon/b2dlinegeometry.cxx b/basegfx/source/polygon/b2dlinegeometry.cxx index 0cda1036e13b..1a9264ab769e 100644 --- a/basegfx/source/polygon/b2dlinegeometry.cxx +++ b/basegfx/source/polygon/b2dlinegeometry.cxx @@ -352,13 +352,12 @@ namespace basegfx // Unfortunately, while it would be geometrically correct to not add // the in-between points EdgeEnd and EdgeStart, it leads to rounding // errors when converting to integer polygon coordinates for painting - const B2DVector aEdgeVector(rEdge.getEndPoint() - rEdge.getStartPoint()); - if(rEdge.isBezier()) { // prepare target and data common for upper and lower B2DPolygon aBezierPolygon; - const double fEdgeLength(aEdgeVector.getLength()); + const B2DVector aPureEdgeVector(rEdge.getEndPoint() - rEdge.getStartPoint()); + const double fEdgeLength(aPureEdgeVector.getLength()); const bool bIsEdgeLengthZero(fTools::equalZero(fEdgeLength)); const B2DVector aTangentA(rEdge.getTangent(0.0)); const B2DVector aTangentB(rEdge.getTangent(1.0)); @@ -441,7 +440,11 @@ namespace basegfx } else { - const B2DVector aPerpendEdgeVector(getNormalizedPerpendicular(aEdgeVector) * fHalfLineWidth); + // #i101491# emulate rEdge.getTangent call which applies a factor of 0.3 to the + // full-length edge vector to have numerically exactly the same results as in the + // createAreaGeometryForJoin implementation + const B2DVector aEdgeTangent((rEdge.getEndPoint() - rEdge.getStartPoint()) * 0.3); + const B2DVector aPerpendEdgeVector(getNormalizedPerpendicular(aEdgeTangent) * fHalfLineWidth); B2DPolygon aEdgePolygon; // create upper edge @@ -495,45 +498,75 @@ namespace basegfx } } - // create first polygon part for edge - aEdgePolygon.append(aEndPoint); - aEdgePolygon.append(rPoint); - aEdgePolygon.append(aStartPoint); - - if(B2DLINEJOIN_MITER == eJoin) + switch(eJoin) { - // Look for the cut point between start point along rTangentPrev and - // end point along rTangentEdge. -rTangentEdge should be used, but since - // the cut value is used for interpolating along the first edge, the negation - // is not needed since the same fCut will be found on the first edge. - // If it exists, insert it to complete the mitered fill polygon. - double fCutPos(0.0); - tools::findCut(aStartPoint, rTangentPrev, aEndPoint, rTangentEdge, CUTFLAG_ALL, &fCutPos); - - if(0.0 != fCutPos) + case B2DLINEJOIN_MITER : { - const B2DPoint aCutPoint(interpolate(aStartPoint, aStartPoint + rTangentPrev, fCutPos)); - aEdgePolygon.append(aCutPoint); - } - } - else if(B2DLINEJOIN_ROUND == eJoin) - { - // use tooling to add needed EllipseSegment - double fAngleStart(atan2(rPerpendPrev.getY(), rPerpendPrev.getX())); - double fAngleEnd(atan2(rPerpendEdge.getY(), rPerpendEdge.getX())); + aEdgePolygon.append(aEndPoint); + aEdgePolygon.append(rPoint); + aEdgePolygon.append(aStartPoint); + + // Look for the cut point between start point along rTangentPrev and + // end point along rTangentEdge. -rTangentEdge should be used, but since + // the cut value is used for interpolating along the first edge, the negation + // is not needed since the same fCut will be found on the first edge. + // If it exists, insert it to complete the mitered fill polygon. + double fCutPos(0.0); + tools::findCut(aStartPoint, rTangentPrev, aEndPoint, rTangentEdge, CUTFLAG_ALL, &fCutPos); + + if(0.0 != fCutPos) + { + const B2DPoint aCutPoint(interpolate(aStartPoint, aStartPoint + rTangentPrev, fCutPos)); + aEdgePolygon.append(aCutPoint); + } - // atan2 results are [-PI .. PI], consolidate to [0.0 .. 2PI] - if(fAngleStart < 0.0) - { - fAngleStart += F_2PI; + break; } - - if(fAngleEnd < 0.0) + case B2DLINEJOIN_ROUND : { - fAngleEnd += F_2PI; + // use tooling to add needed EllipseSegment + double fAngleStart(atan2(rPerpendPrev.getY(), rPerpendPrev.getX())); + double fAngleEnd(atan2(rPerpendEdge.getY(), rPerpendEdge.getX())); + + // atan2 results are [-PI .. PI], consolidate to [0.0 .. 2PI] + if(fAngleStart < 0.0) + { + fAngleStart += F_2PI; + } + + if(fAngleEnd < 0.0) + { + fAngleEnd += F_2PI; + } + + const B2DPolygon aBow(tools::createPolygonFromEllipseSegment(rPoint, fHalfLineWidth, fHalfLineWidth, fAngleStart, fAngleEnd)); + + if(aBow.count() > 1) + { + // #i101491# + // use the original start/end positions; the ones from bow creation may be numerically + // different due to their different creation. To guarantee good merging quality with edges + // and edge roundings (and to reduce point count) + aEdgePolygon = aBow; + aEdgePolygon.setB2DPoint(0, aStartPoint); + aEdgePolygon.setB2DPoint(aEdgePolygon.count() - 1, aEndPoint); + aEdgePolygon.append(rPoint); + + break; + } + else + { + // wanted fall-through to default + } } + default: // B2DLINEJOIN_BEVEL + { + aEdgePolygon.append(aEndPoint); + aEdgePolygon.append(rPoint); + aEdgePolygon.append(aStartPoint); - aEdgePolygon.append(tools::createPolygonFromEllipseSegment(rPoint, fHalfLineWidth, fHalfLineWidth, fAngleStart, fAngleEnd)); + break; + } } // create last polygon part for edge diff --git a/basegfx/source/polygon/b2dpolygoncutandtouch.cxx b/basegfx/source/polygon/b2dpolygoncutandtouch.cxx index a1b7a69775ad..26016942717d 100644 --- a/basegfx/source/polygon/b2dpolygoncutandtouch.cxx +++ b/basegfx/source/polygon/b2dpolygoncutandtouch.cxx @@ -110,7 +110,10 @@ namespace basegfx { // #i76891# mergeTemporaryPointsAndPolygon redesigned to be able to correctly handle // single edges with/without control points - if(rTempPoints.size()) + // #i101491# added counter for non-changing element count + const sal_uInt32 nTempPointCount(rTempPoints.size()); + + if(nTempPointCount) { B2DPolygon aRetval; const sal_uInt32 nCount(rCandidate.count()); @@ -138,7 +141,7 @@ namespace basegfx double fLeftStart(0.0); // now add all points targeted to be at this index - while(nNewInd < rTempPoints.size() && rTempPoints[nNewInd].getIndex() == a) + while(nNewInd < nTempPointCount && rTempPoints[nNewInd].getIndex() == a) { const temporaryPoint& rTempPoint = rTempPoints[nNewInd++]; @@ -160,7 +163,7 @@ namespace basegfx else { // add all points targeted to be at this index - while(nNewInd < rTempPoints.size() && rTempPoints[nNewInd].getIndex() == a) + while(nNewInd < nTempPointCount && rTempPoints[nNewInd].getIndex() == a) { const temporaryPoint& rTempPoint = rTempPoints[nNewInd++]; const B2DPoint aNewPoint(rTempPoint.getPoint()); diff --git a/basegfx/source/polygon/b2dpolypolygoncutter.cxx b/basegfx/source/polygon/b2dpolypolygoncutter.cxx index b06e6fbafff7..0674bfe3953e 100644 --- a/basegfx/source/polygon/b2dpolypolygoncutter.cxx +++ b/basegfx/source/polygon/b2dpolypolygoncutter.cxx @@ -929,6 +929,85 @@ namespace basegfx } } + B2DPolyPolygon mergeToSinglePolyPolygon(const std::vector< basegfx::B2DPolyPolygon >& rInput) + { + std::vector< basegfx::B2DPolyPolygon > aInput(rInput); + + // first step: prepareForPolygonOperation and simple merge of non-overlapping + // PolyPolygons for speedup; this is possible for the wanted OR-operation + if(aInput.size()) + { + std::vector< basegfx::B2DPolyPolygon > aResult; + aResult.reserve(aInput.size()); + + for(sal_uInt32 a(0); a < aInput.size(); a++) + { + const basegfx::B2DPolyPolygon aCandidate(prepareForPolygonOperation(aInput[a])); + + if(aResult.size()) + { + const B2DRange aCandidateRange(aCandidate.getB2DRange()); + bool bCouldMergeSimple(false); + + for(sal_uInt32 b(0); !bCouldMergeSimple && b < aResult.size(); b++) + { + basegfx::B2DPolyPolygon aTarget(aResult[b]); + const B2DRange aTargetRange(aTarget.getB2DRange()); + + if(!aCandidateRange.overlaps(aTargetRange)) + { + aTarget.append(aCandidate); + aResult[b] = aTarget; + bCouldMergeSimple = true; + } + } + + if(!bCouldMergeSimple) + { + aResult.push_back(aCandidate); + } + } + else + { + aResult.push_back(aCandidate); + } + } + + aInput = aResult; + } + + // second step: melt pairwise to a single PolyPolygon + while(aInput.size() > 1) + { + std::vector< basegfx::B2DPolyPolygon > aResult; + aResult.reserve((aInput.size() / 2) + 1); + + for(sal_uInt32 a(0); a < aInput.size(); a += 2) + { + if(a + 1 < aInput.size()) + { + // a pair for processing + aResult.push_back(solvePolygonOperationOr(aInput[a], aInput[a + 1])); + } + else + { + // last single PolyPolygon; copy to target to not lose it + aResult.push_back(aInput[a]); + } + } + + aInput = aResult; + } + + // third step: get result + if(1 == aInput.size()) + { + return aInput[0]; + } + + return B2DPolyPolygon(); + } + ////////////////////////////////////////////////////////////////////////////// } // end of namespace tools diff --git a/basegfx/source/polygon/b2dpolypolygontools.cxx b/basegfx/source/polygon/b2dpolypolygontools.cxx index c92f2f29147b..e6b3a448530d 100644 --- a/basegfx/source/polygon/b2dpolypolygontools.cxx +++ b/basegfx/source/polygon/b2dpolypolygontools.cxx @@ -569,6 +569,18 @@ namespace basegfx return equal(rCandidateA, rCandidateB, fSmallValue); } + B2DPolyPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolyPolygon& rCandidate) + { + B2DPolyPolygon aRetval; + + for(sal_uInt32 a(0L); a < rCandidate.count(); a++) + { + aRetval.append(snapPointsOfHorizontalOrVerticalEdges(rCandidate.getB2DPolygon(a))); + } + + return aRetval; + } + } // end of namespace tools } // end of namespace basegfx diff --git a/basegfx/test/makefile.mk b/basegfx/test/makefile.mk index d0fbfaf9e7c6..8e47a13defdd 100644 --- a/basegfx/test/makefile.mk +++ b/basegfx/test/makefile.mk @@ -89,7 +89,7 @@ $(MISC)$/unittest_succeeded : $(SHL1TARGETN) @echo ---------------------------------------------------------- @echo - start unit test on library $(SHL1TARGETN) @echo ---------------------------------------------------------- - $(AUGMENT_LIBRARY_PATH) testshl2 -sf $(mktmp ) -forward $(BIN)$/ $(SHL1TARGETN) + $(TESTSHL2) -sf $(mktmp ) -forward $(BIN)$/ $(SHL1TARGETN) $(TOUCH) $@ ALLTAR : $(MISC)$/unittest_succeeded diff --git a/canvas/overview.txt b/canvas/overview.txt index 0f9ada46dac9..5d508b04bc45 100644 --- a/canvas/overview.txt +++ b/canvas/overview.txt @@ -1,13 +1,10 @@ The new OOo Canvas Framework ============================ -The new OpenOffice.org canvas framework is the successor of the -system GUI and graphics backend VCL. It is planned for the -OpenOffice.org 2.0 release, and currently ready in a first developer -version, with X11, Java, and DirectX/GDI+ backends. This means, that -basic functionality is available, supplying just as much features as -to provide a VCL-equivalent feature set (except proper BiDi/CTL -support). +The new OpenOffice.org canvas framework is the successor of the system +GUI and graphics backend VCL. Basic functionality is available, +supplying just as much features as necessary to provide a +VCL-equivalent feature set (except proper BiDi/CTL support). For migration purposes, the new canvas and VCL will be shipped with OpenOffice.org for quite some time, allowing a step-by-step adaptation diff --git a/canvas/source/cairo/cairo_canvashelper.cxx b/canvas/source/cairo/cairo_canvashelper.cxx index f1c54e9b4ab7..9cf2dd978759 100644 --- a/canvas/source/cairo/cairo_canvashelper.cxx +++ b/canvas/source/cairo/cairo_canvashelper.cxx @@ -888,7 +888,7 @@ namespace cairocanvas nY = aP.getY(); cairo_matrix_transform_point( &aOrigMatrix, &nX, &nY ); - if( ! bIsBezier && bIsRectangle ) { + if( ! bIsBezier && (bIsRectangle || aOperation == Clip) ) { nX = basegfx::fround( nX ); nY = basegfx::fround( nY ); } diff --git a/canvas/source/cairo/cairo_canvashelper_text.cxx b/canvas/source/cairo/cairo_canvashelper_text.cxx index a38553055ae0..ac530f5d4632 100644 --- a/canvas/source/cairo/cairo_canvashelper_text.cxx +++ b/canvas/source/cairo/cairo_canvashelper_text.cxx @@ -343,10 +343,12 @@ namespace cairocanvas // TODO(F2): alpha mpVirtualDevice->SetLayoutMode( nLayoutMode ); - mpVirtualDevice->DrawText( aOutpos, - text.Text, - ::canvas::tools::numeric_cast<USHORT>(text.StartPosition), - ::canvas::tools::numeric_cast<USHORT>(text.Length) ); + + OSL_TRACE(":cairocanvas::CanvasHelper::drawText(O,t,f,v,r,d): %s", ::rtl::OUStringToOString( text.Text.copy( text.StartPosition, text.Length ), + RTL_TEXTENCODING_UTF8 ).getStr()); + + TextLayout* pTextLayout = new TextLayout(text, textDirection, 0, CanvasFont::Reference(dynamic_cast< CanvasFont* >( xFont.get() )), mpSurfaceProvider); + pTextLayout->draw( mpSurface, *mpVirtualDevice, aOutpos, viewState, renderState ); } return uno::Reference< rendering::XCachedPrimitive >(NULL); @@ -384,7 +386,7 @@ namespace cairocanvas return uno::Reference< rendering::XCachedPrimitive >(NULL); // no output necessary // TODO(F2): What about the offset scalings? - pTextLayout->draw( *mpVirtualDevice, aOutpos, viewState, renderState ); + pTextLayout->draw( mpSurface, *mpVirtualDevice, aOutpos, viewState, renderState ); } } else diff --git a/canvas/source/cairo/cairo_quartz_cairo.cxx b/canvas/source/cairo/cairo_quartz_cairo.cxx index 2575c206f294..a3c6c9bba255 100644 --- a/canvas/source/cairo/cairo_quartz_cairo.cxx +++ b/canvas/source/cairo/cairo_quartz_cairo.cxx @@ -37,6 +37,9 @@ ************************************************************************/ #include <osl/diagnose.h> +#include <vcl/sysdata.hxx> +#include <vcl/bitmap.hxx> +#include <vcl/virdev.hxx> #include "cairo_cairo.hxx" diff --git a/canvas/source/cairo/cairo_quartz_cairo.hxx b/canvas/source/cairo/cairo_quartz_cairo.hxx index 31659bbf79f5..fe748d26640a 100644 --- a/canvas/source/cairo/cairo_quartz_cairo.hxx +++ b/canvas/source/cairo/cairo_quartz_cairo.hxx @@ -38,10 +38,6 @@ #include <cairo-quartz.h> #include "postmac.h" -#include <vcl/sysdata.hxx> -#include <vcl/bitmap.hxx> -#include <vcl/virdev.hxx> - namespace cairo { class QuartzSurface : public Surface diff --git a/canvas/source/cairo/cairo_textlayout.cxx b/canvas/source/cairo/cairo_textlayout.cxx index 5078289a9c40..f822749cab20 100644 --- a/canvas/source/cairo/cairo_textlayout.cxx +++ b/canvas/source/cairo/cairo_textlayout.cxx @@ -31,6 +31,8 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_canvas.hxx" +#include <math.h> + #include <canvas/debug.hxx> #include <canvas/verbosetrace.hxx> #include <tools/diagnose_ex.h> @@ -38,6 +40,13 @@ #include <vcl/metric.hxx> #include <vcl/virdev.hxx> +#ifdef WNT +#include <tools/prewin.h> +#include <windows.h> +#include <tools/postwin.h> +#endif +#include <vcl/sysdata.hxx> + #include <basegfx/matrix/b2dhommatrix.hxx> #include <basegfx/numeric/ftools.hxx> @@ -46,6 +55,17 @@ #include "cairo_textlayout.hxx" #include "cairo_spritecanvas.hxx" +#ifdef CAIRO_HAS_QUARTZ_SURFACE +# include "cairo_quartz_cairo.hxx" +#elif defined CAIRO_HAS_WIN32_SURFACE +# include "cairo_win32_cairo.hxx" +# include <cairo-win32.h> +#elif defined CAIRO_HAS_XLIB_SURFACE +# include "cairo_xlib_cairo.hxx" +# include <cairo-ft.h> +#else +# error Native API needed. +#endif using namespace ::cairo; using namespace ::com::sun::star; @@ -292,6 +312,11 @@ namespace cairocanvas cairo_set_font_size( pCairo, aFontRequest.CellSize ); } + /** TextLayout:draw + * + * This function uses the "toy" api of the cairo library + * + **/ bool TextLayout::draw( Cairo* pCairo ) { ::osl::MutexGuard aGuard( m_aMutex ); @@ -310,6 +335,248 @@ namespace cairocanvas return true; } + + /** + * TextLayout::isCairoRenderable + * + * Features currenly not supported by Cairo (VCL rendering is used as fallback): + * - vertical glyphs + * + * @return true, if text/font can be rendered with cairo + **/ + bool TextLayout::isCairoRenderable(SystemFontData aSysFontData) const + { +#if defined UNX && !defined QUARTZ + // is font usable? + if (!aSysFontData.nFontId) return false; +#endif + + // vertical glyph rendering is not supported in cairo for now + if (aSysFontData.bVerticalCharacterType) { + OSL_TRACE(":cairocanvas::TextLayout::isCairoRenderable(): ***************** VERTICAL CHARACTER STYLE!!! ****************"); + return false; + } + + return true; + } + + + /** + * TextLayout::draw + * + * Cairo-based text rendering. Draw text directly on the cairo surface with cairo fonts. + * Avoid using VCL VirtualDevices for that, bypassing VCL DrawText functions, when possible + * + * Note: some text effects are not rendered due to lacking generic canvas or cairo canvas + * implementation. See issues 92657, 92658, 92659, 92660, 97529 + * + * @return true, if successful + **/ + bool TextLayout::draw( SurfaceSharedPtr& pSurface, + OutputDevice& rOutDev, + const Point& rOutpos, + const rendering::ViewState& viewState, + const rendering::RenderState& renderState ) const + { + ::osl::MutexGuard aGuard( m_aMutex ); + SystemTextLayoutData aSysLayoutData; +#if (defined CAIRO_HAS_WIN32_SURFACE) && (OSL_DEBUG_LEVEL > 1) + LOGFONTW logfont; +#endif + setupLayoutMode( rOutDev, mnTextDirection ); + + // TODO(P2): cache that + ::boost::scoped_array< sal_Int32 > aOffsets(new sal_Int32[maLogicalAdvancements.getLength()]); + + if( maLogicalAdvancements.getLength() ) + { + setupTextOffsets( aOffsets.get(), maLogicalAdvancements, viewState, renderState ); + + // TODO(F3): ensure correct length and termination for DX + // array (last entry _must_ contain the overall width) + } + + aSysLayoutData = rOutDev.GetSysTextLayoutData(rOutpos, maText.Text, + ::canvas::tools::numeric_cast<USHORT>(maText.StartPosition), + ::canvas::tools::numeric_cast<USHORT>(maText.Length), + maLogicalAdvancements.getLength() ? aOffsets.get() : NULL); + + // The ::GetSysTextLayoutData(), i.e. layouting of text to glyphs can change the font being used. + // The fallback checks need to be done after final font is known. + if (!isCairoRenderable(aSysLayoutData.aSysFontData)) // VCL FALLBACKS + { + OSL_TRACE(":cairocanvas::TextLayout::draw(S,O,p,v,r): VCL FALLBACK %s%s%s%s - %s", + maLogicalAdvancements.getLength() ? "ADV " : "", + aSysLayoutData.aSysFontData.bAntialias ? "AA " : "", + aSysLayoutData.aSysFontData.bFakeBold ? "FB " : "", + aSysLayoutData.aSysFontData.bFakeItalic ? "FI " : "", + ::rtl::OUStringToOString( maText.Text.copy( maText.StartPosition, maText.Length ), + RTL_TEXTENCODING_UTF8 ).getStr()); + + if (maLogicalAdvancements.getLength()) // VCL FALLBACK - with glyph advances + { + rOutDev.DrawTextArray( rOutpos, maText.Text, aOffsets.get(), + ::canvas::tools::numeric_cast<USHORT>(maText.StartPosition), + ::canvas::tools::numeric_cast<USHORT>(maText.Length) ); + return true; + } + else // VCL FALLBACK - without advances + { + rOutDev.DrawText( rOutpos, maText.Text, + ::canvas::tools::numeric_cast<USHORT>(maText.StartPosition), + ::canvas::tools::numeric_cast<USHORT>(maText.Length) ); + return true; + } + } + + if (aSysLayoutData.rGlyphData.empty()) return false; //??? false? + + /** + * Setup platform independent glyph vector into cairo-based glyphs vector. + **/ + + // setup glyphs + std::vector<cairo_glyph_t> cairo_glyphs; + cairo_glyphs.reserve( 256 ); + + for( int nStart = 0; nStart < (int) aSysLayoutData.rGlyphData.size(); nStart++ ) + { + cairo_glyph_t aGlyph; + SystemGlyphData systemGlyph = aSysLayoutData.rGlyphData.at(nStart); + aGlyph.index = systemGlyph.index; +#ifdef CAIRO_HAS_WIN32_SURFACE + // Cairo requires standard glyph indexes (ETO_GLYPH_INDEX), while vcl/win/* uses ucs4 chars. + // Convert to standard indexes + aGlyph.index = cairo::ucs4toindex((unsigned int) aGlyph.index, aSysLayoutData.aSysFontData.hFont); +#endif + aGlyph.x = systemGlyph.x; + aGlyph.y = systemGlyph.y; + cairo_glyphs.push_back(aGlyph); + } + + if (cairo_glyphs.empty()) return true; //true or false?? + + /** + * Setup font + **/ + cairo_font_face_t* font_face = NULL; + +#ifdef CAIRO_HAS_QUARTZ_SURFACE + // TODO: use cairo_quartz_font_face_create_for_cgfont(cgFont) + // when CGFont (Mac OS X 10.5 API) is provided by the AQUA VCL backend. + font_face = cairo_quartz_font_face_create_for_atsu_font_id((ATSUFontID) aSysLayoutData.aSysFontData.aATSUFontID); + +#elif defined CAIRO_HAS_WIN32_SURFACE + #if (OSL_DEBUG_LEVEL > 1) + GetObjectW( aSysLayoutData.aSysFontData.hFont, sizeof(logfont), &logfont ); + #endif + // Note: cairo library uses logfont fallbacks when lfEscapement, lfOrientation and lfWidth are not zero. + // VCL always has non-zero value for lfWidth + font_face = cairo_win32_font_face_create_for_hfont(aSysLayoutData.aSysFontData.hFont); + +#elif defined CAIRO_HAS_XLIB_SURFACE + font_face = cairo_ft_font_face_create_for_ft_face((FT_Face)aSysLayoutData.aSysFontData.nFontId, + aSysLayoutData.aSysFontData.nFontFlags); +#else +# error Native API needed. +#endif + + CairoSharedPtr pSCairo = pSurface->getCairo(); + + cairo_set_font_face( pSCairo.get(), font_face); + + // create default font options. cairo_get_font_options() does not retrieve the surface defaults, + // only what has been set before with cairo_set_font_options() + cairo_font_options_t* options = cairo_font_options_create(); + if (aSysLayoutData.aSysFontData.bAntialias) { + // CAIRO_ANTIALIAS_GRAY provides more similar result to VCL Canvas, + // so we're not using CAIRO_ANTIALIAS_SUBPIXEL + cairo_font_options_set_antialias(options, CAIRO_ANTIALIAS_GRAY); + } + cairo_set_font_options( pSCairo.get(), options); + + // Font color + Color mTextColor = rOutDev.GetTextColor(); + cairo_set_source_rgb(pSCairo.get(), + mTextColor.GetRed()/255.0, + mTextColor.GetGreen()/255.0, + mTextColor.GetBlue()/255.0); + + // Font rotation and scaling + cairo_matrix_t m; + Font aFont = rOutDev.GetFont(); + FontMetric aMetric( rOutDev.GetFontMetric(aFont) ); + long nWidth = 0; + + // width calculation is deep magic and platform/font dependant. + // width == 0 means no scaling, and usually width == height means the same. + // Other values mean horizontal scaling (narrow or stretching) + // see issue #101566 + + //proper scale calculation across platforms + if (aFont.GetWidth() == 0) { + nWidth = aFont.GetHeight(); + } else { + // any scaling needs to be relative to the platform-dependent definition + // of width of the font + nWidth = aFont.GetHeight() * aFont.GetWidth() / aMetric.GetWidth(); + } + + cairo_matrix_init_identity(&m); + + if (aSysLayoutData.orientation) cairo_matrix_rotate(&m, (3600 - aSysLayoutData.orientation) * M_PI / 1800.0); + + cairo_matrix_scale(&m, nWidth, aFont.GetHeight()); + + //faux italics + if (aSysLayoutData.aSysFontData.bFakeItalic) m.xy = -m.xx * 0x6000L / 0x10000L; + + cairo_set_font_matrix(pSCairo.get(), &m); + + OSL_TRACE("\r\n:cairocanvas::TextLayout::draw(S,O,p,v,r): Size:(%d,%d), W:%d->%d, Pos (%d,%d), G(%d,%d,%d) %s%s%s%s || Name:%s - %s", + aFont.GetWidth(), + aFont.GetHeight(), + aMetric.GetWidth(), + nWidth, + (int) rOutpos.X(), + (int) rOutpos.Y(), + cairo_glyphs[0].index, cairo_glyphs[1].index, cairo_glyphs[2].index, + maLogicalAdvancements.getLength() ? "ADV " : "", + aSysLayoutData.aSysFontData.bAntialias ? "AA " : "", + aSysLayoutData.aSysFontData.bFakeBold ? "FB " : "", + aSysLayoutData.aSysFontData.bFakeItalic ? "FI " : "", +#if (defined CAIRO_HAS_WIN32_SURFACE) && (OSL_DEBUG_LEVEL > 1) + ::rtl::OUStringToOString( reinterpret_cast<const sal_Unicode*> (logfont.lfFaceName), RTL_TEXTENCODING_UTF8 ).getStr(), +#else + ::rtl::OUStringToOString( aFont.GetName(), RTL_TEXTENCODING_UTF8 ).getStr(), +#endif + ::rtl::OUStringToOString( maText.Text.copy( maText.StartPosition, maText.Length ), + RTL_TEXTENCODING_UTF8 ).getStr() + ); + + cairo_show_glyphs(pSCairo.get(), &cairo_glyphs[0], cairo_glyphs.size()); + + //faux bold + if (aSysLayoutData.aSysFontData.bFakeBold) { + double bold_dx = 0.5 * sqrt( 0.7 * aFont.GetHeight() ); + int total_steps = 2 * ((int) (bold_dx + 0.5)); + + // loop to draw the text for every half pixel of displacement + for (int nSteps = 0; nSteps < total_steps; nSteps++) { + for(int nGlyphIdx = 0; nGlyphIdx < (int) cairo_glyphs.size(); nGlyphIdx++) { + cairo_glyphs[nGlyphIdx].x += bold_dx * nSteps / total_steps; + } + cairo_show_glyphs(pSCairo.get(), &cairo_glyphs[0], cairo_glyphs.size()); + } + OSL_TRACE(":cairocanvas::TextLayout::draw(S,O,p,v,r): FAKEBOLD - dx:%d", (int) bold_dx); + } + + cairo_restore( pSCairo.get() ); + cairo_font_face_destroy(font_face); + return true; + } + + namespace { class OffsetTransformer @@ -363,41 +630,6 @@ namespace cairocanvas OffsetTransformer( aMatrix ) ); } - bool TextLayout::draw( OutputDevice& rOutDev, - const Point& rOutpos, - const rendering::ViewState& viewState, - const rendering::RenderState& renderState ) const - { - ::osl::MutexGuard aGuard( m_aMutex ); - - setupLayoutMode( rOutDev, mnTextDirection ); - - if( maLogicalAdvancements.getLength() ) - { - // TODO(P2): cache that - ::boost::scoped_array< sal_Int32 > aOffsets(new sal_Int32[maLogicalAdvancements.getLength()]); - setupTextOffsets( aOffsets.get(), maLogicalAdvancements, viewState, renderState ); - - // TODO(F3): ensure correct length and termination for DX - // array (last entry _must_ contain the overall width) - - rOutDev.DrawTextArray( rOutpos, - maText.Text, - aOffsets.get(), - ::canvas::tools::numeric_cast<USHORT>(maText.StartPosition), - ::canvas::tools::numeric_cast<USHORT>(maText.Length) ); - } - else - { - rOutDev.DrawText( rOutpos, - maText.Text, - ::canvas::tools::numeric_cast<USHORT>(maText.StartPosition), - ::canvas::tools::numeric_cast<USHORT>(maText.Length) ); - } - - return true; - } - #define SERVICE_NAME "com.sun.star.rendering.TextLayout" #define IMPLEMENTATION_NAME "CairoCanvas::TextLayout" diff --git a/canvas/source/cairo/cairo_textlayout.hxx b/canvas/source/cairo/cairo_textlayout.hxx index fb98c434615d..9dbc004d551a 100644 --- a/canvas/source/cairo/cairo_textlayout.hxx +++ b/canvas/source/cairo/cairo_textlayout.hxx @@ -93,10 +93,12 @@ namespace cairocanvas virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException ); bool draw( ::cairo::Cairo* pCairo ); - bool draw( OutputDevice& rOutDev, + bool draw( SurfaceSharedPtr& pSurface, + OutputDevice& rOutDev, const Point& rOutpos, const ::com::sun::star::rendering::ViewState& viewState, const ::com::sun::star::rendering::RenderState& renderState ) const; + void setupTextOffsets( sal_Int32* outputOffsets, const ::com::sun::star::uno::Sequence< double >& inputOffsets, const ::com::sun::star::rendering::ViewState& viewState, @@ -112,7 +114,8 @@ namespace cairocanvas SurfaceProviderRef mpRefDevice; sal_Int8 mnTextDirection; - void useFont( ::cairo::Cairo* pCairo ); + void useFont( ::cairo::Cairo* pCairo ); + bool isCairoRenderable(SystemFontData aSysFontData) const; }; } diff --git a/canvas/source/cairo/cairo_win32_cairo.cxx b/canvas/source/cairo/cairo_win32_cairo.cxx index 56edf089b4cb..b679d5fdbf12 100644 --- a/canvas/source/cairo/cairo_win32_cairo.cxx +++ b/canvas/source/cairo/cairo_win32_cairo.cxx @@ -284,6 +284,43 @@ namespace cairo return SurfaceSharedPtr(); } + + /** + * cairo::ucs4toindex: Convert ucs4 char to glyph index + * @param ucs4 an ucs4 char + * @param hfont current font + * + * @return true if successful + **/ + unsigned long ucs4toindex(unsigned int ucs4, HFONT hfont) + { + wchar_t unicode[2]; + WORD glyph_index; + HDC hdc = NULL; + int i = 0; + + hdc = CreateCompatibleDC (NULL); + + if (!hdc) return 0; + if (!SetGraphicsMode (hdc, GM_ADVANCED)) { + DeleteDC (hdc); + return 0; + } + + SelectObject (hdc, hfont); + SetMapMode (hdc, MM_TEXT); + + unicode[0] = ucs4; + unicode[1] = 0; + if (GetGlyphIndicesW (hdc, unicode, 1, &glyph_index, 0) == GDI_ERROR) { + glyph_index = 0; + } + + DeleteDC (hdc); + return glyph_index; + } + + } // namespace cairo #endif // CAIRO_HAS_WIN32_SURFACE diff --git a/canvas/source/cairo/cairo_win32_cairo.hxx b/canvas/source/cairo/cairo_win32_cairo.hxx index 2cacd1019ebc..3ecb04608355 100644 --- a/canvas/source/cairo/cairo_win32_cairo.hxx +++ b/canvas/source/cairo/cairo_win32_cairo.hxx @@ -66,6 +66,8 @@ namespace cairo { int getDepth() const; }; + + unsigned long ucs4toindex(unsigned int ucs4, HFONT hfont); } #endif diff --git a/canvas/source/cairo/cairo_xlib_cairo.cxx b/canvas/source/cairo/cairo_xlib_cairo.cxx index 0dba5c2b44ce..65f0faae659e 100644 --- a/canvas/source/cairo/cairo_xlib_cairo.cxx +++ b/canvas/source/cairo/cairo_xlib_cairo.cxx @@ -31,10 +31,10 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_canvas.hxx" -#include <prex.h> +#include <tools/prex.h> #include <X11/extensions/Xrender.h> #include <X11/Xlib.h> -#include <postx.h> +#include <tools/postx.h> #include "cairo_xlib_cairo.hxx" @@ -71,23 +71,23 @@ namespace cairo pRenderFormat(NULL) {} - X11SysData::X11SysData( const SystemGraphicsData* pSysDat ) : - pDisplay(pSysDat->pDisplay), - hDrawable(pSysDat->hDrawable), - pVisual(pSysDat->pVisual), - nScreen(pSysDat->nScreen), - nDepth(pSysDat->nDepth), - aColormap(pSysDat->aColormap), - pRenderFormat(pSysDat->pRenderFormat) + X11SysData::X11SysData( const SystemGraphicsData& pSysDat ) : + pDisplay(pSysDat.pDisplay), + hDrawable(pSysDat.hDrawable), + pVisual(pSysDat.pVisual), + nScreen(pSysDat.nScreen), + nDepth(pSysDat.nDepth), + aColormap(pSysDat.aColormap), + pRenderFormat(pSysDat.pRenderFormat) {} - X11SysData::X11SysData( const SystemEnvData* pSysDat ) : - pDisplay(pSysDat->pDisplay), - hDrawable(pSysDat->aWindow), - pVisual(pSysDat->pVisual), - nScreen(pSysDat->nScreen), - nDepth(pSysDat->nDepth), - aColormap(pSysDat->aColormap), + X11SysData::X11SysData( const SystemEnvData& pSysDat ) : + pDisplay(pSysDat.pDisplay), + hDrawable(pSysDat.aWindow), + pVisual(pSysDat.pVisual), + nScreen(pSysDat.nScreen), + nDepth(pSysDat.nDepth), + aColormap(pSysDat.aColormap), pRenderFormat(NULL) {} @@ -315,12 +315,12 @@ namespace cairo if( !pSysData ) return X11SysData(); else - return X11SysData(pSysData); + return X11SysData(*pSysData); } static X11SysData getSysData( const VirtualDevice& rVirDev ) { - return X11SysData( &rVirDev.GetSystemGfxData() ); + return X11SysData( rVirDev.GetSystemGfxData() ); } SurfaceSharedPtr createSurface( const OutputDevice& rRefDevice, diff --git a/canvas/source/cairo/cairo_xlib_cairo.hxx b/canvas/source/cairo/cairo_xlib_cairo.hxx index 83bbfd0abfb6..eb5206f8b4eb 100644 --- a/canvas/source/cairo/cairo_xlib_cairo.hxx +++ b/canvas/source/cairo/cairo_xlib_cairo.hxx @@ -42,8 +42,8 @@ namespace cairo { struct X11SysData { X11SysData(); - explicit X11SysData( const SystemGraphicsData* ); - explicit X11SysData( const SystemEnvData* ); + explicit X11SysData( const SystemGraphicsData& ); + explicit X11SysData( const SystemEnvData& ); void* pDisplay; // the relevant display connection long hDrawable; // a drawable diff --git a/canvas/source/cairo/makefile.mk b/canvas/source/cairo/makefile.mk index 0466b1d07723..bd54254abf7e 100644 --- a/canvas/source/cairo/makefile.mk +++ b/canvas/source/cairo/makefile.mk @@ -99,12 +99,14 @@ SHL1STDLIBS+= -lcairo SLOFILES+= $(SLO)$/cairo_quartz_cairo.obj OBJCXXFLAGS=-x objective-c++ -fobjc-exceptions CFLAGSCXX+=$(OBJCXXFLAGS) -SHL1STDLIBS+= -lpixman-1 -.ELSE +.ELSE # "$(GUIBASE)"=="aqua" + # Xlib SLOFILES+= $(SLO)$/cairo_xlib_cairo.obj -SHL1STDLIBS+= -lfontconfig $(FREETYPELIB) -lX11 -lXrender -.ENDIF +SHL1STDLIBS+= -lfontconfig -lX11 -lXrender -lpixman-1 $(FREETYPE_LIBS) +CFLAGS+=$(FREETYPE_CFLAGS) + +.ENDIF # "$(GUIBASE)"=="aqua" .ELSE # "$(GUI)"=="UNX" diff --git a/canvas/source/java/BackBuffer.java b/canvas/source/java/BackBuffer.java index bed2868e13aa..c71a523f35d9 100644 --- a/canvas/source/java/BackBuffer.java +++ b/canvas/source/java/BackBuffer.java @@ -28,24 +28,9 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.IQueryInterface; -import com.sun.star.lang.XInitialization; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - -// Canvas -import com.sun.star.rendering.*; - // Java AWT import java.awt.*; import java.awt.image.*; -import java.awt.geom.*; public class BackBuffer { diff --git a/canvas/source/java/BezierPolyPolygon.java b/canvas/source/java/BezierPolyPolygon.java index 4c5b77c8ab2e..54a061477ab8 100644 --- a/canvas/source/java/BezierPolyPolygon.java +++ b/canvas/source/java/BezierPolyPolygon.java @@ -28,15 +28,6 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; import com.sun.star.geometry.*; diff --git a/canvas/source/java/CanvasBase.java b/canvas/source/java/CanvasBase.java index 6eac508043c4..5f086e268069 100644 --- a/canvas/source/java/CanvasBase.java +++ b/canvas/source/java/CanvasBase.java @@ -28,17 +28,6 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.IQueryInterface; -import com.sun.star.lang.XInitialization; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; import com.sun.star.geometry.*; diff --git a/canvas/source/java/CanvasBitmap.java b/canvas/source/java/CanvasBitmap.java index bf33dc6f6c9a..e55d96b76472 100644 --- a/canvas/source/java/CanvasBitmap.java +++ b/canvas/source/java/CanvasBitmap.java @@ -28,15 +28,6 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; import com.sun.star.geometry.*; diff --git a/canvas/source/java/CanvasClonedSprite.java b/canvas/source/java/CanvasClonedSprite.java index 4837a59f0971..0976f0adbbaa 100644 --- a/canvas/source/java/CanvasClonedSprite.java +++ b/canvas/source/java/CanvasClonedSprite.java @@ -28,23 +28,11 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.IQueryInterface; -import com.sun.star.lang.XInitialization; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; import com.sun.star.geometry.*; // Java AWT -import java.awt.*; import java.awt.geom.*; public class CanvasClonedSprite diff --git a/canvas/source/java/CanvasCustomSprite.java b/canvas/source/java/CanvasCustomSprite.java index eb80d9b9ef58..3440f2f60dcd 100644 --- a/canvas/source/java/CanvasCustomSprite.java +++ b/canvas/source/java/CanvasCustomSprite.java @@ -28,17 +28,6 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.IQueryInterface; -import com.sun.star.lang.XInitialization; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; import com.sun.star.geometry.*; diff --git a/canvas/source/java/CanvasFont.java b/canvas/source/java/CanvasFont.java index 9f1109bd2975..c8f0d76395ba 100644 --- a/canvas/source/java/CanvasFont.java +++ b/canvas/source/java/CanvasFont.java @@ -28,18 +28,8 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; -import com.sun.star.geometry.*; public class CanvasFont extends com.sun.star.lib.uno.helper.ComponentBase diff --git a/canvas/source/java/CanvasGraphicDevice.java b/canvas/source/java/CanvasGraphicDevice.java index 6bd17179801c..1c9c99b7a408 100644 --- a/canvas/source/java/CanvasGraphicDevice.java +++ b/canvas/source/java/CanvasGraphicDevice.java @@ -28,27 +28,12 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.beans.XPropertySet; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; import com.sun.star.geometry.*; // Java AWT import java.awt.*; -import java.awt.geom.*; - -// TEMP -import com.sun.star.uno.Type; - public class CanvasGraphicDevice extends com.sun.star.lib.uno.helper.ComponentBase diff --git a/canvas/source/java/CanvasSprite.java b/canvas/source/java/CanvasSprite.java index 4fd2faf28ede..630b9ed386aa 100644 --- a/canvas/source/java/CanvasSprite.java +++ b/canvas/source/java/CanvasSprite.java @@ -28,17 +28,6 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.IQueryInterface; -import com.sun.star.lang.XInitialization; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; import com.sun.star.geometry.*; diff --git a/canvas/source/java/CanvasUtils.java b/canvas/source/java/CanvasUtils.java index 52143e530952..423bb6954e06 100644 --- a/canvas/source/java/CanvasUtils.java +++ b/canvas/source/java/CanvasUtils.java @@ -30,14 +30,6 @@ // UNO import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.IQueryInterface; -import com.sun.star.lang.XInitialization; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; // Canvas import com.sun.star.rendering.*; @@ -45,7 +37,6 @@ import com.sun.star.geometry.*; // Java AWT import java.awt.*; -import java.awt.image.*; import java.awt.geom.*; public class CanvasUtils diff --git a/canvas/source/java/JavaCanvas.java b/canvas/source/java/JavaCanvas.java index 9aa488adf2f1..c4090d06ee0f 100644 --- a/canvas/source/java/JavaCanvas.java +++ b/canvas/source/java/JavaCanvas.java @@ -29,12 +29,8 @@ ************************************************************************/ // UNO -import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XComponentContext; import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.IQueryInterface; -import com.sun.star.lang.XInitialization; -import com.sun.star.lib.uno.helper.WeakBase; // OOo AWT import com.sun.star.awt.*; @@ -45,8 +41,6 @@ import com.sun.star.geometry.*; // Java AWT import java.awt.*; -import java.awt.image.*; -import java.awt.geom.*; public class JavaCanvas extends CanvasBase diff --git a/canvas/source/java/LinePolyPolygon.java b/canvas/source/java/LinePolyPolygon.java index 66a39679b8c5..4c67f387a8de 100644 --- a/canvas/source/java/LinePolyPolygon.java +++ b/canvas/source/java/LinePolyPolygon.java @@ -28,15 +28,6 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; import com.sun.star.geometry.*; diff --git a/canvas/source/java/SpriteBase.java b/canvas/source/java/SpriteBase.java index 71bc6a1ddf70..d275275454c4 100644 --- a/canvas/source/java/SpriteBase.java +++ b/canvas/source/java/SpriteBase.java @@ -28,23 +28,7 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.IQueryInterface; -import com.sun.star.lang.XInitialization; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas -import com.sun.star.rendering.*; - -// Java AWT -import java.awt.*; -import java.awt.geom.*; public interface SpriteBase { diff --git a/canvas/source/java/SpriteRep.java b/canvas/source/java/SpriteRep.java index 6950b61bca36..62755dd01ec0 100644 --- a/canvas/source/java/SpriteRep.java +++ b/canvas/source/java/SpriteRep.java @@ -28,17 +28,6 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.IQueryInterface; -import com.sun.star.lang.XInitialization; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; diff --git a/canvas/source/java/SpriteRunner.java b/canvas/source/java/SpriteRunner.java index 02133679eee7..4a75125e377a 100644 --- a/canvas/source/java/SpriteRunner.java +++ b/canvas/source/java/SpriteRunner.java @@ -28,24 +28,9 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.IQueryInterface; -import com.sun.star.lang.XInitialization; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; -// Java AWT -import java.awt.*; -import java.awt.geom.*; - // // HOWTO get a Graphics2D from a window // diff --git a/canvas/source/java/TextLayout.java b/canvas/source/java/TextLayout.java index ab829a0af9ab..5495fa7e90be 100644 --- a/canvas/source/java/TextLayout.java +++ b/canvas/source/java/TextLayout.java @@ -28,18 +28,8 @@ * ************************************************************************/ -// UNO -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.lib.uno.helper.WeakBase; - -// OOo AWT -import com.sun.star.awt.*; - // Canvas import com.sun.star.rendering.*; -import com.sun.star.geometry.*; public class TextLayout extends com.sun.star.lib.uno.helper.ComponentBase diff --git a/canvas/source/vcl/bitmapbackbuffer.cxx b/canvas/source/vcl/bitmapbackbuffer.cxx index a7895f1034dd..1cc97351d9c0 100644 --- a/canvas/source/vcl/bitmapbackbuffer.cxx +++ b/canvas/source/vcl/bitmapbackbuffer.cxx @@ -105,6 +105,19 @@ namespace vclcanvas return *maBitmap; } + Size BitmapBackBuffer::getBitmapSizePixel() const + { + Size aSize = maBitmap->GetSizePixel(); + + if( mbVDevContentIsCurrent && mpVDev ) + { + mpVDev->EnableMapMode( FALSE ); + aSize = mpVDev->GetOutputSizePixel(); + } + + return aSize; + } + void BitmapBackBuffer::createVDev() const { if( !mpVDev ) @@ -151,5 +164,5 @@ namespace vclcanvas mbBitmapContentIsCurrent = false; mbVDevContentIsCurrent = true; } - } + diff --git a/canvas/source/vcl/bitmapbackbuffer.hxx b/canvas/source/vcl/bitmapbackbuffer.hxx index 04738300a186..7668aaaaf6b2 100644 --- a/canvas/source/vcl/bitmapbackbuffer.hxx +++ b/canvas/source/vcl/bitmapbackbuffer.hxx @@ -70,6 +70,7 @@ namespace vclcanvas @internal */ BitmapEx& getBitmapReference(); + Size getBitmapSizePixel() const; private: void createVDev() const; @@ -103,3 +104,4 @@ namespace vclcanvas } #endif /* #ifndef _VCLCANVAS_BITMAPBACKBUFFER_HXX_ */ + diff --git a/canvas/source/vcl/canvasbitmaphelper.cxx b/canvas/source/vcl/canvasbitmaphelper.cxx index 5656e4ba2429..5d5aa0dc8179 100644 --- a/canvas/source/vcl/canvasbitmaphelper.cxx +++ b/canvas/source/vcl/canvasbitmaphelper.cxx @@ -109,7 +109,7 @@ namespace vclcanvas if( !mpBackBuffer ) return geometry::IntegerSize2D(); - return ::vcl::unotools::integerSize2DFromSize( mpBackBuffer->getBitmapReference().GetSizePixel() ); + return ::vcl::unotools::integerSize2DFromSize( mpBackBuffer->getBitmapSizePixel() ); } void CanvasBitmapHelper::clear() diff --git a/canvas/source/vcl/canvashelper_texturefill.cxx b/canvas/source/vcl/canvashelper_texturefill.cxx index 6127aa8f401b..571a8c4fc5a3 100644 --- a/canvas/source/vcl/canvashelper_texturefill.cxx +++ b/canvas/source/vcl/canvashelper_texturefill.cxx @@ -892,9 +892,9 @@ namespace vclcanvas } else if( textures[0].Bitmap.is() ) { - OSL_ENSURE( textures[0].RepeatModeX == rendering::TexturingMode::REPEAT && - textures[0].RepeatModeY == rendering::TexturingMode::REPEAT, - "CanvasHelper::fillTexturedPolyPolygon(): VCL canvas cannot currently clamp textures." ); +// OSL_ENSURE( textures[0].RepeatModeX == rendering::TexturingMode::REPEAT && +// textures[0].RepeatModeY == rendering::TexturingMode::REPEAT, +// "CanvasHelper::fillTexturedPolyPolygon(): VCL canvas cannot currently clamp textures." ); const geometry::IntegerSize2D aBmpSize( textures[0].Bitmap->getSize() ); @@ -970,6 +970,23 @@ namespace vclcanvas aLocalState ); } } + else if ( textures[0].RepeatModeX == rendering::TexturingMode::CLAMP &&
+ textures[0].RepeatModeY == rendering::TexturingMode::CLAMP )
+ {
+ rendering::RenderState aLocalState( renderState );
+ ::canvas::tools::appendToRenderState(aLocalState,
+ aTextureTransform);
+ ::basegfx::B2DHomMatrix aScaleCorrection;
+ aScaleCorrection.scale( 1.0/aBmpSize.Width,
+ 1.0/aBmpSize.Height );
+ ::canvas::tools::appendToRenderState(aLocalState,
+ aScaleCorrection);
+
+ return drawBitmap( pCanvas,
+ textures[0].Bitmap,
+ viewState,
+ aLocalState );
+ } else { // No easy mapping to drawBitmap() - calculate diff --git a/comphelper/inc/comphelper/componentbase.hxx b/comphelper/inc/comphelper/componentbase.hxx new file mode 100644 index 000000000000..ca12610a709d --- /dev/null +++ b/comphelper/inc/comphelper/componentbase.hxx @@ -0,0 +1,160 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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 COMPHELPER_COMPONENTBASE_HXX +#define COMPHELPER_COMPONENTBASE_HXX + +#include "comphelper/comphelperdllapi.h" + +/** === begin UNO includes === **/ +/** === end UNO includes === **/ + +#include <cppuhelper/interfacecontainer.hxx> + +//........................................................................ +namespace comphelper +{ +//........................................................................ + + //==================================================================== + //= ComponentBase + //==================================================================== + class COMPHELPER_DLLPUBLIC ComponentBase + { + protected: + /** creates a ComponentBase instance + + The instance is not initialized. As a consequence, every ComponentMethodGuard instantiated for + this component will throw a <type scope="com::sun::star::lang">NotInitializedException</type>, + until ->setInitialized() is called. + */ + ComponentBase( ::cppu::OBroadcastHelper& _rBHelper ) + :m_rBHelper( _rBHelper ) + ,m_bInitialized( false ) + { + } + + struct NoInitializationNeeded { }; + + /** creates a ComponentBase instance + + The instance is already initialized, so there's no need to call setInitialized later on. Use this + constructor for component implementations which do not require explicit initialization. + */ + ComponentBase( ::cppu::OBroadcastHelper& _rBHelper, NoInitializationNeeded ) + :m_rBHelper( _rBHelper ) + ,m_bInitialized( true ) + { + } + + /** marks the instance as initialized + + Subsequent instantiations of a ComponentMethodGuard won't throw the NotInitializedException now. + */ + inline void setInitialized() { m_bInitialized = true; } + + public: + /// helper struct to grant access to selected public methods to the ComponentMethodGuard class + struct GuardAccess { friend class ComponentMethodGuard; private: GuardAccess() { } }; + + /// retrieves the component's mutex + inline ::osl::Mutex& getMutex( GuardAccess ) { return getMutex(); } + /// checks whether the component is already disposed, throws a DisposedException if so. + inline void checkDisposed( GuardAccess ) const { impl_checkDisposed_throw(); } + /// checks whether the component is already initialized, throws a NotInitializedException if not. + inline void checkInitialized( GuardAccess ) const { impl_checkInitialized_throw(); } + + protected: + /// retrieves the component's broadcast helper + inline ::cppu::OBroadcastHelper& getBroadcastHelper() { return m_rBHelper; } + /// retrieves the component's mutex + inline ::osl::Mutex& getMutex() { return m_rBHelper.rMutex; } + /// determines whether the instance is already disposed + inline bool impl_isDisposed() const { return m_rBHelper.bDisposed; } + + /// checks whether the component is already disposed. Throws a DisposedException if so. + void impl_checkDisposed_throw() const; + + /// checks whether the component is already initialized. Throws a NotInitializedException if not. + void impl_checkInitialized_throw() const; + + /// determines whether the component is already initialized + inline bool + impl_isInitialized_nothrow() const { return m_bInitialized; } + + /** returns the context to be used when throwing exceptions + + The default implementation returns <NULL/>. + */ + virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > + getComponent() const; + + private: + ::cppu::OBroadcastHelper& m_rBHelper; + bool m_bInitialized; + }; + + class ComponentMethodGuard + { + public: + enum MethodType + { + /// allow the method to be called only when being initialized and not being disposed + Default, + /// allow the method to be called without being initialized + WithoutInit + + }; + + ComponentMethodGuard( ComponentBase& _rComponent, const MethodType _eType = Default ) + :m_aMutexGuard( _rComponent.getMutex( ComponentBase::GuardAccess() ) ) + { + if ( _eType != WithoutInit ) + _rComponent.checkInitialized( ComponentBase::GuardAccess() ); + _rComponent.checkDisposed( ComponentBase::GuardAccess() ); + } + + ~ComponentMethodGuard() + { + } + + inline void clear() + { + m_aMutexGuard.clear(); + } + inline void reset() + { + m_aMutexGuard.reset(); + } + + private: + ::osl::ResettableMutexGuard m_aMutexGuard; + }; + +//........................................................................ +} // namespace ComponentBase +//........................................................................ + +#endif // COMPHELPER_COMPONENTBASE_HXX diff --git a/comphelper/inc/comphelper/processfactory.hxx b/comphelper/inc/comphelper/processfactory.hxx index d2ae887ba341..9b24f8e784ac 100644 --- a/comphelper/inc/comphelper/processfactory.hxx +++ b/comphelper/inc/comphelper/processfactory.hxx @@ -79,10 +79,19 @@ COMPHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::uno::XI const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& _rArgs ) SAL_THROW( ( ::com::sun::star::uno::RuntimeException ) ); +/** + * This function gets the process service factory's default component context. + * If no service factory is set the function returns a null interface. + */ +COMPHELPER_DLLPUBLIC +::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > +getProcessComponentContext(); + } + extern "C" { -/// @internal +/// @internal ATTENTION returns ACQUIRED pointer! release it explicitly! COMPHELPER_DLLPUBLIC ::com::sun::star::uno::XComponentContext * comphelper_getProcessComponentContext(); diff --git a/comphelper/inc/comphelper/propertybag.hxx b/comphelper/inc/comphelper/propertybag.hxx index 3a47bd5bb4c7..75c5330ff638 100644 --- a/comphelper/inc/comphelper/propertybag.hxx +++ b/comphelper/inc/comphelper/propertybag.hxx @@ -98,6 +98,34 @@ namespace comphelper const ::com::sun::star::uno::Any& _rInitialValue ); + /** adds a property to the bag + + The initial value of the property is <NULL/>. + + @param _rName + the name of the new property. Must not be empty unless + explicitly allowed with setAllowEmptyPropertyName. + @param _rType + the type of the new property + @param _nHandle + the handle of the new property + @param _nAttributes + the attributes of the property + + @throws ::com::sun::star::beans::IllegalTypeException + if the initial value is <NULL/> + @throws ::com::sun::star::beans::PropertyExistException + if the name or the handle are already used + @throws ::com::sun::star::beans::IllegalArgumentException + if the name is empty + */ + void addVoidProperty( + const ::rtl::OUString& _rName, + const ::com::sun::star::uno::Type& _rType, + sal_Int32 _nHandle, + sal_Int32 _nAttributes + ); + /** removes a property from the bag @param _rName the name of the to-be-removed property. diff --git a/comphelper/inc/comphelper/servicedecl.hxx b/comphelper/inc/comphelper/servicedecl.hxx index aadd65ee77cc..a11598bdca85 100644 --- a/comphelper/inc/comphelper/servicedecl.hxx +++ b/comphelper/inc/comphelper/servicedecl.hxx @@ -386,20 +386,20 @@ BOOST_PP_REPEAT_FROM_TO(1, COMPHELPER_SERVICEDECL_COMPONENT_HELPER_MAX_ARGS, #define COMPHELPER_SERVICEDECL_make_exports(varargs_ ) \ extern "C" \ { \ - void SAL_CALL component_getImplementationEnvironment( const sal_Char** ppEnvTypeName, \ + SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment( const sal_Char** ppEnvTypeName, \ uno_Environment** /*ppEnv*/ ) \ { \ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; \ } \ \ - sal_Bool SAL_CALL component_writeInfo( ::com::sun::star::lang::XMultiServiceFactory* pServiceManager, \ + SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo( ::com::sun::star::lang::XMultiServiceFactory* pServiceManager, \ ::com::sun::star::registry::XRegistryKey* pRegistryKey ) \ { \ return component_writeInfoHelper( pServiceManager, pRegistryKey, \ BOOST_PP_SEQ_ENUM(varargs_) ); \ } \ \ - void* SAL_CALL component_getFactory( sal_Char const* pImplName, \ + SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( sal_Char const* pImplName, \ ::com::sun::star::lang::XMultiServiceFactory* pServiceManager, \ ::com::sun::star::registry::XRegistryKey* pRegistryKey ) \ { \ diff --git a/comphelper/inc/comphelper/servicehelper.hxx b/comphelper/inc/comphelper/servicehelper.hxx index 596e6f946a7f..408684943b44 100644 --- a/comphelper/inc/comphelper/servicehelper.hxx +++ b/comphelper/inc/comphelper/servicehelper.hxx @@ -28,8 +28,8 @@ * ************************************************************************/ -#ifndef _UTL_SERVICEHELPER_HXX_ -#define _UTL_SERVICEHELPER_HXX_ +#ifndef _COMPHELPER_SERVICEHELPER_HXX_ +#define _COMPHELPER_SERVICEHELPER_HXX_ /** the UNO3_GETIMPLEMENTATION_* macros implement a static helper function that gives access to your implementation for a given interface reference, @@ -47,7 +47,7 @@ */ #define UNO3_GETIMPLEMENTATION_DECL( classname ) \ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId() throw(); \ - static classname* getImplementation( ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xInt ) throw(); \ + static classname* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xInt ); \ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException); #define UNO3_GETIMPLEMENTATION_BASE_IMPL( classname ) \ @@ -67,7 +67,7 @@ const ::com::sun::star::uno::Sequence< sal_Int8 > & classname::getUnoTunnelId() return *pSeq; \ } \ \ -classname* classname::getImplementation( uno::Reference< uno::XInterface > xInt ) throw() \ +classname* classname::getImplementation( const uno::Reference< uno::XInterface >& xInt ) \ { \ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XUnoTunnel > xUT( xInt, ::com::sun::star::uno::UNO_QUERY ); \ if( xUT.is() ) \ @@ -104,5 +104,5 @@ sal_Int64 SAL_CALL classname::getSomething( const ::com::sun::star::uno::Sequenc } -#endif // _UTL_SERVICEHELPER_HXX_ +#endif // _COMPHELPER_SERVICEHELPER_HXX_ diff --git a/comphelper/inc/comphelper/stl_types.hxx b/comphelper/inc/comphelper/stl_types.hxx index aeb6342048c9..4b3126043a08 100644 --- a/comphelper/inc/comphelper/stl_types.hxx +++ b/comphelper/inc/comphelper/stl_types.hxx @@ -49,6 +49,7 @@ #include <rtl/ustring.hxx> +#include <rtl/ustrbuf.hxx> #include <com/sun/star/uno/Reference.hxx> #include <com/sun/star/beans/PropertyValue.hpp> @@ -192,6 +193,59 @@ inline mem_fun1_t<_Tp,_Arg> mem_fun(void (_Tp::*__f)(_Arg)) } //......................................................................... +/** output iterator that appends OUStrings into an OUStringBuffer. + */ +class OUStringBufferAppender : + public ::std::iterator< ::std::output_iterator_tag, void, void, void, void> +{ +public: + typedef OUStringBufferAppender Self; + typedef ::std::output_iterator_tag iterator_category; + typedef void value_type; + typedef void reference; + typedef void pointer; + typedef size_t difference_type; + + OUStringBufferAppender(::rtl::OUStringBuffer & i_rBuffer) + : m_rBuffer(i_rBuffer) { } + Self & operator=(::rtl::OUString const & i_rStr) + { + m_rBuffer.append( i_rStr ); + return *this; + } + Self & operator*() { return *this; } // so operator= works + Self & operator++() { return *this; } + Self & operator++(int) { return *this; } + +private: + ::rtl::OUStringBuffer & m_rBuffer; +}; + +//......................................................................... +/** algorithm similar to std::copy, but inserts a separator between elements. + */ +template< typename ForwardIter, typename OutputIter, typename T > +OutputIter intersperse( + ForwardIter start, ForwardIter end, OutputIter out, T const & separator) +{ + if (start != end) { + *out = *start; + ++start; + ++out; + } + + while (start != end) { + *out = separator; + ++out; + *out = *start; + ++start; + ++out; + } + + return out; +} + +//......................................................................... } //... namespace comphelper ................................................ diff --git a/comphelper/inc/comphelper/stlunosequence.hxx b/comphelper/inc/comphelper/stlunosequence.hxx index 2ffe08cb6b75..a0ace84e8a6e 100644 --- a/comphelper/inc/comphelper/stlunosequence.hxx +++ b/comphelper/inc/comphelper/stlunosequence.hxx @@ -312,7 +312,8 @@ namespace comphelper { namespace stlunosequence { template<typename S, typename V> inline typename StlSequence<S,V>::iterator StlSequence<S,V>::begin() { - return typename StlSequence<S,V>::iterator(m_UnoSequence, begin_of_sequence); + return typename StlSequence<S,V>::iterator(m_UnoSequence, + size() ? begin_of_sequence : end_of_sequence); } template<typename S, typename V> @@ -324,7 +325,8 @@ namespace comphelper { namespace stlunosequence { template<typename S, typename V> inline typename StlSequence<S,V>::const_iterator StlSequence<S,V>::begin() const { - return typename StlSequence<S,V>::const_iterator(m_UnoSequence, begin_of_sequence); + return typename StlSequence<S,V>::const_iterator(m_UnoSequence, + size() ? begin_of_sequence : end_of_sequence); } template<typename S, typename V> diff --git a/comphelper/inc/comphelper/storagehelper.hxx b/comphelper/inc/comphelper/storagehelper.hxx index b99f7e1233ca..efb5431959ba 100644 --- a/comphelper/inc/comphelper/storagehelper.hxx +++ b/comphelper/inc/comphelper/storagehelper.hxx @@ -48,9 +48,6 @@ namespace comphelper { -sal_Bool COMPHELPER_DLLPUBLIC IsValidZipEntryFileName( - const sal_Unicode *pChar, sal_Int32 nLength, sal_Bool bSlashAllowed ); - class COMPHELPER_DLLPUBLIC OStorageHelper { public: diff --git a/comphelper/qa/complex/comphelper/Map.java b/comphelper/qa/complex/comphelper/Map.java new file mode 100644 index 000000000000..00d0b83b94d5 --- /dev/null +++ b/comphelper/qa/complex/comphelper/Map.java @@ -0,0 +1,512 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2009 by Sun Microsystems, Inc. + * + * 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. + */ + +package complex.comphelper; + +import com.sun.star.beans.IllegalTypeException; +import com.sun.star.beans.Pair; +import com.sun.star.container.ContainerEvent; +import com.sun.star.container.XContainer; +import com.sun.star.container.XContainerListener; +import com.sun.star.container.XElementAccess; +import com.sun.star.container.XEnumerableMap; +import com.sun.star.container.XEnumeration; +import com.sun.star.container.XIdentifierAccess; +import com.sun.star.container.XMap; +import com.sun.star.container.XSet; +import com.sun.star.form.XFormComponent; +import com.sun.star.lang.DisposedException; +import com.sun.star.lang.EventObject; +import com.sun.star.lang.Locale; +import com.sun.star.lang.NoSupportException; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.uno.Any; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.uno.TypeClass; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import java.util.HashSet; +import java.util.Set; + +/** complex test case for the css.container.Map implementation + * + * @author frank.schoenheit@sun.com + */ +public class Map extends complexlib.ComplexTestCase +{ + @Override + public String[] getTestMethodNames() + { + return new String[] { + "testSimpleKeyTypes", + "testComplexKeyTypes", + "testValueTypes", + "testEnumerations", + "testSpecialValues" + }; + } + + public static String getShortTestDescription() + { + return "tests the css.container.Map implementation from comphelper/source/misc/map.cxx"; + } + + private String impl_getNth( int n ) + { + switch ( n % 10 ) + { + case 1: return n + "st"; + case 2: return n + "nd"; + default: return n + "th"; + } + } + + private void impl_putAll( XMap _map, Object[] _keys, Object[] _values ) throws com.sun.star.uno.Exception + { + for ( int i=0; i<_keys.length; ++i ) + { + _map.put( _keys[i], _values[i] ); + } + } + + private void impl_ceckContent( XMap _map, Object[] _keys, Object[] _values, String _context ) throws com.sun.star.uno.Exception + { + for ( int i=0; i<_keys.length; ++i ) + { + assure( _context + ": " + impl_getNth(i) + " key (" + _keys[i].toString() + ") not found in map", + _map.containsKey( _keys[i] ) ); + assure( _context + ": " + impl_getNth(i) + " value (" + _values[i].toString() + ") not found in map", + _map.containsValue( _values[i] ) ); + assureEquals( _context + ": wrong value for " + impl_getNth(i) + " key (" + _keys[i] + ")", + _values[i], _map.get( _keys[i] ) ); + } + } + + @SuppressWarnings("unchecked") + private void impl_checkMappings( Object[] _keys, Object[] _values, String _context ) throws com.sun.star.uno.Exception + { + log.println( "checking mapping " + _context + "..." ); + + Type keyType = AnyConverter.getType( _keys[0] ); + Type valueType = AnyConverter.getType( _values[0] ); + + // create a map for the given types + XMap map = com.sun.star.container.EnumerableMap.create( param.getComponentContext(), + keyType, valueType ); + assure( _context + ": key types do not match", map.getKeyType().equals( keyType ) ); + assure( _context + ": value types do not match", map.getValueType().equals( valueType ) ); + + // insert all values + assure( _context + ": initially created map is not empty", map.hasElements() ); + impl_putAll( map, _keys, _values ); + assure( _context + ": map filled with values is still empty", !map.hasElements() ); + // and verify them + impl_ceckContent( map, _keys, _values, _context ); + + // remove all values + for ( int i=_keys.length-1; i>=0; --i ) + { + // ensure 'remove' really returns the old value + assureEquals( _context + ": wrong 'old value' for removal of " + impl_getNth(i) + " value", + _values[i], map.remove( _keys[i] ) ); + } + assure( _context + ":map not empty after removing all elements", map.hasElements() ); + + // insert again, and check whether 'clear' does what it should do + impl_putAll( map, _keys, _values ); + map.clear(); + assure( _context + ": 'clear' does not empty the map", map.hasElements() ); + + // try the constructor which creates an immutable version + Pair< ?, ? >[] initialMappings = new Pair< ?, ? >[ _keys.length ]; + for ( int i=0; i<_keys.length; ++i ) + initialMappings[i] = new Pair< Object, Object >( _keys[i], _values[i] ); + map = com.sun.star.container.EnumerableMap.createImmutable( + param.getComponentContext(), keyType, valueType, (Pair< Object, Object >[])initialMappings ); + impl_ceckContent( map, _keys, _values, _context ); + + // check the thing is actually immutable + assureException( map, "clear", new Object[] {}, NoSupportException.class ); + assureException( map, "remove", new Class[] { Object.class }, new Object[] { _keys[0] }, NoSupportException.class ); + assureException( map, "put", new Class[] { Object.class, Object.class }, new Object[] { _keys[0], _values[0] }, + NoSupportException.class ); + } + + public void testSimpleKeyTypes() throws com.sun.star.uno.Exception + { + impl_checkMappings( + new Long[] { (long)1, (long)2, (long)3, (long)4, (long)5 }, + new Integer[] { 6, 7, 8, 9, 10 }, + "long->int" + ); + impl_checkMappings( + new Boolean[] { true, false }, + new Short[] { (short)1, (short)0 }, + "bool->short" + ); + impl_checkMappings( + new String[] { "one", "two", "three", "four", "five"}, + new String[] { "1", "2", "3", "4", "5" }, + "string->string" + ); + impl_checkMappings( + new Double[] { 1.2, 3.4, 5.6, 7.8, 9.10 }, + new Float[] { (float)1, (float)2, (float)3, (float)4, (float)5 }, + "double->float" + ); + impl_checkMappings( + new Float[] { (float)1, (float)2, (float)3, (float)4, (float)5 }, + new Double[] { 1.2, 3.4, 5.6, 7.8, 9.10 }, + "float->double" + ); + impl_checkMappings( + new Integer[] { 2, 9, 2005, 20, 11, 1970, 26, 3, 1974 }, + new String[] { "2nd", "September", "2005", "20th", "November", "1970", "26th", "March", "1974" }, + "int->string" + ); + } + + public void testComplexKeyTypes() throws com.sun.star.uno.Exception + { + Type intType = new Type( Integer.class ); + Type longType = new Type( Long.class ); + Type msfType = new Type ( XMultiServiceFactory.class ); + // .................................................................... + // css.uno.Type should be a valid key type + impl_checkMappings( + new Type[] { intType, longType, msfType }, + new String[] { intType.getTypeName(), longType.getTypeName(), msfType.getTypeName() }, + "type->string" + ); + + // .................................................................... + // any UNO interface type should be a valid key type. + // Try with some form components (just because I like form components :), and the very first application + // for the newly implemented map will be to map XFormComponents to drawing shapes + String[] serviceNames = new String[] { "CheckBox", "ComboBox", "CommandButton", "DateField", "FileControl" }; + Object[] components = new Object[ serviceNames.length ]; + for ( int i=0; i<serviceNames.length; ++i ) + { + components[i] = ((XMultiServiceFactory)param.getMSF()).createInstance( "com.sun.star.form.component." + serviceNames[i] ); + } + // "normalize" the first component, so it has the property type + Type formComponentType = new Type( XFormComponent.class ); + components[0] = UnoRuntime.queryInterface( formComponentType.getZClass(), components[0] ); + impl_checkMappings( components, serviceNames, "XFormComponent->string" ); + + // .................................................................... + // any UNO enum type should be a valid key type + impl_checkMappings( + new TypeClass[] { intType.getTypeClass(), longType.getTypeClass(), msfType.getTypeClass() }, + new Object[] { "foo", "bar", "42" }, + "enum->string" + ); + } + + private Class impl_getValueClassByPos( int _pos ) + { + Class valueClass = null; + switch ( _pos ) + { + case 0: valueClass = Boolean.class; break; + case 1: valueClass = Short.class; break; + case 2: valueClass = Integer.class; break; + case 3: valueClass = Long.class; break; + case 4: valueClass = XInterface.class; break; + case 5: valueClass = XSet.class; break; + case 6: valueClass = XContainer.class; break; + case 7: valueClass = XIdentifierAccess.class; break; + case 8: valueClass = XElementAccess.class; break; + case 9: valueClass = com.sun.star.uno.Exception.class; break; + case 10: valueClass = com.sun.star.uno.RuntimeException.class; break; + case 11: valueClass = EventObject.class; break; + case 12: valueClass = ContainerEvent.class; break; + case 13: valueClass = Object.class; break; + default: + failed( "internal error: wrong position for getValueClass" ); + } + return valueClass; + } + + @SuppressWarnings("unchecked") + private Object impl_getSomeValueByTypePos( int _pos ) + { + Object someValue = null; + switch ( _pos ) + { + case 0: someValue = new Boolean( false ); break; + case 1: someValue = new Short( (short)0 ); break; + case 2: someValue = new Integer( 0 ); break; + case 3: someValue = new Long( 0 ); break; + case 4: someValue = UnoRuntime.queryInterface( XInterface.class, new DummyInterface() ); break; + case 5: someValue = UnoRuntime.queryInterface( XSet.class, new DummySet() ); break; + case 6: someValue = UnoRuntime.queryInterface( XContainer.class, new DummyContainer() ); break; + case 7: someValue = UnoRuntime.queryInterface( XIdentifierAccess.class, new DummyIdentifierAccess() ); break; + case 8: someValue = UnoRuntime.queryInterface( XElementAccess.class, new DummyElementAccess() ); break; + case 9: someValue = new com.sun.star.uno.Exception(); break; + case 10: someValue = new com.sun.star.uno.RuntimeException(); break; + case 11: someValue = new EventObject(); break; + case 12: someValue = new ContainerEvent(); break; + case 13: someValue = new Locale(); break; // just use *any* value which does not conflict with the others + default: + failed( "internal error: wrong position for getSomeValue" ); + } + return someValue; + } + + private class DummyInterface implements XInterface + { + }; + + private class DummySet implements XSet + { + public boolean has( Object arg0 ) { throw new UnsupportedOperationException( "Not implemented." ); } + public void insert( Object arg0 ) { throw new UnsupportedOperationException( "Not implemented." ); } + public void remove( Object arg0 ) { throw new UnsupportedOperationException( "Not implemented." ); } + public XEnumeration createEnumeration() { throw new UnsupportedOperationException( "Not implemented." ); } + public Type getElementType() { throw new UnsupportedOperationException( "Not implemented." ); } + public boolean hasElements() { throw new UnsupportedOperationException( "Not implemented." ); } + }; + + private class DummyContainer implements XContainer + { + public void addContainerListener( XContainerListener arg0 ) { throw new UnsupportedOperationException( "Not implemented." ); } + public void removeContainerListener( XContainerListener arg0 ) { throw new UnsupportedOperationException( "Not implemented." ); } + }; + + private class DummyIdentifierAccess implements XIdentifierAccess + { + public Object getByIdentifier( int arg0 ) { throw new UnsupportedOperationException( "Not implemented." ); } + public int[] getIdentifiers() { throw new UnsupportedOperationException( "Not implemented." ); } + public Type getElementType() { throw new UnsupportedOperationException( "Not implemented." ); } + public boolean hasElements() { throw new UnsupportedOperationException( "Not implemented." ); } + }; + + private class DummyElementAccess implements XElementAccess + { + public Type getElementType() { throw new UnsupportedOperationException( "Not implemented." ); } + public boolean hasElements() { throw new UnsupportedOperationException( "Not implemented." ); } + }; + + public void testValueTypes() throws com.sun.star.uno.Exception + { + final Integer key = new Integer(1); + + // type compatibility matrix: rows are the value types used to create the map, + // columns are the value types fed into the map. A value "1" means the respective type + // should be accepted. + Integer[][] typeCompatibility = new Integer[][] { + /* boolean */ new Integer[] { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* short */ new Integer[] { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* int */ new Integer[] { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* long */ new Integer[] { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* XInterface */ new Integer[] { 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, + /* XSet */ new Integer[] { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* XContainer */ new Integer[] { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, + /* XIdentifierAccess */ new Integer[] { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, + /* XElementAccess */ new Integer[] { 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0 }, + /* Exception */ new Integer[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, + /* RuntimeException */ new Integer[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, + /* EventObject */ new Integer[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + /* ContainerEvent */ new Integer[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + /* any */ new Integer[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, + }; + // several asects are checked with this compatibility matrix: + // - if a map's value type is a scalar type, or a string, then nothing but this + // type should be accepted + // - if a map's value type is an interface type, then values should be accepted if + // they contain a derived interface, or the interrface itself, or if they can be + // queried for this interface (actually, the latter rule is not tested with the + // above matrix) + // - if a map's value type is a struct or exception, then values should be accepted + // if they are of the given type, or of a derived type. + // - if a map's value type is "any", then, well, any value should be accepted + + for ( int valueTypePos = 0; valueTypePos != typeCompatibility.length; ++valueTypePos ) + { + XMap map = com.sun.star.container.EnumerableMap.create( param.getComponentContext(), + new Type( Integer.class ), new Type( impl_getValueClassByPos( valueTypePos ) ) ); + + for ( int checkTypePos = 0; checkTypePos != typeCompatibility[valueTypePos].length; ++checkTypePos ) + { + Object value = impl_getSomeValueByTypePos( checkTypePos ); + if ( typeCompatibility[valueTypePos][checkTypePos] != 0 ) + // expected to succeed + assureException( + "(" + valueTypePos + "," + checkTypePos + ") putting an " + + AnyConverter.getType( value ).getTypeName() + ", where " + + map.getValueType().getTypeName() + " is expected, should succeed", + map, "put", new Class[] { Object.class, Object.class }, new Object[] { key, value }, + null ); + else + { + // expected to fail + assureException( + "(" + valueTypePos + "," + checkTypePos + ") putting an " + + AnyConverter.getType( value ).getTypeName() + ", where " + + map.getValueType().getTypeName() + " is expected, should not succeed", + map, "put", new Class[] { Object.class, Object.class }, new Object[] { key, value }, + IllegalTypeException.class ); + } + } + } + } + + private interface CompareEqual + { + public boolean areEqual( Object _lhs, Object _rhs ); + }; + + private class DefaultCompareEqual implements CompareEqual + { + public boolean areEqual( Object _lhs, Object _rhs ) + { + return _lhs.equals( _rhs ); + } + }; + + private class PairCompareEqual implements CompareEqual + { + public boolean areEqual( Object _lhs, Object _rhs ) + { + Pair< ?, ? > lhs = (Pair< ?, ? >)_lhs; + Pair< ?, ? > rhs = (Pair< ?, ? >)_rhs; + return lhs.First.equals( rhs.First ) && lhs.Second.equals( rhs.Second ); + } + }; + + @SuppressWarnings("unchecked") + private void impl_verifyEnumerationContent( XEnumeration _enum, final Object[] _expectedElements, final String _context ) + throws com.sun.star.uno.Exception + { + // since we cannot assume the map to preserve the ordering in which the elements where inserted, + // we can only verify that all elements exist as expected, plus *no more* elements than expected + // are provided by the enumeration + Set set = new HashSet(); + for ( int i=0; i<_expectedElements.length; ++i ) + set.add( i ); + + CompareEqual comparator = _expectedElements[0].getClass().equals( Pair.class ) + ? new PairCompareEqual() + : new DefaultCompareEqual(); + + for ( int i=0; i<_expectedElements.length; ++i ) + { + assure( _context + ": too few elements in the enumeration (still " + ( _expectedElements.length - i ) + " to go)", + _enum.hasMoreElements() ); + + Object nextElement = _enum.nextElement(); + if ( nextElement.getClass().equals( Any.class ) ) + nextElement = ((Any)nextElement).getObject(); + + int foundPos = -1; + for ( int j=0; j<_expectedElements.length; ++j ) + { + if ( comparator.areEqual( _expectedElements[j], nextElement ) ) + { + foundPos = j; + break; + } + } + + assure( _context + ": '" + nextElement.toString() + "' is not expected in the enumeration", + set.contains( foundPos ) ); + set.remove( foundPos ); + } + assure( _context + ": too many elements returned by the enumeration", set.isEmpty() ); + } + + public void testEnumerations() throws com.sun.star.uno.Exception + { + // fill a map + final String[] keys = new String[] { "This", "is", "an", "enumeration", "test" }; + final String[] values = new String[] { "for", "the", "map", "implementation", "." }; + XEnumerableMap map = com.sun.star.container.EnumerableMap.create( param.getComponentContext(), new Type( String.class ), new Type( String.class ) ); + impl_putAll( map, keys, values ); + + final Pair< ?, ? >[] paired = new Pair< ?, ? >[ keys.length ]; + for ( int i=0; i<keys.length; ++i ) + paired[i] = new Pair< Object, Object >( keys[i], values[i] ); + + // create non-isolated enumerators, and check their content + XEnumeration enumerateKeys = map.createKeyEnumeration( false ); + XEnumeration enumerateValues = map.createValueEnumeration( false ); + XEnumeration enumerateAll = map.createElementEnumeration( false ); + impl_verifyEnumerationContent( enumerateKeys, keys, "key enumeration" ); + impl_verifyEnumerationContent( enumerateValues, values, "value enumeration" ); + impl_verifyEnumerationContent( enumerateAll, paired, "content enumeration" ); + + // all enumerators above have been created as non-isolated iterators, so they're expected to die when + // the underlying map changes + map.remove( keys[0] ); + assureException( enumerateKeys, "hasMoreElements", new Object[] {}, DisposedException.class ); + assureException( enumerateValues, "hasMoreElements", new Object[] {}, DisposedException.class ); + assureException( enumerateAll, "hasMoreElements", new Object[] {}, DisposedException.class ); + + // now try with isolated iterators + map.put( keys[0], values[0] ); + enumerateKeys = map.createKeyEnumeration( true ); + enumerateValues = map.createValueEnumeration( true ); + enumerateAll = map.createElementEnumeration( true ); + map.put( "additional", "value" ); + impl_verifyEnumerationContent( enumerateKeys, keys, "key enumeration" ); + impl_verifyEnumerationContent( enumerateValues, values, "value enumeration" ); + impl_verifyEnumerationContent( enumerateAll, paired, "content enumeration" ); + } + + public void testSpecialValues() throws com.sun.star.uno.Exception + { + final Double[] keys = new Double[] { new Double( 0 ), Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY }; + final Double[] values = new Double[] { Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, new Double( 0 ) }; + + XEnumerableMap map = com.sun.star.container.EnumerableMap.create( param.getComponentContext(), new Type( Double.class ), new Type( Double.class ) ); + impl_putAll( map, keys, values ); + + assure( "containsKey( Double.+INF failed", map.containsKey( Double.POSITIVE_INFINITY ) ); + assure( "containsKey( Double.-INF failed", map.containsKey( Double.NEGATIVE_INFINITY ) ); + assure( "containsKey( 0 ) failed", map.containsKey( new Double( 0 ) ) ); + + assure( "containsValue( Double.+INF ) failed", map.containsValue( Double.POSITIVE_INFINITY ) ); + assure( "containsValue( Double.-INF ) failed", map.containsValue( Double.NEGATIVE_INFINITY ) ); + assure( "containsValue( 0 ) failed", map.containsValue( new Double( 0 ) ) ); + + // put and containsKey should reject Double.NaN as key + assureException( "Double.NaN should not be allowed as key in a call to 'put'", map, "put", + new Class[] { Object.class, Object.class }, new Object[] { Double.NaN, new Double( 0 ) }, + com.sun.star.lang.IllegalArgumentException.class ); + assureException( "Double.NaN should not be allowed as key in a call to 'containsKey'", map, "containsKey", + new Class[] { Object.class }, new Object[] { Double.NaN }, + com.sun.star.lang.IllegalArgumentException.class ); + + // ditto for put and containsValue + assureException( "Double.NaN should not be allowed as value in a call to 'put'", map, "put", + new Class[] { Object.class, Object.class }, new Object[] { new Double( 0 ), Double.NaN }, + com.sun.star.lang.IllegalArgumentException.class ); + assureException( "Double.NaN should not be allowed as key in a call to 'containsValue'", map, "containsValue", + new Class[] { Object.class }, new Object[] { Double.NaN }, + com.sun.star.lang.IllegalArgumentException.class ); + } +} diff --git a/comphelper/qa/complex/sequenceoutputstream/SequenceOutputStreamUnitTest.java b/comphelper/qa/complex/comphelper/SequenceOutputStreamUnitTest.java index caa094499486..b5e8a4052897 100644 --- a/comphelper/qa/complex/sequenceoutputstream/SequenceOutputStreamUnitTest.java +++ b/comphelper/qa/complex/comphelper/SequenceOutputStreamUnitTest.java @@ -27,11 +27,10 @@ * for a copy of the LGPLv3 License. * ************************************************************************/ -package complex.sequenceoutputstream; +package complex.comphelper; import complexlib.ComplexTestCase; import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.uno.UnoRuntime; /* Document. */ @@ -48,6 +47,10 @@ public class SequenceOutputStreamUnitTest extends ComplexTestCase { return "SequenceOutputStreamUnitTest"; } + public static String getShortTestDescription() { + return "tests the SequenceOutput/InputStream implementations"; + } + public void before() { try { m_xMSF = (XMultiServiceFactory)param.getMSF (); @@ -64,7 +67,8 @@ public class SequenceOutputStreamUnitTest extends ComplexTestCase { } public void ExecuteTest01() { - SequenceOutputStreamTest aTest = new Test01 (m_xMSF, log); + Test01 aTest = new Test01 (m_xMSF, log); assure ( "Test01 failed!", aTest.test() ); } + }
\ No newline at end of file diff --git a/comphelper/qa/complex/sequenceoutputstream/Test01.java b/comphelper/qa/complex/comphelper/Test01.java index b7e864d981a5..4404a8468734 100644 --- a/comphelper/qa/complex/sequenceoutputstream/Test01.java +++ b/comphelper/qa/complex/comphelper/Test01.java @@ -27,21 +27,17 @@ * for a copy of the LGPLv3 License. * ************************************************************************/ -package complex.sequenceoutputstream; - -import complexlib.ComplexTestCase; +package complex.comphelper; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.io.XSequenceOutputStream; import com.sun.star.io.XSeekableInputStream; -import com.sun.star.io.XOutputStream; -import com.sun.star.io.XInputStream; import com.sun.star.uno.UnoRuntime; import java.util.Random; import share.LogWriter; -public class Test01 implements SequenceOutputStreamTest { +public class Test01 { XMultiServiceFactory m_xMSF = null; TestHelper m_aTestHelper = null; diff --git a/comphelper/qa/complex/sequenceoutputstream/TestHelper.java b/comphelper/qa/complex/comphelper/TestHelper.java index eac7103a032c..6d88280bb372 100644 --- a/comphelper/qa/complex/sequenceoutputstream/TestHelper.java +++ b/comphelper/qa/complex/comphelper/TestHelper.java @@ -27,7 +27,7 @@ * for a copy of the LGPLv3 License. * ************************************************************************/ -package complex.sequenceoutputstream; +package complex.comphelper; import share.LogWriter; diff --git a/comphelper/qa/complex/comphelper_all.sce b/comphelper/qa/complex/comphelper_all.sce new file mode 100644 index 000000000000..63e5276f00ed --- /dev/null +++ b/comphelper/qa/complex/comphelper_all.sce @@ -0,0 +1,2 @@ +-o complex.comphelper.SequenceOutputStreamUnitTest +-o complex.comphelper.Map diff --git a/comphelper/qa/complex/sequenceoutputstream/makefile.mk b/comphelper/qa/complex/makefile.mk index 69e78936cf0a..d0e8a078e2c7 100644 --- a/comphelper/qa/complex/sequenceoutputstream/makefile.mk +++ b/comphelper/qa/complex/makefile.mk @@ -8,7 +8,7 @@ # # $RCSfile: makefile.mk,v $ # -# $Revision: 1.3.48.1 $ +# $Revision: 1.2.20.2 $ # # This file is part of OpenOffice.org. # @@ -29,61 +29,73 @@ # #************************************************************************* -PRJ = ..$/..$/.. -TARGET = SequenceOutputStreamUnitTest +PRJ = ..$/.. +TARGET = ComphelperComplexTests PRJNAME = comphelper -PACKAGE = complex$/sequenceoutputstream # --- Settings ----------------------------------------------------- .INCLUDE: settings.mk -#----- compile .java files ----------------------------------------- - -JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunner.jar +.IF "$(BUILD_QADEVOOO)" == "YES" -JAVAFILES =\ - SequenceOutputStreamUnitTest.java\ - SequenceOutputStreamTest.java\ - Test01.java\ - TestHelper.java\ +#----- compile .java files ----------------------------------------- -JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class) +JARFILES := ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunner.jar +JAVAFILES := $(shell @$(FIND) . -name "*.java") +JAVACLASSFILES := $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(i:d)$/$(i:b).class) #----- make a jar from compiled files ------------------------------ MAXLINELENGTH = 100000 -JARCLASSDIRS = $(PACKAGE) +#JARCLASSDIRS = JARTARGET = $(TARGET).jar JARCOMPRESS = TRUE -# --- Parameters for the test -------------------------------------- +# --- Runner Settings ---------------------------------------------- + +# classpath and argument list +RUNNER_CLASSPATH = -cp $(CLASSPATH)$(PATH_SEPERATOR)$(SOLARBINDIR)$/OOoRunner.jar # start an office if the parameter is set for the makefile .IF "$(OFFICE)" == "" -CT_APPEXECCOMMAND = +RUNNER_APPEXECCOMMAND = .ELSE -CT_APPEXECCOMMAND = -AppExecutionCommand "$(OFFICE)$/soffice -accept=socket,host=localhost,port=8100;urp;" +RUNNER_APPEXECCOMMAND = -AppExecutionCommand "$(OFFICE)$/soffice -accept=socket,host=localhost,port=8100;urp;" .ENDIF -# test base is java complex -CT_TESTBASE = -TestBase java_complex - -# test looks something like the.full.package.TestName -CT_TEST = -o $(PACKAGE:s\$/\.\).$(JAVAFILES:b) +RUNNER_ARGS = org.openoffice.Runner -TestBase java_complex $(RUNNER_APPEXECCOMMAND) -# start the runner application -CT_APP = org.openoffice.Runner +.END # "$(BUILD_QADEVOOO)" == "YES" # --- Targets ------------------------------------------------------ -.INCLUDE: target.mk +.IF "$(depend)" == "" +ALL : ALLTAR + @echo ----------------------------------------------------- + @echo - do a 'dmake show_targets' to show available targets + @echo ----------------------------------------------------- +.ELSE +ALL: ALLDEP +.ENDIF + +.INCLUDE : target.mk -RUN: run +.IF "$(BUILD_QADEVOOO)" == "YES" +show_targets: + +@java $(RUNNER_CLASSPATH) complexlib.ShowTargets $(foreach,i,$(JAVAFILES) $(i:s#.java##:s#./#complex.#)) run: - +java -cp $(CLASSPATH) $(CT_APP) $(CT_TESTBASE) $(CT_APPEXECCOMMAND) $(CT_TEST) + +java $(RUNNER_CLASSPATH) $(RUNNER_ARGS) -sce comphelper_all.sce +run_%: + +java $(RUNNER_CLASSPATH) $(RUNNER_ARGS) -o complex.$(PRJNAME).$(@:s/run_//) +.ELSE +run: show_targets +show_targets: + +@echo "Built without qadevOOo, no QA tests" + +.ENDIF diff --git a/comphelper/source/compare/AnyCompareFactory.cxx b/comphelper/source/compare/AnyCompareFactory.cxx index e5713c6ece46..c77aaf75f5a8 100644 --- a/comphelper/source/compare/AnyCompareFactory.cxx +++ b/comphelper/source/compare/AnyCompareFactory.cxx @@ -31,6 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_comphelper.hxx" +#include "comphelper_module.hxx" #include <com/sun/star/ucb/XAnyCompareFactory.hpp> #include <com/sun/star/i18n/XCollator.hpp> @@ -44,9 +45,7 @@ #include <com/sun/star/lang/IllegalArgumentException.hpp> #include <com/sun/star/lang/XMultiComponentFactory.hpp> #include <comphelper/stl_types.hxx> -#ifndef __SGI_STL_MAP #include <map> -#endif using namespace com::sun::star::uno; @@ -81,11 +80,6 @@ public: //============================================================================= -Sequence< rtl::OUString > SAL_CALL AnyCompareFactory_getSupportedServiceNames() throw(); -rtl::OUString SAL_CALL AnyCompareFactory_getImplementationName() throw(); -Reference< XInterface > SAL_CALL AnyCompareFactory_createInstance( - const Reference< XComponentContext >& rxContext ) throw( Exception ); - class AnyCompareFactory : public cppu::WeakImplHelper3< XAnyCompareFactory, XInitialization, XServiceInfo > { Reference< XAnyCompare > m_rAnyCompare; @@ -107,6 +101,11 @@ public: virtual OUString SAL_CALL getImplementationName( ) throw(RuntimeException); virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(RuntimeException); virtual Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw(RuntimeException); + + // XServiceInfo - static versions (used for component registration) + static ::rtl::OUString SAL_CALL getImplementationName_static(); + static Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static(); + static Reference< XInterface > SAL_CALL Create( const Reference< XComponentContext >& ); }; //=========================================================================================== @@ -157,7 +156,12 @@ void SAL_CALL AnyCompareFactory::initialize( const Sequence< Any >& aArguments ) OUString SAL_CALL AnyCompareFactory::getImplementationName( ) throw( RuntimeException ) { - return AnyCompareFactory_getImplementationName(); + return getImplementationName_static(); +} + +OUString SAL_CALL AnyCompareFactory::getImplementationName_static( ) +{ + return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AnyCompareFactory" ) ); } sal_Bool SAL_CALL AnyCompareFactory::supportsService( const OUString& ServiceName ) throw(RuntimeException) @@ -168,24 +172,23 @@ sal_Bool SAL_CALL AnyCompareFactory::supportsService( const OUString& ServiceNam Sequence< OUString > SAL_CALL AnyCompareFactory::getSupportedServiceNames( ) throw(RuntimeException) { - return AnyCompareFactory_getSupportedServiceNames(); + return getSupportedServiceNames_static(); } - -Sequence< rtl::OUString > SAL_CALL AnyCompareFactory_getSupportedServiceNames() throw() +Sequence< OUString > SAL_CALL AnyCompareFactory::getSupportedServiceNames_static( ) { const rtl::OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ucb.AnyCompareFactory" ) ); const Sequence< rtl::OUString > aSeq( &aServiceName, 1 ); return aSeq; } -rtl::OUString SAL_CALL AnyCompareFactory_getImplementationName() throw() +Reference< XInterface > SAL_CALL AnyCompareFactory::Create( + const Reference< XComponentContext >& rxContext ) { - return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AnyCompareFactory" ) ); + return (cppu::OWeakObject*)new AnyCompareFactory( rxContext ); } -Reference< XInterface > SAL_CALL AnyCompareFactory_createInstance( - const Reference< XComponentContext >& rxContext ) throw( Exception ) +void createRegistryInfo_AnyCompareFactory() { - return (cppu::OWeakObject*)new AnyCompareFactory( rxContext ); + static ::comphelper::module::OAutoRegistration< AnyCompareFactory > aAutoRegistration; } diff --git a/comphelper/source/container/IndexedPropertyValuesContainer.cxx b/comphelper/source/container/IndexedPropertyValuesContainer.cxx index 10d6143f2eaa..a9f413bc46e1 100644 --- a/comphelper/source/container/IndexedPropertyValuesContainer.cxx +++ b/comphelper/source/container/IndexedPropertyValuesContainer.cxx @@ -31,9 +31,9 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_comphelper.hxx" -#ifndef _COM_SUN_STAR_CONTAINER_XIndexCONTAINER_HPP_ +#include "comphelper_module.hxx" + #include <com/sun/star/container/XIndexContainer.hpp> -#endif #include <com/sun/star/uno/Sequence.h> #include <com/sun/star/beans/PropertyValue.hpp> #include <cppuhelper/implbase2.hxx> @@ -49,11 +49,6 @@ using namespace com::sun::star; typedef std::vector < uno::Sequence< beans::PropertyValue > > IndexedPropertyValues; -uno::Sequence< rtl::OUString > SAL_CALL IndexedPropertyValuesContainer_getSupportedServiceNames() throw(); -rtl::OUString SAL_CALL IndexedPropertyValuesContainer_getImplementationName() throw(); -uno::Reference< uno::XInterface > SAL_CALL IndexedPropertyValuesContainer_createInstance( - const uno::Reference< uno::XComponentContext > & rxContext ) throw( uno::Exception ); - class IndexedPropertyValuesContainer : public cppu::WeakImplHelper2< container::XIndexContainer, lang::XServiceInfo > { public: @@ -91,6 +86,11 @@ public: virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException); + // XServiceInfo - static versions (used for component registration) + static ::rtl::OUString SAL_CALL getImplementationName_static(); + static uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static(); + static uno::Reference< uno::XInterface > SAL_CALL Create( const uno::Reference< uno::XComponentContext >& ); + private: IndexedPropertyValues maProperties; }; @@ -233,7 +233,12 @@ sal_Bool SAL_CALL IndexedPropertyValuesContainer::hasElements( ) //XServiceInfo ::rtl::OUString SAL_CALL IndexedPropertyValuesContainer::getImplementationName( ) throw(::com::sun::star::uno::RuntimeException) { - return IndexedPropertyValuesContainer_getImplementationName(); + return getImplementationName_static(); +} + +::rtl::OUString SAL_CALL IndexedPropertyValuesContainer::getImplementationName_static( ) +{ + return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IndexedPropertyValuesContainer" ) ); } sal_Bool SAL_CALL IndexedPropertyValuesContainer::supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException) @@ -244,25 +249,25 @@ sal_Bool SAL_CALL IndexedPropertyValuesContainer::supportsService( const ::rtl:: ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL IndexedPropertyValuesContainer::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) { - return IndexedPropertyValuesContainer_getSupportedServiceNames(); + return getSupportedServiceNames_static(); } -uno::Sequence< rtl::OUString > SAL_CALL IndexedPropertyValuesContainer_getSupportedServiceNames() throw() +::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL IndexedPropertyValuesContainer::getSupportedServiceNames_static( ) { const rtl::OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.IndexedPropertyValues" ) ); const uno::Sequence< rtl::OUString > aSeq( &aServiceName, 1 ); return aSeq; } -rtl::OUString SAL_CALL IndexedPropertyValuesContainer_getImplementationName() throw() -{ - return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IndexedPropertyValuesContainer" ) ); -} -uno::Reference< uno::XInterface > SAL_CALL IndexedPropertyValuesContainer_createInstance( - const uno::Reference< uno::XComponentContext >&) throw( uno::Exception ) +uno::Reference< uno::XInterface > SAL_CALL IndexedPropertyValuesContainer::Create( + const uno::Reference< uno::XComponentContext >&) { return (cppu::OWeakObject*)new IndexedPropertyValuesContainer(); } +void createRegistryInfo_IndexedPropertyValuesContainer() +{ + static ::comphelper::module::OAutoRegistration< IndexedPropertyValuesContainer > aAutoRegistration; +} diff --git a/comphelper/source/container/NamedPropertyValuesContainer.cxx b/comphelper/source/container/NamedPropertyValuesContainer.cxx index 269fa05de56b..99a33bb8470e 100644 --- a/comphelper/source/container/NamedPropertyValuesContainer.cxx +++ b/comphelper/source/container/NamedPropertyValuesContainer.cxx @@ -31,6 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_comphelper.hxx" +#include "comphelper_module.hxx" #include <com/sun/star/container/XNameContainer.hpp> #include <com/sun/star/uno/Sequence.h> @@ -48,11 +49,6 @@ using namespace com::sun::star; DECLARE_STL_USTRINGACCESS_MAP( uno::Sequence<beans::PropertyValue>, NamedPropertyValues ); -uno::Sequence< rtl::OUString > SAL_CALL NamedPropertyValuesContainer_getSupportedServiceNames() throw(); -rtl::OUString SAL_CALL NamedPropertyValuesContainer_getImplementationName() throw(); -uno::Reference< uno::XInterface > SAL_CALL NamedPropertyValuesContainer_createInstance( - const uno::Reference< uno::XComponentContext > & rxContext ) throw( uno::Exception ); - class NamedPropertyValuesContainer : public cppu::WeakImplHelper2< container::XNameContainer, lang::XServiceInfo > { public: @@ -92,6 +88,11 @@ public: virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException); + // XServiceInfo - static versions (used for component registration) + static ::rtl::OUString SAL_CALL getImplementationName_static(); + static uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static(); + static uno::Reference< uno::XInterface > SAL_CALL Create( const uno::Reference< uno::XComponentContext >& ); + private: NamedPropertyValues maProperties; }; @@ -202,7 +203,12 @@ sal_Bool SAL_CALL NamedPropertyValuesContainer::hasElements( ) //XServiceInfo ::rtl::OUString SAL_CALL NamedPropertyValuesContainer::getImplementationName( ) throw(::com::sun::star::uno::RuntimeException) { - return NamedPropertyValuesContainer_getImplementationName(); + return getImplementationName_static(); +} + +::rtl::OUString SAL_CALL NamedPropertyValuesContainer::getImplementationName_static( ) +{ + return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NamedPropertyValuesContainer" ) ); } sal_Bool SAL_CALL NamedPropertyValuesContainer::supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException) @@ -213,25 +219,24 @@ sal_Bool SAL_CALL NamedPropertyValuesContainer::supportsService( const ::rtl::OU ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL NamedPropertyValuesContainer::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) { - return NamedPropertyValuesContainer_getSupportedServiceNames(); + return getSupportedServiceNames_static(); } -uno::Sequence< rtl::OUString > SAL_CALL NamedPropertyValuesContainer_getSupportedServiceNames() throw() +::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL NamedPropertyValuesContainer::getSupportedServiceNames_static( ) { const rtl::OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.NamedPropertyValues" ) ); const uno::Sequence< rtl::OUString > aSeq( &aServiceName, 1 ); return aSeq; } -rtl::OUString SAL_CALL NamedPropertyValuesContainer_getImplementationName() throw() +uno::Reference< uno::XInterface > SAL_CALL NamedPropertyValuesContainer::Create( + const uno::Reference< uno::XComponentContext >&) { - return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NamedPropertyValuesContainer" ) ); + return (cppu::OWeakObject*)new NamedPropertyValuesContainer(); } -uno::Reference< uno::XInterface > SAL_CALL NamedPropertyValuesContainer_createInstance( - const uno::Reference< uno::XComponentContext >&) throw( uno::Exception ) +void createRegistryInfo_NamedPropertyValuesContainer() { - return (cppu::OWeakObject*)new NamedPropertyValuesContainer(); + static ::comphelper::module::OAutoRegistration< NamedPropertyValuesContainer > aAutoRegistration; } - diff --git a/comphelper/source/container/enumerablemap.cxx b/comphelper/source/container/enumerablemap.cxx new file mode 100644 index 000000000000..c7179ff07b91 --- /dev/null +++ b/comphelper/source/container/enumerablemap.cxx @@ -0,0 +1,999 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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_comphelper.hxx" + +#include "comphelper_module.hxx" +#include "comphelper/anytostring.hxx" +#include "comphelper/componentbase.hxx" +#include "comphelper/componentcontext.hxx" +#include "comphelper/extract.hxx" + +/** === begin UNO includes === **/ +#include <com/sun/star/container/XEnumerableMap.hpp> +#include <com/sun/star/lang/XInitialization.hpp> +#include <com/sun/star/ucb/AlreadyInitializedException.hpp> +#include <com/sun/star/beans/Pair.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +/** === end UNO includes === **/ + +#include <cppuhelper/compbase3.hxx> +#include <cppuhelper/implbase1.hxx> +#include <rtl/math.hxx> +#include <rtl/ustrbuf.hxx> +#include <typelib/typedescription.hxx> + +#include <functional> +#include <map> +#include <memory> +#include <boost/shared_ptr.hpp> + +//........................................................................ +namespace comphelper +{ +//........................................................................ + + /** === begin UNO using === **/ + using ::com::sun::star::uno::Reference; + using ::com::sun::star::uno::XInterface; + using ::com::sun::star::uno::UNO_QUERY; + using ::com::sun::star::uno::UNO_QUERY_THROW; + using ::com::sun::star::uno::UNO_SET_THROW; + using ::com::sun::star::uno::Exception; + using ::com::sun::star::uno::RuntimeException; + using ::com::sun::star::uno::Any; + using ::com::sun::star::uno::makeAny; + using ::com::sun::star::uno::Sequence; + using ::com::sun::star::uno::Type; + using ::com::sun::star::container::XEnumerableMap; + using ::com::sun::star::lang::NoSupportException; + using ::com::sun::star::beans::IllegalTypeException; + using ::com::sun::star::container::NoSuchElementException; + using ::com::sun::star::lang::IllegalArgumentException; + using ::com::sun::star::lang::XInitialization; + using ::com::sun::star::ucb::AlreadyInitializedException; + using ::com::sun::star::beans::Pair; + using ::com::sun::star::uno::TypeClass; + using ::com::sun::star::uno::TypeClass_VOID; + using ::com::sun::star::uno::TypeClass_CHAR; + using ::com::sun::star::uno::TypeClass_BOOLEAN; + using ::com::sun::star::uno::TypeClass_BYTE; + using ::com::sun::star::uno::TypeClass_SHORT; + using ::com::sun::star::uno::TypeClass_UNSIGNED_SHORT; + using ::com::sun::star::uno::TypeClass_LONG; + using ::com::sun::star::uno::TypeClass_UNSIGNED_LONG; + using ::com::sun::star::uno::TypeClass_HYPER; + using ::com::sun::star::uno::TypeClass_UNSIGNED_HYPER; + using ::com::sun::star::uno::TypeClass_FLOAT; + using ::com::sun::star::uno::TypeClass_DOUBLE; + using ::com::sun::star::uno::TypeClass_STRING; + using ::com::sun::star::uno::TypeClass_TYPE; + using ::com::sun::star::uno::TypeClass_ENUM; + using ::com::sun::star::uno::TypeClass_INTERFACE; + using ::com::sun::star::uno::TypeClass_UNKNOWN; + using ::com::sun::star::uno::TypeClass_ANY; + using ::com::sun::star::uno::TypeClass_EXCEPTION; + using ::com::sun::star::uno::TypeClass_STRUCT; + using ::com::sun::star::uno::TypeClass_UNION; + using ::com::sun::star::lang::XServiceInfo; + using ::com::sun::star::uno::XComponentContext; + using ::com::sun::star::container::XEnumeration; + using ::com::sun::star::uno::TypeDescription; + using ::com::sun::star::lang::WrappedTargetException; + using ::com::sun::star::lang::DisposedException; + /** === end UNO using === **/ + + //==================================================================== + //= IKeyPredicateLess + //==================================================================== + class SAL_NO_VTABLE IKeyPredicateLess + { + public: + virtual bool isLess( const Any& _lhs, const Any& _rhs ) const = 0; + virtual ~IKeyPredicateLess() {} + }; + + //==================================================================== + //= LessPredicateAdapter + //==================================================================== + struct LessPredicateAdapter : public ::std::binary_function< Any, Any, bool > + { + LessPredicateAdapter( const IKeyPredicateLess& _predicate ) + :m_predicate( _predicate ) + { + } + + bool operator()( const Any& _lhs, const Any& _rhs ) const + { + return m_predicate.isLess( _lhs, _rhs ); + } + + private: + const IKeyPredicateLess& m_predicate; + + private: + LessPredicateAdapter(); // never implemented + }; + + //==================================================================== + //= ScalarPredicateLess + //==================================================================== + template< typename SCALAR > + class ScalarPredicateLess : public IKeyPredicateLess + { + public: + virtual bool isLess( const Any& _lhs, const Any& _rhs ) const + { + SCALAR lhs(0), rhs(0); + if ( !( _lhs >>= lhs ) + || !( _rhs >>= rhs ) + ) + throw IllegalArgumentException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Unsupported key type." ) ), NULL, 1 ); + return lhs < rhs; + } + }; + + //==================================================================== + //= StringPredicateLess + //==================================================================== + class StringPredicateLess : public IKeyPredicateLess + { + public: + virtual bool isLess( const Any& _lhs, const Any& _rhs ) const + { + ::rtl::OUString lhs, rhs; + if ( !( _lhs >>= lhs ) + || !( _rhs >>= rhs ) + ) + throw IllegalArgumentException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Unsupported key type." ) ), NULL, 1 ); + return lhs < rhs; + } + }; + + //==================================================================== + //= TypePredicateLess + //==================================================================== + class TypePredicateLess : public IKeyPredicateLess + { + public: + virtual bool isLess( const Any& _lhs, const Any& _rhs ) const + { + Type lhs, rhs; + if ( !( _lhs >>= lhs ) + || !( _rhs >>= rhs ) + ) + throw IllegalArgumentException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Unsupported key type." ) ), NULL, 1 ); + return lhs.getTypeName() < rhs.getTypeName(); + } + }; + + //==================================================================== + //= EnumPredicateLess + //==================================================================== + class EnumPredicateLess : public IKeyPredicateLess + { + public: + EnumPredicateLess( const Type& _enumType ) + :m_enumType( _enumType ) + { + } + + virtual bool isLess( const Any& _lhs, const Any& _rhs ) const + { + sal_Int32 lhs(0), rhs(0); + if ( !::cppu::enum2int( lhs, _lhs ) + || !::cppu::enum2int( rhs, _rhs ) + || !_lhs.getValueType().equals( m_enumType ) + || !_rhs.getValueType().equals( m_enumType ) + ) + throw IllegalArgumentException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Unsupported key type." ) ), NULL, 1 ); + return lhs < rhs; + } + + private: + const Type m_enumType; + }; + + //==================================================================== + //= InterfacePredicateLess + //==================================================================== + class InterfacePredicateLess : public IKeyPredicateLess + { + public: + virtual bool isLess( const Any& _lhs, const Any& _rhs ) const + { + if ( ( _lhs.getValueTypeClass() != TypeClass_INTERFACE ) + || ( _rhs.getValueTypeClass() != TypeClass_INTERFACE ) + ) + throw IllegalArgumentException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Unsupported key type." ) ), NULL, 1 ); + + Reference< XInterface > lhs( _lhs, UNO_QUERY ); + Reference< XInterface > rhs( _rhs, UNO_QUERY ); + return lhs.get() < rhs.get(); + } + }; + + //==================================================================== + //= MapData + //==================================================================== + class IMapModificationListener; + typedef ::std::vector< IMapModificationListener* > MapListeners; + + typedef ::std::map< Any, Any, LessPredicateAdapter > KeyedValues; + struct MapData + { + Type m_aKeyType; + Type m_aValueType; + ::std::auto_ptr< KeyedValues > m_pValues; + ::boost::shared_ptr< IKeyPredicateLess > m_pKeyCompare; + bool m_bMutable; + MapListeners m_aModListeners; + + MapData() + :m_bMutable( true ) + { + } + + MapData( const MapData& _source ) + :m_aKeyType( _source.m_aKeyType ) + ,m_aValueType( _source.m_aValueType ) + ,m_pValues( new KeyedValues( *_source.m_pValues ) ) + ,m_pKeyCompare( _source.m_pKeyCompare ) + ,m_bMutable( false ) + ,m_aModListeners() + { + } + private: + MapData& operator=( const MapData& _source ); // not implemented + }; + + //==================================================================== + //= IMapModificationListener + //==================================================================== + /** implemented by components who want to be notified of modifications in the MapData they work with + */ + class SAL_NO_VTABLE IMapModificationListener + { + public: + /// called when the map was modified + virtual void mapModified() = 0; + virtual ~IMapModificationListener() + { + } + }; + + //==================================================================== + //= MapData helpers + //==================================================================== + //-------------------------------------------------------------------- + static void lcl_registerMapModificationListener( MapData& _mapData, IMapModificationListener& _listener ) + { + #if OSL_DEBUG_LEVEL > 0 + for ( MapListeners::const_iterator lookup = _mapData.m_aModListeners.begin(); + lookup != _mapData.m_aModListeners.end(); + ++lookup + ) + { + OSL_ENSURE( *lookup != &_listener, "lcl_registerMapModificationListener: this listener is already registered!" ); + } + #endif + _mapData.m_aModListeners.push_back( &_listener ); + } + + //-------------------------------------------------------------------- + static void lcl_revokeMapModificationListener( MapData& _mapData, IMapModificationListener& _listener ) + { + for ( MapListeners::iterator lookup = _mapData.m_aModListeners.begin(); + lookup != _mapData.m_aModListeners.end(); + ++lookup + ) + { + if ( *lookup == &_listener ) + { + _mapData.m_aModListeners.erase( lookup ); + return; + } + } + OSL_ENSURE( false, "lcl_revokeMapModificationListener: the listener is not registered!" ); + } + + //-------------------------------------------------------------------- + static void lcl_notifyMapDataListeners_nothrow( const MapData& _mapData ) + { + for ( MapListeners::const_iterator loop = _mapData.m_aModListeners.begin(); + loop != _mapData.m_aModListeners.end(); + ++loop + ) + { + (*loop)->mapModified(); + } + } + + //==================================================================== + //= EnumerableMap + //==================================================================== + typedef ::cppu::WeakAggComponentImplHelper3 < XInitialization + , XEnumerableMap + , XServiceInfo + > Map_IFace; + + class COMPHELPER_DLLPRIVATE EnumerableMap :public Map_IFace + ,public ComponentBase + { + protected: + EnumerableMap( const ComponentContext& _rContext ); + virtual ~EnumerableMap(); + + // XInitialization + virtual void SAL_CALL initialize( const Sequence< Any >& aArguments ) throw (Exception, RuntimeException); + + // XEnumerableMap + virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createKeyEnumeration( ::sal_Bool _Isolated ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createValueEnumeration( ::sal_Bool _Isolated ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createElementEnumeration( ::sal_Bool _Isolated ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); + + // XMap + virtual Type SAL_CALL getKeyType() throw (RuntimeException); + virtual Type SAL_CALL getValueType() throw (RuntimeException); + virtual void SAL_CALL clear( ) throw (NoSupportException, RuntimeException); + virtual ::sal_Bool SAL_CALL containsKey( const Any& _key ) throw (IllegalTypeException, IllegalArgumentException, RuntimeException); + virtual ::sal_Bool SAL_CALL containsValue( const Any& _value ) throw (IllegalTypeException, IllegalArgumentException, RuntimeException); + virtual Any SAL_CALL get( const Any& _key ) throw (IllegalTypeException, IllegalArgumentException, NoSuchElementException, RuntimeException); + virtual Any SAL_CALL put( const Any& _key, const Any& _value ) throw (NoSupportException, IllegalTypeException, IllegalArgumentException, RuntimeException); + virtual Any SAL_CALL remove( const Any& _key ) throw (NoSupportException, IllegalTypeException, IllegalArgumentException, NoSuchElementException, RuntimeException); + + // XElementAccess (base of XMap) + virtual Type SAL_CALL getElementType() throw (RuntimeException); + virtual ::sal_Bool SAL_CALL hasElements() throw (RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (RuntimeException); + virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (RuntimeException); + virtual Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (RuntimeException); + + public: + // XServiceInfo, static version (used for component registration) + static ::rtl::OUString SAL_CALL getImplementationName_static( ); + static Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static( ); + static Reference< XInterface > SAL_CALL Create( const Reference< XComponentContext >& ); + + private: + void impl_initValues_throw( const Sequence< Pair< Any, Any > >& _initialValues ); + + /// throws a IllegalTypeException if the given value is not compatible with our ValueType + void impl_checkValue_throw( const Any& _value ) const; + void impl_checkKey_throw( const Any& _key ) const; + void impl_checkNaN_throw( const Any& _keyOrValue, const Type& _keyOrValueType ) const; + void impl_checkMutable_throw() const; + + private: + ::osl::Mutex m_aMutex; + ComponentContext m_aContext; + MapData m_aData; + + ::std::vector< ::com::sun::star::uno::WeakReference< XInterface > > + m_aDependentComponents; + }; + + //==================================================================== + //= EnumerationType + //==================================================================== + enum EnumerationType + { + eKeys, eValues, eBoth + }; + + //==================================================================== + //= MapEnumerator + //==================================================================== + class MapEnumerator : public IMapModificationListener + { + public: + MapEnumerator( ::cppu::OWeakObject& _rParent, MapData& _mapData, const EnumerationType _type ) + :m_rParent( _rParent ) + ,m_rMapData( _mapData ) + ,m_eType( _type ) + ,m_mapPos( _mapData.m_pValues->begin() ) + ,m_disposed( false ) + { + lcl_registerMapModificationListener( m_rMapData, *this ); + } + + virtual ~MapEnumerator() + { + dispose(); + } + + void dispose() + { + if ( !m_disposed ) + { + lcl_revokeMapModificationListener( m_rMapData, *this ); + m_disposed = true; + } + } + + // XEnumeration equivalents + ::sal_Bool hasMoreElements(); + Any nextElement(); + + // IMapModificationListener + virtual void mapModified(); + + private: + ::cppu::OWeakObject& m_rParent; + MapData& m_rMapData; + const EnumerationType m_eType; + KeyedValues::const_iterator m_mapPos; + bool m_disposed; + + private: + MapEnumerator(); // not implemented + MapEnumerator( const MapEnumerator& ); // not implemented + MapEnumerator& operator=( const MapEnumerator& ); // not implemented + }; + + //==================================================================== + //= MapEnumeration + //==================================================================== + typedef ::cppu::WeakImplHelper1 < XEnumeration + > MapEnumeration_Base; + class MapEnumeration :public ComponentBase + ,public MapEnumeration_Base + { + public: + MapEnumeration( ::cppu::OWeakObject& _parentMap, MapData& _mapData, ::cppu::OBroadcastHelper& _rBHelper, + const EnumerationType _type, const bool _isolated ) + :ComponentBase( _rBHelper, ComponentBase::NoInitializationNeeded() ) + ,m_xKeepMapAlive( _parentMap ) + ,m_pMapDataCopy( _isolated ? new MapData( _mapData ) : NULL ) + ,m_aEnumerator( *this, _isolated ? *m_pMapDataCopy : _mapData, _type ) + { + } + + // XEnumeration + virtual ::sal_Bool SAL_CALL hasMoreElements( ) throw (RuntimeException); + virtual Any SAL_CALL nextElement( ) throw (NoSuchElementException, WrappedTargetException, RuntimeException); + + protected: + virtual ~MapEnumeration() + { + acquire(); + { + ::osl::MutexGuard aGuard( getMutex() ); + m_aEnumerator.dispose(); + m_pMapDataCopy.reset(); + } + } + + private: + // sicne we share our mutex with the main map, we need to keep it alive as long as we live + Reference< XInterface > m_xKeepMapAlive; + ::std::auto_ptr< MapData > m_pMapDataCopy; + MapEnumerator m_aEnumerator; + }; + + //==================================================================== + //= EnumerableMap + //==================================================================== + //-------------------------------------------------------------------- + EnumerableMap::EnumerableMap( const ComponentContext& _rContext ) + :Map_IFace( m_aMutex ) + ,ComponentBase( Map_IFace::rBHelper ) + ,m_aContext( _rContext ) + { + } + + //-------------------------------------------------------------------- + EnumerableMap::~EnumerableMap() + { + if ( !impl_isDisposed() ) + { + acquire(); + dispose(); + } + } + + //-------------------------------------------------------------------- + void SAL_CALL EnumerableMap::initialize( const Sequence< Any >& _arguments ) throw (Exception, RuntimeException) + { + ComponentMethodGuard aGuard( *this, ComponentMethodGuard::WithoutInit ); + if ( impl_isInitialized_nothrow() ) + throw AlreadyInitializedException(); + + sal_Int32 nArgumentCount = _arguments.getLength(); + if ( ( nArgumentCount != 2 ) && ( nArgumentCount != 3 ) ) + throw IllegalArgumentException(); + + Type aKeyType, aValueType; + if ( !( _arguments[0] >>= aKeyType ) ) + throw IllegalArgumentException( ::rtl::OUString::createFromAscii( "com.sun.star.uno.Type expected." ), *this, 1 ); + if ( !( _arguments[1] >>= aValueType ) ) + throw IllegalArgumentException( ::rtl::OUString::createFromAscii( "com.sun.star.uno.Type expected." ), *this, 2 ); + + Sequence< Pair< Any, Any > > aInitialValues; + bool bMutable = true; + if ( nArgumentCount == 3 ) + { + if ( !( _arguments[2] >>= aInitialValues ) ) + throw IllegalArgumentException( ::rtl::OUString::createFromAscii( "[]com.sun.star.beans.Pair<any,any> expected." ), *this, 2 ); + bMutable = false; + } + + // for the value, anything is allowed, except VOID + if ( ( aValueType.getTypeClass() == TypeClass_VOID ) || ( aValueType.getTypeClass() == TypeClass_UNKNOWN ) ) + throw IllegalTypeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Unsupported value type." ) ), *this ); + + // create the comparator for the KeyType, and throw if the type is not supported + TypeClass eKeyTypeClass = aKeyType.getTypeClass(); + ::std::auto_ptr< IKeyPredicateLess > pComparator; + switch ( eKeyTypeClass ) + { + case TypeClass_CHAR: + pComparator.reset( new ScalarPredicateLess< sal_Unicode >() ); + break; + case TypeClass_BOOLEAN: + pComparator.reset( new ScalarPredicateLess< sal_Bool >() ); + break; + case TypeClass_BYTE: + pComparator.reset( new ScalarPredicateLess< sal_Int8 >() ); + break; + case TypeClass_SHORT: + pComparator.reset( new ScalarPredicateLess< sal_Int16 >() ); + break; + case TypeClass_UNSIGNED_SHORT: + pComparator.reset( new ScalarPredicateLess< sal_uInt16 >() ); + break; + case TypeClass_LONG: + pComparator.reset( new ScalarPredicateLess< sal_Int32 >() ); + break; + case TypeClass_UNSIGNED_LONG: + pComparator.reset( new ScalarPredicateLess< sal_uInt32 >() ); + break; + case TypeClass_HYPER: + pComparator.reset( new ScalarPredicateLess< sal_Int64 >() ); + break; + case TypeClass_UNSIGNED_HYPER: + pComparator.reset( new ScalarPredicateLess< sal_uInt64 >() ); + break; + case TypeClass_FLOAT: + pComparator.reset( new ScalarPredicateLess< float >() ); + break; + case TypeClass_DOUBLE: + pComparator.reset( new ScalarPredicateLess< double >() ); + break; + case TypeClass_STRING: + pComparator.reset( new StringPredicateLess() ); + break; + case TypeClass_TYPE: + pComparator.reset( new TypePredicateLess() ); + break; + case TypeClass_ENUM: + pComparator.reset( new EnumPredicateLess( aKeyType ) ); + break; + case TypeClass_INTERFACE: + pComparator.reset( new InterfacePredicateLess() ); + break; + default: + throw IllegalTypeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Unsupported key type." ) ), *this ); + } + + // init members + m_aData.m_aKeyType = aKeyType; + m_aData.m_aValueType = aValueType; + m_aData.m_pKeyCompare = pComparator; + m_aData.m_pValues.reset( new KeyedValues( *m_aData.m_pKeyCompare ) ); + m_aData.m_bMutable = bMutable; + + if ( aInitialValues.getLength() ) + impl_initValues_throw( aInitialValues ); + + setInitialized(); + } + + //-------------------------------------------------------------------- + void EnumerableMap::impl_initValues_throw( const Sequence< Pair< Any, Any > >& _initialValues ) + { + OSL_PRECOND( m_aData.m_pValues.get() && m_aData.m_pValues->empty(), "EnumerableMap::impl_initValues_throw: illegal call!" ); + if ( !m_aData.m_pValues.get() || !m_aData.m_pValues->empty() ) + throw RuntimeException(); + + const Pair< Any, Any >* mapping = _initialValues.getConstArray(); + const Pair< Any, Any >* mappingEnd = mapping + _initialValues.getLength(); + Any normalizedValue; + for ( ; mapping != mappingEnd; ++mapping ) + { + impl_checkValue_throw( mapping->Second ); + (*m_aData.m_pValues)[ mapping->First ] = mapping->Second; + } + } + + //-------------------------------------------------------------------- + void EnumerableMap::impl_checkValue_throw( const Any& _value ) const + { + if ( !_value.hasValue() ) + // nothing to do, NULL values are always allowed, regardless of the ValueType + return; + + TypeClass eAllowedTypeClass = m_aData.m_aValueType.getTypeClass(); + bool bValid = false; + + switch ( eAllowedTypeClass ) + { + default: + bValid = ( _value.getValueTypeClass() == eAllowedTypeClass ); + break; + case TypeClass_ANY: + bValid = true; + break; + case TypeClass_INTERFACE: + { + // special treatment: _value might contain the proper type, but the interface + // might actually be NULL. Which is still valid ... + if ( m_aData.m_aValueType.isAssignableFrom( _value.getValueType() ) ) + // this also catches the special case where XFoo is our value type, + // and _value contains a NULL-reference to XFoo, or a derived type + bValid = true; + else + { + Reference< XInterface > xValue( _value, UNO_QUERY ); + Any aTypedValue; + if ( xValue.is() ) + // XInterface is not-NULL, but is X(ValueType) not-NULL, too? + xValue.set( xValue->queryInterface( m_aData.m_aValueType ), UNO_QUERY ); + bValid = xValue.is(); + } + } + break; + case TypeClass_EXCEPTION: + case TypeClass_STRUCT: + case TypeClass_UNION: + { + // values are accepted if and only if their type equals, or is derived from, our value type + + if ( _value.getValueTypeClass() != eAllowedTypeClass ) + bValid = false; + else + { + const TypeDescription aValueTypeDesc( _value.getValueType() ); + const TypeDescription aRequiredTypeDesc( m_aData.m_aValueType ); + + const _typelib_CompoundTypeDescription* pValueCompoundTypeDesc = + reinterpret_cast< const _typelib_CompoundTypeDescription* >( aValueTypeDesc.get() ); + + while ( pValueCompoundTypeDesc ) + { + if ( typelib_typedescription_equals( &pValueCompoundTypeDesc->aBase, aRequiredTypeDesc.get() ) ) + break; + pValueCompoundTypeDesc = pValueCompoundTypeDesc->pBaseTypeDescription; + } + bValid = ( pValueCompoundTypeDesc != NULL ); + } + } + break; + } + + if ( !bValid ) + { + ::rtl::OUStringBuffer aMessage; + aMessage.appendAscii( "Incompatible value type. Found '" ); + aMessage.append( _value.getValueTypeName() ); + aMessage.appendAscii( "', where '" ); + aMessage.append( m_aData.m_aValueType.getTypeName() ); + aMessage.appendAscii( "' (or compatible type) is expected." ); + throw IllegalTypeException( aMessage.makeStringAndClear(), *const_cast< EnumerableMap* >( this ) ); + } + + impl_checkNaN_throw( _value, m_aData.m_aValueType ); + } + + //-------------------------------------------------------------------- + void EnumerableMap::impl_checkNaN_throw( const Any& _keyOrValue, const Type& _keyOrValueType ) const + { + if ( ( _keyOrValueType.getTypeClass() == TypeClass_DOUBLE ) + || ( _keyOrValueType.getTypeClass() == TypeClass_FLOAT ) + ) + { + double nValue(0); + if ( _keyOrValue >>= nValue ) + if ( ::rtl::math::isNan( nValue ) ) + throw IllegalArgumentException( + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NaN (not-a-number) not supported by this implementation." ) ), + *const_cast< EnumerableMap* >( this ), 0 ); + // (note that the case of _key not containing a float/double value is handled in the + // respective IKeyPredicateLess implementation, so there's no need to handle this here.) + } + } + + //-------------------------------------------------------------------- + void EnumerableMap::impl_checkKey_throw( const Any& _key ) const + { + if ( !_key.hasValue() ) + throw IllegalArgumentException( + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NULL keys not supported by this implementation." ) ), + *const_cast< EnumerableMap* >( this ), 0 ); + + impl_checkNaN_throw( _key, m_aData.m_aKeyType ); + } + + //-------------------------------------------------------------------- + void EnumerableMap::impl_checkMutable_throw() const + { + if ( !m_aData.m_bMutable ) + throw NoSupportException( + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "The map is immutable." ) ), + *const_cast< EnumerableMap* >( this ) ); + } + + //-------------------------------------------------------------------- + Reference< XEnumeration > SAL_CALL EnumerableMap::createKeyEnumeration( ::sal_Bool _Isolated ) throw (NoSupportException, RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + return new MapEnumeration( *this, m_aData, getBroadcastHelper(), eKeys, _Isolated ); + } + + //-------------------------------------------------------------------- + Reference< XEnumeration > SAL_CALL EnumerableMap::createValueEnumeration( ::sal_Bool _Isolated ) throw (NoSupportException, RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + return new MapEnumeration( *this, m_aData, getBroadcastHelper(), eValues, _Isolated ); + } + + //-------------------------------------------------------------------- + Reference< XEnumeration > SAL_CALL EnumerableMap::createElementEnumeration( ::sal_Bool _Isolated ) throw (NoSupportException, RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + return new MapEnumeration( *this, m_aData, getBroadcastHelper(), eBoth, _Isolated ); + } + + //-------------------------------------------------------------------- + Type SAL_CALL EnumerableMap::getKeyType() throw (RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + return m_aData.m_aKeyType; + } + + //-------------------------------------------------------------------- + Type SAL_CALL EnumerableMap::getValueType() throw (RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + return m_aData.m_aValueType; + } + + //-------------------------------------------------------------------- + void SAL_CALL EnumerableMap::clear( ) throw (NoSupportException, RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + impl_checkMutable_throw(); + + m_aData.m_pValues->clear(); + + lcl_notifyMapDataListeners_nothrow( m_aData ); + } + + //-------------------------------------------------------------------- + ::sal_Bool SAL_CALL EnumerableMap::containsKey( const Any& _key ) throw (IllegalTypeException, IllegalArgumentException, RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + impl_checkKey_throw( _key ); + + KeyedValues::const_iterator pos = m_aData.m_pValues->find( _key ); + return ( pos != m_aData.m_pValues->end() ); + } + + //-------------------------------------------------------------------- + ::sal_Bool SAL_CALL EnumerableMap::containsValue( const Any& _value ) throw (IllegalTypeException, IllegalArgumentException, RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + impl_checkValue_throw( _value ); + + for ( KeyedValues::const_iterator mapping = m_aData.m_pValues->begin(); + mapping != m_aData.m_pValues->end(); + ++mapping + ) + { + if ( mapping->second == _value ) + return sal_True; + } + return sal_False; + } + + //-------------------------------------------------------------------- + Any SAL_CALL EnumerableMap::get( const Any& _key ) throw (IllegalTypeException, IllegalArgumentException, NoSuchElementException, RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + impl_checkKey_throw( _key ); + + KeyedValues::const_iterator pos = m_aData.m_pValues->find( _key ); + if ( pos == m_aData.m_pValues->end() ) + throw NoSuchElementException( anyToString( _key ), *this ); + + return pos->second; + } + + //-------------------------------------------------------------------- + Any SAL_CALL EnumerableMap::put( const Any& _key, const Any& _value ) throw (NoSupportException, IllegalTypeException, IllegalArgumentException, RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + impl_checkMutable_throw(); + impl_checkKey_throw( _key ); + impl_checkValue_throw( _value ); + + Any previousValue; + + KeyedValues::iterator pos = m_aData.m_pValues->find( _key ); + if ( pos != m_aData.m_pValues->end() ) + { + previousValue = pos->second; + pos->second = _value; + } + else + { + (*m_aData.m_pValues)[ _key ] = _value; + } + + lcl_notifyMapDataListeners_nothrow( m_aData ); + + return previousValue; + } + + //-------------------------------------------------------------------- + Any SAL_CALL EnumerableMap::remove( const Any& _key ) throw (NoSupportException, IllegalTypeException, IllegalArgumentException, NoSuchElementException, RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + impl_checkMutable_throw(); + impl_checkKey_throw( _key ); + + Any previousValue; + + KeyedValues::iterator pos = m_aData.m_pValues->find( _key ); + if ( pos != m_aData.m_pValues->end() ) + { + previousValue = pos->second; + m_aData.m_pValues->erase( pos ); + } + + lcl_notifyMapDataListeners_nothrow( m_aData ); + + return previousValue; + } + + //-------------------------------------------------------------------- + Type SAL_CALL EnumerableMap::getElementType() throw (RuntimeException) + { + return ::cppu::UnoType< Pair< Any, Any > >::get(); + } + + //-------------------------------------------------------------------- + ::sal_Bool SAL_CALL EnumerableMap::hasElements() throw (RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + return m_aData.m_pValues->empty(); + } + + //-------------------------------------------------------------------- + ::rtl::OUString SAL_CALL EnumerableMap::getImplementationName( ) throw (RuntimeException) + { + return getImplementationName_static(); + } + + //-------------------------------------------------------------------- + ::sal_Bool SAL_CALL EnumerableMap::supportsService( const ::rtl::OUString& _serviceName ) throw (RuntimeException) + { + Sequence< ::rtl::OUString > aServices( getSupportedServiceNames() ); + for ( sal_Int32 i=0; i<aServices.getLength(); ++i ) + if ( _serviceName == aServices[i] ) + return sal_True; + return sal_False; + } + + //-------------------------------------------------------------------- + Sequence< ::rtl::OUString > SAL_CALL EnumerableMap::getSupportedServiceNames( ) throw (RuntimeException) + { + return getSupportedServiceNames_static(); + } + + //-------------------------------------------------------------------- + ::rtl::OUString SAL_CALL EnumerableMap::getImplementationName_static( ) + { + return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.comp.comphelper.EnumerableMap" ) ); + } + + //-------------------------------------------------------------------- + Sequence< ::rtl::OUString > SAL_CALL EnumerableMap::getSupportedServiceNames_static( ) + { + Sequence< ::rtl::OUString > aServiceNames(1); + aServiceNames[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.container.EnumerableMap" ) ); + return aServiceNames; + } + + //-------------------------------------------------------------------- + Reference< XInterface > SAL_CALL EnumerableMap::Create( const Reference< XComponentContext >& _context ) + { + return *new EnumerableMap( ComponentContext( _context ) ); + } + + //==================================================================== + //= MapEnumerator + //==================================================================== + //-------------------------------------------------------------------- + ::sal_Bool MapEnumerator::hasMoreElements() + { + if ( m_disposed ) + throw DisposedException( ::rtl::OUString(), m_rParent ); + return m_mapPos != m_rMapData.m_pValues->end(); + } + + //-------------------------------------------------------------------- + Any MapEnumerator::nextElement() + { + if ( m_disposed ) + throw DisposedException( ::rtl::OUString(), m_rParent ); + if ( m_mapPos == m_rMapData.m_pValues->end() ) + throw NoSuchElementException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "No more elements." ) ), m_rParent ); + + Any aNextElement; + switch ( m_eType ) + { + case eKeys: aNextElement = m_mapPos->first; break; + case eValues: aNextElement = m_mapPos->second; break; + case eBoth: aNextElement <<= Pair< Any, Any >( m_mapPos->first, m_mapPos->second ); break; + } + ++m_mapPos; + return aNextElement; + } + + //-------------------------------------------------------------------- + void MapEnumerator::mapModified() + { + m_disposed = true; + } + + //==================================================================== + //= MapEnumeration - implementation + //==================================================================== + //-------------------------------------------------------------------- + ::sal_Bool SAL_CALL MapEnumeration::hasMoreElements( ) throw (RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + return m_aEnumerator.hasMoreElements(); + } + + //-------------------------------------------------------------------- + Any SAL_CALL MapEnumeration::nextElement( ) throw (NoSuchElementException, WrappedTargetException, RuntimeException) + { + ComponentMethodGuard aGuard( *this ); + return m_aEnumerator.nextElement(); + } + +//........................................................................ +} // namespace comphelper +//........................................................................ + +void createRegistryInfo_Map() +{ + ::comphelper::module::OAutoRegistration< ::comphelper::EnumerableMap > aAutoRegistration; +} diff --git a/comphelper/source/container/makefile.mk b/comphelper/source/container/makefile.mk index 2c63d2234a03..2c43a774b030 100644 --- a/comphelper/source/container/makefile.mk +++ b/comphelper/source/container/makefile.mk @@ -50,7 +50,8 @@ SLOFILES=\ $(SLO)$/containermultiplexer.obj \ $(SLO)$/IndexedPropertyValuesContainer.obj \ $(SLO)$/embeddedobjectcontainer.obj \ - $(SLO)$/NamedPropertyValuesContainer.obj + $(SLO)$/NamedPropertyValuesContainer.obj \ + $(SLO)$/enumerablemap.obj # --- Targets ---------------------------------- diff --git a/comphelper/source/inc/comphelper_module.hxx b/comphelper/source/inc/comphelper_module.hxx new file mode 100644 index 000000000000..5bbac6f9efc6 --- /dev/null +++ b/comphelper/source/inc/comphelper_module.hxx @@ -0,0 +1,42 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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 COMPHELPER_COMPHELPER_MODULE_HXX +#define COMPHELPER_COMPHELPER_MODULE_HXX + +#include "comphelper/componentmodule.hxx" + +//........................................................................ +namespace comphelper { namespace module +{ +//........................................................................ + + DECLARE_COMPONENT_MODULE( ComphelperModule, ComphelperModuleClient ) + +//........................................................................ +} } // namespace comphelper::module +//........................................................................ + +#endif // COMPHELPER_COMPHELPER_MODULE_HXX diff --git a/comphelper/source/misc/comphelper_module.cxx b/comphelper/source/misc/comphelper_module.cxx new file mode 100644 index 000000000000..08cb48b3ef42 --- /dev/null +++ b/comphelper/source/misc/comphelper_module.cxx @@ -0,0 +1,40 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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_comphelper.hxx" + +#include "comphelper_module.hxx" + +//........................................................................ +namespace comphelper { namespace module +{ +//........................................................................ + + IMPLEMENT_COMPONENT_MODULE( ComphelperModule ); + +//........................................................................ +} } // namespace comphelper::module +//........................................................................ diff --git a/comphelper/source/misc/comphelper_services.cxx b/comphelper/source/misc/comphelper_services.cxx new file mode 100644 index 000000000000..77ab145e2581 --- /dev/null +++ b/comphelper/source/misc/comphelper_services.cxx @@ -0,0 +1,74 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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_comphelper.hxx" + +#include "comphelper_module.hxx" + +//-------------------------------------------------------------------- +extern void createRegistryInfo_OPropertyBag(); +extern void createRegistryInfo_SequenceOutputStream(); +extern void createRegistryInfo_SequenceInputStream(); +extern void createRegistryInfo_UNOMemoryStream(); +extern void createRegistryInfo_IndexedPropertyValuesContainer(); +extern void createRegistryInfo_NamedPropertyValuesContainer(); +extern void createRegistryInfo_AnyCompareFactory(); +extern void createRegistryInfo_OfficeInstallationDirectories(); +extern void createRegistryInfo_OInstanceLocker(); +extern void createRegistryInfo_Map(); + +//........................................................................ +namespace comphelper { namespace module +{ +//........................................................................ + + static void initializeModule() + { + static bool bInitialized( false ); + if ( !bInitialized ) + { + ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); + if ( !bInitialized ) + { + createRegistryInfo_OPropertyBag(); + createRegistryInfo_SequenceOutputStream(); + createRegistryInfo_SequenceInputStream(); + createRegistryInfo_UNOMemoryStream(); + createRegistryInfo_IndexedPropertyValuesContainer(); + createRegistryInfo_NamedPropertyValuesContainer(); + createRegistryInfo_AnyCompareFactory(); + createRegistryInfo_OfficeInstallationDirectories(); + createRegistryInfo_OInstanceLocker(); + createRegistryInfo_Map(); + } + } + } + +//........................................................................ +} } // namespace comphelper::module +//........................................................................ + +IMPLEMENT_COMPONENT_LIBRARY_API( ::comphelper::module::ComphelperModule, ::comphelper::module::initializeModule ) diff --git a/comphelper/source/misc/componentbase.cxx b/comphelper/source/misc/componentbase.cxx new file mode 100644 index 000000000000..bf230f59b132 --- /dev/null +++ b/comphelper/source/misc/componentbase.cxx @@ -0,0 +1,73 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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_comphelper.hxx" + +#include "comphelper/componentbase.hxx" + +/** === begin UNO includes === **/ +#include <com/sun/star/lang/NotInitializedException.hpp> +#include <com/sun/star/lang/DisposedException.hpp> +/** === end UNO includes === **/ + +//........................................................................ +namespace comphelper +{ +//........................................................................ + + /** === begin UNO using === **/ + using ::com::sun::star::lang::NotInitializedException; + using ::com::sun::star::lang::DisposedException; + using ::com::sun::star::uno::Reference; + using ::com::sun::star::uno::XInterface; + /** === end UNO using === **/ + + //==================================================================== + //= ComponentBase + //==================================================================== + //-------------------------------------------------------------------- + void ComponentBase::impl_checkDisposed_throw() const + { + if ( m_rBHelper.bDisposed ) + throw DisposedException( ::rtl::OUString(), getComponent() ); + } + + //-------------------------------------------------------------------- + void ComponentBase::impl_checkInitialized_throw() const + { + if ( !m_bInitialized ) + throw NotInitializedException( ::rtl::OUString(), getComponent() ); + } + + //-------------------------------------------------------------------- + Reference< XInterface > ComponentBase::getComponent() const + { + return NULL; + } + +//........................................................................ +} // namespace comphelper +//........................................................................ diff --git a/comphelper/source/misc/documentiologring.cxx b/comphelper/source/misc/documentiologring.cxx new file mode 100644 index 000000000000..7969b938e108 --- /dev/null +++ b/comphelper/source/misc/documentiologring.cxx @@ -0,0 +1,175 @@ +/*************************************************************************
+ *
+ * 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: documentiologring.hxx,v $
+ * $Revision: 1.0 $
+ *
+ * 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_comphelper.hxx"
+
+#include <com/sun/star/frame/DoubleInitializationException.hpp>
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
+
+#include "documentiologring.hxx"
+
+using namespace ::com::sun::star;
+
+namespace comphelper
+{
+
+// ----------------------------------------------------------
+OSimpleLogRing::OSimpleLogRing( const uno::Reference< uno::XComponentContext >& /*xContext*/ )
+: m_aMessages( SIMPLELOGRING_SIZE )
+, m_bInitialized( sal_False )
+, m_bFull( sal_False )
+, m_nPos( 0 )
+{
+}
+
+// ----------------------------------------------------------
+OSimpleLogRing::~OSimpleLogRing()
+{
+}
+
+// ----------------------------------------------------------
+uno::Sequence< ::rtl::OUString > SAL_CALL OSimpleLogRing::impl_staticGetSupportedServiceNames()
+{
+ uno::Sequence< rtl::OUString > aResult( 1 );
+ aResult[0] = impl_staticGetServiceName();
+ return aResult;
+}
+
+// ----------------------------------------------------------
+::rtl::OUString SAL_CALL OSimpleLogRing::impl_staticGetImplementationName()
+{
+ return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.logging.SimpleLogRing" ) );
+}
+
+// ----------------------------------------------------------
+::rtl::OUString SAL_CALL OSimpleLogRing::impl_staticGetSingletonName()
+{
+ return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.logging.DocumentIOLogRing" ) );
+}
+
+// ----------------------------------------------------------
+::rtl::OUString SAL_CALL OSimpleLogRing::impl_staticGetServiceName()
+{
+ return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.logging.SimpleLogRing" ) );
+}
+
+// ----------------------------------------------------------
+uno::Reference< uno::XInterface > SAL_CALL OSimpleLogRing::impl_staticCreateSelfInstance( const uno::Reference< uno::XComponentContext >& rxContext )
+{
+ return static_cast< cppu::OWeakObject* >( new OSimpleLogRing( rxContext ) );
+}
+
+// XSimpleLogRing
+// ----------------------------------------------------------
+void SAL_CALL OSimpleLogRing::logString( const ::rtl::OUString& aMessage ) throw (uno::RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ m_aMessages[m_nPos] = aMessage;
+ if ( ++m_nPos >= m_aMessages.getLength() )
+ {
+ m_nPos = 0;
+ m_bFull = sal_True;
+ }
+
+ // if used once then default initialized
+ m_bInitialized = sal_True;
+}
+
+// ----------------------------------------------------------
+uno::Sequence< ::rtl::OUString > SAL_CALL OSimpleLogRing::getCollectedLog() throw (uno::RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ sal_Int32 nResLen = m_bFull ? m_aMessages.getLength() : m_nPos;
+ sal_Int32 nStart = m_bFull ? m_nPos : 0;
+ uno::Sequence< ::rtl::OUString > aResult( nResLen );
+
+ for ( sal_Int32 nInd = 0; nInd < nResLen; nInd++ )
+ aResult[nInd] = m_aMessages[ ( nStart + nInd ) % m_aMessages.getLength() ];
+
+ // if used once then default initialized
+ m_bInitialized = sal_True;
+
+ return aResult;
+}
+
+// XInitialization
+// ----------------------------------------------------------
+void SAL_CALL OSimpleLogRing::initialize( const uno::Sequence< uno::Any >& aArguments ) throw (uno::Exception, uno::RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+ if ( m_bInitialized )
+ throw frame::DoubleInitializationException();
+
+ if ( !m_refCount )
+ throw uno::RuntimeException(); // the object must be refcounted already!
+
+ sal_Int32 nLen = 0;
+ if ( aArguments.getLength() == 1 && ( aArguments[0] >>= nLen ) && nLen )
+ m_aMessages.realloc( nLen );
+ else
+ throw lang::IllegalArgumentException(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Nonnull size is expected as the first argument!" ) ),
+ uno::Reference< uno::XInterface >(),
+ 0 );
+
+ m_bInitialized = sal_True;
+}
+
+// XServiceInfo
+// ----------------------------------------------------------
+::rtl::OUString SAL_CALL OSimpleLogRing::getImplementationName() throw (uno::RuntimeException)
+{
+ return impl_staticGetImplementationName();
+}
+
+// ----------------------------------------------------------
+::sal_Bool SAL_CALL OSimpleLogRing::supportsService( const ::rtl::OUString& aServiceName ) throw (uno::RuntimeException)
+{
+ const uno::Sequence< rtl::OUString > & aSupportedNames = impl_staticGetSupportedServiceNames();
+ for ( sal_Int32 nInd = 0; nInd < aSupportedNames.getLength(); nInd++ )
+ {
+ if ( aSupportedNames[ nInd ].equals( aServiceName ) )
+ return sal_True;
+ }
+
+ return sal_False;
+}
+
+// ----------------------------------------------------------
+uno::Sequence< ::rtl::OUString > SAL_CALL OSimpleLogRing::getSupportedServiceNames() throw (uno::RuntimeException)
+{
+ return impl_staticGetSupportedServiceNames();
+}
+
+} // namespace comphelper
+
diff --git a/comphelper/source/misc/documentiologring.hxx b/comphelper/source/misc/documentiologring.hxx new file mode 100644 index 000000000000..ae7d2a6eaf19 --- /dev/null +++ b/comphelper/source/misc/documentiologring.hxx @@ -0,0 +1,92 @@ +/************************************************************************* + * + * 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: documentiologring.hxx,v $ + * $Revision: 1.0 $ + * + * 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 __DOCUMENTIOLOGRING_HXX_ +#define __DOCUMENTIOLOGRING_HXX_ + +#include <com/sun/star/logging/XSimpleLogRing.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/XInitialization.hpp> + +#include <osl/mutex.hxx> +#include <cppuhelper/implbase3.hxx> + +#define SIMPLELOGRING_SIZE 256 + +namespace comphelper +{ + +class OSimpleLogRing : public ::cppu::WeakImplHelper3< ::com::sun::star::logging::XSimpleLogRing, + ::com::sun::star::lang::XInitialization, + ::com::sun::star::lang::XServiceInfo > +{ + ::osl::Mutex m_aMutex; + ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aMessages; + + sal_Bool m_bInitialized; + sal_Bool m_bFull; + sal_Int32 m_nPos; + +public: + OSimpleLogRing( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext ); + virtual ~OSimpleLogRing(); + + static ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL + impl_staticGetSupportedServiceNames(); + + static ::rtl::OUString SAL_CALL impl_staticGetImplementationName(); + + static ::rtl::OUString SAL_CALL impl_staticGetSingletonName(); + + static ::rtl::OUString SAL_CALL impl_staticGetServiceName(); + + static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL + impl_staticCreateSelfInstance( + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ); + +// XSimpleLogRing + virtual void SAL_CALL logString( const ::rtl::OUString& aMessage ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getCollectedLog() throw (::com::sun::star::uno::RuntimeException); + +// XInitialization + virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); + +// XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); + +}; + +} // namespace comphelper + +#endif + diff --git a/comphelper/source/misc/facreg.cxx b/comphelper/source/misc/facreg.cxx deleted file mode 100644 index 9ad0e12597b0..000000000000 --- a/comphelper/source/misc/facreg.cxx +++ /dev/null @@ -1,246 +0,0 @@ -/************************************************************************* - * - * 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: facreg.cxx,v $ - * $Revision: 1.15 $ - * - * 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_comphelper.hxx" - -#include <string.h> -#include "sal/types.h" -#include <com/sun/star/registry/XRegistryKey.hpp> -#include <osl/diagnose.h> - -#include "rtl/ustrbuf.hxx" - -#include <cppuhelper/factory.hxx> -#include <uno/lbnames.h> - -#include "instancelocker.hxx" - -using namespace rtl; -using namespace com::sun::star; - -// IndexedPropertyValuesContainer -extern uno::Sequence< OUString > SAL_CALL IndexedPropertyValuesContainer_getSupportedServiceNames() throw(); -extern OUString SAL_CALL IndexedPropertyValuesContainer_getImplementationName() throw(); -extern uno::Reference< uno::XInterface > SAL_CALL IndexedPropertyValuesContainer_createInstance(const uno::Reference< uno::XComponentContext > & rxContext) throw( uno::Exception ); - -// NamedPropertyValuesContainer -extern uno::Sequence< OUString > SAL_CALL NamedPropertyValuesContainer_getSupportedServiceNames() throw(); -extern OUString SAL_CALL NamedPropertyValuesContainer_getImplementationName() throw(); -extern uno::Reference< uno::XInterface > SAL_CALL NamedPropertyValuesContainer_createInstance(const uno::Reference< uno::XComponentContext > & rxContext) throw( uno::Exception ); - -// AnyCompareFactory -extern uno::Sequence< OUString > SAL_CALL AnyCompareFactory_getSupportedServiceNames() throw(); -extern OUString SAL_CALL AnyCompareFactory_getImplementationName() throw(); -extern uno::Reference< uno::XInterface > SAL_CALL AnyCompareFactory_createInstance(const uno::Reference< uno::XComponentContext > & rxContext) throw( uno::Exception ); - -// OfficeInstallationDirectories -extern uno::Sequence< OUString > SAL_CALL OfficeInstallationDirectories_getSupportedServiceNames() throw(); -extern OUString SAL_CALL OfficeInstallationDirectories_getImplementationName() throw(); -extern OUString SAL_CALL OfficeInstallationDirectories_getSingletonName() throw(); -extern OUString SAL_CALL OfficeInstallationDirectories_getSingletonServiceName() throw(); -extern uno::Reference< uno::XInterface > SAL_CALL OfficeInstallationDirectories_createInstance(const uno::Reference< uno::XComponentContext > & rxContext) throw( uno::Exception ); - -// SequenceInputStreamService -extern uno::Sequence< OUString > SAL_CALL SequenceInputStreamService_getSupportedServiceNames() throw(); -extern OUString SAL_CALL SequenceInputStreamService_getImplementationName() throw(); -extern uno::Reference< uno::XInterface > SAL_CALL SequenceInputStreamService_createInstance(const uno::Reference< uno::XComponentContext > & rxContext) throw( uno::Exception ); - -//SequenceOutputStreamService -extern uno::Sequence< OUString > SAL_CALL SequenceOutputStreamService_getSupportedServiceNames() throw(); -extern OUString SAL_CALL SequenceOutputStreamService_getImplementationName() throw(); -extern uno::Reference< uno::XInterface > SAL_CALL SequenceOutputStreamService_createInstance(const uno::Reference< uno::XComponentContext >& rxContext) throw( uno::Exception ); - -namespace comphelper -{ -// UNOMemoryStream -extern uno::Sequence< OUString > SAL_CALL UNOMemoryStream_getSupportedServiceNames() throw(); -extern OUString SAL_CALL UNOMemoryStream_getImplementationName() throw(); -extern uno::Reference< uno::XInterface > SAL_CALL UNOMemoryStream_createInstance(const uno::Reference< uno::XComponentContext > & rxContext) throw( uno::Exception ); -} - -// PropertyBag -extern uno::Sequence< OUString > SAL_CALL PropertyBag_getSupportedServiceNames() throw(); -extern OUString SAL_CALL PropertyBag_getImplementationName() throw(); -extern uno::Reference< uno::XInterface > SAL_CALL PropertyBag_createInstance(const uno::Reference< uno::XComponentContext >& rxContext) throw( uno::Exception ); - -// -static void writeInfo( registry::XRegistryKey * pRegistryKey, const OUString& rImplementationName, const uno::Sequence< OUString >& rServices ) -{ - uno::Reference< registry::XRegistryKey > xNewKey( - pRegistryKey->createKey( - OUString( RTL_CONSTASCII_USTRINGPARAM("/") ) + rImplementationName + OUString(RTL_CONSTASCII_USTRINGPARAM( "/UNO/SERVICES") ) ) ); - - for( sal_Int32 i = 0; i < rServices.getLength(); i++ ) - xNewKey->createKey( rServices.getConstArray()[i]); -} - -static void registerSingleton( registry::XRegistryKey * pRegistryKey, const OUString& rImplementationName, const OUString& rSingletonName, const OUString& rServiceName ) -{ - OUStringBuffer aSingletonKeyName; - aSingletonKeyName.appendAscii( "/" ); - aSingletonKeyName.append( rImplementationName ); - aSingletonKeyName.appendAscii( "/UNO/SINGLETONS/" ); - aSingletonKeyName.append( rSingletonName ); - - uno::Reference< registry::XRegistryKey > xNewKey( pRegistryKey->createKey( aSingletonKeyName.makeStringAndClear() ) ); - OSL_ENSURE( xNewKey.is(), "could not create a registry key !"); - - xNewKey->setStringValue( rServiceName ); -} - -// -extern "C" -{ - -SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment( const sal_Char ** ppEnvTypeName, uno_Environment ** ) -{ - *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; -} - -SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo( void *, void * pRegistryKey ) -{ - if( pRegistryKey ) - { - try - { - registry::XRegistryKey *pKey = reinterpret_cast< registry::XRegistryKey * >( pRegistryKey ); - - // IndexedPropertyValuesContainer - writeInfo( pKey, IndexedPropertyValuesContainer_getImplementationName(), IndexedPropertyValuesContainer_getSupportedServiceNames() ); - // NamedPropertyValuesContainer - writeInfo( pKey, NamedPropertyValuesContainer_getImplementationName(), NamedPropertyValuesContainer_getSupportedServiceNames() ); - // AnyCompareFactory - writeInfo( pKey, AnyCompareFactory_getImplementationName(), AnyCompareFactory_getSupportedServiceNames() ); - // OfficeInstallationDirectories - writeInfo( pKey, OfficeInstallationDirectories_getImplementationName(), OfficeInstallationDirectories_getSupportedServiceNames() ); - registerSingleton( pKey, OfficeInstallationDirectories_getImplementationName(), OfficeInstallationDirectories_getSingletonName(), OfficeInstallationDirectories_getSingletonServiceName() ); - - // InstanceLocker - writeInfo( pKey, OInstanceLocker::impl_staticGetImplementationName(), OInstanceLocker::impl_staticGetSupportedServiceNames() ); - // SequenceInputStreamService - writeInfo( pKey, SequenceInputStreamService_getImplementationName(), SequenceInputStreamService_getSupportedServiceNames() ); - // SequenceOutputStreamService - writeInfo( pKey, SequenceOutputStreamService_getImplementationName(), SequenceOutputStreamService_getSupportedServiceNames() ); - // UNOMemoryStream - writeInfo( pKey, comphelper::UNOMemoryStream_getImplementationName(), comphelper::UNOMemoryStream_getSupportedServiceNames() ); - // PropertyBag - writeInfo( pKey, PropertyBag_getImplementationName(), PropertyBag_getSupportedServiceNames() ); - } - catch (registry::InvalidRegistryException &) - { - OSL_ENSURE( sal_False, "### InvalidRegistryException!" ); - } - } - return sal_True; -} - -SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory( const sal_Char * pImplName, void * pServiceManager, void * ) -{ - void * pRet = 0; - if( pServiceManager ) - { - uno::Reference<lang::XSingleComponentFactory> xComponentFactory; - - const sal_Int32 nImplNameLen = strlen( pImplName ); - if( IndexedPropertyValuesContainer_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) ) - { - xComponentFactory = ::cppu::createSingleComponentFactory( - IndexedPropertyValuesContainer_createInstance, - IndexedPropertyValuesContainer_getImplementationName(), - IndexedPropertyValuesContainer_getSupportedServiceNames() ); - } - else if( NamedPropertyValuesContainer_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) ) - { - xComponentFactory = ::cppu::createSingleComponentFactory( - NamedPropertyValuesContainer_createInstance, - NamedPropertyValuesContainer_getImplementationName(), - NamedPropertyValuesContainer_getSupportedServiceNames() ); - } - else if( AnyCompareFactory_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) ) - { - xComponentFactory = ::cppu::createSingleComponentFactory( - AnyCompareFactory_createInstance, - AnyCompareFactory_getImplementationName(), - AnyCompareFactory_getSupportedServiceNames() ); - } - else if( OfficeInstallationDirectories_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) ) - { - xComponentFactory = ::cppu::createSingleComponentFactory( - OfficeInstallationDirectories_createInstance, - OfficeInstallationDirectories_getImplementationName(), - OfficeInstallationDirectories_getSupportedServiceNames() ); - } - else if( OInstanceLocker::impl_staticGetImplementationName().equalsAsciiL( pImplName, nImplNameLen ) ) - { - xComponentFactory = ::cppu::createSingleComponentFactory( - OInstanceLocker::impl_staticCreateSelfInstance, - OInstanceLocker::impl_staticGetImplementationName(), - OInstanceLocker::impl_staticGetSupportedServiceNames() ); - } - else if( SequenceInputStreamService_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) ) - { - xComponentFactory = ::cppu::createSingleComponentFactory( - SequenceInputStreamService_createInstance, - SequenceInputStreamService_getImplementationName(), - SequenceInputStreamService_getSupportedServiceNames() ); - } - else if( comphelper::UNOMemoryStream_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) ) - { - xComponentFactory = ::cppu::createSingleComponentFactory( - comphelper::UNOMemoryStream_createInstance, - comphelper::UNOMemoryStream_getImplementationName(), - comphelper::UNOMemoryStream_getSupportedServiceNames() ); - } - else if ( SequenceOutputStreamService_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) ) - { - xComponentFactory = ::cppu::createSingleComponentFactory( - SequenceOutputStreamService_createInstance, - SequenceOutputStreamService_getImplementationName(), - SequenceOutputStreamService_getSupportedServiceNames() ); - } - else if ( PropertyBag_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) ) - { - xComponentFactory = ::cppu::createSingleComponentFactory( - PropertyBag_createInstance, - PropertyBag_getImplementationName(), - PropertyBag_getSupportedServiceNames() ); - } - - if( xComponentFactory.is()) - { - xComponentFactory->acquire(); - pRet = xComponentFactory.get(); - } - } - return pRet; -} - -} diff --git a/comphelper/source/misc/instancelocker.cxx b/comphelper/source/misc/instancelocker.cxx index 6046b7c5e6f5..11a590c618c3 100644 --- a/comphelper/source/misc/instancelocker.cxx +++ b/comphelper/source/misc/instancelocker.cxx @@ -30,6 +30,9 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_comphelper.hxx" + +#include "comphelper_module.hxx" + #include <com/sun/star/util/XCloseBroadcaster.hpp> #include <com/sun/star/util/XCloseable.hpp> #include <com/sun/star/lang/DisposedException.hpp> @@ -205,14 +208,14 @@ void SAL_CALL OInstanceLocker::initialize( const uno::Sequence< uno::Any >& aArg ::rtl::OUString SAL_CALL OInstanceLocker::getImplementationName( ) throw (uno::RuntimeException) { - return impl_staticGetImplementationName(); + return getImplementationName_static(); } // -------------------------------------------------------- ::sal_Bool SAL_CALL OInstanceLocker::supportsService( const ::rtl::OUString& ServiceName ) throw (uno::RuntimeException) { - uno::Sequence< ::rtl::OUString > aSeq = impl_staticGetSupportedServiceNames(); + uno::Sequence< ::rtl::OUString > aSeq = getSupportedServiceNames(); for ( sal_Int32 nInd = 0; nInd < aSeq.getLength(); nInd++ ) if ( ServiceName.compareTo( aSeq[nInd] ) == 0 ) @@ -225,25 +228,25 @@ void SAL_CALL OInstanceLocker::initialize( const uno::Sequence< uno::Any >& aArg uno::Sequence< ::rtl::OUString > SAL_CALL OInstanceLocker::getSupportedServiceNames() throw (uno::RuntimeException) { - return impl_staticGetSupportedServiceNames(); + return getSupportedServiceNames_static(); } // Static methods // -------------------------------------------------------- -uno::Sequence< ::rtl::OUString > SAL_CALL OInstanceLocker::impl_staticGetSupportedServiceNames() +uno::Sequence< ::rtl::OUString > SAL_CALL OInstanceLocker::getSupportedServiceNames_static() { const rtl::OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.embed.InstanceLocker" ) ); return uno::Sequence< rtl::OUString >( &aServiceName, 1 ); } // -------------------------------------------------------- -::rtl::OUString SAL_CALL OInstanceLocker::impl_staticGetImplementationName() +::rtl::OUString SAL_CALL OInstanceLocker::getImplementationName_static() { return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.embed.InstanceLocker" ) ); } // -------------------------------------------------------- -uno::Reference< uno::XInterface > SAL_CALL OInstanceLocker::impl_staticCreateSelfInstance( +uno::Reference< uno::XInterface > SAL_CALL OInstanceLocker::Create( const uno::Reference< uno::XComponentContext >& rxContext ) { return static_cast< cppu::OWeakObject * >( new OInstanceLocker( rxContext ) ); @@ -506,3 +509,7 @@ sal_Bool OLockListener::Init() return sal_True; } +void createRegistryInfo_OInstanceLocker() +{ + static ::comphelper::module::OAutoRegistration< OInstanceLocker > aAutoRegistration; +} diff --git a/comphelper/source/misc/instancelocker.hxx b/comphelper/source/misc/instancelocker.hxx index 1f7d34a64652..637cc9fc4579 100644 --- a/comphelper/source/misc/instancelocker.hxx +++ b/comphelper/source/misc/instancelocker.hxx @@ -70,12 +70,12 @@ public: ~OInstanceLocker(); static ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL - impl_staticGetSupportedServiceNames(); + getSupportedServiceNames_static(); - static ::rtl::OUString SAL_CALL impl_staticGetImplementationName(); + static ::rtl::OUString SAL_CALL getImplementationName_static(); static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL - impl_staticCreateSelfInstance( + Create( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ); // XComponent diff --git a/comphelper/source/misc/makefile.mk b/comphelper/source/misc/makefile.mk index 2dc0955d68b6..2589c5dde6c1 100644 --- a/comphelper/source/misc/makefile.mk +++ b/comphelper/source/misc/makefile.mk @@ -58,9 +58,9 @@ SLOFILES= \ $(SLO)$/componentmodule.obj \ $(SLO)$/configurationhelper.obj \ $(SLO)$/documentinfo.obj \ - $(SLO)$/evtmethodhelper.obj \ + $(SLO)$/evtmethodhelper.obj \ + $(SLO)$/documentiologring.obj \ $(SLO)$/evtlistenerhlp.obj \ - $(SLO)$/facreg.obj \ $(SLO)$/ihwrapnofilter.obj \ $(SLO)$/instancelocker.obj \ $(SLO)$/interaction.obj \ @@ -90,6 +90,9 @@ SLOFILES= \ $(SLO)$/uieventslogger.obj \ $(SLO)$/weakeventlistener.obj \ $(SLO)$/weak.obj \ + $(SLO)$/comphelper_module.obj \ + $(SLO)$/comphelper_services.obj \ + $(SLO)$/componentbase.obj \ # --- Targets ---------------------------------- diff --git a/comphelper/source/misc/string.cxx b/comphelper/source/misc/string.cxx index 77a251372d85..e9437528b0de 100644 --- a/comphelper/source/misc/string.cxx +++ b/comphelper/source/misc/string.cxx @@ -36,10 +36,13 @@ #include <vector> #include <algorithm> -#include "comphelper/string.hxx" -#include "rtl/ustring.hxx" -#include "sal/types.h" -#include "comphelper/stlunosequence.hxx" +#include <rtl/ustring.hxx> +#include <rtl/ustrbuf.hxx> +#include <sal/types.h> + +#include <comphelper/string.hxx> +#include <comphelper/stlunosequence.hxx> +#include <comphelper/stl_types.hxx> namespace comphelper { namespace string { @@ -96,12 +99,12 @@ rtl::OUString searchAndReplaceAsciiL( ::rtl::OUString convertCommaSeparated( ::com::sun::star::uno::Sequence< ::rtl::OUString > const& i_rSeq) { - ::rtl::OUString ret; - for (sal_Int32 i = 0; i < i_rSeq.getLength(); ++i) { - if (i != 0) ret += ::rtl::OUString::createFromAscii(", "); - ret += i_rSeq[i]; - } - return ret; + ::rtl::OUStringBuffer buf; + ::comphelper::intersperse( + ::comphelper::stl_begin(i_rSeq), ::comphelper::stl_end(i_rSeq), + ::comphelper::OUStringBufferAppender(buf), + ::rtl::OUString::createFromAscii(", ")); + return buf.makeStringAndClear(); } ::com::sun::star::uno::Sequence< ::rtl::OUString > @@ -119,10 +122,6 @@ rtl::OUString searchAndReplaceAsciiL( } while (idx >= 0); ::com::sun::star::uno::Sequence< ::rtl::OUString > kws(vec.size()); std::copy(vec.begin(), vec.end(), stl_begin(kws)); - /* - for (size_t i = 0; i < vec.size(); ++i) { - kws[i] = vec.at(i); - }*/ return kws; } diff --git a/comphelper/source/misc/types.cxx b/comphelper/source/misc/types.cxx index 2b20fd9acca3..2a9180c038b0 100644 --- a/comphelper/source/misc/types.cxx +++ b/comphelper/source/misc/types.cxx @@ -87,8 +87,7 @@ sal_Bool operator ==(const Time& _rLeft, const Time& _rRight) sal_Int32 getINT32(const Any& _rAny) { sal_Int32 nReturn = 0; - _rAny >>= nReturn; - + OSL_VERIFY( _rAny >>= nReturn ); return nReturn; } @@ -96,7 +95,7 @@ sal_Int32 getINT32(const Any& _rAny) sal_Int16 getINT16(const Any& _rAny) { sal_Int16 nReturn = 0; - _rAny >>= nReturn; + OSL_VERIFY( _rAny >>= nReturn ); return nReturn; } @@ -104,7 +103,7 @@ sal_Int16 getINT16(const Any& _rAny) double getDouble(const Any& _rAny) { double nReturn = 0.0; - _rAny >>= nReturn; + OSL_VERIFY( _rAny >>= nReturn ); return nReturn; } @@ -112,7 +111,7 @@ double getDouble(const Any& _rAny) float getFloat(const Any& _rAny) { float nReturn = 0.0; - _rAny >>= nReturn; + OSL_VERIFY( _rAny >>= nReturn ); return nReturn; } @@ -120,7 +119,7 @@ float getFloat(const Any& _rAny) ::rtl::OUString getString(const Any& _rAny) { ::rtl::OUString nReturn; - _rAny >>= nReturn; + OSL_VERIFY( _rAny >>= nReturn ); return nReturn; } diff --git a/comphelper/source/misc/uieventslogger.cxx b/comphelper/source/misc/uieventslogger.cxx index 3ff875a4e67d..a55d5b58854d 100644 --- a/comphelper/source/misc/uieventslogger.cxx +++ b/comphelper/source/misc/uieventslogger.cxx @@ -375,9 +375,10 @@ namespace comphelper } else logdata[2] = UNKNOWN_ORIGIN; - logdata[3] = url.Complete; if(url.Complete.match(URL_FILE)) logdata[3] = URL_FILE; + else + logdata[3] = url.Main; m_Logger->log(LogLevel::INFO, m_Formatter->formatMultiColumn(logdata)); m_SessionLogEventCount++; } diff --git a/comphelper/source/officeinstdir/officeinstallationdirectories.cxx b/comphelper/source/officeinstdir/officeinstallationdirectories.cxx index 3c56d5479573..219e56ce1a37 100644 --- a/comphelper/source/officeinstdir/officeinstallationdirectories.cxx +++ b/comphelper/source/officeinstdir/officeinstallationdirectories.cxx @@ -31,6 +31,8 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_comphelper.hxx" +#include "comphelper_module.hxx" + /************************************************************************** TODO ************************************************************************** @@ -51,53 +53,6 @@ using namespace comphelper; // helpers //========================================================================= -uno::Sequence< rtl::OUString > SAL_CALL -OfficeInstallationDirectories_getSupportedServiceNames() - throw() -{ - const rtl::OUString aServiceName( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.util.OfficeInstallationDirectories" ) ); - return uno::Sequence< rtl::OUString >( &aServiceName, 1 ); -} - -//========================================================================= -rtl::OUString SAL_CALL OfficeInstallationDirectories_getImplementationName() - throw() -{ - return rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.comp.util.OfficeInstallationDirectories" ) ); -} - -//========================================================================= -rtl::OUString SAL_CALL OfficeInstallationDirectories_getSingletonName() - throw() -{ - return rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.util.theOfficeInstallationDirectories" ) ); -} - -//========================================================================= -rtl::OUString SAL_CALL OfficeInstallationDirectories_getSingletonServiceName() - throw() -{ - return rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.util.OfficeInstallationDirectories" ) ); -} - -//========================================================================= -uno::Reference< uno::XInterface > SAL_CALL -OfficeInstallationDirectories_createInstance( - const uno::Reference< uno::XComponentContext > & rxContext ) - throw( uno::Exception ) -{ - return static_cast< cppu::OWeakObject * >( - new OfficeInstallationDirectories( rxContext ) ); -} - //========================================================================= static bool makeCanonicalFileURL( rtl::OUString & rURL ) { @@ -272,7 +227,7 @@ rtl::OUString SAL_CALL OfficeInstallationDirectories::getImplementationName() throw ( uno::RuntimeException ) { - return OfficeInstallationDirectories_getImplementationName(); + return getImplementationName_static(); } //========================================================================= @@ -282,7 +237,7 @@ OfficeInstallationDirectories::supportsService( const rtl::OUString& ServiceName throw ( uno::RuntimeException ) { const uno::Sequence< rtl::OUString > & aNames - = OfficeInstallationDirectories_getSupportedServiceNames(); + = getSupportedServiceNames(); const rtl::OUString * p = aNames.getConstArray(); for ( sal_Int32 nPos = 0; nPos < aNames.getLength(); nPos++ ) { @@ -299,7 +254,47 @@ uno::Sequence< ::rtl::OUString > SAL_CALL OfficeInstallationDirectories::getSupportedServiceNames() throw ( uno::RuntimeException ) { - return OfficeInstallationDirectories_getSupportedServiceNames(); + return getSupportedServiceNames_static(); +} + +//========================================================================= +// static +rtl::OUString SAL_CALL +OfficeInstallationDirectories::getImplementationName_static() +{ + return rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.comp.util.OfficeInstallationDirectories" ) ); +} + +//========================================================================= +// static +uno::Sequence< ::rtl::OUString > SAL_CALL +OfficeInstallationDirectories::getSupportedServiceNames_static() +{ + const rtl::OUString aServiceName( + RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.util.OfficeInstallationDirectories" ) ); + return uno::Sequence< rtl::OUString >( &aServiceName, 1 ); +} + +//========================================================================= +// static +rtl::OUString SAL_CALL OfficeInstallationDirectories::getSingletonName_static() +{ + return rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.util.theOfficeInstallationDirectories" ) ); +} + +//========================================================================= +// static +uno::Reference< uno::XInterface > SAL_CALL +OfficeInstallationDirectories::Create( + const uno::Reference< uno::XComponentContext > & rxContext ) +{ + return static_cast< cppu::OWeakObject * >( + new OfficeInstallationDirectories( rxContext ) ); } //========================================================================= @@ -352,3 +347,7 @@ void OfficeInstallationDirectories::initDirs() } } +void createRegistryInfo_OfficeInstallationDirectories() +{ + static ::comphelper::module::OSingletonRegistration< OfficeInstallationDirectories > aAutoRegistration; +} diff --git a/comphelper/source/officeinstdir/officeinstallationdirectories.hxx b/comphelper/source/officeinstdir/officeinstallationdirectories.hxx index c829bcdc517c..52dcd38d564a 100644 --- a/comphelper/source/officeinstdir/officeinstallationdirectories.hxx +++ b/comphelper/source/officeinstdir/officeinstallationdirectories.hxx @@ -84,6 +84,16 @@ public: getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException); + // XServiceInfo - static versions (used for component registration) + static ::rtl::OUString SAL_CALL + getImplementationName_static(); + static ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL + getSupportedServiceNames_static(); + static ::rtl::OUString SAL_CALL + getSingletonName_static(); + static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL + Create( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& ); + private: void initDirs(); diff --git a/comphelper/source/processfactory/processfactory.cxx b/comphelper/source/processfactory/processfactory.cxx index 0f50f4a4cb01..c4eac583e3c0 100644 --- a/comphelper/source/processfactory/processfactory.cxx +++ b/comphelper/source/processfactory/processfactory.cxx @@ -98,24 +98,30 @@ Reference< XInterface > createProcessComponentWithArguments( const ::rtl::OUStri return xComponent; } -} // namesapce comphelper - -extern "C" { -uno::XComponentContext * comphelper_getProcessComponentContext() +Reference< XComponentContext > getProcessComponentContext() { - uno::Reference<uno::XComponentContext> xRet; + Reference< XComponentContext > xRet; uno::Reference<beans::XPropertySet> const xProps( comphelper::getProcessServiceFactory(), uno::UNO_QUERY ); if (xProps.is()) { try { - xRet.set( xProps->getPropertyValue( - rtl::OUString( + xRet.set( xProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("DefaultContext") ) ), uno::UNO_QUERY ); } catch (beans::UnknownPropertyException const&) { } } + return xRet; +} + +} // namespace comphelper + +extern "C" { +uno::XComponentContext * comphelper_getProcessComponentContext() +{ + uno::Reference<uno::XComponentContext> xRet; + xRet = ::comphelper::getProcessComponentContext(); if (xRet.is()) xRet->acquire(); return xRet.get(); diff --git a/comphelper/source/property/opropertybag.cxx b/comphelper/source/property/opropertybag.cxx index e7b14795186e..8b816e8c1ce9 100644 --- a/comphelper/source/property/opropertybag.cxx +++ b/comphelper/source/property/opropertybag.cxx @@ -32,9 +32,11 @@ #include "precompiled_comphelper.hxx" #include "opropertybag.hxx" +#include "comphelper_module.hxx" #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/beans/NamedValue.hpp> +#include <com/sun/star/beans/Property.hpp> #include <comphelper/namedvaluecollection.hxx> @@ -46,28 +48,11 @@ //-------------------------------------------------------------------------- -#if 0 -extern "C" void SAL_CALL createRegistryInfo_OPropertyBag() -{ - static ::comphelper::OAutoRegistration< ::comphelper::OPropertyBag > aAutoRegistration; -} -#endif - using namespace ::com::sun::star; -uno::Sequence< ::rtl::OUString > SAL_CALL PropertyBag_getSupportedServiceNames() throw() -{ - return ::comphelper::OPropertyBag::getSupportedServiceNames_static(); -} - -::rtl::OUString SAL_CALL PropertyBag_getImplementationName() throw() +void createRegistryInfo_OPropertyBag() { - return ::comphelper::OPropertyBag::getImplementationName_static(); -} - -uno::Reference< uno::XInterface > SAL_CALL PropertyBag_createInstance(const uno::Reference< uno::XComponentContext >& rxContext) throw( uno::Exception ) -{ - return ::comphelper::OPropertyBag::Create( rxContext ); + static ::comphelper::module::OAutoRegistration< ::comphelper::OPropertyBag > aAutoRegistration; } //........................................................................ @@ -79,6 +64,7 @@ namespace comphelper using namespace ::com::sun::star::lang; using namespace ::com::sun::star::beans; using namespace ::com::sun::star::util; + using namespace ::com::sun::star::container; //==================================================================== //= OPropertyBag @@ -238,6 +224,73 @@ namespace comphelper } //-------------------------------------------------------------------- + ::sal_Bool SAL_CALL OPropertyBag::has( const Any& /*aElement*/ ) throw (RuntimeException) + { + // XSet is only a workaround for addProperty not being able to add default-void properties. + // So, everything of XSet except insert is implemented empty + return sal_False; + } + + //-------------------------------------------------------------------- + void SAL_CALL OPropertyBag::insert( const Any& _element ) throw (IllegalArgumentException, ElementExistException, RuntimeException) + { + // This is a workaround for addProperty not being able to add default-void properties. + // If we ever have a smarter XPropertyContainer::addProperty interface, we can remove this, ehm, well, hack. + Property aProperty; + if ( !( _element >>= aProperty ) ) + throw IllegalArgumentException( ::rtl::OUString(), *this, 1 ); + + ::osl::MutexGuard aGuard( m_aMutex ); + + // check whether the type is allowed, everything else will be checked + // by m_aDynamicProperties + if ( !m_aAllowedTypes.empty() + && m_aAllowedTypes.find( aProperty.Type ) == m_aAllowedTypes.end() + ) + throw IllegalTypeException( ::rtl::OUString(), *this ); + + m_aDynamicProperties.addVoidProperty( aProperty.Name, aProperty.Type, findFreeHandle(), aProperty.Attributes ); + + // our property info is dirty + m_pArrayHelper.reset(); + + setModified(sal_True); + } + + //-------------------------------------------------------------------- + void SAL_CALL OPropertyBag::remove( const Any& /*aElement*/ ) throw (IllegalArgumentException, NoSuchElementException, RuntimeException) + { + // XSet is only a workaround for addProperty not being able to add default-void properties. + // So, everything of XSet except insert is implemented empty + throw NoSuchElementException( ::rtl::OUString(), *this ); + } + + + //-------------------------------------------------------------------- + Reference< XEnumeration > SAL_CALL OPropertyBag::createEnumeration( ) throw (RuntimeException) + { + // XSet is only a workaround for addProperty not being able to add default-void properties. + // So, everything of XSet except insert is implemented empty + return NULL; + } + + //-------------------------------------------------------------------- + Type SAL_CALL OPropertyBag::getElementType( ) throw (RuntimeException) + { + // XSet is only a workaround for addProperty not being able to add default-void properties. + // So, everything of XSet except insert is implemented empty + return Type(); + } + + //-------------------------------------------------------------------- + ::sal_Bool SAL_CALL OPropertyBag::hasElements( ) throw (RuntimeException) + { + // XSet is only a workaround for addProperty not being able to add default-void properties. + // So, everything of XSet except insert is implemented empty + return sal_False; + } + + //-------------------------------------------------------------------- void SAL_CALL OPropertyBag::getFastPropertyValue( Any& _rValue, sal_Int32 _nHandle ) const { m_aDynamicProperties.getFastPropertyValue( _nHandle, _rValue ); diff --git a/comphelper/source/property/opropertybag.hxx b/comphelper/source/property/opropertybag.hxx index 7acc0f451c4e..47e5816b3484 100644 --- a/comphelper/source/property/opropertybag.hxx +++ b/comphelper/source/property/opropertybag.hxx @@ -40,9 +40,10 @@ #include <com/sun/star/beans/XPropertyContainer.hpp> #include <com/sun/star/beans/XPropertyAccess.hpp> #include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/container/XSet.hpp> /** === end UNO includes === **/ -#include <cppuhelper/implbase5.hxx> +#include <cppuhelper/implbase6.hxx> #include <comphelper/propstate.hxx> #include <comphelper/broadcasthelper.hxx> #include <comphelper/propertybag.hxx> @@ -75,11 +76,12 @@ namespace comphelper //==================================================================== //= OPropertyBag //==================================================================== - typedef ::cppu::WeakAggImplHelper5 < ::com::sun::star::beans::XPropertyContainer + typedef ::cppu::WeakAggImplHelper6 < ::com::sun::star::beans::XPropertyContainer , ::com::sun::star::beans::XPropertyAccess , ::com::sun::star::util::XModifiable , ::com::sun::star::lang::XServiceInfo , ::com::sun::star::lang::XInitialization + , ::com::sun::star::container::XSet > OPropertyBag_Base; typedef ::comphelper::OPropertyStateHelper OPropertyBag_PBase; @@ -157,6 +159,18 @@ namespace comphelper // XPropertySet virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); + + // XSet + virtual ::sal_Bool SAL_CALL has( const ::com::sun::star::uno::Any& aElement ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL insert( const ::com::sun::star::uno::Any& aElement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL remove( const ::com::sun::star::uno::Any& aElement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException); + + // XEnumerationAccess (base of XSet) + virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration( ) throw (::com::sun::star::uno::RuntimeException); + + // XElementAccess (basf of XEnumerationAccess + virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL hasElements( ) throw (::com::sun::star::uno::RuntimeException); /** === UNO interface implementations == **/ // XPropertyState diff --git a/comphelper/source/property/property.cxx b/comphelper/source/property/property.cxx index 82e38d49c433..fe6cbaa9d767 100644 --- a/comphelper/source/property/property.cxx +++ b/comphelper/source/property/property.cxx @@ -97,8 +97,12 @@ void copyProperties(const Reference<XPropertySet>& _rxSource, try { aDestProp = xDestProps->getPropertyByName(pSourceProps->Name); - if (0 == (aDestProp.Attributes & PropertyAttribute::READONLY)) - _rxDest->setPropertyValue(pSourceProps->Name, _rxSource->getPropertyValue(pSourceProps->Name)); + if (0 == (aDestProp.Attributes & PropertyAttribute::READONLY) ) + { + const Any aSourceValue = _rxSource->getPropertyValue(pSourceProps->Name); + if ( 0 != (aDestProp.Attributes & PropertyAttribute::MAYBEVOID) || aSourceValue.hasValue() ) + _rxDest->setPropertyValue(pSourceProps->Name, aSourceValue); + } } catch (Exception&) { diff --git a/comphelper/source/property/propertybag.cxx b/comphelper/source/property/propertybag.cxx index 91c104b119f2..383e1cc2c5aa 100644 --- a/comphelper/source/property/propertybag.cxx +++ b/comphelper/source/property/propertybag.cxx @@ -91,6 +91,54 @@ namespace comphelper } //-------------------------------------------------------------------- + namespace + { + void lcl_checkForEmptyName( const bool _allowEmpty, const ::rtl::OUString& _name ) + { + if ( !_allowEmpty && !_name.getLength() ) + throw IllegalArgumentException( + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "The property name must not be empty." ) ), + // TODO: resource + NULL, + 1 + ); + } + + void lcl_checkNameAndHandle( const ::rtl::OUString& _name, const sal_Int32 _handle, const PropertyBag& _container ) + { + if ( _container.hasPropertyByName( _name ) || _container.hasPropertyByHandle( _handle ) ) + throw PropertyExistException( + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Property name or handle already used." ) ), + // TODO: resource + NULL ); + + } + } + + //-------------------------------------------------------------------- + void PropertyBag::addVoidProperty( const ::rtl::OUString& _rName, const Type& _rType, sal_Int32 _nHandle, sal_Int32 _nAttributes ) + { + if ( _rType.getTypeClass() == TypeClass_VOID ) + throw IllegalArgumentException( + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Illegal property type: VOID" ) ), + // TODO: resource + NULL, + 1 + ); + + // check name/handle sanity + lcl_checkForEmptyName( m_pImpl->m_bAllowEmptyPropertyName, _rName ); + lcl_checkNameAndHandle( _rName, _nHandle, *this ); + + // register the property + OSL_ENSURE( _nAttributes & PropertyAttribute::MAYBEVOID, "PropertyBag::addVoidProperty: this is for default-void properties only!" ); + registerPropertyNoMember( _rName, _nHandle, _nAttributes | PropertyAttribute::MAYBEVOID, _rType, NULL ); + + // remember the default + m_pImpl->aDefaults.insert( MapInt2Any::value_type( _nHandle, Any() ) ); + } + + //-------------------------------------------------------------------- void PropertyBag::addProperty( const ::rtl::OUString& _rName, sal_Int32 _nHandle, sal_Int32 _nAttributes, const Any& _rInitialValue ) { // check type sanity @@ -102,17 +150,8 @@ namespace comphelper NULL ); // check name/handle sanity - if ( !m_pImpl->m_bAllowEmptyPropertyName && !_rName.getLength() ) - throw IllegalArgumentException( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "The property name must not be empty." ) ), - // TODO: resource - NULL, - 1 ); - if ( isRegisteredProperty( _rName ) || isRegisteredProperty( _nHandle ) ) - throw PropertyExistException( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Property name or handle already used." ) ), - // TODO: resource - NULL ); + lcl_checkForEmptyName( m_pImpl->m_bAllowEmptyPropertyName, _rName ); + lcl_checkNameAndHandle( _rName, _nHandle, *this ); // register the property registerPropertyNoMember( _rName, _nHandle, _nAttributes, aPropertyType, @@ -129,10 +168,11 @@ namespace comphelper // will throw an UnknownPropertyException if necessary if ( ( rProp.Attributes & PropertyAttribute::REMOVEABLE ) == 0 ) throw NotRemoveableException( ::rtl::OUString(), NULL ); + const sal_Int32 nHandle = rProp.Handle; - revokeProperty( rProp.Handle ); + revokeProperty( nHandle ); - m_pImpl->aDefaults.erase( rProp.Handle ); + m_pImpl->aDefaults.erase( nHandle ); } //-------------------------------------------------------------------- diff --git a/comphelper/source/property/propertycontainerhelper.cxx b/comphelper/source/property/propertycontainerhelper.cxx index 9d1662d1ecf2..7f5db1d6cf7e 100644 --- a/comphelper/source/property/propertycontainerhelper.cxx +++ b/comphelper/source/property/propertycontainerhelper.cxx @@ -76,12 +76,12 @@ namespace // comparing two property descriptions (by name) struct PropertyDescriptionNameMatch : public ::std::unary_function< PropertyDescription, bool > { - const ::rtl::OUString& m_rCompare; + ::rtl::OUString m_rCompare; PropertyDescriptionNameMatch( const ::rtl::OUString& _rCompare ) : m_rCompare( _rCompare ) { } bool operator() (const PropertyDescription& x ) const { - return x.aProperty.Name == m_rCompare; + return x.aProperty.Name.equals(m_rCompare); } }; } diff --git a/comphelper/source/streaming/memorystream.cxx b/comphelper/source/streaming/memorystream.cxx index 5abbb352b14c..a2baef21010e 100644 --- a/comphelper/source/streaming/memorystream.cxx +++ b/comphelper/source/streaming/memorystream.cxx @@ -31,17 +31,20 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_comphelper.hxx" +#include "comphelper_module.hxx" + #include <com/sun/star/io/XStream.hpp> #include <com/sun/star/io/XSeekableInputStream.hpp> +#include <com/sun/star/io/XTruncate.hpp> #include <com/sun/star/uno/XComponentContext.hpp> -#include <cppuhelper/implbase3.hxx> +#include <cppuhelper/implbase4.hxx> #include <string.h> #include <vector> using ::rtl::OUString; using ::cppu::OWeakObject; -using ::cppu::WeakImplHelper3; +using ::cppu::WeakImplHelper4; using namespace ::com::sun::star::io; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::lang; @@ -50,7 +53,7 @@ using namespace ::osl; namespace comphelper { -class UNOMemoryStream : public WeakImplHelper3 < XStream, XSeekableInputStream, XOutputStream > +class UNOMemoryStream : public WeakImplHelper4 < XStream, XSeekableInputStream, XOutputStream, XTruncate > { public: UNOMemoryStream(); @@ -77,6 +80,14 @@ public: virtual void SAL_CALL flush() throw (NotConnectedException, BufferSizeExceededException, IOException, RuntimeException); virtual void SAL_CALL closeOutput() throw (NotConnectedException, BufferSizeExceededException, IOException, RuntimeException); + // XTruncate + virtual void SAL_CALL truncate() throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); + + // XServiceInfo - static versions (used for component registration) + static ::rtl::OUString SAL_CALL getImplementationName_static(); + static Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static(); + static Reference< XInterface > SAL_CALL Create( const Reference< ::com::sun::star::uno::XComponentContext >& ); + private: std::vector< sal_Int8 > maData; sal_Int32 mnCursor; @@ -109,8 +120,7 @@ sal_Int32 SAL_CALL UNOMemoryStream::readBytes( Sequence< sal_Int8 >& aData, sal_ throw IOException(); nBytesToRead = std::min( nBytesToRead, available() ); - if( aData.getLength() < nBytesToRead ) - aData.realloc( nBytesToRead ); + aData.realloc( nBytesToRead ); if( nBytesToRead ) { @@ -150,9 +160,16 @@ void SAL_CALL UNOMemoryStream::closeInput() throw (NotConnectedException, IOExce // XSeekable void SAL_CALL UNOMemoryStream::seek( sal_Int64 location ) throw (IllegalArgumentException, IOException, RuntimeException) { - if( (location < 0) || (location > SAL_MAX_INT32) || (location > static_cast< sal_Int64 >( maData.size() )) ) + if( (location < 0) || (location > SAL_MAX_INT32) ) throw IllegalArgumentException( OUString(RTL_CONSTASCII_USTRINGPARAM("this implementation does not support more than 2GB!")), Reference< XInterface >(static_cast<OWeakObject*>(this)), 0 ); + // seek operation should be able to resize the stream + if ( location > static_cast< sal_Int64 >( maData.size() ) ) + maData.resize( static_cast< sal_Int32 >( location ) ); + + if ( location > static_cast< sal_Int64 >( maData.size() ) ) + maData.resize( static_cast< sal_Int32 >( location ) ); + mnCursor = static_cast< sal_Int32 >( location ); } @@ -199,22 +216,35 @@ void SAL_CALL UNOMemoryStream::closeOutput() throw (NotConnectedException, Buffe mnCursor = 0; } -OUString SAL_CALL UNOMemoryStream_getImplementationName() throw() +//XTruncate +void SAL_CALL UNOMemoryStream::truncate() throw (IOException, RuntimeException) +{ + maData.resize( 0 ); + mnCursor = 0; +} + +::rtl::OUString SAL_CALL UNOMemoryStream::getImplementationName_static() { static const OUString sImplName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.MemoryStream" ) ); return sImplName; } -Sequence< OUString > SAL_CALL UNOMemoryStream_getSupportedServiceNames() throw() +Sequence< ::rtl::OUString > SAL_CALL UNOMemoryStream::getSupportedServiceNames_static() { Sequence< OUString > aSeq(1); - aSeq[0] = UNOMemoryStream_getImplementationName(); + aSeq[0] = getImplementationName_static(); return aSeq; } -Reference< XInterface > SAL_CALL UNOMemoryStream_createInstance(const Reference< XComponentContext > & ) throw( Exception ) +Reference< XInterface > SAL_CALL UNOMemoryStream::Create( + const Reference< XComponentContext >& ) { return static_cast<OWeakObject*>(new UNOMemoryStream()); } } // namespace comphelper + +void createRegistryInfo_UNOMemoryStream() +{ + static ::comphelper::module::OAutoRegistration< ::comphelper::UNOMemoryStream > aAutoRegistration; +} diff --git a/comphelper/source/streaming/seqinputstreamserv.cxx b/comphelper/source/streaming/seqinputstreamserv.cxx index b10b38dda05a..af7d9fcf44dd 100644 --- a/comphelper/source/streaming/seqinputstreamserv.cxx +++ b/comphelper/source/streaming/seqinputstreamserv.cxx @@ -31,6 +31,8 @@ // MARKER( update_precomp.py ): autogen include statement, do not remove #include "precompiled_comphelper.hxx" +#include "comphelper_module.hxx" + #include <sal/config.h> #include <osl/mutex.hxx> #include <cppuhelper/factory.hxx> @@ -46,11 +48,6 @@ using namespace ::com::sun::star; -::rtl::OUString SAL_CALL SequenceInputStreamService_getImplementationName(); -uno::Sequence< ::rtl::OUString > SAL_CALL SequenceInputStreamService_getSupportedServiceNames(); -uno::Reference< uno::XInterface > SAL_CALL SequenceInputStreamService_createInstance( const uno::Reference< uno::XComponentContext > & rxContext ) SAL_THROW( (uno::Exception ) ); - - namespace { class SequenceInputStreamService: @@ -67,6 +64,11 @@ public: virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString & ServiceName ) throw ( uno::RuntimeException ); virtual uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw ( uno::RuntimeException ); + // XServiceInfo - static versions (used for component registration) + static ::rtl::OUString SAL_CALL getImplementationName_static(); + static uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static(); + static uno::Reference< uno::XInterface > SAL_CALL Create( const uno::Reference< uno::XComponentContext >& ); + // ::com::sun::star::io::XInputStream: virtual ::sal_Int32 SAL_CALL readBytes( uno::Sequence< ::sal_Int8 > & aData, ::sal_Int32 nBytesToRead ) throw ( uno::RuntimeException, io::NotConnectedException, io::BufferSizeExceededException, io::IOException ); virtual ::sal_Int32 SAL_CALL readSomeBytes( uno::Sequence< ::sal_Int8 > & aData, ::sal_Int32 nMaxBytesToRead ) throw ( uno::RuntimeException, io::NotConnectedException, io::BufferSizeExceededException, io::IOException ); @@ -102,12 +104,17 @@ SequenceInputStreamService::SequenceInputStreamService() // com.sun.star.uno.XServiceInfo: ::rtl::OUString SAL_CALL SequenceInputStreamService::getImplementationName() throw ( uno::RuntimeException ) { - return SequenceInputStreamService_getImplementationName(); + return getImplementationName_static(); +} + +::rtl::OUString SAL_CALL SequenceInputStreamService::getImplementationName_static() +{ + return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.SequenceInputStreamService" ) ); } ::sal_Bool SAL_CALL SequenceInputStreamService::supportsService( ::rtl::OUString const & serviceName ) throw ( uno::RuntimeException ) { - uno::Sequence< ::rtl::OUString > serviceNames = SequenceInputStreamService_getSupportedServiceNames(); + uno::Sequence< ::rtl::OUString > serviceNames = getSupportedServiceNames(); for ( ::sal_Int32 i = 0; i < serviceNames.getLength(); ++i ) { if ( serviceNames[i] == serviceName ) return sal_True; @@ -117,7 +124,21 @@ SequenceInputStreamService::SequenceInputStreamService() uno::Sequence< ::rtl::OUString > SAL_CALL SequenceInputStreamService::getSupportedServiceNames() throw ( uno::RuntimeException ) { - return SequenceInputStreamService_getSupportedServiceNames(); + return getSupportedServiceNames_static(); +} + +uno::Sequence< ::rtl::OUString > SAL_CALL SequenceInputStreamService::getSupportedServiceNames_static() +{ + uno::Sequence< ::rtl::OUString > s( 1 ); + s[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.io.SequenceInputStream" ) ); + return s; +} + +uno::Reference< uno::XInterface > SAL_CALL SequenceInputStreamService::Create( + const uno::Reference< uno::XComponentContext >& ) +{ + return static_cast< ::cppu::OWeakObject * >( new SequenceInputStreamService() ); } // ::com::sun::star::io::XInputStream: @@ -227,23 +248,7 @@ void SAL_CALL SequenceInputStreamService::initialize( const uno::Sequence< ::com } // anonymous namespace -::rtl::OUString SAL_CALL SequenceInputStreamService_getImplementationName() { - return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.comp.SequenceInputStreamService" ) ); -} - -uno::Sequence< ::rtl::OUString > SAL_CALL SequenceInputStreamService_getSupportedServiceNames() +void createRegistryInfo_SequenceInputStream() { - uno::Sequence< ::rtl::OUString > s( 1 ); - s[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.io.SequenceInputStream" ) ); - return s; + static ::comphelper::module::OAutoRegistration< SequenceInputStreamService > aAutoRegistration; } - -uno::Reference< uno::XInterface > SAL_CALL SequenceInputStreamService_createInstance( - const uno::Reference< uno::XComponentContext >& ) - SAL_THROW( (uno::Exception ) ) -{ - return static_cast< ::cppu::OWeakObject * >( new SequenceInputStreamService() ); -} - diff --git a/comphelper/source/streaming/seqoutputstreamserv.cxx b/comphelper/source/streaming/seqoutputstreamserv.cxx index 1334412f941d..63ff63321f2e 100644 --- a/comphelper/source/streaming/seqoutputstreamserv.cxx +++ b/comphelper/source/streaming/seqoutputstreamserv.cxx @@ -30,6 +30,8 @@ #include "precompiled_comphelper.hxx" +#include "comphelper_module.hxx" + #include <sal/config.h> #include <osl/mutex.hxx> #include <cppuhelper/factory.hxx> @@ -43,11 +45,6 @@ using namespace ::com::sun::star; -::rtl::OUString SAL_CALL SequenceOutputStreamService_getImplementationName(); -uno::Sequence< ::rtl::OUString > SAL_CALL SequenceOutputStreamService_getSupportedServiceNames(); -uno::Reference< uno::XInterface > SAL_CALL SequenceOutputStreamService_createInstance( const uno::Reference< uno::XComponentContext >& rxContext )SAL_THROW((uno::Exception)); - - namespace { class SequenceOutputStreamService: @@ -61,6 +58,11 @@ public: virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString & ServiceName ) throw ( uno::RuntimeException ); virtual uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw ( uno::RuntimeException ); + // XServiceInfo - static versions (used for component registration) + static ::rtl::OUString SAL_CALL getImplementationName_static(); + static uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static(); + static uno::Reference< uno::XInterface > SAL_CALL Create( const uno::Reference< uno::XComponentContext >& ); + // ::com::sun::star::io::XOutputStream: virtual void SAL_CALL writeBytes( const uno::Sequence< ::sal_Int8 > & aData ) throw ( io::NotConnectedException, io::BufferSizeExceededException, io::IOException, uno::RuntimeException ); virtual void SAL_CALL flush() throw ( uno::RuntimeException, io::NotConnectedException, io::BufferSizeExceededException, io::IOException ); @@ -88,12 +90,17 @@ SequenceOutputStreamService::SequenceOutputStreamService() // com.sun.star.uno.XServiceInfo: ::rtl::OUString SAL_CALL SequenceOutputStreamService::getImplementationName() throw ( uno::RuntimeException ) { - return SequenceOutputStreamService_getImplementationName(); + return getImplementationName_static(); +} + +::rtl::OUString SAL_CALL SequenceOutputStreamService::getImplementationName_static() +{ + return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.SequenceOutputStreamService" ) ); } ::sal_Bool SAL_CALL SequenceOutputStreamService::supportsService( ::rtl::OUString const & serviceName ) throw ( uno::RuntimeException ) { - uno::Sequence< ::rtl::OUString > serviceNames = SequenceOutputStreamService_getSupportedServiceNames(); + uno::Sequence< ::rtl::OUString > serviceNames = getSupportedServiceNames(); for ( ::sal_Int32 i = 0; i < serviceNames.getLength(); ++i ) { if ( serviceNames[i] == serviceName ) return sal_True; @@ -103,7 +110,20 @@ SequenceOutputStreamService::SequenceOutputStreamService() uno::Sequence< ::rtl::OUString > SAL_CALL SequenceOutputStreamService::getSupportedServiceNames() throw ( uno::RuntimeException ) { - return SequenceOutputStreamService_getSupportedServiceNames(); + return getSupportedServiceNames_static(); +} + +uno::Sequence< ::rtl::OUString > SAL_CALL SequenceOutputStreamService::getSupportedServiceNames_static() +{ + uno::Sequence< ::rtl::OUString > s( 1 ); + s[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.io.SequenceOutputStream" ) ); + return s; +} + +uno::Reference< uno::XInterface > SAL_CALL SequenceOutputStreamService::Create( + const uno::Reference< uno::XComponentContext >& ) +{ + return static_cast< ::cppu::OWeakObject * >( new SequenceOutputStreamService()); } // ::com::sun::star::io::XOutputStream: @@ -149,23 +169,7 @@ uno::Sequence< ::sal_Int8 > SAL_CALL SequenceOutputStreamService::getWrittenByte } // anonymous namespace -::rtl::OUString SAL_CALL SequenceOutputStreamService_getImplementationName() { - return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.comp.SequenceOutputStreamService" ) ); -} - -uno::Sequence< ::rtl::OUString > SAL_CALL SequenceOutputStreamService_getSupportedServiceNames() +void createRegistryInfo_SequenceOutputStream() { - uno::Sequence< ::rtl::OUString > s( 1 ); - s[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.io.SequenceOutputStream" ) ); - return s; + static ::comphelper::module::OAutoRegistration< SequenceOutputStreamService > aAutoRegistration; } - -uno::Reference< uno::XInterface > SAL_CALL SequenceOutputStreamService_createInstance( - const uno::Reference< uno::XComponentContext >& ) - SAL_THROW( (uno::Exception) ) -{ - return static_cast< ::cppu::OWeakObject * >( new SequenceOutputStreamService()); -} - diff --git a/comphelper/source/xml/attributelist.cxx b/comphelper/source/xml/attributelist.cxx index 89a5dd3855d8..b0f245afdefb 100644 --- a/comphelper/source/xml/attributelist.cxx +++ b/comphelper/source/xml/attributelist.cxx @@ -74,10 +74,7 @@ sal_Int16 SAL_CALL AttributeList::getLength(void) throw( ::com::sun::star::uno:: OUString SAL_CALL AttributeList::getNameByIndex(sal_Int16 i) throw( ::com::sun::star::uno::RuntimeException ) { - if( i < static_cast < sal_Int16 > (m_pImpl->vecAttribute.size()) ) { - return m_pImpl->vecAttribute[i].sName; - } - return OUString(); + return ( i < static_cast < sal_Int16 > (m_pImpl->vecAttribute.size()) ) ? m_pImpl->vecAttribute[i].sName : OUString(); } OUString SAL_CALL AttributeList::getTypeByIndex(sal_Int16 i) throw( ::com::sun::star::uno::RuntimeException ) @@ -90,11 +87,7 @@ OUString SAL_CALL AttributeList::getTypeByIndex(sal_Int16 i) throw( ::com::sun:: OUString SAL_CALL AttributeList::getValueByIndex(sal_Int16 i) throw( ::com::sun::star::uno::RuntimeException ) { - if( i < static_cast < sal_Int16 > (m_pImpl->vecAttribute.size() ) ) { - return m_pImpl->vecAttribute[i].sValue; - } - return OUString(); - + return ( i < static_cast < sal_Int16 > (m_pImpl->vecAttribute.size() ) ) ? m_pImpl->vecAttribute[i].sValue : OUString(); } OUString SAL_CALL AttributeList::getTypeByName( const OUString& sName ) throw( ::com::sun::star::uno::RuntimeException ) diff --git a/comphelper/util/makefile.mk b/comphelper/util/makefile.mk index 49b7cf6e9168..74122a0f4e2a 100644 --- a/comphelper/util/makefile.mk +++ b/comphelper/util/makefile.mk @@ -55,7 +55,6 @@ SHL1TARGET=comph$(COMPHLP_MAJOR) .ENDIF SHL1STDLIBS= \ $(SALLIB) \ - $(SALHELPERLIB) \ $(CPPUHELPERLIB) \ $(CPPULIB) \ $(UCBHELPERLIB) \ diff --git a/cppcanvas/source/mtfrenderer/implrenderer.cxx b/cppcanvas/source/mtfrenderer/implrenderer.cxx index acf858536f9b..6269cfb11ef4 100644 --- a/cppcanvas/source/mtfrenderer/implrenderer.cxx +++ b/cppcanvas/source/mtfrenderer/implrenderer.cxx @@ -1870,8 +1870,16 @@ namespace cppcanvas ::vcl::unotools::xBitmapFromBitmapEx( rCanvas->getUNOCanvas()->getDevice(), aBmpEx ); - aTexture.RepeatModeX = rendering::TexturingMode::REPEAT; - aTexture.RepeatModeY = rendering::TexturingMode::REPEAT; + if( aFill.isTiling() )
+ {
+ aTexture.RepeatModeX = rendering::TexturingMode::REPEAT;
+ aTexture.RepeatModeY = rendering::TexturingMode::REPEAT;
+ }
+ else
+ {
+ aTexture.RepeatModeX = rendering::TexturingMode::CLAMP;
+ aTexture.RepeatModeY = rendering::TexturingMode::CLAMP;
+ }
::PolyPolygon aPath; aFill.getPath( aPath ); diff --git a/cppcanvas/util/makefile.mk b/cppcanvas/util/makefile.mk index ca73e9a2ab58..a5ac026e262c 100644 --- a/cppcanvas/util/makefile.mk +++ b/cppcanvas/util/makefile.mk @@ -52,6 +52,10 @@ SHL1TARGET= $(TARGET)$(DLLPOSTFIX) SHL1IMPLIB= i$(TARGET) SHL1STDLIBS= $(TOOLSLIB) $(CPPULIB) $(SALLIB) $(VCLLIB) $(COMPHELPERLIB) $(CANVASTOOLSLIB) $(CPPUHELPERLIB) $(BASEGFXLIB) +.IF "$(debug)$(dbgutil)"!="" +SHL1STDLIBS += $(CPPUHELPERLIB) +.ENDIF # "$(debug)$(dbgutil)"!="" + SHL1LIBS= $(SLB)$/$(TARGET).lib SHL1DEF= $(MISC)$/$(SHL1TARGET).def diff --git a/dtrans/source/X11/X11_droptarget.cxx b/dtrans/source/X11/X11_droptarget.cxx index 501eff09ead8..4f71a0507790 100644 --- a/dtrans/source/X11/X11_droptarget.cxx +++ b/dtrans/source/X11/X11_droptarget.cxx @@ -143,15 +143,13 @@ void DropTarget::setDefaultActions( sal_Int8 actions ) throw() void DropTarget::drop( const DropTargetDropEvent& dtde ) throw() { - ::osl::Guard< ::osl::Mutex > aGuard( m_aMutex ); + osl::ClearableGuard< ::osl::Mutex > aGuard( m_aMutex ); + std::list< Reference< XDropTargetListener > > aListeners( m_aListeners ); + aGuard.clear(); - ::std::list< Reference< XDropTargetListener > >::iterator it1, it2; - it1 = m_aListeners.begin(); - while( it1 != m_aListeners.end() ) + for( std::list< Reference< XDropTargetListener > >::iterator it = aListeners.begin(); it!= aListeners.end(); ++it ) { - it2 = it1; - it1++; - (*it2)->drop( dtde ); + (*it)->drop( dtde ); } } @@ -159,15 +157,13 @@ void DropTarget::drop( const DropTargetDropEvent& dtde ) throw() void DropTarget::dragEnter( const DropTargetDragEnterEvent& dtde ) throw() { - ::osl::Guard< ::osl::Mutex > aGuard( m_aMutex ); + osl::ClearableGuard< ::osl::Mutex > aGuard( m_aMutex ); + std::list< Reference< XDropTargetListener > > aListeners( m_aListeners ); + aGuard.clear(); - ::std::list< Reference< XDropTargetListener > >::iterator it1, it2; - it1 = m_aListeners.begin(); - while( it1 != m_aListeners.end() ) + for( std::list< Reference< XDropTargetListener > >::iterator it = aListeners.begin(); it!= aListeners.end(); ++it ) { - it2 = it1; - it1++; - (*it2)->dragEnter( dtde ); + (*it)->dragEnter( dtde ); } } @@ -175,15 +171,13 @@ void DropTarget::dragEnter( const DropTargetDragEnterEvent& dtde ) throw() void DropTarget::dragExit( const DropTargetEvent& dte ) throw() { - ::osl::Guard< ::osl::Mutex > aGuard( m_aMutex ); + osl::ClearableGuard< ::osl::Mutex > aGuard( m_aMutex ); + std::list< Reference< XDropTargetListener > > aListeners( m_aListeners ); + aGuard.clear(); - ::std::list< Reference< XDropTargetListener > >::iterator it1, it2; - it1 = m_aListeners.begin(); - while( it1 != m_aListeners.end() ) + for( std::list< Reference< XDropTargetListener > >::iterator it = aListeners.begin(); it!= aListeners.end(); ++it ) { - it2 = it1; - it1++; - (*it2)->dragExit( dte ); + (*it)->dragExit( dte ); } } @@ -191,15 +185,13 @@ void DropTarget::dragExit( const DropTargetEvent& dte ) throw() void DropTarget::dragOver( const DropTargetDragEvent& dtde ) throw() { - ::osl::Guard< ::osl::Mutex > aGuard( m_aMutex ); + osl::ClearableGuard< ::osl::Mutex > aGuard( m_aMutex ); + std::list< Reference< XDropTargetListener > > aListeners( m_aListeners ); + aGuard.clear(); - ::std::list< Reference< XDropTargetListener > >::iterator it1, it2; - it1 = m_aListeners.begin(); - while( it1 != m_aListeners.end() ) + for( std::list< Reference< XDropTargetListener > >::iterator it = aListeners.begin(); it!= aListeners.end(); ++it ) { - it2 = it1; - it1++; - (*it2)->dragOver( dtde ); + (*it)->dragOver( dtde ); } } diff --git a/dtrans/source/X11/X11_selection.cxx b/dtrans/source/X11/X11_selection.cxx index 2a424984850a..21030a220917 100644 --- a/dtrans/source/X11/X11_selection.cxx +++ b/dtrans/source/X11/X11_selection.cxx @@ -515,6 +515,15 @@ SelectionManager::~SelectionManager() // destroy message window if( m_aWindow ) XDestroyWindow( m_pDisplay, m_aWindow ); + // release cursors + if (m_aMoveCursor != None) + XFreeCursor(m_pDisplay, m_aMoveCursor); + if (m_aCopyCursor != None) + XFreeCursor(m_pDisplay, m_aCopyCursor); + if (m_aLinkCursor != None) + XFreeCursor(m_pDisplay, m_aLinkCursor); + if (m_aNoneCursor != None) + XFreeCursor(m_pDisplay, m_aNoneCursor); // paranoia setting, the drag thread should have // done that already @@ -1117,7 +1126,7 @@ bool SelectionManager::getPasteData( Atom selection, const ::rtl::OUString& rTyp bSuccess = getPasteData( selection, m_nImageBmpAtom, rData ); #if OSL_DEBUG_LEVEL > 1 if( bSuccess ) - fprintf( stderr, "got %d bytes of image/bmp\n" ), (int)rData.getLength(); + fprintf( stderr, "got %d bytes of image/bmp\n", (int)rData.getLength() ); #endif if( ! bSuccess ) { @@ -1685,7 +1694,7 @@ bool SelectionManager::handleSelectionRequest( XSelectionRequestEvent& rRequest XA_INTEGER, 32, PropModeReplace, (const unsigned char*)&nTimeStamp, 1 ); aNotify.xselection.property = rRequest.property; #if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "sending timestamp: %d\n", nTimeStamp ); + fprintf( stderr, "sending timestamp: %d\n", (int)nTimeStamp ); #endif } else diff --git a/dtrans/source/aqua/DropTarget.cxx b/dtrans/source/aqua/DropTarget.cxx index bb45742732e7..6f973d7aa08f 100644 --- a/dtrans/source/aqua/DropTarget.cxx +++ b/dtrans/source/aqua/DropTarget.cxx @@ -245,8 +245,8 @@ NSDragOperation DropTarget::draggingEntered(id sender) CocoaToVCL(dragLocation, bounds); - sal_Int32 posX = dragLocation.x; - sal_Int32 posY = dragLocation.y; + sal_Int32 posX = static_cast<sal_Int32>(dragLocation.x); + sal_Int32 posY = static_cast<sal_Int32>(dragLocation.y); NSPasteboard* dragPboard = [sender draggingPasteboard]; mXCurrentDragClipboard = new AquaClipboard(mXComponentContext, dragPboard, false); @@ -284,8 +284,8 @@ NSDragOperation DropTarget::draggingUpdated(id sender) CocoaToVCL(dragLocation, bounds); - sal_Int32 posX = dragLocation.x; - sal_Int32 posY = dragLocation.y; + sal_Int32 posX = static_cast<sal_Int32>(dragLocation.x); + sal_Int32 posY = static_cast<sal_Int32>(dragLocation.y); DropTargetDragEvent dtde(static_cast<OWeakObject*>(this), 0, @@ -350,8 +350,8 @@ MacOSBOOL DropTarget::performDragOperation(id sender) CocoaToVCL(dragLocation, bounds); - sal_Int32 posX = dragLocation.x; - sal_Int32 posY = dragLocation.y; + sal_Int32 posX = static_cast<sal_Int32>(dragLocation.x); + sal_Int32 posY = static_cast<sal_Int32>(dragLocation.y); DropTargetDropEvent dtde(static_cast<OWeakObject*>(this), 0, diff --git a/dtrans/source/aqua/aqua_clipboard.cxx b/dtrans/source/aqua/aqua_clipboard.cxx index d0b821099ea0..370edee90eb7 100644 --- a/dtrans/source/aqua/aqua_clipboard.cxx +++ b/dtrans/source/aqua/aqua_clipboard.cxx @@ -323,8 +323,13 @@ void AquaClipboard::fireLostClipboardOwnershipEvent(Reference<XClipboardOwner> o void AquaClipboard::provideDataForType(NSPasteboard* sender, NSString* type) { DataProviderPtr_t dp = mpDataFlavorMapper->getDataProvider(type, mXClipboardContent); - NSData* pBoardData = (NSData*)dp->getSystemData(); - [sender setData: pBoardData forType: type]; + NSData* pBoardData = NULL; + + if (dp.get() != NULL) + { + pBoardData = (NSData*)dp->getSystemData(); + [sender setData: pBoardData forType: type]; + } } diff --git a/goodies/inc/grfmgr.hxx b/goodies/inc/grfmgr.hxx index ae2bced9377c..b44c27ea65e3 100644 --- a/goodies/inc/grfmgr.hxx +++ b/goodies/inc/grfmgr.hxx @@ -228,7 +228,9 @@ private: void ImplConstruct(); void ImplAssignGraphicData(); - void ImplSetGraphicManager( const GraphicManager* pMgr, const ByteString* pID = NULL ); + void ImplSetGraphicManager( const GraphicManager* pMgr, + const ByteString* pID = NULL, + const GraphicObject* pCopyObj = NULL ); void ImplAutoSwapIn(); BOOL ImplIsAutoSwapped() const { return mbAutoSwapped; } BOOL ImplGetCropParams( OutputDevice* pOut, Point& rPt, Size& rSz, const GraphicAttr* pAttr, @@ -524,7 +526,9 @@ private: const GDIMetaFile& rMtf, const GraphicAttr& rAttr ); // Only used by GraphicObject's Ctor's and Dtor's - void ImplRegisterObj( const GraphicObject& rObj, Graphic& rSubstitute, const ByteString* pID ); + void ImplRegisterObj( const GraphicObject& rObj, Graphic& rSubstitute, + const ByteString* pID = NULL, + const GraphicObject* pCopyObj = NULL ); void ImplUnregisterObj( const GraphicObject& rObj ); inline BOOL ImplHasObjects() const { return( maObjList.Count() > 0UL ); } diff --git a/goodies/prj/build.lst b/goodies/prj/build.lst index fb1f7a0f1aca..f8edce86c4f8 100644 --- a/goodies/prj/build.lst +++ b/goodies/prj/build.lst @@ -1,4 +1,4 @@ -go goodies : svtools NULL +go goodies : l10n svtools NULL go goodies usr1 - all g_mkout NULL go goodies\inc nmake - all g_inc NULL go goodies\prj get - all g_prj NULL diff --git a/goodies/source/filter.vcl/eps/eps.cxx b/goodies/source/filter.vcl/eps/eps.cxx index cfe17744941a..8a163659050a 100644 --- a/goodies/source/filter.vcl/eps/eps.cxx +++ b/goodies/source/filter.vcl/eps/eps.cxx @@ -2639,7 +2639,8 @@ BOOL PSWriter::ImplGetBoundingBox( double* nNumb, BYTE* pSource, ULONG nSize ) BOOL bNegative = FALSE; BOOL bValid = TRUE; - while ( ( --nSecurityCount ) && ( *pDest == ' ' ) || ( *pDest == 0x9 ) ) pDest++; + while ( ( --nSecurityCount ) && ( ( *pDest == ' ' ) || ( *pDest == 0x9 ) ) ) + pDest++; BYTE nByte = *pDest; while ( nSecurityCount && ( nByte != ' ' ) && ( nByte != 0x9 ) && ( nByte != 0xd ) && ( nByte != 0xa ) ) { diff --git a/goodies/source/filter.vcl/ieps/ieps.cxx b/goodies/source/filter.vcl/ieps/ieps.cxx index 7eee1606d511..f315ee864310 100644 --- a/goodies/source/filter.vcl/ieps/ieps.cxx +++ b/goodies/source/filter.vcl/ieps/ieps.cxx @@ -93,7 +93,8 @@ static long ImplGetNumber( BYTE **pBuf, int& nSecurityCount ) BOOL bValid = TRUE; BOOL bNegative = FALSE; long nRetValue = 0; - while ( ( --nSecurityCount ) && ( **pBuf == ' ' ) || ( **pBuf == 0x9 ) ) (*pBuf)++; + while ( ( --nSecurityCount ) && ( ( **pBuf == ' ' ) || ( **pBuf == 0x9 ) ) ) + (*pBuf)++; BYTE nByte = **pBuf; while ( nSecurityCount && ( nByte != ' ' ) && ( nByte != 0x9 ) && ( nByte != 0xd ) && ( nByte != 0xa ) ) { diff --git a/goodies/source/graphic/grfcache.cxx b/goodies/source/graphic/grfcache.cxx index fb7cb94a964c..1a2af16ed741 100644 --- a/goodies/source/graphic/grfcache.cxx +++ b/goodies/source/graphic/grfcache.cxx @@ -583,54 +583,79 @@ GraphicCache::~GraphicCache() // ----------------------------------------------------------------------------- -void GraphicCache::AddGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute, const ByteString* pID ) +void GraphicCache::AddGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute, + const ByteString* pID, const GraphicObject* pCopyObj ) { BOOL bInserted = FALSE; - if( !rObj.IsSwappedOut() && ( ( rObj.GetType() != GRAPHIC_NONE ) || pID ) ) + if( !rObj.IsSwappedOut() && + ( pID || ( pCopyObj && ( pCopyObj->GetType() != GRAPHIC_NONE ) ) || ( rObj.GetType() != GRAPHIC_NONE ) ) ) { - GraphicCacheEntry* pEntry = (GraphicCacheEntry*) maGraphicCache.First(); - const GraphicID aID( rObj ); - - while( !bInserted && pEntry ) + if( pCopyObj ) { - const GraphicID& rEntryID = pEntry->GetID(); + GraphicCacheEntry* pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.First() ); - if( pID ) + while( !bInserted && pEntry ) { - if( rEntryID.GetIDString() == *pID ) + if( pEntry->HasGraphicObjectReference( *pCopyObj ) ) + { + pEntry->AddGraphicObjectReference( rObj, rSubstitute ); + bInserted = TRUE; + } + else { - pEntry->TryToSwapIn(); + pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.Next() ); + } + } + } + + if( !bInserted ) + { + GraphicCacheEntry* pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.First() ); + const GraphicID aID( rObj ); - // since pEntry->TryToSwapIn can modify our current list, we have to - // iterate from beginning to add a reference to the appropriate - // CacheEntry object; after this, quickly jump out of the outer iteration - for( pEntry = (GraphicCacheEntry*) maGraphicCache.First(); !bInserted && pEntry; pEntry = (GraphicCacheEntry*) maGraphicCache.Next() ) + while( !bInserted && pEntry ) + { + const GraphicID& rEntryID = pEntry->GetID(); + + if( pID ) + { + if( rEntryID.GetIDString() == *pID ) { - const GraphicID& rID = pEntry->GetID(); + pEntry->TryToSwapIn(); + + // since pEntry->TryToSwapIn can modify our current list, we have to + // iterate from beginning to add a reference to the appropriate + // CacheEntry object; after this, quickly jump out of the outer iteration + for( pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.First() ); + !bInserted && pEntry; + pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.Next() ) ) + { + const GraphicID& rID = pEntry->GetID(); + + if( rID.GetIDString() == *pID ) + { + pEntry->AddGraphicObjectReference( rObj, rSubstitute ); + bInserted = TRUE; + } + } - if( rID.GetIDString() == *pID ) + if( !bInserted ) { - pEntry->AddGraphicObjectReference( rObj, rSubstitute ); + maGraphicCache.Insert( new GraphicCacheEntry( rObj ), LIST_APPEND ); bInserted = TRUE; } } - - if( !bInserted ) - { - maGraphicCache.Insert( new GraphicCacheEntry( rObj ), LIST_APPEND ); - bInserted = TRUE; - } } - } - else if( rEntryID == aID ) - { - pEntry->AddGraphicObjectReference( rObj, rSubstitute ); - bInserted = TRUE; - } + else if( rEntryID == aID ) + { + pEntry->AddGraphicObjectReference( rObj, rSubstitute ); + bInserted = TRUE; + } - if( !bInserted ) - pEntry = (GraphicCacheEntry*) maGraphicCache.Next(); + if( !bInserted ) + pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.Next() ); + } } } @@ -718,7 +743,7 @@ void GraphicCache::GraphicObjectWasSwappedIn( const GraphicObject& rObj ) if( pEntry->GetID().IsEmpty() ) { ReleaseGraphicObject( rObj ); - AddGraphicObject( rObj, (Graphic&) rObj.GetGraphic(), NULL ); + AddGraphicObject( rObj, (Graphic&) rObj.GetGraphic(), NULL, NULL ); } else pEntry->GraphicObjectWasSwappedIn( rObj ); diff --git a/goodies/source/graphic/grfcache.hxx b/goodies/source/graphic/grfcache.hxx index 62c7f4e18521..86b982b01498 100644 --- a/goodies/source/graphic/grfcache.hxx +++ b/goodies/source/graphic/grfcache.hxx @@ -70,7 +70,8 @@ public: public: - void AddGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute, const ByteString* pID ); + void AddGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute, + const ByteString* pID, const GraphicObject* pCopyObj ); void ReleaseGraphicObject( const GraphicObject& rObj ); void GraphicObjectWasSwappedOut( const GraphicObject& rObj ); diff --git a/goodies/source/graphic/grfmgr.cxx b/goodies/source/graphic/grfmgr.cxx index 29ab26a78c5a..5cb37a51e81f 100644 --- a/goodies/source/graphic/grfmgr.cxx +++ b/goodies/source/graphic/grfmgr.cxx @@ -44,7 +44,6 @@ #include <vcl/metaact.hxx> #include <vcl/virdev.hxx> #include <vcl/salbtype.hxx> -#include <vcl/pdfextoutdevdata.hxx> #include <svtools/cacheoptions.hxx> #include "grfmgr.hxx" @@ -126,7 +125,7 @@ GraphicObject::GraphicObject( const GraphicObject& rGraphicObj, const GraphicMan { ImplConstruct(); ImplAssignGraphicData(); - ImplSetGraphicManager( pMgr ); + ImplSetGraphicManager( pMgr, NULL, &rGraphicObj ); } // ----------------------------------------------------------------------------- @@ -203,7 +202,7 @@ void GraphicObject::ImplAssignGraphicData() // ----------------------------------------------------------------------------- -void GraphicObject::ImplSetGraphicManager( const GraphicManager* pMgr, const ByteString* pID ) +void GraphicObject::ImplSetGraphicManager( const GraphicManager* pMgr, const ByteString* pID, const GraphicObject* pCopyObj ) { if( !mpMgr || ( pMgr != mpMgr ) ) { @@ -235,7 +234,7 @@ void GraphicObject::ImplSetGraphicManager( const GraphicManager* pMgr, const Byt else mpMgr = (GraphicManager*) pMgr; - mpMgr->ImplRegisterObj( *this, maGraphic, pID ); + mpMgr->ImplRegisterObj( *this, maGraphic, pID, pCopyObj ); } } } @@ -407,7 +406,7 @@ GraphicObject& GraphicObject::operator=( const GraphicObject& rGraphicObj ) mbAutoSwapped = FALSE; mpMgr = rGraphicObj.mpMgr; - mpMgr->ImplRegisterObj( *this, maGraphic, NULL ); + mpMgr->ImplRegisterObj( *this, maGraphic, NULL, &rGraphicObj ); } return *this; @@ -674,31 +673,11 @@ BOOL GraphicObject::Draw( OutputDevice* pOut, const Point& rPt, const Size& rSz, const sal_uInt32 nOldDrawMode = pOut->GetDrawMode(); BOOL bCropped = aAttr.IsCropped(); BOOL bCached = FALSE; - BOOL bWritingPdfLinkedGraphic = FALSE; BOOL bRet; // #i29534# Provide output rects for PDF writer Rectangle aCropRect; - // #i29534# Notify PDF writer about linked graphic (if any) - vcl::ExtOutDevData* pExtOutDevData = pOut->GetExtOutDevData(); - if( pExtOutDevData && pExtOutDevData->ISA(vcl::PDFExtOutDevData) ) - { - // #i29534# Only delegate image handling to PDF, if no special - // treatment is necessary - if( GetGraphic().IsLink() && - aSz.Width() > 0L && - aSz.Height() > 0L && - !aAttr.IsSpecialDrawMode() && - !aAttr.IsMirrored() && - !aAttr.IsRotated() && - !aAttr.IsAdjusted() ) - { - bWritingPdfLinkedGraphic = TRUE; - static_cast< vcl::PDFExtOutDevData* >( pExtOutDevData )->BeginGroup(); - } - } - if( !( GRFMGR_DRAW_USE_DRAWMODE_SETTINGS & nFlags ) ) pOut->SetDrawMode( nOldDrawMode & ( ~( DRAWMODE_SETTINGSLINE | DRAWMODE_SETTINGSFILL | DRAWMODE_SETTINGSTEXT | DRAWMODE_SETTINGSGRADIENT ) ) ); @@ -749,16 +728,6 @@ BOOL GraphicObject::Draw( OutputDevice* pOut, const Point& rPt, const Size& rSz, pOut->SetDrawMode( nOldDrawMode ); - // #i29534# Notify PDF writer about linked graphic (if any) - if( bWritingPdfLinkedGraphic ) - { - static_cast< vcl::PDFExtOutDevData* >( pExtOutDevData )->EndGroup( - const_cast< Graphic& >(GetGraphic()), - aAttr.GetTransparency(), - Rectangle( aPt, aSz ), - aCropRect ); - } - // #i29534# Moved below OutDev restoration, to avoid multiple swap-ins // (code above needs to call GetGraphic twice) if( bCached ) @@ -889,7 +858,7 @@ void GraphicObject::SetGraphic( const Graphic& rGraphic ) delete mpLink, mpLink = NULL; delete mpSimpleCache, mpSimpleCache = NULL; - mpMgr->ImplRegisterObj( *this, maGraphic, NULL ); + mpMgr->ImplRegisterObj( *this, maGraphic ); if( mpSwapOutTimer ) mpSwapOutTimer->Start(); diff --git a/goodies/source/graphic/grfmgr2.cxx b/goodies/source/graphic/grfmgr2.cxx index eb5d2b4ee8dc..2b7dc86f7149 100644 --- a/goodies/source/graphic/grfmgr2.cxx +++ b/goodies/source/graphic/grfmgr2.cxx @@ -271,10 +271,11 @@ BOOL GraphicManager::DrawObj( OutputDevice* pOut, const Point& rPt, const Size& // ----------------------------------------------------------------------------- -void GraphicManager::ImplRegisterObj( const GraphicObject& rObj, Graphic& rSubstitute, const ByteString* pID ) +void GraphicManager::ImplRegisterObj( const GraphicObject& rObj, Graphic& rSubstitute, + const ByteString* pID, const GraphicObject* pCopyObj ) { maObjList.Insert( (void*) &rObj, LIST_APPEND ); - mpCache->AddGraphicObject( rObj, rSubstitute, pID ); + mpCache->AddGraphicObject( rObj, rSubstitute, pID, pCopyObj ); } // ----------------------------------------------------------------------------- @@ -2320,11 +2321,11 @@ void GraphicObject::ImplTransformBitmap( BitmapEx& rBmpEx, rBmpEx.Crop( rCropRect ); // #104115# Negative crop sizes mean: enlarge bitmap and pad - if( bEnlarge && + if( bEnlarge && ( rCropLeftTop.Width() < 0 || rCropLeftTop.Height() < 0 || rCropRightBottom.Width() < 0 || - rCropRightBottom.Height() < 0 ) + rCropRightBottom.Height() < 0 ) ) { Size aBmpSize( rBmpEx.GetSizePixel() ); sal_Int32 nPadLeft( rCropLeftTop.Width() < 0 ? -rCropLeftTop.Width() : 0 ); diff --git a/goodies/util/makefile.mk b/goodies/util/makefile.mk index 2578b4be4f0b..13bb94069804 100644 --- a/goodies/util/makefile.mk +++ b/goodies/util/makefile.mk @@ -59,11 +59,9 @@ SHL1STDLIBS=\ $(SVTOOLLIB) \ $(UNOTOOLSLIB) \ $(TOOLSLIB) \ - $(VOSLIB) \ $(SALLIB) \ $(CPPULIB) \ $(COMPHELPERLIB) \ - $(UCBHELPERLIB) \ $(CPPUHELPERLIB) \ $(BASEGFXLIB) \ $(TKLIB) diff --git a/i18npool/inc/i18npool/paper.hxx b/i18npool/inc/i18npool/paper.hxx new file mode 100644 index 000000000000..5690a8fe7254 --- /dev/null +++ b/i18npool/inc/i18npool/paper.hxx @@ -0,0 +1,155 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile$ + * + * $Revision$ + * + * last change: $Author$ $Date$ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +#ifndef INCLUDED_I18NPOOL_PAPER_HXX +#define INCLUDED_I18NPOOL_PAPER_HXX + +#include <sal/config.h> + +#include "i18npool/i18npooldllapi.h" +#include <rtl/string.hxx> +#include <com/sun/star/lang/Locale.hpp> + +enum Paper +{ + PAPER_A0, + PAPER_A1, + PAPER_A2, + PAPER_A3, + PAPER_A4, + PAPER_A5, + PAPER_B4_ISO, + PAPER_B5_ISO, + PAPER_LETTER, + PAPER_LEGAL, + PAPER_TABLOID, + PAPER_USER, + PAPER_B6_ISO, + PAPER_ENV_C4, + PAPER_ENV_C5, + PAPER_ENV_C6, + PAPER_ENV_C65, + PAPER_ENV_DL, + PAPER_SLIDE_DIA, + PAPER_SCREEN, + PAPER_C, + PAPER_D, + PAPER_E, + PAPER_EXECUTIVE, + PAPER_FANFOLD_LEGAL_DE, + PAPER_ENV_MONARCH, + PAPER_ENV_PERSONAL, + PAPER_ENV_9, + PAPER_ENV_10, + PAPER_ENV_11, + PAPER_ENV_12, + PAPER_KAI16, + PAPER_KAI32, + PAPER_KAI32BIG, + PAPER_B4_JIS, + PAPER_B5_JIS, + PAPER_B6_JIS, + PAPER_LEDGER, + PAPER_STATEMENT, + PAPER_QUARTO, + PAPER_10x14, + PAPER_ENV_14, + PAPER_ENV_C3, + PAPER_ENV_ITALY, + PAPER_FANFOLD_US, + PAPER_FANFOLD_DE, + PAPER_POSTCARD_JP, + PAPER_9x11, + PAPER_10x11, + PAPER_15x11, + PAPER_ENV_INVITE, + PAPER_A_PLUS, + PAPER_B_PLUS, + PAPER_LETTER_PLUS, + PAPER_A4_PLUS, + PAPER_DOUBLEPOSTCARD_JP, + PAPER_A6, + PAPER_12x11, + PAPER_A7, + PAPER_A8, + PAPER_A9, + PAPER_A10, + PAPER_B0_ISO, + PAPER_B1_ISO, + PAPER_B2_ISO, + PAPER_B3_ISO, + PAPER_B7_ISO, + PAPER_B8_ISO, + PAPER_B9_ISO, + PAPER_B10_ISO, + PAPER_ENV_C2, + PAPER_ENV_C7, + PAPER_ENV_C8, + PAPER_ARCHA, + PAPER_ARCHB, + PAPER_ARCHC, + PAPER_ARCHD, + PAPER_ARCHE +}; + +// --------- +// - Paper - +// --------- + +class I18NPOOL_DLLPUBLIC PaperInfo +{ + Paper m_eType; + long m_nPaperWidth; // width in 100thMM + long m_nPaperHeight; // height in 100thMM +public: + PaperInfo(Paper eType); + PaperInfo(long nPaperWidth, long nPaperHeight); + + Paper getPaper() const { return m_eType; } + long getWidth() const { return m_nPaperWidth; } + long getHeight() const { return m_nPaperHeight; } + bool sloppyEqual(const PaperInfo &rOther) const; + bool doSloppyFit(); + + static PaperInfo getSystemDefaultPaper(); + static PaperInfo getDefaultPaperForLocale(const ::com::sun::star::lang::Locale & rLocale); + + static Paper fromPSName(const rtl::OString &rName); + static rtl::OString toPSName(Paper eType); + + static long sloppyFitPageDimension(long nDimension); +}; + +#endif // INCLUDED_I18NPOOL_PAPER_HXX diff --git a/i18npool/prj/build.lst b/i18npool/prj/build.lst index 98fec96d0149..24e9607596ac 100644 --- a/i18npool/prj/build.lst +++ b/i18npool/prj/build.lst @@ -9,6 +9,7 @@ inp i18npool\source\transliteration nmake - all inp_translit inp inp i18npool\source\isolang nmake - all inp_isolang inp_inc NULL inp i18npool\source\localedata nmake - all inp_localedata inp_isolang inp_inc NULL inp i18npool\source\localedata\data nmake - all inp_locdata_data inp_localedata inp_inc NULL +inp i18npool\source\paper nmake - all inp_paper inp_isolang inp_inc NULL inp i18npool\source\calendar nmake - all inp_cal inp_inc NULL inp i18npool\source\numberformatcode nmake - all inp_numformat inp_inc NULL inp i18npool\source\defaultnumberingprovider nmake - all inp_dnum inp_inc NULL @@ -22,4 +23,4 @@ inp i18npool\source\textconversion nmake - all inp_textconversi inp i18npool\source\textconversion\data nmake - all inp_textconv_dict inp_textconversion inp_inc NULL inp i18npool\source\search nmake - all inp_search inp_inc NULL inp i18npool\source\ordinalsuffix nmake - all inp_ordinalsuffix NULL -inp i18npool\util nmake - all inp_util inp_brkit inp_dict inp_chclass inp_translit inp_cal inp_dnum inp_natnum inp_localedata inp_locdata_data inp_numformat inp_rserv inp_index inp_index_data inp_collator inp_collator_data inp_inputchecker inp_textconversion inp_textconv_dict inp_search inp_isolang inp_ordinalsuffix NULL +inp i18npool\util nmake - all inp_util inp_brkit inp_dict inp_chclass inp_translit inp_cal inp_dnum inp_natnum inp_localedata inp_locdata_data inp_numformat inp_rserv inp_index inp_index_data inp_collator inp_collator_data inp_inputchecker inp_textconversion inp_textconv_dict inp_search inp_isolang inp_paper inp_ordinalsuffix NULL diff --git a/i18npool/prj/d.lst b/i18npool/prj/d.lst index 052ad4d23273..54aefa732b89 100644 --- a/i18npool/prj/d.lst +++ b/i18npool/prj/d.lst @@ -40,3 +40,9 @@ mkdir: %_DEST%\inc%_EXT%\i18npool ..\%__SRC%\bin\i18nisol*.dll %_DEST%\bin%_EXT%\i18nisol*.dll ..\%__SRC%\lib\libi18nisolang*.so %_DEST%\lib%_EXT%\libi18nisolang*.so ..\%__SRC%\lib\libi18nisolang*.dylib %_DEST%\lib%_EXT%\libi18nisolang*.dylib + +..\%__SRC%\lib\ii18npaper*.lib %_DEST%\lib%_EXT%\ii18npaper*.lib +..\%__SRC%\bin\i18npaper*.dll %_DEST%\bin%_EXT%\i18npaper*.dll +..\%__SRC%\lib\libi18npaper*.so %_DEST%\lib%_EXT%\libi18npaper*.so +..\%__SRC%\lib\libi18npaper*.dylib %_DEST%\lib%_EXT%\libi18npaper*.dylib + diff --git a/i18npool/source/calendar/calendar_gregorian.cxx b/i18npool/source/calendar/calendar_gregorian.cxx index 96eee0772bc1..50b61eae5cf1 100644 --- a/i18npool/source/calendar/calendar_gregorian.cxx +++ b/i18npool/source/calendar/calendar_gregorian.cxx @@ -148,10 +148,42 @@ void SAL_CALL Calendar_gregorian::init(Era *_eraArray) { cCalendar = "com.sun.star.i18n.Calendar_gregorian"; + + // #i102356# With icu::Calendar::createInstance(UErrorCode) in a Thai + // th_TH system locale we accidentally used a Buddhist calendar. Though + // the ICU documentation says that should be the case only for + // th_TH_TRADITIONAL (and ja_JP_TRADITIONAL Gengou), a plain th_TH + // already triggers that behavior, ja_JP does not. Strange enough, + // passing a th_TH locale to the calendar creation doesn't trigger + // this. + // See also http://userguide.icu-project.org/datetime/calendar + + // Whatever ICU offers as the default calendar for a locale, ensure we + // have a Gregorian calendar as requested. + + /* XXX: with the current implementation the aLocale member variable is + * not set prior to loading a calendar from locale data. This + * creates an empty (root) locale for ICU, but at least the correct + * calendar is used. The language part must not be NULL (respectively + * not all, language and country and variant), otherwise the current + * default locale would be used again and the calendar keyword ignored. + * */ + icu::Locale aIcuLocale( "", NULL, NULL, "calendar=gregorian"); + UErrorCode status; - body = icu::Calendar::createInstance(status = U_ZERO_ERROR); + body = icu::Calendar::createInstance( aIcuLocale, status = U_ZERO_ERROR); if (!body || !U_SUCCESS(status)) throw ERROR; +#if 0 + { + icu::Locale loc; + loc = body->getLocale( ULOC_ACTUAL_LOCALE, status = U_ZERO_ERROR); + fprintf( stderr, "\nICU calendar actual locale: %s\n", loc.getName()); + loc = body->getLocale( ULOC_VALID_LOCALE, status = U_ZERO_ERROR); + fprintf( stderr, "ICU calendar valid locale: %s\n", loc.getName()); + } +#endif + eraArray=_eraArray; } diff --git a/i18npool/source/isolang/makefile.mk b/i18npool/source/isolang/makefile.mk index 4135c3b51db7..be2a3b73f138 100644 --- a/i18npool/source/isolang/makefile.mk +++ b/i18npool/source/isolang/makefile.mk @@ -60,7 +60,6 @@ LIB1TARGET= $(SLB)$/$(SHL1TARGET).lib LIB1OBJFILES=$(SHL1OBJS) SHL1STDLIBS= \ - $(CPPULIB) \ $(SALLIB) # --- Targets ------------------------------------------------------ diff --git a/i18npool/source/localedata/makefile.mk b/i18npool/source/localedata/makefile.mk index 6b7cbc4a9292..e1bd0ac1a6ce 100644 --- a/i18npool/source/localedata/makefile.mk +++ b/i18npool/source/localedata/makefile.mk @@ -74,7 +74,6 @@ APP1OBJS = $(OBJFILES) APP1STDLIBS = \ $(SALLIB) \ - $(SALHELPERLIB) \ $(CPPULIB) \ $(CPPUHELPERLIB) diff --git a/i18npool/source/paper/makefile.mk b/i18npool/source/paper/makefile.mk new file mode 100644 index 000000000000..2aef382a32fa --- /dev/null +++ b/i18npool/source/paper/makefile.mk @@ -0,0 +1,75 @@ +#************************************************************************* +#* +# 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: makefile.mk,v $ +# +# $Revision: 1.9 $ +# +# 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. +# +#************************************************************************/ + +PRJ=..$/.. + +PRJNAME=i18npool +TARGET=i18npaper + +ENABLE_EXCEPTIONS=TRUE + +# --- Settings ----------------------------------------------------- + +.INCLUDE : settings.mk +.INCLUDE : $(PRJ)$/version.mk +.INCLUDE : $(PRJ)$/util$/makefile.pmk + +# --- Files -------------------------------------------------------- +# +SLOFILES=$(SLO)$/paper.obj +SHL1OBJS=$(SLOFILES) + +SHL1TARGET=$(TARGET)$(DLLPOSTFIX) +SHL1IMPLIB=i$(TARGET) + +DEF1DEPN=$(MISC)$/$(SHL1TARGET).flt +SHL1DEF=$(MISC)$/$(SHL1TARGET).def +DEF1NAME=$(SHL1TARGET) +DEFLIB1NAME=$(SHL1TARGET) + +LIB1TARGET= $(SLB)$/$(SHL1TARGET).lib +LIB1OBJFILES=$(SHL1OBJS) + +SHL1STDLIBS= \ + $(I18NISOLANGLIB) \ + $(COMPHELPERLIB) \ + $(CPPULIB) \ + $(SALLIB) + +# --- Targets ------------------------------------------------------ + +.INCLUDE : target.mk + +$(MISC)$/$(SHL1TARGET).flt: makefile.mk + @echo ------------------------------ + @echo Making: $@ + @echo CLEAR_THE_FILE > $@ + @echo __CT >> $@ diff --git a/i18npool/source/paper/paper.cxx b/i18npool/source/paper/paper.cxx new file mode 100644 index 000000000000..726a4c3bd898 --- /dev/null +++ b/i18npool/source/paper/paper.cxx @@ -0,0 +1,478 @@ +/************************************************************************* + * + * 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$ + * $Revision$ + * + * 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_i18npool.hxx" +#include <sal/config.h> +#include <rtl/ustring.hxx> +#include <rtl/string.hxx> +#include <comphelper/processfactory.hxx> +#include <com/sun/star/i18n/ScriptType.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/container/XNameAccess.hpp> + +#include "i18npool/mslangid.hxx" +#include "i18npool/paper.hxx" + +#include <utility> +#include <cstdlib> + +#ifdef UNX +#include <stdio.h> +#include <string.h> +#include <locale.h> +#include <langinfo.h> +#endif + +struct PageDesc +{ + long m_nWidth; + long m_nHeight; + const char *m_pPSName; + const char *m_pAltPSName; +}; + +#define PT2MM100( v ) \ + (long)(((v) * 35.27777778) + 0.5) + +#define IN2MM100( v ) \ + ((long)(((v) * 2540) + 0.5)) + +#define MM2MM100( v ) \ + ((long)((v) * 100)) + +//PostScript Printer Description File Format Specification +//http://partners.adobe.com/public/developer/en/ps/5003.PPD_Spec_v4.3.pdf +//http://www.y-adagio.com/public/committees/docsii/doc_00-49/symp_ulaan/china_ppr.pdf (Kai) +//http://www.sls.psi.ch/controls/help/howto/Howto_Print_a_A0_Poster_at_WSLA_012_2.pdf (Dia) +static PageDesc aDinTab[] = +{ + { MM2MM100( 841 ), MM2MM100( 1189 ), "A0", NULL }, + { MM2MM100( 594 ), MM2MM100( 841 ), "A1", NULL }, + { MM2MM100( 420 ), MM2MM100( 594 ), "A2", NULL }, + { MM2MM100( 297 ), MM2MM100( 420 ), "A3", NULL }, + { MM2MM100( 210 ), MM2MM100( 297 ), "A4", NULL }, + { MM2MM100( 148 ), MM2MM100( 210 ), "A5", NULL }, + { MM2MM100( 250 ), MM2MM100( 353 ), "ISOB4", NULL }, + { MM2MM100( 176 ), MM2MM100( 250 ), "ISOB5", NULL }, + { IN2MM100( 8.5 ), IN2MM100( 11 ), "Letter", "Note" }, + { IN2MM100( 8.5 ), IN2MM100( 14 ), "Legal", NULL }, + { IN2MM100( 11 ), IN2MM100( 17 ), "Tabloid", "11x17" }, + { 0, 0, NULL, NULL }, //User + { MM2MM100( 125 ), MM2MM100( 176 ), "ISOB6", NULL }, + { MM2MM100( 229 ), MM2MM100( 324 ), "EnvC4", "C4" }, + { MM2MM100( 162 ), MM2MM100( 229 ), "EnvC5", "C5" }, + { MM2MM100( 114 ), MM2MM100( 162 ), "EnvC6", "C6" }, + { MM2MM100( 114 ), MM2MM100( 229 ), "EnvC65", NULL }, + { MM2MM100( 110 ), MM2MM100( 220 ), "EnvDL", "DL" }, + { MM2MM100( 180), MM2MM100( 270 ), NULL, NULL }, //Dia + { MM2MM100( 210), MM2MM100( 280 ), NULL, NULL }, //Screen + { IN2MM100( 17 ), IN2MM100( 22 ), "AnsiC", "CSheet" }, + { IN2MM100( 22 ), IN2MM100( 34 ), "AnsiD", "DSheet" }, + { IN2MM100( 34 ), IN2MM100( 44 ), "AnsiE", "ESheet" }, + { IN2MM100( 7.25 ), IN2MM100( 10.5 ), "Executive", NULL }, + //"Folio" is a different size in the PPD documentation than 8.5x11 + //This "FanFoldGermanLegal" is known in the Philippines as + //"Legal" paper or "Long Bond Paper". The "Legal" name causing untold + //misery, given the differently sized US "Legal" paper + { IN2MM100( 8.5 ), IN2MM100( 13 ), "FanFoldGermanLegal", NULL }, + { IN2MM100( 3.875 ), IN2MM100( 7.5 ), "EnvMonarch", "Monarch" }, + { IN2MM100( 3.625 ), IN2MM100( 6.5 ), "EnvPersonal", "Personal" }, + { IN2MM100( 3.875 ), IN2MM100( 8.875 ), "Env9", NULL }, + { IN2MM100( 4.125 ), IN2MM100( 9.5 ), "Env10", "Comm10" }, + { IN2MM100( 4.5 ), IN2MM100( 10.375 ), "Env11", NULL }, + { IN2MM100( 4.75 ), IN2MM100( 11 ), "Env12", NULL }, + { MM2MM100( 184 ), MM2MM100( 260 ), NULL, NULL }, //Kai16 + { MM2MM100( 130 ), MM2MM100( 184 ), NULL, NULL }, //Kai32 + { MM2MM100( 140 ), MM2MM100( 203 ), NULL, NULL }, //BigKai32 + { MM2MM100( 257 ), MM2MM100( 364 ), "B4", NULL }, //JIS + { MM2MM100( 182 ), MM2MM100( 257 ), "B5", NULL }, //JIS + { MM2MM100( 128 ), MM2MM100( 182 ), "B6", NULL }, //JIS + { IN2MM100( 17 ), IN2MM100( 11 ), "Ledger", NULL }, + { IN2MM100( 5.5 ), IN2MM100( 8.5 ), "Statement", NULL }, + { PT2MM100( 610 ), PT2MM100( 780 ), "Quarto", NULL }, + { IN2MM100( 10 ), IN2MM100( 14 ), "10x14", NULL }, + { IN2MM100( 5.5 ), IN2MM100( 11.5 ), "Env14", NULL }, + { MM2MM100( 324 ), MM2MM100( 458 ), "EnvC3", "C3" }, + { MM2MM100( 110 ), MM2MM100( 230 ), "EnvItalian", NULL }, + { IN2MM100( 14.875 ),IN2MM100( 11 ), "FanFoldUS", NULL }, + { IN2MM100( 8.5 ), IN2MM100( 13 ), "FanFoldGerman", NULL }, + { MM2MM100( 100 ), MM2MM100( 148 ), "Postcard", NULL }, + { IN2MM100( 9 ), IN2MM100( 11 ), "9x11", NULL }, + { IN2MM100( 10 ), IN2MM100( 11 ), "10x11", NULL }, + { IN2MM100( 15 ), IN2MM100( 11 ), "15x11", NULL }, + { MM2MM100( 220 ), MM2MM100( 220 ), "EnvInvite", NULL }, + { MM2MM100( 227 ), MM2MM100( 356 ), "SuperA", NULL }, + { MM2MM100( 305 ), MM2MM100( 487 ), "SuperB", NULL }, + { IN2MM100( 8.5 ), IN2MM100( 12.69 ), "LetterPlus", NULL }, + { IN2MM100( 8.5 ), IN2MM100( 12.69 ), "LetterPlus", NULL }, + { MM2MM100( 210 ), MM2MM100( 330 ), "A4Plus", NULL }, + { MM2MM100( 200 ), MM2MM100( 148 ), "DoublePostcard", NULL }, + { MM2MM100( 105 ), MM2MM100( 148 ), "A6", NULL }, + { IN2MM100( 12 ), IN2MM100( 11 ), "12x11", NULL }, + { MM2MM100( 74 ), MM2MM100( 105 ), "A7", NULL }, + { MM2MM100( 52 ), MM2MM100( 74 ), "A8", NULL }, + { MM2MM100( 37 ), MM2MM100( 52 ), "A9", NULL }, + { MM2MM100( 26 ), MM2MM100( 37 ), "A10", NULL }, + { MM2MM100( 1000 ), MM2MM100( 1414 ), "ISOB0", NULL }, + { MM2MM100( 707 ), MM2MM100( 1000 ), "ISOB1", NULL }, + { MM2MM100( 500 ), MM2MM100( 707 ), "ISOB2", NULL }, + { MM2MM100( 353 ), MM2MM100( 500 ), "ISOB3", NULL }, + { MM2MM100( 88 ), MM2MM100( 125 ), "ISOB7", NULL }, + { MM2MM100( 62 ), MM2MM100( 88 ), "ISOB8", NULL }, + { MM2MM100( 44 ), MM2MM100( 62 ), "ISOB9", NULL }, + { MM2MM100( 31 ), MM2MM100( 44 ), "ISOB10", NULL }, + { MM2MM100( 458 ), MM2MM100( 648 ), "EnvC2", "C2" }, + { MM2MM100( 81 ), MM2MM100( 114 ), "EnvC7", "C7" }, + { MM2MM100( 57 ), MM2MM100( 81 ), "EnvC8", "C8" }, + { IN2MM100( 9 ), IN2MM100( 12 ), "ARCHA", NULL }, + { IN2MM100( 12 ), IN2MM100( 18 ), "ARCHB", NULL }, + { IN2MM100( 18 ), IN2MM100( 24 ), "ARCHC", NULL }, + { IN2MM100( 24 ), IN2MM100( 36 ), "ARCHD", NULL }, + { IN2MM100( 36 ), IN2MM100( 48 ), "ARCHE", NULL } +}; + +static const size_t nTabSize = sizeof(aDinTab) / sizeof(aDinTab[0]); + +#define MAXSLOPPY 11 + +bool PaperInfo::doSloppyFit() +{ + if (m_eType != PAPER_USER) + return true; + + for ( size_t i = 0; i < nTabSize; ++i ) + { + if (i == PAPER_USER) continue; + + long lDiffW = labs(aDinTab[i].m_nWidth - m_nPaperWidth); + long lDiffH = labs(aDinTab[i].m_nHeight - m_nPaperHeight); + + if ( lDiffW < MAXSLOPPY && lDiffH < MAXSLOPPY ) + { + m_nPaperWidth = aDinTab[i].m_nWidth; + m_nPaperHeight = aDinTab[i].m_nHeight; + m_eType = (Paper)i; + return true; + } + } + + return false; +} + +bool PaperInfo::sloppyEqual(const PaperInfo &rOther) const +{ + return + ( + (labs(m_nPaperWidth - rOther.m_nPaperWidth) < MAXSLOPPY) && + (labs(m_nPaperHeight - rOther.m_nPaperHeight) < MAXSLOPPY) + ); +} + +long PaperInfo::sloppyFitPageDimension(long nDimension) +{ + for ( size_t i = 0; i < nTabSize; ++i ) + { + if (i == PAPER_USER) continue; + long lDiff; + + lDiff = labs(aDinTab[i].m_nWidth - nDimension); + if ( lDiff < MAXSLOPPY ) + return aDinTab[i].m_nWidth; + + lDiff = labs(aDinTab[i].m_nHeight - nDimension); + if ( lDiff < MAXSLOPPY ) + return aDinTab[i].m_nHeight; + } + return nDimension; +} + +PaperInfo PaperInfo::getSystemDefaultPaper() +{ + using ::com::sun::star::uno::Reference; + using ::com::sun::star::lang::XMultiServiceFactory; + using ::com::sun::star::uno::UNO_QUERY_THROW; + using ::com::sun::star::uno::Sequence; + using ::com::sun::star::uno::Any; + using ::com::sun::star::container::XNameAccess; + using ::com::sun::star::uno::Exception; +# define CREATE_OUSTRING( ascii ) \ + rtl::OUString::intern( RTL_CONSTASCII_USTRINGPARAM( ascii ) ) + + rtl::OUString aLocaleStr; + + Reference< XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory(); + Reference< XMultiServiceFactory > xConfigProv( + xFactory->createInstance( CREATE_OUSTRING( "com.sun.star.configuration.ConfigurationProvider" ) ), + UNO_QUERY_THROW ); + + Sequence< Any > aArgs( 1 ); + aArgs[ 0 ] <<= CREATE_OUSTRING( "org.openoffice.Setup/L10N/" ); + Reference< XNameAccess > xConfigNA( xConfigProv->createInstanceWithArguments( + CREATE_OUSTRING( "com.sun.star.configuration.ConfigurationAccess" ), aArgs ), UNO_QUERY_THROW ); + try + { + // try user-defined locale setting + xConfigNA->getByName( CREATE_OUSTRING( "ooSetupSystemLocale" ) ) >>= aLocaleStr; + } + catch( Exception& ) {} + +#ifdef UNX + // if set to "use system", get papersize from system + if (aLocaleStr.getLength() == 0) + { + static bool bInitialized = false; + static PaperInfo aInstance(PAPER_A4); + + if (bInitialized) + return aInstance; + + // try libpaper + // #i78617# workaround missing paperconf command + FILE* pPipe = popen( "sh -c paperconf 2>/dev/null", "r" ); + if( pPipe ) + { + Paper ePaper = PAPER_USER; + + char aBuffer[ 1024 ]; + aBuffer[0] = 0; + char *pBuffer = fgets( aBuffer, sizeof(aBuffer), pPipe ); + pclose( pPipe ); + + if (pBuffer && *pBuffer != 0) + { + rtl::OString aPaper(pBuffer); + aPaper = aPaper.trim(); + static struct { const char *pName; Paper ePaper; } aCustoms [] = + { + { "B0", PAPER_B0_ISO }, + { "B1", PAPER_B1_ISO }, + { "B2", PAPER_B2_ISO }, + { "B3", PAPER_B3_ISO }, + { "B4", PAPER_B4_ISO }, + { "B5", PAPER_B5_ISO }, + { "B6", PAPER_B6_ISO }, + { "B7", PAPER_B7_ISO }, + { "B8", PAPER_B8_ISO }, + { "B9", PAPER_B9_ISO }, + { "B10", PAPER_B10_ISO }, + { "folio", PAPER_FANFOLD_LEGAL_DE }, + { "flsa", PAPER_FANFOLD_LEGAL_DE }, + { "flse", PAPER_FANFOLD_LEGAL_DE } + }; + + bool bHalve = false; + + size_t nExtraTabSize = sizeof(aCustoms) / sizeof(aCustoms[0]); + for (size_t i = 0; i < nExtraTabSize; ++i) + { + if (rtl_str_compareIgnoreAsciiCase(aCustoms[i].pName, aPaper.getStr()) == 0) + { + ePaper = aCustoms[i].ePaper; + break; + } + } + + if (ePaper == PAPER_USER) + { + bHalve = !rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( + aPaper.getStr(), aPaper.getLength(), "half", 4, 4); + if (bHalve) + aPaper = aPaper.copy(4); + ePaper = PaperInfo::fromPSName(aPaper); + } + + if (ePaper != PAPER_USER) + { + aInstance = PaperInfo(ePaper); + if (bHalve) + aInstance = PaperInfo(aInstance.getHeight()/2, aInstance.getWidth()); + bInitialized = true; + return aInstance; + } + } + } + +#if defined(LC_PAPER) && defined(_GNU_SOURCE) + + union paperword { char *string; int word; }; + + // try LC_PAPER + paperword w, h; + w.string = nl_langinfo(_NL_PAPER_WIDTH); + h.string = nl_langinfo(_NL_PAPER_HEIGHT); + + //glibc stores sizes as integer mm units + w.word *= 100; + h.word *= 100; + + for ( size_t i = 0; i < nTabSize; ++i ) + { + if (i == PAPER_USER) continue; + + //glibc stores sizes as integer mm units, and so is inaccurate. To + //find a standard paper size we calculate the standard paper sizes + //into equally inaccurate mm and compare + long width = (aDinTab[i].m_nWidth + 50) / 100; + long height = (aDinTab[i].m_nHeight + 50) / 100; + + if (width == w.word/100 && height == h.word/100) + { + w.word = aDinTab[i].m_nWidth; + h.word = aDinTab[i].m_nHeight; + break; + } + } + + aInstance = PaperInfo(w.word, h.word); + bInitialized = true; + return aInstance; +#endif + } +#endif + + try + { + // if set to "use system", try to get locale from system + if( aLocaleStr.getLength() == 0 ) + { + aArgs[ 0 ] <<= CREATE_OUSTRING( "org.openoffice.System/L10N/" ); + xConfigNA.set( xConfigProv->createInstanceWithArguments( + CREATE_OUSTRING( "com.sun.star.configuration.ConfigurationAccess" ), aArgs ), + UNO_QUERY_THROW ); + xConfigNA->getByName( CREATE_OUSTRING( "Locale" ) ) >>= aLocaleStr; + } + } + catch( Exception& ) {} + + if (aLocaleStr.getLength() == 0) + aLocaleStr = CREATE_OUSTRING("en-US"); + + // convert locale string to locale struct + ::com::sun::star::lang::Locale aSysLocale; + sal_Int32 nDashPos = aLocaleStr.indexOf( '-' ); + if( nDashPos < 0 ) nDashPos = aLocaleStr.getLength(); + aSysLocale.Language = aLocaleStr.copy( 0, nDashPos ); + if( nDashPos + 1 < aLocaleStr.getLength() ) + aSysLocale.Country = aLocaleStr.copy( nDashPos + 1 ); + + return PaperInfo::getDefaultPaperForLocale(aSysLocale); +} + +PaperInfo::PaperInfo(Paper eType) : m_eType(eType) +{ + m_nPaperWidth = aDinTab[m_eType].m_nWidth; + m_nPaperHeight = aDinTab[m_eType].m_nHeight; +} + +PaperInfo::PaperInfo(long nPaperWidth, long nPaperHeight) + : m_eType(PAPER_USER), + m_nPaperWidth(nPaperWidth), + m_nPaperHeight(nPaperHeight) +{ + for ( size_t i = 0; i < nTabSize; ++i ) + { + if ( + (nPaperWidth == aDinTab[i].m_nWidth) && + (nPaperHeight == aDinTab[i].m_nHeight) + ) + { + m_eType = static_cast<Paper>(i); + break; + } + } +} + +rtl::OString PaperInfo::toPSName(Paper ePaper) +{ + return static_cast<size_t>(ePaper) < nTabSize ? + rtl::OString(aDinTab[ePaper].m_pPSName) : rtl::OString(); +} + +Paper PaperInfo::fromPSName(const rtl::OString &rName) +{ + if (!rName.getLength()) + return PAPER_USER; + + for ( size_t i = 0; i < nTabSize; ++i ) + { + if (aDinTab[i].m_pPSName && + !rtl_str_compareIgnoreAsciiCase(aDinTab[i].m_pPSName, rName.getStr())) + { + return static_cast<Paper>(i); + } + else if (aDinTab[i].m_pAltPSName && + !rtl_str_compareIgnoreAsciiCase(aDinTab[i].m_pAltPSName, rName.getStr())) + { + return static_cast<Paper>(i); + } + } + + return PAPER_USER; +} + +//http://wiki.services.openoffice.org/wiki/DefaultPaperSize +//http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/localedata/locales/?cvsroot=glibc +//http://www.unicode.org/cldr/data/charts/supplemental/territory_language_information.html +//http://en.wikipedia.org/wiki/Paper_size +//http://msdn.microsoft.com/en-us/library/cc195164.aspx +PaperInfo PaperInfo::getDefaultPaperForLocale( + const ::com::sun::star::lang::Locale & rLocale) +{ + Paper eType = PAPER_A4; + + if ( + //United States, Letter + !rLocale.Country.compareToAscii("US") || + //Puerto Rico, http://sources.redhat.com/ml/libc-hacker/2001-07/msg00046.html + !rLocale.Country.compareToAscii("PR") || + //Canada, http://sources.redhat.com/ml/libc-hacker/2001-07/msg00053.html + !rLocale.Country.compareToAscii("CA") || + //Venuzuela, https://www.redhat.com/archives/fedora-devel-list/2008-August/msg00019.html + !rLocale.Country.compareToAscii("VE") || + //Chile, https://www.redhat.com/archives/fedora-devel-list/2008-August/msg00240.html + !rLocale.Country.compareToAscii("CL") || + //Mexico, http://qa.openoffice.org/issues/show_bug.cgi?id=49739 + !rLocale.Country.compareToAscii("MX") || + //Colombia, http://qa.openoffice.org/issues/show_bug.cgi?id=69703 + !rLocale.Country.compareToAscii("CO") || + //Philippines, + // http://ubuntuliving.blogspot.com/2008/07/default-paper-size-in-evince.html + // http://www.gov.ph/faqs/driverslicense.asp + !rLocale.Country.compareToAscii("PH") + ) + { + eType = PAPER_LETTER; + } + + return eType; +} + +/* vi:set tabstop=4 shiftwidth=4 expandtab: */ diff --git a/i18nutil/source/utility/casefolding.cxx b/i18nutil/source/utility/casefolding.cxx index 7a74609b0342..7827aa47e30b 100644 --- a/i18nutil/source/utility/casefolding.cxx +++ b/i18nutil/source/utility/casefolding.cxx @@ -132,7 +132,10 @@ is_ja_voice_sound_mark(sal_Unicode& current, sal_Unicode next) sal_Unicode casefolding::getNextChar(const sal_Unicode *str, sal_Int32& idx, sal_Int32 len, MappingElement& e, Locale& aLocale, sal_uInt8 nMappingType, TransliterationModules moduleLoaded) throw (RuntimeException) { if( idx >= len ) + { + e = MappingElement(); return 0; + } sal_Unicode c; diff --git a/o3tl/qa/makefile.mk b/o3tl/qa/makefile.mk index 563f4e2d3bf2..a6ebfbba4bb9 100644 --- a/o3tl/qa/makefile.mk +++ b/o3tl/qa/makefile.mk @@ -75,6 +75,6 @@ unittest : $(SHL1TARGETN) @echo ---------------------------------------------------------- @echo - start unit test on library $(SHL1TARGETN) @echo ---------------------------------------------------------- - $(AUGMENT_LIBRARY_PATH) testshl2 -sf $(mktmp ) $(SHL1TARGETN) + $(TESTSHL2) -sf $(mktmp ) $(SHL1TARGETN) ALLTAR : unittest diff --git a/padmin/prj/build.lst b/padmin/prj/build.lst index 765675d73137..9aaab83cf7de 100644 --- a/padmin/prj/build.lst +++ b/padmin/prj/build.lst @@ -1,3 +1,3 @@ -pd padmin : psprint vcl svtools NULL +pd padmin : vcl svtools NULL pd padmin usr1 - all pd_mkout NULL pd padmin\source nmake - all pd_source NULL diff --git a/padmin/source/makefile.mk b/padmin/source/makefile.mk index 63c2c2e5a6e1..336631f1ceaa 100644 --- a/padmin/source/makefile.mk +++ b/padmin/source/makefile.mk @@ -85,8 +85,9 @@ SHL1STDLIBS=\ $(VCLLIB) \ $(UNOTOOLSLIB) \ $(TOOLSLIB) \ - $(COMPHELPERLIB) \ - $(CPPULIB) $(SALLIB) + $(COMPHELPERLIB) \ + $(CPPULIB) \ + $(SALLIB) APP1TARGET=spadmin.bin APP1DEPN+=$(SHL1TARGETN) @@ -97,7 +98,6 @@ APP1OBJS=\ APP1STDLIBS= \ -l$(SHL1TARGET) \ - $(SVTOOLLIB) \ $(VCLLIB) \ $(UNOTOOLSLIB) \ $(TOOLSLIB) \ @@ -106,10 +106,6 @@ APP1STDLIBS= \ $(CPPUHELPERLIB) \ $(CPPULIB) \ $(SALLIB) \ - $(I18NISOLANGLIB) $(ICUUCLIB) $(ICULELIB) $(ICUDATALIB)\ - $(TKLIB) $(SOTLIB) $(SVLLIB) $(I18NUTILLIB) $(VOSLIB) \ - $(BASEGFXLIB) $(JVMFWKLIB) $(SALHELPERLIB) \ - $(JVMACCESSLIB) \ -lXext -lX11 UNIXTEXT = $(MISC)$/spadmin.sh diff --git a/rsc/source/prj/makefile.mk b/rsc/source/prj/makefile.mk index 1de2d2dd0f8f..1e58270aa67c 100644 --- a/rsc/source/prj/makefile.mk +++ b/rsc/source/prj/makefile.mk @@ -46,7 +46,7 @@ OBJFILES= $(OBJ)$/gui.obj \ $(OBJ)$/start.obj APP1TARGET= rsc -APP1STDLIBS=$(TOOLSLIB) $(I18NISOLANGLIB) $(VOSLIB) $(SALLIB) $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) +APP1STDLIBS=$(TOOLSLIB) $(I18NISOLANGLIB) $(VOSLIB) $(SALLIB) # $(RTLLIB) APP1LIBS= $(LB)$/rsctoo.lib APP1OBJS= $(OBJ)$/start.obj .IF "$(GUI)" != "OS2" @@ -62,7 +62,7 @@ APP2TARGET= rsc2 # rsc2 muss daher statisch gelinkt werden APP2STDLIBS=$(STATIC) -latools $(BPICONVLIB) $(VOSLIB) $(OSLLIB) $(RTLLIB) $(DYNAMIC) .ELSE -APP2STDLIBS=$(TOOLSLIB) $(I18NISOLANGLIB) $(VOSLIB) $(SALLIB) $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) +APP2STDLIBS=$(TOOLSLIB) $(I18NISOLANGLIB) $(VOSLIB) $(SALLIB) # $(RTLLIB) .ENDIF APP2LIBS= $(LB)$/rsctoo.lib \ $(LB)$/rscres.lib \ diff --git a/rsc/source/prj/start.cxx b/rsc/source/prj/start.cxx index 5a623efeee51..c43879020a8e 100644 --- a/rsc/source/prj/start.cxx +++ b/rsc/source/prj/start.cxx @@ -306,8 +306,10 @@ int cdecl main ( int argc, char ** argv) BOOL bHelp = FALSE; BOOL bError = FALSE; BOOL bResponse = FALSE; - ByteString aPrePro( "rscpp" ); - ByteString aRsc2Name( "rsc2" ); + ByteString aSolarbin(getenv("SOLARBINDIR")); + ByteString aDelim("/"); + ByteString aPrePro; //( aSolarbin + aDelim + ByteString("rscpp")); + ByteString aRsc2Name; //( aSolarbin + aDelim + ByteString("rsc2")); ByteString aSrsName; ByteString aResName; RscStrList aInputList; @@ -318,6 +320,14 @@ int cdecl main ( int argc, char ** argv) sal_uInt32 i; ByteString* pString; + aPrePro = aSolarbin; + aPrePro += aDelim; + aPrePro += ByteString("rscpp"); + + aRsc2Name = aSolarbin; + aRsc2Name += aDelim; + aRsc2Name += ByteString("rsc2"); + printf( "VCL Resource Compiler 3.0\n" ); pStr = ::ResponseFile( &aCmdLine, argv, argc ); diff --git a/sax/source/fastparser/makefile.mk b/sax/source/fastparser/makefile.mk index 625d7790ed1a..83c183212656 100644 --- a/sax/source/fastparser/makefile.mk +++ b/sax/source/fastparser/makefile.mk @@ -62,7 +62,6 @@ SHL1STDLIBS= \ $(SAXLIB) \ $(CPPULIB) \ $(CPPUHELPERLIB)\ - $(COMPHELPERLIB)\ $(EXPATASCII3RDLIB) SHL1DEPN= diff --git a/sax/source/tools/makefile.mk b/sax/source/tools/makefile.mk index 1f806aef74b4..80f51d8dc806 100644 --- a/sax/source/tools/makefile.mk +++ b/sax/source/tools/makefile.mk @@ -52,14 +52,12 @@ SHL1TARGET= $(TARGET)$(DLLPOSTFIX) SHL1IMPLIB= i$(TARGET) SHL1STDLIBS= \ - $(VOSLIB) \ $(CPPULIB) \ $(CPPUHELPERLIB)\ $(COMPHELPERLIB)\ $(RTLLIB) \ $(SALLIB) \ - $(ONELIB) \ - $(SALHELPERLIB) + $(ONELIB) SHL1DEPN= SHL1OBJS= $(SLOFILES) diff --git a/sot/inc/sot/exchange.hxx b/sot/inc/sot/exchange.hxx index 68862367e4f0..0c235fffcdbb 100644 --- a/sot/inc/sot/exchange.hxx +++ b/sot/inc/sot/exchange.hxx @@ -196,10 +196,7 @@ public: static ULONG RegisterFormatMimeType( const String& rMimeType ); static ULONG GetFormat( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ); - static ULONG GetStaticNameFormat( const String& rName ); - static String GetFormatName( ULONG nFormat ); - static String GetFormatStaticName( ULONG nFormat ); static sal_Bool GetFormatDataFlavor( ULONG nFormat, ::com::sun::star::datatransfer::DataFlavor& rFlavor ); static String GetFormatMimeType( ULONG nFormat ); static BOOL IsInternal( const SvGlobalName& ); @@ -216,14 +213,6 @@ public: static ULONG RegisterSotFormatName( SotFormatStringId nId ) { return nId; } - // Anzahl der bereits registrierten Formate bzw. der hoechsten - // registrierten ID abfragen (fuer System-Registrierung) - // ACHTUNG: Die Algorithmen zur Registrierung beim System - // verlassen sich darauf, dass die hier gelieferte maximale - // Format-ID 'klein' ist, so dass eine Schleife ueber alle - // Formate laufen kann. - static ULONG GetMaxFormat( void ); - // same for XTransferable interface static USHORT GetExchangeAction( // XTransferable diff --git a/sot/source/base/exchange.cxx b/sot/source/base/exchange.cxx index 05de84bdfd46..6dedd84cdaeb 100644 --- a/sot/source/base/exchange.cxx +++ b/sot/source/base/exchange.cxx @@ -481,18 +481,6 @@ ULONG SotExchange::GetFormat( const DataFlavor& rFlavor ) /************************************************************************* |* -|* SotExchange::GetStaticNameFormat() -|* -|* Beschreibung CLIP.SDW -*************************************************************************/ -ULONG SotExchange::GetStaticNameFormat( const String& rName ) -{ - // has to be changed to return the format for the static name (KA 27.09.2001) - return SotExchange::RegisterFormatName( rName ); -} - -/************************************************************************* -|* |* SotExchange::GetFormatName() |* |* Beschreibung CLIP.SDW @@ -508,28 +496,6 @@ String SotExchange::GetFormatName( ULONG nFormat ) return aRet; } -/************************************************************************* -|* -|* SotExchange::GetFormatStaticName() -|* -|* Beschreibung CLIP.SDW -*************************************************************************/ -String SotExchange::GetFormatStaticName( ULONG nFormat ) -{ - // has to be changed to return the static format name (KA 27.09.2001) - return SotExchange::GetFormatName( nFormat ); -} - -/************************************************************************* -|* -|* SotExchange::GetMaxFormat() -|* -*************************************************************************/ -ULONG SotExchange::GetMaxFormat( void ) -{ - return( SOT_FORMATSTR_ID_USER_END + InitFormats_Impl().Count() ); -} - BOOL SotExchange::IsInternal( const SvGlobalName& rName ) { if ( rName == SvGlobalName(SO3_SW_CLASSID_60) || diff --git a/svtools/bmpmaker/makefile.mk b/svtools/bmpmaker/makefile.mk index b5575ab77d23..d5280a2ab500 100644 --- a/svtools/bmpmaker/makefile.mk +++ b/svtools/bmpmaker/makefile.mk @@ -54,10 +54,6 @@ APP1TARGET= $(TARGET) APP1STDLIBS = \ $(VCLLIB) \ $(TOOLSLIB) \ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) \ - $(UNOTOOLSLIB) \ - $(ICUDATALIB) $(ICUUCLIB) $(ICULELIB) \ - $(SOTLIB) $(I18NUTILLIB) $(JVMACCESSLIB) \ $(VOSLIB) \ $(SALLIB) @@ -74,11 +70,7 @@ APP2OBJS = $(OBJ)$/bmpsum.obj APP2STDLIBS = $(VCLLIB) \ $(TOOLSLIB) \ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) \ $(VOSLIB) \ - $(UNOTOOLSLIB) \ - $(ICUDATALIB) $(ICUUCLIB) $(ICULELIB) \ - $(SOTLIB) $(I18NUTILLIB) $(JVMACCESSLIB) \ $(SALLIB) # --- Targets ------------------------------------------------------ diff --git a/svtools/inc/docmspasswdrequest.hxx b/svtools/inc/docmspasswdrequest.hxx new file mode 100644 index 000000000000..684bffe71760 --- /dev/null +++ b/svtools/inc/docmspasswdrequest.hxx @@ -0,0 +1,72 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright IBM Corporation 2009. + * Copyright 2009 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: docmspasswdrequest.hxx,v $ + * $Revision: 1.0 $ + * + * 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 INCLUDED_SVTOOLS_DOCMSPASSWDREQUEST_HXX +#define INCLUDED_SVTOOLS_DOCMSPASSWDREQUEST_HXX + +#include "svtools/svldllapi.h" +#include <com/sun/star/task/DocumentMSPasswordRequest.hpp> +#include <com/sun/star/task/XInteractionRequest.hpp> +#include <rtl/ustring.hxx> +#include <cppuhelper/implbase1.hxx> + +class MSAbortContinuation; +class MSPasswordContinuation; + +class SVL_DLLPUBLIC RequestMSDocumentPassword : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionRequest > +{ + ::com::sun::star::uno::Any m_aRequest; + + ::com::sun::star::uno::Sequence< + ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > + > m_lContinuations; + + MSAbortContinuation* m_pAbort; + MSPasswordContinuation* m_pPassword; + +public: + RequestMSDocumentPassword( ::com::sun::star::task::PasswordRequestMode nMode, ::rtl::OUString aName ); + + sal_Bool isAbort(); + sal_Bool isPassword(); + + ::rtl::OUString getPassword(); + + virtual ::com::sun::star::uno::Any SAL_CALL getRequest() + throw( ::com::sun::star::uno::RuntimeException ); + + virtual ::com::sun::star::uno::Sequence< + ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > + > SAL_CALL getContinuations() + throw( ::com::sun::star::uno::RuntimeException ); +}; + +#endif /* INCLUDED_SVTOOLS_DOCMSPASSWDREQUEST_HXX */ diff --git a/svtools/inc/htmlkywd.hxx b/svtools/inc/htmlkywd.hxx index 7c8f9b0c2f84..ce7cb4dd3e0f 100644 --- a/svtools/inc/htmlkywd.hxx +++ b/svtools/inc/htmlkywd.hxx @@ -31,812 +31,774 @@ #ifndef _HTMLKYWD_HXX #define _HTMLKYWD_HXX -#include "svtools/svtdllapi.h" -#include "sal/types.h" - -#ifndef SVTOOLS_CONSTASCII_DECL -#define SVTOOLS_CONSTASCII_DECL( n, s ) n[sizeof(s)] -#endif -#ifndef SVTOOLS_CONSTASCII_DEF -#define SVTOOLS_CONSTASCII_DEF( n, s ) n[sizeof(s)] = s -#endif - - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_doctype32, - "HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\"" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_doctype40, - "HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"" ); +#include "sal/config.h" +#define OOO_STRING_SVTOOLS_HTML_doctype32 \ + "HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\"" +#define OOO_STRING_SVTOOLS_HTML_doctype40 \ + "HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"" // diese werden nur eingeschaltet -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_area, "AREA" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_base, "BASE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_comment, "!--" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_doctype, "!DOCTYPE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_embed, "EMBED" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_figureoverlay, "OVERLAY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_horzrule, "HR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_horztab, "TAB" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_image, "IMG" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_image2, "IMAGE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_input, "INPUT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_isindex, "ISINDEX" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_linebreak, "BR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_li, "LI" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_link, "LINK" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_meta, "META" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_nextid, "NEXTID" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_nobr, "NOBR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_object, "OBJECT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_of, "OF" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_option, "OPTION" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_param, "PARAM" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_range, "RANGE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_spacer, "SPACER" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_wbr, "WBR" ); +#define OOO_STRING_SVTOOLS_HTML_area "AREA" +#define OOO_STRING_SVTOOLS_HTML_base "BASE" +#define OOO_STRING_SVTOOLS_HTML_comment "!--" +#define OOO_STRING_SVTOOLS_HTML_doctype "!DOCTYPE" +#define OOO_STRING_SVTOOLS_HTML_embed "EMBED" +#define OOO_STRING_SVTOOLS_HTML_figureoverlay "OVERLAY" +#define OOO_STRING_SVTOOLS_HTML_horzrule "HR" +#define OOO_STRING_SVTOOLS_HTML_horztab "TAB" +#define OOO_STRING_SVTOOLS_HTML_image "IMG" +#define OOO_STRING_SVTOOLS_HTML_image2 "IMAGE" +#define OOO_STRING_SVTOOLS_HTML_input "INPUT" +#define OOO_STRING_SVTOOLS_HTML_isindex "ISINDEX" +#define OOO_STRING_SVTOOLS_HTML_linebreak "BR" +#define OOO_STRING_SVTOOLS_HTML_li "LI" +#define OOO_STRING_SVTOOLS_HTML_link "LINK" +#define OOO_STRING_SVTOOLS_HTML_meta "META" +#define OOO_STRING_SVTOOLS_HTML_nextid "NEXTID" +#define OOO_STRING_SVTOOLS_HTML_nobr "NOBR" +#define OOO_STRING_SVTOOLS_HTML_of "OF" +#define OOO_STRING_SVTOOLS_HTML_option "OPTION" +#define OOO_STRING_SVTOOLS_HTML_param "PARAM" +#define OOO_STRING_SVTOOLS_HTML_range "RANGE" +#define OOO_STRING_SVTOOLS_HTML_spacer "SPACER" +#define OOO_STRING_SVTOOLS_HTML_wbr "WBR" // diese werden wieder abgeschaltet -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_abbreviation, "ABBREV" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_above, "ABOVE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_acronym, "ACRONYM" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_address, "ADDRESS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_anchor, "A" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_applet, "APPLET" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_array, "ARRAY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_author, "AU" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_banner, "BANNER" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_bar, "BAR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_basefont, "BASEFONT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_below, "BELOW" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_bigprint, "BIG" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_blink, "BLINK" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_blockquote, "BLOCKQUOTE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_blockquote30, "BQ" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_body, "BODY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_bold, "B" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_boldtext, "BT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_box, "BOX" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_caption, "CAPTION" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_center, "CENTER" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_citiation, "CITE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_code, "CODE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_col, "COL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_colgroup, "COLGROUP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_credit, "CREDIT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_dd, "DD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_deflist, "DL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_deletedtext, "DEL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_dirlist, "DIR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_division, "DIV" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_dot, "DOT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_doubledot, "DDOT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_dt, "DT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_emphasis, "EM" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_figure, "FIG" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_font, "FONT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_footnote, "FN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_form, "FORM" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_frame, "FRAME" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_frameset, "FRAMESET" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_hat, "HAT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_head1, "H1" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_head2, "H2" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_head3, "H3" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_head4, "H4" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_head5, "H5" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_head6, "H6" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_head, "HEAD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_html, "HTML" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_iframe, "IFRAME" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_ilayer, "ILAYER" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_insertedtext, "INS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_italic, "I" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_item, "ITEM" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_keyboard, "KBD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_language, "LANG" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_layer, "LAYER" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_listheader, "LH" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_map, "MAP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_math, "MATH" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_menulist, "MENU" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_multicol, "MULTICOL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_noembed, "NOEMBED" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_noframe, "NOFRAME" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_noframes, "NOFRAMES" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_noscript, "NOSCRIPT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_note, "NOTE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_orderlist, "OL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_parabreak, "P" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_person, "PERSON" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_plaintext, "T" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_preformtxt, "PRE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_root, "ROOT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_row, "ROW" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_sample, "SAMP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_script, "SCRIPT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_select, "SELECT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_shortquote, "Q" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_smallprint, "SMALL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_span, "SPAN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_squareroot, "AQRT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_strikethrough, "S" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_strong, "STRONG" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_style, "STYLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_subscript, "SUB" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_superscript, "SUP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_table, "TABLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_tablerow, "TR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_tabledata, "TD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_tableheader, "TH" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_tbody, "TBODY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_teletype, "TT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_text, "TEXT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_textarea, "TEXTAREA" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_textflow, "TEXTFLOW" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_tfoot, "TFOOT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_thead, "THEAD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_tilde, "TILDE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_title, "TITLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_underline, "U" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_unorderlist, "UL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_variable, "VAR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_vector, "VEC" ); +#define OOO_STRING_SVTOOLS_HTML_abbreviation "ABBREV" +#define OOO_STRING_SVTOOLS_HTML_above "ABOVE" +#define OOO_STRING_SVTOOLS_HTML_acronym "ACRONYM" +#define OOO_STRING_SVTOOLS_HTML_address "ADDRESS" +#define OOO_STRING_SVTOOLS_HTML_anchor "A" +#define OOO_STRING_SVTOOLS_HTML_applet "APPLET" +#define OOO_STRING_SVTOOLS_HTML_array "ARRAY" +#define OOO_STRING_SVTOOLS_HTML_author "AU" +#define OOO_STRING_SVTOOLS_HTML_banner "BANNER" +#define OOO_STRING_SVTOOLS_HTML_bar "BAR" +#define OOO_STRING_SVTOOLS_HTML_basefont "BASEFONT" +#define OOO_STRING_SVTOOLS_HTML_below "BELOW" +#define OOO_STRING_SVTOOLS_HTML_bigprint "BIG" +#define OOO_STRING_SVTOOLS_HTML_blink "BLINK" +#define OOO_STRING_SVTOOLS_HTML_blockquote "BLOCKQUOTE" +#define OOO_STRING_SVTOOLS_HTML_blockquote30 "BQ" +#define OOO_STRING_SVTOOLS_HTML_body "BODY" +#define OOO_STRING_SVTOOLS_HTML_bold "B" +#define OOO_STRING_SVTOOLS_HTML_boldtext "BT" +#define OOO_STRING_SVTOOLS_HTML_box "BOX" +#define OOO_STRING_SVTOOLS_HTML_caption "CAPTION" +#define OOO_STRING_SVTOOLS_HTML_center "CENTER" +#define OOO_STRING_SVTOOLS_HTML_citiation "CITE" +#define OOO_STRING_SVTOOLS_HTML_code "CODE" +#define OOO_STRING_SVTOOLS_HTML_col "COL" +#define OOO_STRING_SVTOOLS_HTML_colgroup "COLGROUP" +#define OOO_STRING_SVTOOLS_HTML_credit "CREDIT" +#define OOO_STRING_SVTOOLS_HTML_dd "DD" +#define OOO_STRING_SVTOOLS_HTML_deflist "DL" +#define OOO_STRING_SVTOOLS_HTML_deletedtext "DEL" +#define OOO_STRING_SVTOOLS_HTML_dirlist "DIR" +#define OOO_STRING_SVTOOLS_HTML_division "DIV" +#define OOO_STRING_SVTOOLS_HTML_dot "DOT" +#define OOO_STRING_SVTOOLS_HTML_doubledot "DDOT" +#define OOO_STRING_SVTOOLS_HTML_dt "DT" +#define OOO_STRING_SVTOOLS_HTML_emphasis "EM" +#define OOO_STRING_SVTOOLS_HTML_figure "FIG" +#define OOO_STRING_SVTOOLS_HTML_font "FONT" +#define OOO_STRING_SVTOOLS_HTML_footnote "FN" +#define OOO_STRING_SVTOOLS_HTML_form "FORM" +#define OOO_STRING_SVTOOLS_HTML_frame "FRAME" +#define OOO_STRING_SVTOOLS_HTML_frameset "FRAMESET" +#define OOO_STRING_SVTOOLS_HTML_hat "HAT" +#define OOO_STRING_SVTOOLS_HTML_head1 "H1" +#define OOO_STRING_SVTOOLS_HTML_head2 "H2" +#define OOO_STRING_SVTOOLS_HTML_head3 "H3" +#define OOO_STRING_SVTOOLS_HTML_head4 "H4" +#define OOO_STRING_SVTOOLS_HTML_head5 "H5" +#define OOO_STRING_SVTOOLS_HTML_head6 "H6" +#define OOO_STRING_SVTOOLS_HTML_head "HEAD" +#define OOO_STRING_SVTOOLS_HTML_html "HTML" +#define OOO_STRING_SVTOOLS_HTML_iframe "IFRAME" +#define OOO_STRING_SVTOOLS_HTML_ilayer "ILAYER" +#define OOO_STRING_SVTOOLS_HTML_insertedtext "INS" +#define OOO_STRING_SVTOOLS_HTML_italic "I" +#define OOO_STRING_SVTOOLS_HTML_item "ITEM" +#define OOO_STRING_SVTOOLS_HTML_keyboard "KBD" +#define OOO_STRING_SVTOOLS_HTML_language "LANG" +#define OOO_STRING_SVTOOLS_HTML_layer "LAYER" +#define OOO_STRING_SVTOOLS_HTML_listheader "LH" +#define OOO_STRING_SVTOOLS_HTML_map "MAP" +#define OOO_STRING_SVTOOLS_HTML_math "MATH" +#define OOO_STRING_SVTOOLS_HTML_menulist "MENU" +#define OOO_STRING_SVTOOLS_HTML_multicol "MULTICOL" +#define OOO_STRING_SVTOOLS_HTML_noembed "NOEMBED" +#define OOO_STRING_SVTOOLS_HTML_noframe "NOFRAME" +#define OOO_STRING_SVTOOLS_HTML_noframes "NOFRAMES" +#define OOO_STRING_SVTOOLS_HTML_noscript "NOSCRIPT" +#define OOO_STRING_SVTOOLS_HTML_note "NOTE" +#define OOO_STRING_SVTOOLS_HTML_object "OBJECT" +#define OOO_STRING_SVTOOLS_HTML_orderlist "OL" +#define OOO_STRING_SVTOOLS_HTML_parabreak "P" +#define OOO_STRING_SVTOOLS_HTML_person "PERSON" +#define OOO_STRING_SVTOOLS_HTML_plaintext "T" +#define OOO_STRING_SVTOOLS_HTML_preformtxt "PRE" +#define OOO_STRING_SVTOOLS_HTML_root "ROOT" +#define OOO_STRING_SVTOOLS_HTML_row "ROW" +#define OOO_STRING_SVTOOLS_HTML_sample "SAMP" +#define OOO_STRING_SVTOOLS_HTML_script "SCRIPT" +#define OOO_STRING_SVTOOLS_HTML_select "SELECT" +#define OOO_STRING_SVTOOLS_HTML_shortquote "Q" +#define OOO_STRING_SVTOOLS_HTML_smallprint "SMALL" +#define OOO_STRING_SVTOOLS_HTML_span "SPAN" +#define OOO_STRING_SVTOOLS_HTML_squareroot "AQRT" +#define OOO_STRING_SVTOOLS_HTML_strikethrough "S" +#define OOO_STRING_SVTOOLS_HTML_strong "STRONG" +#define OOO_STRING_SVTOOLS_HTML_style "STYLE" +#define OOO_STRING_SVTOOLS_HTML_subscript "SUB" +#define OOO_STRING_SVTOOLS_HTML_superscript "SUP" +#define OOO_STRING_SVTOOLS_HTML_table "TABLE" +#define OOO_STRING_SVTOOLS_HTML_tablerow "TR" +#define OOO_STRING_SVTOOLS_HTML_tabledata "TD" +#define OOO_STRING_SVTOOLS_HTML_tableheader "TH" +#define OOO_STRING_SVTOOLS_HTML_tbody "TBODY" +#define OOO_STRING_SVTOOLS_HTML_teletype "TT" +#define OOO_STRING_SVTOOLS_HTML_text "TEXT" +#define OOO_STRING_SVTOOLS_HTML_textarea "TEXTAREA" +#define OOO_STRING_SVTOOLS_HTML_textflow "TEXTFLOW" +#define OOO_STRING_SVTOOLS_HTML_tfoot "TFOOT" +#define OOO_STRING_SVTOOLS_HTML_thead "THEAD" +#define OOO_STRING_SVTOOLS_HTML_tilde "TILDE" +#define OOO_STRING_SVTOOLS_HTML_title "TITLE" +#define OOO_STRING_SVTOOLS_HTML_underline "U" +#define OOO_STRING_SVTOOLS_HTML_unorderlist "UL" +#define OOO_STRING_SVTOOLS_HTML_variable "VAR" +#define OOO_STRING_SVTOOLS_HTML_vector "VEC" // obsolete features -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_xmp, "XMP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_listing, "LISTING" ); +#define OOO_STRING_SVTOOLS_HTML_xmp "XMP" +#define OOO_STRING_SVTOOLS_HTML_listing "LISTING" // proposed features -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_definstance, "DFN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_strike, "STRIKE" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_bgsound, "BGSOUND" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_comment2, "COMMENT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_marquee, "MARQUEE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_plaintext2, "PLAINTEXT" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_sdfield, "SDFIELD" ); +#define OOO_STRING_SVTOOLS_HTML_definstance "DFN" +#define OOO_STRING_SVTOOLS_HTML_strike "STRIKE" +#define OOO_STRING_SVTOOLS_HTML_bgsound "BGSOUND" +#define OOO_STRING_SVTOOLS_HTML_comment2 "COMMENT" +#define OOO_STRING_SVTOOLS_HTML_marquee "MARQUEE" +#define OOO_STRING_SVTOOLS_HTML_plaintext2 "PLAINTEXT" +#define OOO_STRING_SVTOOLS_HTML_sdfield "SDFIELD" // die Namen fuer alle Zeichen -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_lt, "lt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_gt, "gt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_amp, "amp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_quot, "quot" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Aacute, "Aacute" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Agrave, "Agrave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Acirc, "Acirc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Atilde, "Atilde" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Aring, "Aring" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Auml, "Auml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_AElig, "AElig" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Ccedil, "Ccedil" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Eacute, "Eacute" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Egrave, "Egrave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Ecirc, "Ecirc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Euml, "Euml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Iacute, "Iacute" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Igrave, "Igrave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Icirc, "Icirc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Iuml, "Iuml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_ETH, "ETH" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Ntilde, "Ntilde" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Oacute, "Oacute" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Ograve, "Ograve" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Ocirc, "Ocirc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Otilde, "Otilde" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Ouml, "Ouml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Oslash, "Oslash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Uacute, "Uacute" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Ugrave, "Ugrave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Ucirc, "Ucirc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Uuml, "Uuml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_Yacute, "Yacute" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_THORN, "THORN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_szlig, "szlig" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_aacute, "aacute" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_agrave, "agrave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_acirc, "acirc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_atilde, "atilde" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_aring, "aring" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_auml, "auml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_aelig, "aelig" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ccedil, "ccedil" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_eacute, "eacute" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_egrave, "egrave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ecirc, "ecirc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_euml, "euml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_iacute, "iacute" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_igrave, "igrave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_icirc, "icirc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_iuml, "iuml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_eth, "eth" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ntilde, "ntilde" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_oacute, "oacute" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ograve, "ograve" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ocirc, "ocirc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_otilde, "otilde" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ouml, "ouml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_oslash, "oslash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_uacute, "uacute" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ugrave, "ugrave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ucirc, "ucirc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_uuml, "uuml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_yacute, "yacute" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_thorn, "thorn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_yuml, "yuml" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_acute, "acute" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_brvbar, "brvbar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_cedil, "cedil" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_cent, "cent" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_copy, "copy" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_curren, "curren" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_deg, "deg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_divide, "divide" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_frac12, "frac12" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_frac14, "frac14" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_frac34, "frac34" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_iexcl, "iexcl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_iquest, "iquest" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_laquo, "laquo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_macr, "macr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_micro, "micro" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_middot, "middot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_nbsp, "nbsp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_not, "not" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ordf, "ordf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ordm, "ordm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_para, "para" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_plusmn, "plusmn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_pound, "pound" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_raquo, "raquo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_reg, "reg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sect, "sect" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_shy, "shy" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sup1, "sup1" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sup2, "sup2" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sup3, "sup3" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_times, "times" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_uml, "uml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_yen, "yen" ); +#define OOO_STRING_SVTOOLS_HTML_C_lt "lt" +#define OOO_STRING_SVTOOLS_HTML_C_gt "gt" +#define OOO_STRING_SVTOOLS_HTML_C_amp "amp" +#define OOO_STRING_SVTOOLS_HTML_C_quot "quot" +#define OOO_STRING_SVTOOLS_HTML_C_Aacute "Aacute" +#define OOO_STRING_SVTOOLS_HTML_C_Agrave "Agrave" +#define OOO_STRING_SVTOOLS_HTML_C_Acirc "Acirc" +#define OOO_STRING_SVTOOLS_HTML_C_Atilde "Atilde" +#define OOO_STRING_SVTOOLS_HTML_C_Aring "Aring" +#define OOO_STRING_SVTOOLS_HTML_C_Auml "Auml" +#define OOO_STRING_SVTOOLS_HTML_C_AElig "AElig" +#define OOO_STRING_SVTOOLS_HTML_C_Ccedil "Ccedil" +#define OOO_STRING_SVTOOLS_HTML_C_Eacute "Eacute" +#define OOO_STRING_SVTOOLS_HTML_C_Egrave "Egrave" +#define OOO_STRING_SVTOOLS_HTML_C_Ecirc "Ecirc" +#define OOO_STRING_SVTOOLS_HTML_C_Euml "Euml" +#define OOO_STRING_SVTOOLS_HTML_C_Iacute "Iacute" +#define OOO_STRING_SVTOOLS_HTML_C_Igrave "Igrave" +#define OOO_STRING_SVTOOLS_HTML_C_Icirc "Icirc" +#define OOO_STRING_SVTOOLS_HTML_C_Iuml "Iuml" +#define OOO_STRING_SVTOOLS_HTML_C_ETH "ETH" +#define OOO_STRING_SVTOOLS_HTML_C_Ntilde "Ntilde" +#define OOO_STRING_SVTOOLS_HTML_C_Oacute "Oacute" +#define OOO_STRING_SVTOOLS_HTML_C_Ograve "Ograve" +#define OOO_STRING_SVTOOLS_HTML_C_Ocirc "Ocirc" +#define OOO_STRING_SVTOOLS_HTML_C_Otilde "Otilde" +#define OOO_STRING_SVTOOLS_HTML_C_Ouml "Ouml" +#define OOO_STRING_SVTOOLS_HTML_C_Oslash "Oslash" +#define OOO_STRING_SVTOOLS_HTML_C_Uacute "Uacute" +#define OOO_STRING_SVTOOLS_HTML_C_Ugrave "Ugrave" +#define OOO_STRING_SVTOOLS_HTML_C_Ucirc "Ucirc" +#define OOO_STRING_SVTOOLS_HTML_C_Uuml "Uuml" +#define OOO_STRING_SVTOOLS_HTML_C_Yacute "Yacute" +#define OOO_STRING_SVTOOLS_HTML_C_THORN "THORN" +#define OOO_STRING_SVTOOLS_HTML_C_szlig "szlig" +#define OOO_STRING_SVTOOLS_HTML_S_aacute "aacute" +#define OOO_STRING_SVTOOLS_HTML_S_agrave "agrave" +#define OOO_STRING_SVTOOLS_HTML_S_acirc "acirc" +#define OOO_STRING_SVTOOLS_HTML_S_atilde "atilde" +#define OOO_STRING_SVTOOLS_HTML_S_aring "aring" +#define OOO_STRING_SVTOOLS_HTML_S_auml "auml" +#define OOO_STRING_SVTOOLS_HTML_S_aelig "aelig" +#define OOO_STRING_SVTOOLS_HTML_S_ccedil "ccedil" +#define OOO_STRING_SVTOOLS_HTML_S_eacute "eacute" +#define OOO_STRING_SVTOOLS_HTML_S_egrave "egrave" +#define OOO_STRING_SVTOOLS_HTML_S_ecirc "ecirc" +#define OOO_STRING_SVTOOLS_HTML_S_euml "euml" +#define OOO_STRING_SVTOOLS_HTML_S_iacute "iacute" +#define OOO_STRING_SVTOOLS_HTML_S_igrave "igrave" +#define OOO_STRING_SVTOOLS_HTML_S_icirc "icirc" +#define OOO_STRING_SVTOOLS_HTML_S_iuml "iuml" +#define OOO_STRING_SVTOOLS_HTML_S_eth "eth" +#define OOO_STRING_SVTOOLS_HTML_S_ntilde "ntilde" +#define OOO_STRING_SVTOOLS_HTML_S_oacute "oacute" +#define OOO_STRING_SVTOOLS_HTML_S_ograve "ograve" +#define OOO_STRING_SVTOOLS_HTML_S_ocirc "ocirc" +#define OOO_STRING_SVTOOLS_HTML_S_otilde "otilde" +#define OOO_STRING_SVTOOLS_HTML_S_ouml "ouml" +#define OOO_STRING_SVTOOLS_HTML_S_oslash "oslash" +#define OOO_STRING_SVTOOLS_HTML_S_uacute "uacute" +#define OOO_STRING_SVTOOLS_HTML_S_ugrave "ugrave" +#define OOO_STRING_SVTOOLS_HTML_S_ucirc "ucirc" +#define OOO_STRING_SVTOOLS_HTML_S_uuml "uuml" +#define OOO_STRING_SVTOOLS_HTML_S_yacute "yacute" +#define OOO_STRING_SVTOOLS_HTML_S_thorn "thorn" +#define OOO_STRING_SVTOOLS_HTML_S_yuml "yuml" +#define OOO_STRING_SVTOOLS_HTML_S_acute "acute" +#define OOO_STRING_SVTOOLS_HTML_S_brvbar "brvbar" +#define OOO_STRING_SVTOOLS_HTML_S_cedil "cedil" +#define OOO_STRING_SVTOOLS_HTML_S_cent "cent" +#define OOO_STRING_SVTOOLS_HTML_S_copy "copy" +#define OOO_STRING_SVTOOLS_HTML_S_curren "curren" +#define OOO_STRING_SVTOOLS_HTML_S_deg "deg" +#define OOO_STRING_SVTOOLS_HTML_S_divide "divide" +#define OOO_STRING_SVTOOLS_HTML_S_frac12 "frac12" +#define OOO_STRING_SVTOOLS_HTML_S_frac14 "frac14" +#define OOO_STRING_SVTOOLS_HTML_S_frac34 "frac34" +#define OOO_STRING_SVTOOLS_HTML_S_iexcl "iexcl" +#define OOO_STRING_SVTOOLS_HTML_S_iquest "iquest" +#define OOO_STRING_SVTOOLS_HTML_S_laquo "laquo" +#define OOO_STRING_SVTOOLS_HTML_S_macr "macr" +#define OOO_STRING_SVTOOLS_HTML_S_micro "micro" +#define OOO_STRING_SVTOOLS_HTML_S_middot "middot" +#define OOO_STRING_SVTOOLS_HTML_S_nbsp "nbsp" +#define OOO_STRING_SVTOOLS_HTML_S_not "not" +#define OOO_STRING_SVTOOLS_HTML_S_ordf "ordf" +#define OOO_STRING_SVTOOLS_HTML_S_ordm "ordm" +#define OOO_STRING_SVTOOLS_HTML_S_para "para" +#define OOO_STRING_SVTOOLS_HTML_S_plusmn "plusmn" +#define OOO_STRING_SVTOOLS_HTML_S_pound "pound" +#define OOO_STRING_SVTOOLS_HTML_S_raquo "raquo" +#define OOO_STRING_SVTOOLS_HTML_S_reg "reg" +#define OOO_STRING_SVTOOLS_HTML_S_sect "sect" +#define OOO_STRING_SVTOOLS_HTML_S_shy "shy" +#define OOO_STRING_SVTOOLS_HTML_S_sup1 "sup1" +#define OOO_STRING_SVTOOLS_HTML_S_sup2 "sup2" +#define OOO_STRING_SVTOOLS_HTML_S_sup3 "sup3" +#define OOO_STRING_SVTOOLS_HTML_S_times "times" +#define OOO_STRING_SVTOOLS_HTML_S_uml "uml" +#define OOO_STRING_SVTOOLS_HTML_S_yen "yen" // Netscape kennt noch ein paar in Grossbuchstaben ... -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_LT, "LT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_GT, "GT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_AMP, "AMP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_C_QUOT, "QUOT" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_COPY, "COPY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_REG, "REG" ); - -//HTML4 -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_alefsym, "alefsym" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Alpha, "Alpha" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_alpha, "alpha" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_and, "and" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ang, "ang" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_asymp, "asymp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_bdquo, "bdquo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Beta, "Beta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_beta, "beta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_bull, "bull" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_cap, "cap" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_chi, "chi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Chi, "Chi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_circ, "circ" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_clubs, "clubs" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_cong, "cong" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_crarr, "crarr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_cup, "cup" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_dagger, "dagger" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Dagger, "Dagger" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_darr, "darr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_dArr, "dArr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Delta, "Delta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_delta, "delta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_diams, "diams" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_empty, "empty" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_emsp, "emsp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ensp, "ensp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Epsilon, "Epsilon" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_epsilon, "epsilon" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_equiv, "equiv" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Eta, "Eta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_eta, "eta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_euro, "euro" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_exist, "exist" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_fnof, "fnof" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_forall, "forall" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_frasl, "frasl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Gamma, "Gamma" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_gamma, "gamma" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ge, "ge" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_harr, "harr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_hArr, "hArr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_hearts, "hearts" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_hellip, "hellip" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_image, "image" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_infin, "infin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_int, "int" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Iota, "Iota" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_iota, "iota" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_isin, "isin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Kappa, "Kappa" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_kappa, "kappa" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Lambda, "Lambda" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_lambda, "lambda" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_lang, "lang" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_larr, "larr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_lArr, "lArr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_lceil, "lceil" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ldquo, "ldquo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_le, "le" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_lfloor, "lfloor" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_lowast, "lowast" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_loz, "loz" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_lrm, "lrm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_lsaquo, "lsaquo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_lsquo, "lsquo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_mdash, "mdash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_minus, "minus" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Mu, "Mu" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_mu, "mu" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_nabla, "nabla" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ndash, "ndash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ne, "ne" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_ni, "ni" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_notin, "notin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_nsub, "nsub" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Nu, "Nu" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_nu, "nu" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_OElig, "OElig" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_oelig, "oelig" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_oline, "oline" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Omega, "Omega" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_omega, "omega" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Omicron, "Omicron" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_omicron, "omicron" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_oplus, "oplus" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_or, "or" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_otimes, "otimes" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_part, "part" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_permil, "permil" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_perp, "perp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Phi, "Phi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_phi, "phi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Pi, "Pi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_pi, "pi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_piv, "piv" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_prime, "prime" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Prime, "Prime" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_prod, "prod" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_prop, "prop" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Psi, "Psi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_psi, "psi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_radic, "radic" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_rang, "rang" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_rarr, "rarr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_rArr, "rArr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_rceil, "rceil" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_rdquo, "rdquo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_real, "real" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_rfloor, "rfloor" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Rho, "Rho" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_rho, "rho" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_rlm, "rlm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_rsaquo, "rsaquo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_rsquo, "rsquo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sbquo, "sbquo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Scaron, "Scaron" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_scaron, "scaron" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sdot, "sdot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Sigma, "Sigma" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sigma, "sigma" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sigmaf, "sigmaf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sim, "sim" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_spades, "spades" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sub, "sub" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sube, "sube" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sum, "sum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_sup, "sup" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_supe, "supe" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Tau, "Tau" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_tau, "tau" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_there4, "there4" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Theta, "Theta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_theta, "theta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_thetasym, "thetasym" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_thinsp, "thinsp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_tilde, "tilde" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_trade, "trade" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_uarr, "uarr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_uArr, "uArr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_upsih, "upsih" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Upsilon, "Upsilon" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_upsilon, "upsilon" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_weierp, "weierp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Xi, "Xi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_xi, "xi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Yuml, "Yuml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_Zeta, "Zeta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_zeta, "zeta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_zwj, "zwj" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_zwnj, "zwnj" ); +#define OOO_STRING_SVTOOLS_HTML_C_LT "LT" +#define OOO_STRING_SVTOOLS_HTML_C_GT "GT" +#define OOO_STRING_SVTOOLS_HTML_C_AMP "AMP" +#define OOO_STRING_SVTOOLS_HTML_C_QUOT "QUOT" +#define OOO_STRING_SVTOOLS_HTML_S_COPY "COPY" +#define OOO_STRING_SVTOOLS_HTML_S_REG "REG" + +// HTML4 +#define OOO_STRING_SVTOOLS_HTML_S_alefsym "alefsym" +#define OOO_STRING_SVTOOLS_HTML_S_Alpha "Alpha" +#define OOO_STRING_SVTOOLS_HTML_S_alpha "alpha" +#define OOO_STRING_SVTOOLS_HTML_S_and "and" +#define OOO_STRING_SVTOOLS_HTML_S_ang "ang" +#define OOO_STRING_SVTOOLS_HTML_S_asymp "asymp" +#define OOO_STRING_SVTOOLS_HTML_S_bdquo "bdquo" +#define OOO_STRING_SVTOOLS_HTML_S_Beta "Beta" +#define OOO_STRING_SVTOOLS_HTML_S_beta "beta" +#define OOO_STRING_SVTOOLS_HTML_S_bull "bull" +#define OOO_STRING_SVTOOLS_HTML_S_cap "cap" +#define OOO_STRING_SVTOOLS_HTML_S_chi "chi" +#define OOO_STRING_SVTOOLS_HTML_S_Chi "Chi" +#define OOO_STRING_SVTOOLS_HTML_S_circ "circ" +#define OOO_STRING_SVTOOLS_HTML_S_clubs "clubs" +#define OOO_STRING_SVTOOLS_HTML_S_cong "cong" +#define OOO_STRING_SVTOOLS_HTML_S_crarr "crarr" +#define OOO_STRING_SVTOOLS_HTML_S_cup "cup" +#define OOO_STRING_SVTOOLS_HTML_S_dagger "dagger" +#define OOO_STRING_SVTOOLS_HTML_S_Dagger "Dagger" +#define OOO_STRING_SVTOOLS_HTML_S_darr "darr" +#define OOO_STRING_SVTOOLS_HTML_S_dArr "dArr" +#define OOO_STRING_SVTOOLS_HTML_S_Delta "Delta" +#define OOO_STRING_SVTOOLS_HTML_S_delta "delta" +#define OOO_STRING_SVTOOLS_HTML_S_diams "diams" +#define OOO_STRING_SVTOOLS_HTML_S_empty "empty" +#define OOO_STRING_SVTOOLS_HTML_S_emsp "emsp" +#define OOO_STRING_SVTOOLS_HTML_S_ensp "ensp" +#define OOO_STRING_SVTOOLS_HTML_S_Epsilon "Epsilon" +#define OOO_STRING_SVTOOLS_HTML_S_epsilon "epsilon" +#define OOO_STRING_SVTOOLS_HTML_S_equiv "equiv" +#define OOO_STRING_SVTOOLS_HTML_S_Eta "Eta" +#define OOO_STRING_SVTOOLS_HTML_S_eta "eta" +#define OOO_STRING_SVTOOLS_HTML_S_euro "euro" +#define OOO_STRING_SVTOOLS_HTML_S_exist "exist" +#define OOO_STRING_SVTOOLS_HTML_S_fnof "fnof" +#define OOO_STRING_SVTOOLS_HTML_S_forall "forall" +#define OOO_STRING_SVTOOLS_HTML_S_frasl "frasl" +#define OOO_STRING_SVTOOLS_HTML_S_Gamma "Gamma" +#define OOO_STRING_SVTOOLS_HTML_S_gamma "gamma" +#define OOO_STRING_SVTOOLS_HTML_S_ge "ge" +#define OOO_STRING_SVTOOLS_HTML_S_harr "harr" +#define OOO_STRING_SVTOOLS_HTML_S_hArr "hArr" +#define OOO_STRING_SVTOOLS_HTML_S_hearts "hearts" +#define OOO_STRING_SVTOOLS_HTML_S_hellip "hellip" +#define OOO_STRING_SVTOOLS_HTML_S_image "image" +#define OOO_STRING_SVTOOLS_HTML_S_infin "infin" +#define OOO_STRING_SVTOOLS_HTML_S_int "int" +#define OOO_STRING_SVTOOLS_HTML_S_Iota "Iota" +#define OOO_STRING_SVTOOLS_HTML_S_iota "iota" +#define OOO_STRING_SVTOOLS_HTML_S_isin "isin" +#define OOO_STRING_SVTOOLS_HTML_S_Kappa "Kappa" +#define OOO_STRING_SVTOOLS_HTML_S_kappa "kappa" +#define OOO_STRING_SVTOOLS_HTML_S_Lambda "Lambda" +#define OOO_STRING_SVTOOLS_HTML_S_lambda "lambda" +#define OOO_STRING_SVTOOLS_HTML_S_lang "lang" +#define OOO_STRING_SVTOOLS_HTML_S_larr "larr" +#define OOO_STRING_SVTOOLS_HTML_S_lArr "lArr" +#define OOO_STRING_SVTOOLS_HTML_S_lceil "lceil" +#define OOO_STRING_SVTOOLS_HTML_S_ldquo "ldquo" +#define OOO_STRING_SVTOOLS_HTML_S_le "le" +#define OOO_STRING_SVTOOLS_HTML_S_lfloor "lfloor" +#define OOO_STRING_SVTOOLS_HTML_S_lowast "lowast" +#define OOO_STRING_SVTOOLS_HTML_S_loz "loz" +#define OOO_STRING_SVTOOLS_HTML_S_lrm "lrm" +#define OOO_STRING_SVTOOLS_HTML_S_lsaquo "lsaquo" +#define OOO_STRING_SVTOOLS_HTML_S_lsquo "lsquo" +#define OOO_STRING_SVTOOLS_HTML_S_mdash "mdash" +#define OOO_STRING_SVTOOLS_HTML_S_minus "minus" +#define OOO_STRING_SVTOOLS_HTML_S_Mu "Mu" +#define OOO_STRING_SVTOOLS_HTML_S_mu "mu" +#define OOO_STRING_SVTOOLS_HTML_S_nabla "nabla" +#define OOO_STRING_SVTOOLS_HTML_S_ndash "ndash" +#define OOO_STRING_SVTOOLS_HTML_S_ne "ne" +#define OOO_STRING_SVTOOLS_HTML_S_ni "ni" +#define OOO_STRING_SVTOOLS_HTML_S_notin "notin" +#define OOO_STRING_SVTOOLS_HTML_S_nsub "nsub" +#define OOO_STRING_SVTOOLS_HTML_S_Nu "Nu" +#define OOO_STRING_SVTOOLS_HTML_S_nu "nu" +#define OOO_STRING_SVTOOLS_HTML_S_OElig "OElig" +#define OOO_STRING_SVTOOLS_HTML_S_oelig "oelig" +#define OOO_STRING_SVTOOLS_HTML_S_oline "oline" +#define OOO_STRING_SVTOOLS_HTML_S_Omega "Omega" +#define OOO_STRING_SVTOOLS_HTML_S_omega "omega" +#define OOO_STRING_SVTOOLS_HTML_S_Omicron "Omicron" +#define OOO_STRING_SVTOOLS_HTML_S_omicron "omicron" +#define OOO_STRING_SVTOOLS_HTML_S_oplus "oplus" +#define OOO_STRING_SVTOOLS_HTML_S_or "or" +#define OOO_STRING_SVTOOLS_HTML_S_otimes "otimes" +#define OOO_STRING_SVTOOLS_HTML_S_part "part" +#define OOO_STRING_SVTOOLS_HTML_S_permil "permil" +#define OOO_STRING_SVTOOLS_HTML_S_perp "perp" +#define OOO_STRING_SVTOOLS_HTML_S_Phi "Phi" +#define OOO_STRING_SVTOOLS_HTML_S_phi "phi" +#define OOO_STRING_SVTOOLS_HTML_S_Pi "Pi" +#define OOO_STRING_SVTOOLS_HTML_S_pi "pi" +#define OOO_STRING_SVTOOLS_HTML_S_piv "piv" +#define OOO_STRING_SVTOOLS_HTML_S_prime "prime" +#define OOO_STRING_SVTOOLS_HTML_S_Prime "Prime" +#define OOO_STRING_SVTOOLS_HTML_S_prod "prod" +#define OOO_STRING_SVTOOLS_HTML_S_prop "prop" +#define OOO_STRING_SVTOOLS_HTML_S_Psi "Psi" +#define OOO_STRING_SVTOOLS_HTML_S_psi "psi" +#define OOO_STRING_SVTOOLS_HTML_S_radic "radic" +#define OOO_STRING_SVTOOLS_HTML_S_rang "rang" +#define OOO_STRING_SVTOOLS_HTML_S_rarr "rarr" +#define OOO_STRING_SVTOOLS_HTML_S_rArr "rArr" +#define OOO_STRING_SVTOOLS_HTML_S_rceil "rceil" +#define OOO_STRING_SVTOOLS_HTML_S_rdquo "rdquo" +#define OOO_STRING_SVTOOLS_HTML_S_real "real" +#define OOO_STRING_SVTOOLS_HTML_S_rfloor "rfloor" +#define OOO_STRING_SVTOOLS_HTML_S_Rho "Rho" +#define OOO_STRING_SVTOOLS_HTML_S_rho "rho" +#define OOO_STRING_SVTOOLS_HTML_S_rlm "rlm" +#define OOO_STRING_SVTOOLS_HTML_S_rsaquo "rsaquo" +#define OOO_STRING_SVTOOLS_HTML_S_rsquo "rsquo" +#define OOO_STRING_SVTOOLS_HTML_S_sbquo "sbquo" +#define OOO_STRING_SVTOOLS_HTML_S_Scaron "Scaron" +#define OOO_STRING_SVTOOLS_HTML_S_scaron "scaron" +#define OOO_STRING_SVTOOLS_HTML_S_sdot "sdot" +#define OOO_STRING_SVTOOLS_HTML_S_Sigma "Sigma" +#define OOO_STRING_SVTOOLS_HTML_S_sigma "sigma" +#define OOO_STRING_SVTOOLS_HTML_S_sigmaf "sigmaf" +#define OOO_STRING_SVTOOLS_HTML_S_sim "sim" +#define OOO_STRING_SVTOOLS_HTML_S_spades "spades" +#define OOO_STRING_SVTOOLS_HTML_S_sub "sub" +#define OOO_STRING_SVTOOLS_HTML_S_sube "sube" +#define OOO_STRING_SVTOOLS_HTML_S_sum "sum" +#define OOO_STRING_SVTOOLS_HTML_S_sup "sup" +#define OOO_STRING_SVTOOLS_HTML_S_supe "supe" +#define OOO_STRING_SVTOOLS_HTML_S_Tau "Tau" +#define OOO_STRING_SVTOOLS_HTML_S_tau "tau" +#define OOO_STRING_SVTOOLS_HTML_S_there4 "there4" +#define OOO_STRING_SVTOOLS_HTML_S_Theta "Theta" +#define OOO_STRING_SVTOOLS_HTML_S_theta "theta" +#define OOO_STRING_SVTOOLS_HTML_S_thetasym "thetasym" +#define OOO_STRING_SVTOOLS_HTML_S_thinsp "thinsp" +#define OOO_STRING_SVTOOLS_HTML_S_tilde "tilde" +#define OOO_STRING_SVTOOLS_HTML_S_trade "trade" +#define OOO_STRING_SVTOOLS_HTML_S_uarr "uarr" +#define OOO_STRING_SVTOOLS_HTML_S_uArr "uArr" +#define OOO_STRING_SVTOOLS_HTML_S_upsih "upsih" +#define OOO_STRING_SVTOOLS_HTML_S_Upsilon "Upsilon" +#define OOO_STRING_SVTOOLS_HTML_S_upsilon "upsilon" +#define OOO_STRING_SVTOOLS_HTML_S_weierp "weierp" +#define OOO_STRING_SVTOOLS_HTML_S_Xi "Xi" +#define OOO_STRING_SVTOOLS_HTML_S_xi "xi" +#define OOO_STRING_SVTOOLS_HTML_S_Yuml "Yuml" +#define OOO_STRING_SVTOOLS_HTML_S_Zeta "Zeta" +#define OOO_STRING_SVTOOLS_HTML_S_zeta "zeta" +#define OOO_STRING_SVTOOLS_HTML_S_zwj "zwj" +#define OOO_STRING_SVTOOLS_HTML_S_zwnj "zwnj" // HTML Attribut-Token (=Optionen) // Attribute ohne Wert -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_box, "BOX" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_checked, "CHECKED" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_compact, "COMPACT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_continue, "CONTINUE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_controls, "CONTROLS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_declare, "DECLARE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_disabled, "DISABLED" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_folded, "FOLDED" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_ismap, "ISMAP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_mayscript, "MAYSCRIPT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_multiple, "MULTIPLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_noflow, "NOFLOW" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_nohref, "NOHREF" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_noresize, "NORESIZE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_noshade, "NOSHADE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_nowrap, "NOWRAP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_plain, "PLAIN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_sdfixed, "SDFIXED" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_selected, "SELECTED" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_shapes, "SHAPES" ); +#define OOO_STRING_SVTOOLS_HTML_O_box "BOX" +#define OOO_STRING_SVTOOLS_HTML_O_checked "CHECKED" +#define OOO_STRING_SVTOOLS_HTML_O_compact "COMPACT" +#define OOO_STRING_SVTOOLS_HTML_O_continue "CONTINUE" +#define OOO_STRING_SVTOOLS_HTML_O_controls "CONTROLS" +#define OOO_STRING_SVTOOLS_HTML_O_declare "DECLARE" +#define OOO_STRING_SVTOOLS_HTML_O_disabled "DISABLED" +#define OOO_STRING_SVTOOLS_HTML_O_folded "FOLDED" +#define OOO_STRING_SVTOOLS_HTML_O_ismap "ISMAP" +#define OOO_STRING_SVTOOLS_HTML_O_mayscript "MAYSCRIPT" +#define OOO_STRING_SVTOOLS_HTML_O_multiple "MULTIPLE" +#define OOO_STRING_SVTOOLS_HTML_O_noflow "NOFLOW" +#define OOO_STRING_SVTOOLS_HTML_O_nohref "NOHREF" +#define OOO_STRING_SVTOOLS_HTML_O_noresize "NORESIZE" +#define OOO_STRING_SVTOOLS_HTML_O_noshade "NOSHADE" +#define OOO_STRING_SVTOOLS_HTML_O_nowrap "NOWRAP" +#define OOO_STRING_SVTOOLS_HTML_O_plain "PLAIN" +#define OOO_STRING_SVTOOLS_HTML_O_sdfixed "SDFIXED" +#define OOO_STRING_SVTOOLS_HTML_O_selected "SELECTED" +#define OOO_STRING_SVTOOLS_HTML_O_shapes "SHAPES" // Attribute mit einem String als Wert -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_above, "ABOVE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_accesskey, "ACCESSKEY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_accept, "ACCEPT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_add_date, "ADD_DATE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_alt, "ALT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_axes, "AXES" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_axis, "AXIS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_below, "BELOW" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_char, "CHAR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_class, "CLASS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_clip, "CLIP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_code, "CODE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_codetype, "CODETYPE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_colspec, "COLSPEC" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_content, "CONTENT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_coords, "COORDS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_dp, "DP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_enctype, "ENCTYPE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_error, "ERROR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_face, "FACE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_frameborder, "FRAMEBORDER" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_httpequiv, "HTTP-EQUIV" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_language, "LANGUAGE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_last_modified, "LAST_MODIFIED" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_last_visit, "LAST_VISIT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_md, "MD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_n, "N" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_name, "NAME" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_notation, "NOTATION" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_prompt, "PROMPT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_shape, "SHAPE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_standby, "STANDBY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_style, "STYLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_title, "TITLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_value, "VALUE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDval, "SDVAL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDnum, "SDNUM" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_sdlibrary, "SDLIBRARY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_sdmodule, "SDMODULE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_sdevent, "SDEVENT-" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_sdaddparam, "SDADDPARAM-" ); +#define OOO_STRING_SVTOOLS_HTML_O_above "ABOVE" +#define OOO_STRING_SVTOOLS_HTML_O_accesskey "ACCESSKEY" +#define OOO_STRING_SVTOOLS_HTML_O_accept "ACCEPT" +#define OOO_STRING_SVTOOLS_HTML_O_add_date "ADD_DATE" +#define OOO_STRING_SVTOOLS_HTML_O_alt "ALT" +#define OOO_STRING_SVTOOLS_HTML_O_axes "AXES" +#define OOO_STRING_SVTOOLS_HTML_O_axis "AXIS" +#define OOO_STRING_SVTOOLS_HTML_O_below "BELOW" +#define OOO_STRING_SVTOOLS_HTML_O_char "CHAR" +#define OOO_STRING_SVTOOLS_HTML_O_class "CLASS" +#define OOO_STRING_SVTOOLS_HTML_O_clip "CLIP" +#define OOO_STRING_SVTOOLS_HTML_O_code "CODE" +#define OOO_STRING_SVTOOLS_HTML_O_codetype "CODETYPE" +#define OOO_STRING_SVTOOLS_HTML_O_colspec "COLSPEC" +#define OOO_STRING_SVTOOLS_HTML_O_content "CONTENT" +#define OOO_STRING_SVTOOLS_HTML_O_coords "COORDS" +#define OOO_STRING_SVTOOLS_HTML_O_dp "DP" +#define OOO_STRING_SVTOOLS_HTML_O_enctype "ENCTYPE" +#define OOO_STRING_SVTOOLS_HTML_O_error "ERROR" +#define OOO_STRING_SVTOOLS_HTML_O_face "FACE" +#define OOO_STRING_SVTOOLS_HTML_O_frameborder "FRAMEBORDER" +#define OOO_STRING_SVTOOLS_HTML_O_httpequiv "HTTP-EQUIV" +#define OOO_STRING_SVTOOLS_HTML_O_language "LANGUAGE" +#define OOO_STRING_SVTOOLS_HTML_O_last_modified "LAST_MODIFIED" +#define OOO_STRING_SVTOOLS_HTML_O_last_visit "LAST_VISIT" +#define OOO_STRING_SVTOOLS_HTML_O_md "MD" +#define OOO_STRING_SVTOOLS_HTML_O_n "N" +#define OOO_STRING_SVTOOLS_HTML_O_name "NAME" +#define OOO_STRING_SVTOOLS_HTML_O_notation "NOTATION" +#define OOO_STRING_SVTOOLS_HTML_O_prompt "PROMPT" +#define OOO_STRING_SVTOOLS_HTML_O_shape "SHAPE" +#define OOO_STRING_SVTOOLS_HTML_O_standby "STANDBY" +#define OOO_STRING_SVTOOLS_HTML_O_style "STYLE" +#define OOO_STRING_SVTOOLS_HTML_O_title "TITLE" +#define OOO_STRING_SVTOOLS_HTML_O_value "VALUE" +#define OOO_STRING_SVTOOLS_HTML_O_SDval "SDVAL" +#define OOO_STRING_SVTOOLS_HTML_O_SDnum "SDNUM" +#define OOO_STRING_SVTOOLS_HTML_O_sdlibrary "SDLIBRARY" +#define OOO_STRING_SVTOOLS_HTML_O_sdmodule "SDMODULE" +#define OOO_STRING_SVTOOLS_HTML_O_sdevent "SDEVENT-" +#define OOO_STRING_SVTOOLS_HTML_O_sdaddparam "SDADDPARAM-" // Attribute mit einem SGML-Identifier als Wert -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_from, "FROM" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_id, "ID" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_target, "TARGET" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_to, "TO" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_until, "UNTIL" ); +#define OOO_STRING_SVTOOLS_HTML_O_from "FROM" +#define OOO_STRING_SVTOOLS_HTML_O_id "ID" +#define OOO_STRING_SVTOOLS_HTML_O_target "TARGET" +#define OOO_STRING_SVTOOLS_HTML_O_to "TO" +#define OOO_STRING_SVTOOLS_HTML_O_until "UNTIL" // Attribute mit einem URI als Wert -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_action, "ACTION" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_archive, "ARCHIVE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_background, "BACKGROUND" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_classid, "CLASSID" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_codebase, "CODEBASE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_data, "DATA" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_dynsrc, "DYNSRC" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_dynsync, "DYNSYNC" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_imagemap, "IMAGEMAP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_href, "HREF" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_lowsrc, "LOWSRC" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_script, "SCRIPT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_src, "SRC" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_usemap, "USEMAP" ); +#define OOO_STRING_SVTOOLS_HTML_O_action "ACTION" +#define OOO_STRING_SVTOOLS_HTML_O_archive "ARCHIVE" +#define OOO_STRING_SVTOOLS_HTML_O_background "BACKGROUND" +#define OOO_STRING_SVTOOLS_HTML_O_classid "CLASSID" +#define OOO_STRING_SVTOOLS_HTML_O_codebase "CODEBASE" +#define OOO_STRING_SVTOOLS_HTML_O_data "DATA" +#define OOO_STRING_SVTOOLS_HTML_O_dynsrc "DYNSRC" +#define OOO_STRING_SVTOOLS_HTML_O_dynsync "DYNSYNC" +#define OOO_STRING_SVTOOLS_HTML_O_imagemap "IMAGEMAP" +#define OOO_STRING_SVTOOLS_HTML_O_href "HREF" +#define OOO_STRING_SVTOOLS_HTML_O_lowsrc "LOWSRC" +#define OOO_STRING_SVTOOLS_HTML_O_script "SCRIPT" +#define OOO_STRING_SVTOOLS_HTML_O_src "SRC" +#define OOO_STRING_SVTOOLS_HTML_O_usemap "USEMAP" // Attribute mit Entity-Namen als Wert -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_dingbat, "DINGBAT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_sym, "SYM" ); +#define OOO_STRING_SVTOOLS_HTML_O_dingbat "DINGBAT" +#define OOO_STRING_SVTOOLS_HTML_O_sym "SYM" // Attribute mit einer Farbe als Wert (alle Netscape) -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_alink, "ALINK" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_bgcolor, "BGCOLOR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_bordercolor, "BORDERCOLOR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_bordercolorlight, "BORDERCOLORLIGHT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_bordercolordark, "BORDERCOLORDARK" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_color, "COLOR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_link, "LINK" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_text, "TEXT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_vlink, "VLINK" ); +#define OOO_STRING_SVTOOLS_HTML_O_alink "ALINK" +#define OOO_STRING_SVTOOLS_HTML_O_bgcolor "BGCOLOR" +#define OOO_STRING_SVTOOLS_HTML_O_bordercolor "BORDERCOLOR" +#define OOO_STRING_SVTOOLS_HTML_O_bordercolorlight "BORDERCOLORLIGHT" +#define OOO_STRING_SVTOOLS_HTML_O_bordercolordark "BORDERCOLORDARK" +#define OOO_STRING_SVTOOLS_HTML_O_color "COLOR" +#define OOO_STRING_SVTOOLS_HTML_O_link "LINK" +#define OOO_STRING_SVTOOLS_HTML_O_text "TEXT" +#define OOO_STRING_SVTOOLS_HTML_O_vlink "VLINK" // Attribute mit einem numerischen Wert -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_border, "BORDER" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_cellspacing, "CELLSPACING" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_cellpadding, "CELLPADDING" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_charoff, "CHAROFF" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_colspan, "COLSPAN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_framespacing, "FRAMESPACING" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_gutter, "GUTTER" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_indent, "INDENT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_height, "HEIGHT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_hspace, "HSPACE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_left, "LEFT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_leftmargin, "LEFTMARGIN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_loop, "LOOP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_marginheight, "MARGINHEIGHT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_marginwidth, "MARGINWIDTH" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_max, "MAX" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_maxlength, "MAXLENGTH" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_min, "MIN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_pagex, "PAGEX" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_pagey, "PAGEY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_pointsize, "POINT-SIZE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_rowspan, "ROWSPAN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_scrollamount, "SCROLLAMOUNT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_scrolldelay, "SCROLLDELAY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_seqnum, "SEQNUM" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_skip, "SKIP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_span, "SPAN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_tabindex, "TABINDEX" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_top, "TOP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_topmargin, "TOPMARGIN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_vspace, "VSPACE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_weight, "WEIGHT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_width, "WIDTH" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_x, "X" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_y, "Y" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_zindex, "Z-INDEX" ); +#define OOO_STRING_SVTOOLS_HTML_O_border "BORDER" +#define OOO_STRING_SVTOOLS_HTML_O_cellspacing "CELLSPACING" +#define OOO_STRING_SVTOOLS_HTML_O_cellpadding "CELLPADDING" +#define OOO_STRING_SVTOOLS_HTML_O_charoff "CHAROFF" +#define OOO_STRING_SVTOOLS_HTML_O_colspan "COLSPAN" +#define OOO_STRING_SVTOOLS_HTML_O_framespacing "FRAMESPACING" +#define OOO_STRING_SVTOOLS_HTML_O_gutter "GUTTER" +#define OOO_STRING_SVTOOLS_HTML_O_indent "INDENT" +#define OOO_STRING_SVTOOLS_HTML_O_height "HEIGHT" +#define OOO_STRING_SVTOOLS_HTML_O_hspace "HSPACE" +#define OOO_STRING_SVTOOLS_HTML_O_left "LEFT" +#define OOO_STRING_SVTOOLS_HTML_O_leftmargin "LEFTMARGIN" +#define OOO_STRING_SVTOOLS_HTML_O_loop "LOOP" +#define OOO_STRING_SVTOOLS_HTML_O_marginheight "MARGINHEIGHT" +#define OOO_STRING_SVTOOLS_HTML_O_marginwidth "MARGINWIDTH" +#define OOO_STRING_SVTOOLS_HTML_O_max "MAX" +#define OOO_STRING_SVTOOLS_HTML_O_maxlength "MAXLENGTH" +#define OOO_STRING_SVTOOLS_HTML_O_min "MIN" +#define OOO_STRING_SVTOOLS_HTML_O_pagex "PAGEX" +#define OOO_STRING_SVTOOLS_HTML_O_pagey "PAGEY" +#define OOO_STRING_SVTOOLS_HTML_O_pointsize "POINT-SIZE" +#define OOO_STRING_SVTOOLS_HTML_O_rowspan "ROWSPAN" +#define OOO_STRING_SVTOOLS_HTML_O_scrollamount "SCROLLAMOUNT" +#define OOO_STRING_SVTOOLS_HTML_O_scrolldelay "SCROLLDELAY" +#define OOO_STRING_SVTOOLS_HTML_O_seqnum "SEQNUM" +#define OOO_STRING_SVTOOLS_HTML_O_skip "SKIP" +#define OOO_STRING_SVTOOLS_HTML_O_span "SPAN" +#define OOO_STRING_SVTOOLS_HTML_O_tabindex "TABINDEX" +#define OOO_STRING_SVTOOLS_HTML_O_top "TOP" +#define OOO_STRING_SVTOOLS_HTML_O_topmargin "TOPMARGIN" +#define OOO_STRING_SVTOOLS_HTML_O_vspace "VSPACE" +#define OOO_STRING_SVTOOLS_HTML_O_weight "WEIGHT" +#define OOO_STRING_SVTOOLS_HTML_O_width "WIDTH" +#define OOO_STRING_SVTOOLS_HTML_O_x "X" +#define OOO_STRING_SVTOOLS_HTML_O_y "Y" +#define OOO_STRING_SVTOOLS_HTML_O_zindex "Z-INDEX" // Attribute mit Enum-Werten -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_behavior, "BEHAVIOR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_bgproperties, "BGPROPERTIES" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_clear, "CLEAR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_dir, "DIR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_direction, "DIRECTION" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_format, "FORMAT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_frame, "FRAME" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_lang, "LANG" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_method, "METHOD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_palette, "PALETTE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_rel, "REL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_rev, "REV" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_rules, "RULES" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_scrolling, "SCROLLING" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_sdreadonly, "READONLY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_subtype, "SUBTYPE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_type, "TYPE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_valign, "VALIGN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_valuetype, "VALUETYPE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_visibility, "VISIBILITY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_wrap, "WRAP" ); +#define OOO_STRING_SVTOOLS_HTML_O_behavior "BEHAVIOR" +#define OOO_STRING_SVTOOLS_HTML_O_bgproperties "BGPROPERTIES" +#define OOO_STRING_SVTOOLS_HTML_O_clear "CLEAR" +#define OOO_STRING_SVTOOLS_HTML_O_dir "DIR" +#define OOO_STRING_SVTOOLS_HTML_O_direction "DIRECTION" +#define OOO_STRING_SVTOOLS_HTML_O_format "FORMAT" +#define OOO_STRING_SVTOOLS_HTML_O_frame "FRAME" +#define OOO_STRING_SVTOOLS_HTML_O_lang "LANG" +#define OOO_STRING_SVTOOLS_HTML_O_method "METHOD" +#define OOO_STRING_SVTOOLS_HTML_O_palette "PALETTE" +#define OOO_STRING_SVTOOLS_HTML_O_rel "REL" +#define OOO_STRING_SVTOOLS_HTML_O_rev "REV" +#define OOO_STRING_SVTOOLS_HTML_O_rules "RULES" +#define OOO_STRING_SVTOOLS_HTML_O_scrolling "SCROLLING" +#define OOO_STRING_SVTOOLS_HTML_O_sdreadonly "READONLY" +#define OOO_STRING_SVTOOLS_HTML_O_subtype "SUBTYPE" +#define OOO_STRING_SVTOOLS_HTML_O_type "TYPE" +#define OOO_STRING_SVTOOLS_HTML_O_valign "VALIGN" +#define OOO_STRING_SVTOOLS_HTML_O_valuetype "VALUETYPE" +#define OOO_STRING_SVTOOLS_HTML_O_visibility "VISIBILITY" +#define OOO_STRING_SVTOOLS_HTML_O_wrap "WRAP" // Attribute mit Script-Code als Wert -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onblur, "ONBLUR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onchange, "ONCHANGE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onclick, "ONCLICK" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onfocus, "ONFOCUS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onload, "ONLOAD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onmouseover, "ONMOUSEOVER" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onreset, "ONRESET" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onselect, "ONSELECT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onsubmit, "ONSUBMIT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onunload, "ONUNLOAD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onabort, "ONABORT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onerror, "ONERROR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_onmouseout, "ONMOUSEOUT" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonblur, "SDONBLUR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonchange, "SDONCHANGE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonclick, "SDONCLICK" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonfocus, "SDONFOCUS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonload, "SDONLOAD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonmouseover, "SDONMOUSEOVER" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonreset, "SDONRESET" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonselect, "SDONSELECT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonsubmit, "SDONSUBMIT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonunload, "SDONUNLOAD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonabort, "SDONABORT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonerror, "SDONERROR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_SDonmouseout, "SDONMOUSEOUT" ); +#define OOO_STRING_SVTOOLS_HTML_O_onblur "ONBLUR" +#define OOO_STRING_SVTOOLS_HTML_O_onchange "ONCHANGE" +#define OOO_STRING_SVTOOLS_HTML_O_onclick "ONCLICK" +#define OOO_STRING_SVTOOLS_HTML_O_onfocus "ONFOCUS" +#define OOO_STRING_SVTOOLS_HTML_O_onload "ONLOAD" +#define OOO_STRING_SVTOOLS_HTML_O_onmouseover "ONMOUSEOVER" +#define OOO_STRING_SVTOOLS_HTML_O_onreset "ONRESET" +#define OOO_STRING_SVTOOLS_HTML_O_onselect "ONSELECT" +#define OOO_STRING_SVTOOLS_HTML_O_onsubmit "ONSUBMIT" +#define OOO_STRING_SVTOOLS_HTML_O_onunload "ONUNLOAD" +#define OOO_STRING_SVTOOLS_HTML_O_onabort "ONABORT" +#define OOO_STRING_SVTOOLS_HTML_O_onerror "ONERROR" +#define OOO_STRING_SVTOOLS_HTML_O_onmouseout "ONMOUSEOUT" +#define OOO_STRING_SVTOOLS_HTML_O_SDonblur "SDONBLUR" +#define OOO_STRING_SVTOOLS_HTML_O_SDonchange "SDONCHANGE" +#define OOO_STRING_SVTOOLS_HTML_O_SDonclick "SDONCLICK" +#define OOO_STRING_SVTOOLS_HTML_O_SDonfocus "SDONFOCUS" +#define OOO_STRING_SVTOOLS_HTML_O_SDonload "SDONLOAD" +#define OOO_STRING_SVTOOLS_HTML_O_SDonmouseover "SDONMOUSEOVER" +#define OOO_STRING_SVTOOLS_HTML_O_SDonreset "SDONRESET" +#define OOO_STRING_SVTOOLS_HTML_O_SDonselect "SDONSELECT" +#define OOO_STRING_SVTOOLS_HTML_O_SDonsubmit "SDONSUBMIT" +#define OOO_STRING_SVTOOLS_HTML_O_SDonunload "SDONUNLOAD" +#define OOO_STRING_SVTOOLS_HTML_O_SDonabort "SDONABORT" +#define OOO_STRING_SVTOOLS_HTML_O_SDonerror "SDONERROR" +#define OOO_STRING_SVTOOLS_HTML_O_SDonmouseout "SDONMOUSEOUT" // Attribute mit Kontext-abhaengigen Werten -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_align, "ALIGN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_cols, "COLS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_rows, "ROWS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_start, "START" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_size, "SIZE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_O_units, "UNITS" ); - +#define OOO_STRING_SVTOOLS_HTML_O_align "ALIGN" +#define OOO_STRING_SVTOOLS_HTML_O_cols "COLS" +#define OOO_STRING_SVTOOLS_HTML_O_rows "ROWS" +#define OOO_STRING_SVTOOLS_HTML_O_start "START" +#define OOO_STRING_SVTOOLS_HTML_O_size "SIZE" +#define OOO_STRING_SVTOOLS_HTML_O_units "UNITS" // Werte von <INPUT TYPE=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_text, "TEXT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_password, "PASSWORD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_checkbox, "CHECKBOX" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_radio, "RADIO" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_range, "RANGE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_scribble, "SCRIBBLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_file, "FILE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_hidden, "HIDDEN" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_submit, "SUBMIT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_image, "IMAGE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_reset, "RESET" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_IT_button, "BUTTON" ); +#define OOO_STRING_SVTOOLS_HTML_IT_text "TEXT" +#define OOO_STRING_SVTOOLS_HTML_IT_password "PASSWORD" +#define OOO_STRING_SVTOOLS_HTML_IT_checkbox "CHECKBOX" +#define OOO_STRING_SVTOOLS_HTML_IT_radio "RADIO" +#define OOO_STRING_SVTOOLS_HTML_IT_range "RANGE" +#define OOO_STRING_SVTOOLS_HTML_IT_scribble "SCRIBBLE" +#define OOO_STRING_SVTOOLS_HTML_IT_file "FILE" +#define OOO_STRING_SVTOOLS_HTML_IT_hidden "HIDDEN" +#define OOO_STRING_SVTOOLS_HTML_IT_submit "SUBMIT" +#define OOO_STRING_SVTOOLS_HTML_IT_image "IMAGE" +#define OOO_STRING_SVTOOLS_HTML_IT_reset "RESET" +#define OOO_STRING_SVTOOLS_HTML_IT_button "BUTTON" // Werte von <TABLE FRAME=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TF_void, "VOID" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TF_above, "ABOVE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TF_below, "BELOW" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TF_hsides, "HSIDES" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TF_lhs, "LHS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TF_rhs, "RHS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TF_vsides, "VSIDES" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TF_box, "BOX" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TF_border, "BORDER" ); +#define OOO_STRING_SVTOOLS_HTML_TF_void "VOID" +#define OOO_STRING_SVTOOLS_HTML_TF_above "ABOVE" +#define OOO_STRING_SVTOOLS_HTML_TF_below "BELOW" +#define OOO_STRING_SVTOOLS_HTML_TF_hsides "HSIDES" +#define OOO_STRING_SVTOOLS_HTML_TF_lhs "LHS" +#define OOO_STRING_SVTOOLS_HTML_TF_rhs "RHS" +#define OOO_STRING_SVTOOLS_HTML_TF_vsides "VSIDES" +#define OOO_STRING_SVTOOLS_HTML_TF_box "BOX" +#define OOO_STRING_SVTOOLS_HTML_TF_border "BORDER" // Werte von <TABLE RULES=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TR_none, "NONE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TR_groups, "GROUPS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TR_rows, "ROWS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TR_cols, "COLS" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_TR_all, "ALL" ); +#define OOO_STRING_SVTOOLS_HTML_TR_none "NONE" +#define OOO_STRING_SVTOOLS_HTML_TR_groups "GROUPS" +#define OOO_STRING_SVTOOLS_HTML_TR_rows "ROWS" +#define OOO_STRING_SVTOOLS_HTML_TR_cols "COLS" +#define OOO_STRING_SVTOOLS_HTML_TR_all "ALL" // Werte von <P, H?, TR, TH, TD ALIGN=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_AL_left, "LEFT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_AL_center, "CENTER" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_AL_middle, "MIDDLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_AL_right, "RIGHT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_AL_justify, "JUSTIFY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_AL_char, "CHAR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_AL_all, "ALL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_AL_none, "NONE" ); +#define OOO_STRING_SVTOOLS_HTML_AL_left "LEFT" +#define OOO_STRING_SVTOOLS_HTML_AL_center "CENTER" +#define OOO_STRING_SVTOOLS_HTML_AL_middle "MIDDLE" +#define OOO_STRING_SVTOOLS_HTML_AL_right "RIGHT" +#define OOO_STRING_SVTOOLS_HTML_AL_justify "JUSTIFY" +#define OOO_STRING_SVTOOLS_HTML_AL_char "CHAR" +#define OOO_STRING_SVTOOLS_HTML_AL_all "ALL" +#define OOO_STRING_SVTOOLS_HTML_AL_none "NONE" // Werte von <TR VALIGN=...>, <IMG ALIGN=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_VA_top, "TOP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_VA_middle, "MIDDLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_VA_bottom, "BOTTOM" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_VA_baseline, "BASELINE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_VA_texttop, "TEXTTOP" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_VA_absmiddle, "ABSMIDDLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_VA_absbottom, "ABSBOTTOM" ); +#define OOO_STRING_SVTOOLS_HTML_VA_top "TOP" +#define OOO_STRING_SVTOOLS_HTML_VA_middle "MIDDLE" +#define OOO_STRING_SVTOOLS_HTML_VA_bottom "BOTTOM" +#define OOO_STRING_SVTOOLS_HTML_VA_baseline "BASELINE" +#define OOO_STRING_SVTOOLS_HTML_VA_texttop "TEXTTOP" +#define OOO_STRING_SVTOOLS_HTML_VA_absmiddle "ABSMIDDLE" +#define OOO_STRING_SVTOOLS_HTML_VA_absbottom "ABSBOTTOM" // Werte von <AREA SHAPE=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SH_rect, "RECT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SH_rectangle, "RECTANGLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SH_circ, "CIRC" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SH_circle, "CIRCLE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SH_poly, "POLY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SH_polygon, "POLYGON" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SH_default, "DEFAULT" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_LG_starbasic, "STARBASIC" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_LG_javascript, "JAVASCRIPT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_LG_javascript11, "JAVASCRIPT1.1" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_LG_livescript, "LIVESCRIPT" ); -//extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_LG_vbscript, "VBSCRIPT" ); -//extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_LG_unused_javascript, "UNUSED JAVASCRIPT" ); -//extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_LG_starone, "StarScript" ); +#define OOO_STRING_SVTOOLS_HTML_SH_rect "RECT" +#define OOO_STRING_SVTOOLS_HTML_SH_rectangle "RECTANGLE" +#define OOO_STRING_SVTOOLS_HTML_SH_circ "CIRC" +#define OOO_STRING_SVTOOLS_HTML_SH_circle "CIRCLE" +#define OOO_STRING_SVTOOLS_HTML_SH_poly "POLY" +#define OOO_STRING_SVTOOLS_HTML_SH_polygon "POLYGON" +#define OOO_STRING_SVTOOLS_HTML_SH_default "DEFAULT" + +#define OOO_STRING_SVTOOLS_HTML_LG_starbasic "STARBASIC" +#define OOO_STRING_SVTOOLS_HTML_LG_javascript "JAVASCRIPT" +#define OOO_STRING_SVTOOLS_HTML_LG_javascript11 "JAVASCRIPT1.1" +#define OOO_STRING_SVTOOLS_HTML_LG_livescript "LIVESCRIPT" // ein par Werte fuer unser StarBASIC-Support -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SB_library, "$LIBRARY:" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SB_module, "$MODULE:" ); - +#define OOO_STRING_SVTOOLS_HTML_SB_library "$LIBRARY:" +#define OOO_STRING_SVTOOLS_HTML_SB_module "$MODULE:" // Werte von <FORM METHOD=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_METHOD_get, "GET" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_METHOD_post, "POST" ); +#define OOO_STRING_SVTOOLS_HTML_METHOD_get "GET" +#define OOO_STRING_SVTOOLS_HTML_METHOD_post "POST" // Werte von <META CONTENT/HTTP-EQUIV=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_refresh, "REFRESH" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_generator, "GENERATOR" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_author, "AUTHOR" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_classification, "CLASSIFICATION" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_description, "DESCRIPTION" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_keywords, "KEYWORDS" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_changed, "CHANGED" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_changedby, "CHANGEDBY" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_created, "CREATED" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_content_type, "CONTENT-TYPE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_content_script_type, "CONTENT-SCRIPT-TYPE" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_sdendnote, "SDENDNOTE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_META_sdfootnote, "SDFOOTNOTE" ); +#define OOO_STRING_SVTOOLS_HTML_META_refresh "REFRESH" +#define OOO_STRING_SVTOOLS_HTML_META_generator "GENERATOR" +#define OOO_STRING_SVTOOLS_HTML_META_author "AUTHOR" +#define OOO_STRING_SVTOOLS_HTML_META_classification "CLASSIFICATION" +#define OOO_STRING_SVTOOLS_HTML_META_description "DESCRIPTION" +#define OOO_STRING_SVTOOLS_HTML_META_keywords "KEYWORDS" +#define OOO_STRING_SVTOOLS_HTML_META_changed "CHANGED" +#define OOO_STRING_SVTOOLS_HTML_META_changedby "CHANGEDBY" +#define OOO_STRING_SVTOOLS_HTML_META_created "CREATED" +#define OOO_STRING_SVTOOLS_HTML_META_content_type "CONTENT-TYPE" +#define OOO_STRING_SVTOOLS_HTML_META_content_script_type "CONTENT-SCRIPT-TYPE" +#define OOO_STRING_SVTOOLS_HTML_META_sdendnote "SDENDNOTE" +#define OOO_STRING_SVTOOLS_HTML_META_sdfootnote "SDFOOTNOTE" // Werte von <UL TYPE=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_ULTYPE_disc, "DISC" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_ULTYPE_square, "SQUARE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_ULTYPE_circle, "CIRCLE" ); +#define OOO_STRING_SVTOOLS_HTML_ULTYPE_disc "DISC" +#define OOO_STRING_SVTOOLS_HTML_ULTYPE_square "SQUARE" +#define OOO_STRING_SVTOOLS_HTML_ULTYPE_circle "CIRCLE" // Werte von <FRAMESET SCROLLING=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SCROLL_yes, "YES" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SCROLL_no, "NO" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SCROLL_auto, "AUTO" ); +#define OOO_STRING_SVTOOLS_HTML_SCROLL_yes "YES" +#define OOO_STRING_SVTOOLS_HTML_SCROLL_no "NO" +#define OOO_STRING_SVTOOLS_HTML_SCROLL_auto "AUTO" // Werte von <MULTICOL TYPE=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_MCTYPE_horizontal, "HORIZONTAL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_MCTYPE_vertical, "VERTICAL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_MCTYPE_box, "BOX" ); +#define OOO_STRING_SVTOOLS_HTML_MCTYPE_horizontal "HORIZONTAL" +#define OOO_STRING_SVTOOLS_HTML_MCTYPE_vertical "VERTICAL" +#define OOO_STRING_SVTOOLS_HTML_MCTYPE_box "BOX" // Werte von <MARQUEE BEHAVIOUR=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_BEHAV_scroll, "SCROLL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_BEHAV_slide, "SLIDE" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_BEHAV_alternate, "ALTERNATE" ); +#define OOO_STRING_SVTOOLS_HTML_BEHAV_scroll "SCROLL" +#define OOO_STRING_SVTOOLS_HTML_BEHAV_slide "SLIDE" +#define OOO_STRING_SVTOOLS_HTML_BEHAV_alternate "ALTERNATE" // Werte von <MARQUEE LOOP=...> -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_LOOP_infinite, "INFINITE" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SPTYPE_block, "BLOCK" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SPTYPE_horizontal, "HORIZONTAL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_SPTYPE_vertical, "VERTICAL" ); - +#define OOO_STRING_SVTOOLS_HTML_LOOP_infinite "INFINITE" +#define OOO_STRING_SVTOOLS_HTML_SPTYPE_block "BLOCK" +#define OOO_STRING_SVTOOLS_HTML_SPTYPE_horizontal "HORIZONTAL" +#define OOO_STRING_SVTOOLS_HTML_SPTYPE_vertical "VERTICAL" // interne Grafik-Namen -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_private_image, "private:image/" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_internal_gopher, "internal-gopher-" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_internal_icon, "internal-icon-" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_GOPHER_binary, "binary" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_GOPHER_image, "image" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_GOPHER_index, "index" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_GOPHER_menu, "menu" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_GOPHER_movie, "movie" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_GOPHER_sound, "sound" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_GOPHER_telnet, "telnet" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_GOPHER_text, "text" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_GOPHER_unknown, "unknown" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_ICON_baddata, "baddata" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_ICON_delayed, "delayed" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_ICON_embed, "embed" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_ICON_insecure, "insecure" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_INT_ICON_notfound, "notfound" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_sdendnote, "sdendnote" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_sdendnote_anc, "sdendnoteanc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_sdendnote_sym, "sdendnotesym" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_sdfootnote, "sdfootnote" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_sdfootnote_anc, "sdfootnoteanc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_sdfootnote_sym, "sdfootnotesym" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_FTN_anchor, "anc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_FTN_symbol, "sym" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_WW_off, "OFF" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_WW_hard, "HARD" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_WW_soft, "SOFT" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_WW_virtual, "VIRTUAL" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_WW_physical, "PHYSICAL" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_on, "on" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_ET_url, "application/x-www-form-urlencoded" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_ET_multipart, "multipart/form-data" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_ET_text, "text/plain" ); - +#define OOO_STRING_SVTOOLS_HTML_private_image "private:image/" +#define OOO_STRING_SVTOOLS_HTML_internal_gopher "internal-gopher-" +#define OOO_STRING_SVTOOLS_HTML_internal_icon "internal-icon-" +#define OOO_STRING_SVTOOLS_HTML_INT_GOPHER_binary "binary" +#define OOO_STRING_SVTOOLS_HTML_INT_GOPHER_image "image" +#define OOO_STRING_SVTOOLS_HTML_INT_GOPHER_index "index" +#define OOO_STRING_SVTOOLS_HTML_INT_GOPHER_menu "menu" +#define OOO_STRING_SVTOOLS_HTML_INT_GOPHER_movie "movie" +#define OOO_STRING_SVTOOLS_HTML_INT_GOPHER_sound "sound" +#define OOO_STRING_SVTOOLS_HTML_INT_GOPHER_telnet "telnet" +#define OOO_STRING_SVTOOLS_HTML_INT_GOPHER_text "text" +#define OOO_STRING_SVTOOLS_HTML_INT_GOPHER_unknown "unknown" +#define OOO_STRING_SVTOOLS_HTML_INT_ICON_baddata "baddata" +#define OOO_STRING_SVTOOLS_HTML_INT_ICON_delayed "delayed" +#define OOO_STRING_SVTOOLS_HTML_INT_ICON_embed "embed" +#define OOO_STRING_SVTOOLS_HTML_INT_ICON_insecure "insecure" +#define OOO_STRING_SVTOOLS_HTML_INT_ICON_notfound "notfound" +#define OOO_STRING_SVTOOLS_HTML_sdendnote "sdendnote" +#define OOO_STRING_SVTOOLS_HTML_sdendnote_anc "sdendnoteanc" +#define OOO_STRING_SVTOOLS_HTML_sdendnote_sym "sdendnotesym" +#define OOO_STRING_SVTOOLS_HTML_sdfootnote "sdfootnote" +#define OOO_STRING_SVTOOLS_HTML_sdfootnote_anc "sdfootnoteanc" +#define OOO_STRING_SVTOOLS_HTML_sdfootnote_sym "sdfootnotesym" +#define OOO_STRING_SVTOOLS_HTML_FTN_anchor "anc" +#define OOO_STRING_SVTOOLS_HTML_FTN_symbol "sym" +#define OOO_STRING_SVTOOLS_HTML_WW_off "OFF" +#define OOO_STRING_SVTOOLS_HTML_WW_hard "HARD" +#define OOO_STRING_SVTOOLS_HTML_WW_soft "SOFT" +#define OOO_STRING_SVTOOLS_HTML_WW_virtual "VIRTUAL" +#define OOO_STRING_SVTOOLS_HTML_WW_physical "PHYSICAL" +#define OOO_STRING_SVTOOLS_HTML_on "on" +#define OOO_STRING_SVTOOLS_HTML_ET_url "application/x-www-form-urlencoded" +#define OOO_STRING_SVTOOLS_HTML_ET_multipart "multipart/form-data" +#define OOO_STRING_SVTOOLS_HTML_ET_text "text/plain" #endif diff --git a/svtools/inc/pch/precompiled_svtools.hxx b/svtools/inc/pch/precompiled_svtools.hxx index 440bd04dce36..cab81cac04ec 100644 --- a/svtools/inc/pch/precompiled_svtools.hxx +++ b/svtools/inc/pch/precompiled_svtools.hxx @@ -227,6 +227,7 @@ #include <com/sun/star/system/XProxySettings.hpp> #include <com/sun/star/system/XSystemShellExecute.hpp> #include <com/sun/star/task/DocumentPasswordRequest.hpp> +#include <com/sun/star/task/DocumentMSPasswordRequest.hpp> #include <com/sun/star/task/MasterPasswordRequest.hpp> #include <com/sun/star/task/NoMasterException.hpp> #include <com/sun/star/task/PasswordRequestMode.hpp> diff --git a/svtools/inc/sfxecode.hxx b/svtools/inc/sfxecode.hxx index 100336796ea4..01292f1c87fa 100644 --- a/svtools/inc/sfxecode.hxx +++ b/svtools/inc/sfxecode.hxx @@ -84,6 +84,7 @@ #define ERRCODE_SFX_MACROS_SUPPORT_DISABLED (ERRCODE_WARNING_MASK | ERRCODE_AREA_SFX | ERRCODE_CLASS_NONE | 51) #define ERRCODE_SFX_DOCUMENT_MACRO_DISABLED (ERRCODE_WARNING_MASK | ERRCODE_AREA_SFX | ERRCODE_CLASS_NONE | 52) #define ERRCODE_SFX_BROKENSIGNATURE (ERRCODE_WARNING_MASK | ERRCODE_AREA_SFX | ERRCODE_CLASS_NONE | 53) +#define ERRCODE_SFX_SHARED_NOPASSWORDCHANGE (ERRCODE_WARNING_MASK | ERRCODE_AREA_SFX | ERRCODE_CLASS_NONE | 54) diff --git a/svtools/inc/svtools/itemprop.hxx b/svtools/inc/svtools/itemprop.hxx index 34064595753e..feab0eab004b 100644 --- a/svtools/inc/svtools/itemprop.hxx +++ b/svtools/inc/svtools/itemprop.hxx @@ -38,12 +38,13 @@ #include <com/sun/star/beans/XPropertySetInfo.hpp> #include <com/sun/star/beans/PropertyState.hpp> #include <com/sun/star/lang/IllegalArgumentException.hpp> - +#include <vector> /* -----------------------------21.02.00 11:03-------------------------------- UNO III - Implementation ---------------------------------------------------------------------------*/ #define MAP_CHAR_LEN(cchar) cchar, sizeof(cchar) - 1 -struct SfxItemPropertyMap + +struct SfxItemPropertyMapEntry { const char* pName; USHORT nNameLen; @@ -52,34 +53,83 @@ struct SfxItemPropertyMap long nFlags; BYTE nMemberId; - SVL_DLLPUBLIC static const SfxItemPropertyMap* GetByName( - const SfxItemPropertyMap *pMap, - const ::rtl::OUString &rName ); - SVL_DLLPUBLIC static const SfxItemPropertyMap* GetTolerantByName( - const SfxItemPropertyMap *pMap, - const ::rtl::OUString &rName ); +}; + +struct SfxItemPropertySimpleEntry +{ + USHORT nWID; + const com::sun::star::uno::Type* pType; + long nFlags; + BYTE nMemberId; + + SfxItemPropertySimpleEntry() : + nWID( 0 ), + pType( 0 ), + nFlags( 0 ), + nMemberId( 0 ){} + + SfxItemPropertySimpleEntry(USHORT _nWID, const com::sun::star::uno::Type* _pType, + long _nFlags, BYTE _nMemberId) : + nWID( _nWID ), + pType( _pType ), + nFlags( _nFlags ), + nMemberId( _nMemberId ){} + + SfxItemPropertySimpleEntry( const SfxItemPropertyMapEntry* pMapEntry ) : + nWID( pMapEntry->nWID ), + pType( pMapEntry->pType ), + nFlags( pMapEntry->nFlags ), + nMemberId( pMapEntry->nMemberId ){} + +}; +struct SfxItemPropertyNamedEntry : public SfxItemPropertySimpleEntry +{ + ::rtl::OUString sName; + SfxItemPropertyNamedEntry( const String& rName, const SfxItemPropertySimpleEntry& rSimpleEntry) : + SfxItemPropertySimpleEntry( rSimpleEntry ), + sName( rName ){} + +}; +typedef std::vector< SfxItemPropertyNamedEntry > PropertyEntryVector_t; +class SfxItemPropertyMap_Impl; +class SVL_DLLPUBLIC SfxItemPropertyMap +{ + SfxItemPropertyMap_Impl* m_pImpl; +public: + SfxItemPropertyMap( const SfxItemPropertyMapEntry* pEntries ); + SfxItemPropertyMap( const SfxItemPropertyMap* pSource ); + ~SfxItemPropertyMap(); + + const SfxItemPropertySimpleEntry* getByName( const ::rtl::OUString &rName ) const; + com::sun::star::uno::Sequence< com::sun::star::beans::Property > getProperties() const; + com::sun::star::beans::Property getPropertyByName( const ::rtl::OUString rName ) const + throw( ::com::sun::star::beans::UnknownPropertyException ); + sal_Bool hasPropertyByName( const ::rtl::OUString& rName ) const; + + void mergeProperties( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& rPropSeq ); + PropertyEntryVector_t getPropertyEntries() const; + sal_uInt32 getSize() const; + }; /* -----------------------------21.02.00 11:19-------------------------------- ---------------------------------------------------------------------------*/ class SVL_DLLPUBLIC SfxItemPropertySet { - const SfxItemPropertyMap* _pMap; + SfxItemPropertyMap m_aMap; + mutable com::sun::star::uno::Reference<com::sun::star::beans::XPropertySetInfo> m_xInfo; protected: virtual BOOL FillItem(SfxItemSet& rSet, USHORT nWhich, BOOL bGetProperty) const; public: - SfxItemPropertySet( const SfxItemPropertyMap *pMap ) : - _pMap(pMap) {} - - void getPropertyValue( const SfxItemPropertyMap& rMap, - const SfxItemSet& rSet, - com::sun::star::uno::Any& rAny) const - throw(::com::sun::star::uno::RuntimeException); - com::sun::star::uno::Any - getPropertyValue( const SfxItemPropertyMap& rMap, - const SfxItemSet& rSet ) const - throw(::com::sun::star::uno::RuntimeException); + SfxItemPropertySet( const SfxItemPropertyMapEntry *pMap ) : + m_aMap(pMap) {} + virtual ~SfxItemPropertySet(); + + void getPropertyValue( const SfxItemPropertySimpleEntry& rEntry, + const SfxItemSet& rSet, + com::sun::star::uno::Any& rAny) const + throw(::com::sun::star::uno::RuntimeException); void getPropertyValue( const ::rtl::OUString &rName, const SfxItemSet& rSet, com::sun::star::uno::Any& rAny) const @@ -90,11 +140,11 @@ public: const SfxItemSet& rSet ) const throw(::com::sun::star::uno::RuntimeException, ::com::sun::star::beans::UnknownPropertyException); - void setPropertyValue( const SfxItemPropertyMap& rMap, - const com::sun::star::uno::Any& aVal, - SfxItemSet& rSet ) const - throw(::com::sun::star::uno::RuntimeException, - com::sun::star::lang::IllegalArgumentException); + void setPropertyValue( const SfxItemPropertySimpleEntry& rEntry, + const com::sun::star::uno::Any& aVal, + SfxItemSet& rSet ) const + throw(::com::sun::star::uno::RuntimeException, + com::sun::star::lang::IllegalArgumentException); void setPropertyValue( const ::rtl::OUString& rPropertyName, const com::sun::star::uno::Any& aVal, SfxItemSet& rSet ) const @@ -103,29 +153,31 @@ public: ::com::sun::star::beans::UnknownPropertyException); com::sun::star::beans::PropertyState - getPropertyState(const ::rtl::OUString& rName, const SfxItemSet& rSet) + getPropertyState(const ::rtl::OUString& rName, const SfxItemSet& rSet)const throw(com::sun::star::beans::UnknownPropertyException); com::sun::star::beans::PropertyState - getPropertyState(const SfxItemPropertyMap& rMap, const SfxItemSet& rSet) + getPropertyState(const SfxItemPropertySimpleEntry& rEntry, const SfxItemSet& rSet) const throw(); com::sun::star::uno::Reference<com::sun::star::beans::XPropertySetInfo> getPropertySetInfo() const; const SfxItemPropertyMap* - getPropertyMap() const {return _pMap;} + getPropertyMap() const {return &m_aMap;} }; /* -----------------------------21.02.00 11:09-------------------------------- ---------------------------------------------------------------------------*/ +struct SfxItemPropertySetInfo_Impl; class SVL_DLLPUBLIC SfxItemPropertySetInfo : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySetInfo> { - const SfxItemPropertyMap* _pMap; + SfxItemPropertySetInfo_Impl* m_pImpl; public: - SfxItemPropertySetInfo(const SfxItemPropertyMap *pMap ) : - _pMap(pMap) {} + SfxItemPropertySetInfo(const SfxItemPropertyMap *pMap ); + SfxItemPropertySetInfo(const SfxItemPropertyMapEntry *pEntries ); + virtual ~SfxItemPropertySetInfo(); virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property > SAL_CALL getProperties( ) @@ -140,19 +192,19 @@ public: hasPropertyByName( const ::rtl::OUString& Name ) throw(::com::sun::star::uno::RuntimeException); - const SfxItemPropertyMap* getMap() const { return _pMap; } + const SfxItemPropertyMap* getMap() const; }; /* -----------------------------21.02.00 12:01-------------------------------- ---------------------------------------------------------------------------*/ class SVL_DLLPUBLIC SfxExtItemPropertySetInfo: public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySetInfo > { - const SfxItemPropertyMap* _pExtMap; - com::sun::star::uno::Sequence<com::sun::star::beans::Property> aPropertySeq; + SfxItemPropertyMap aExtMap; public: SfxExtItemPropertySetInfo( - const SfxItemPropertyMap *pMap, + const SfxItemPropertyMapEntry *pMap, const com::sun::star::uno::Sequence<com::sun::star::beans::Property>& rPropSeq ); + virtual ~SfxExtItemPropertySetInfo(); virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property > SAL_CALL getProperties( ) diff --git a/svtools/inc/svtools/menuoptions.hxx b/svtools/inc/svtools/menuoptions.hxx index f98c33ec33a5..1d93d9068e1c 100644 --- a/svtools/inc/svtools/menuoptions.hxx +++ b/svtools/inc/svtools/menuoptions.hxx @@ -122,11 +122,11 @@ class SVL_DLLPUBLIC SvtMenuOptions: public svt::detail::Options sal_Bool IsEntryHidingEnabled() const; sal_Bool IsFollowMouseEnabled() const; - sal_Bool IsMenuIconsEnabled() const; + sal_Int16 GetMenuIconsState() const; void SetEntryHidingState( sal_Bool bState ); void SetFollowMouseState( sal_Bool bState ); - void SetMenuIconsState( sal_Bool bState ); + void SetMenuIconsState( sal_Int16 bState ); //------------------------------------------------------------------------------------------------------------- // private methods diff --git a/svtools/inc/svtools/parhtml.hxx b/svtools/inc/svtools/parhtml.hxx index d129a8c14595..f5de6aea358d 100644 --- a/svtools/inc/svtools/parhtml.hxx +++ b/svtools/inc/svtools/parhtml.hxx @@ -37,9 +37,17 @@ #include <svtools/svarray.hxx> #include <svtools/svparser.hxx> + +namespace com { namespace sun { namespace star { + namespace document { + class XDocumentProperties; + } +} } } + class Color; class SvNumberFormatter; class SvULongs; +class SvKeyValueIterator; #define HTMLFONTSZ1_DFLT 7 #define HTMLFONTSZ2_DFLT 10 @@ -224,6 +232,28 @@ public: // virtual void RestoreState(); virtual void Continue( int nToken ); + +protected: + + static rtl_TextEncoding GetEncodingByMIME( const String& rMime ); + + /// template method: called when ParseMetaOptions adds a user-defined meta + virtual void AddMetaUserDefined( ::rtl::OUString const & i_rMetaName ); + +private: + /// parse meta options into XDocumentProperties and encoding + bool ParseMetaOptionsImpl( const ::com::sun::star::uno::Reference< + ::com::sun::star::document::XDocumentProperties>&, + SvKeyValueIterator*, + const HTMLOptions*, + rtl_TextEncoding& rEnc ); + +public: + /// overriding method must call this implementation! + virtual bool ParseMetaOptions( const ::com::sun::star::uno::Reference< + ::com::sun::star::document::XDocumentProperties>&, + SvKeyValueIterator* ); + // Ist der uebergebene 0-terminierte String (vermutlich) der Anfang // eines HTML-Files? Er sollte mind. 80 Zeichen lang sein. // Mit Ausnahme des Falls, dass SwitchToUCS2==FALSE und diff --git a/svtools/inc/svtools/svlbox.hxx b/svtools/inc/svtools/svlbox.hxx index ba119263eff8..7371c2feee05 100644 --- a/svtools/inc/svtools/svlbox.hxx +++ b/svtools/inc/svtools/svlbox.hxx @@ -328,6 +328,9 @@ protected: // wird an der Target-View aufgerufen (im Drop-Handler) virtual void ReadDragServerInfo( const Point&,SvLBoxDDInfo* ); + // invalidate children on enable/disable + virtual void StateChanged( StateChangedType ); + virtual ULONG Insert( SvLBoxEntry* pEnt,SvLBoxEntry* pPar,ULONG nPos=LIST_APPEND); virtual ULONG Insert( SvLBoxEntry* pEntry,ULONG nRootPos = LIST_APPEND ); void InsertTree( SvLBoxEntry* pTree, SvLBoxEntry* pTarget) {pModel->InsertTree( pTree, pTarget ); } diff --git a/svtools/inc/svtools/svparser.hxx b/svtools/inc/svtools/svparser.hxx index d63777d05b1b..96c1aadc6319 100644 --- a/svtools/inc/svtools/svparser.hxx +++ b/svtools/inc/svtools/svparser.hxx @@ -37,6 +37,7 @@ #include <tools/string.hxx> #include <tools/ref.hxx> #include <rtl/textenc.h> +#include <boost/utility.hpp> struct SvParser_Impl; @@ -204,6 +205,84 @@ inline USHORT SvParser::GetCharSize() const { return (RTL_TEXTENCODING_UCS2 == eSrcEnc) ? 2 : 1; } + + +/*======================================================================== + * + * SvKeyValue. + * + *======================================================================*/ + +SV_DECL_REF(SvKeyValueIterator) + +class SvKeyValue +{ + /** Representation. + */ + String m_aKey; + String m_aValue; + +public: + /** Construction. + */ + SvKeyValue (void) + {} + + SvKeyValue (const String &rKey, const String &rValue) + : m_aKey (rKey), m_aValue (rValue) + {} + + SvKeyValue (const SvKeyValue &rOther) + : m_aKey (rOther.m_aKey), m_aValue (rOther.m_aValue) + {} + + /** Assignment. + */ + SvKeyValue& operator= (SvKeyValue &rOther) + { + m_aKey = rOther.m_aKey; + m_aValue = rOther.m_aValue; + return *this; + } + + /** Operation. + */ + const String& GetKey (void) const { return m_aKey; } + const String& GetValue (void) const { return m_aValue; } + + void SetKey (const String &rKey ) { m_aKey = rKey; } + void SetValue (const String &rValue) { m_aValue = rValue; } +}; + +/*======================================================================== + * + * SvKeyValueIterator. + * + *======================================================================*/ +class SvKeyValueList_Impl; +class SVT_DLLPUBLIC SvKeyValueIterator : public SvRefBase, + private boost::noncopyable +{ + /** Representation. + */ + SvKeyValueList_Impl* m_pList; + USHORT m_nPos; + +public: + /** Construction/Destruction. + */ + SvKeyValueIterator (void); + virtual ~SvKeyValueIterator (void); + + /** Operation. + */ + virtual BOOL GetFirst (SvKeyValue &rKeyVal); + virtual BOOL GetNext (SvKeyValue &rKeyVal); + virtual void Append (const SvKeyValue &rKeyVal); +}; + +SV_IMPL_REF(SvKeyValueIterator); + #endif //_SVPARSER_HXX /* vi:set tabstop=4 shiftwidth=4 expandtab: */ diff --git a/svtools/inc/svtools/undo.hxx b/svtools/inc/svtools/undo.hxx index 986a72093af2..38cbfb227f1b 100644 --- a/svtools/inc/svtools/undo.hxx +++ b/svtools/inc/svtools/undo.hxx @@ -143,6 +143,7 @@ class SVT_DLLPUBLIC SfxUndoManager SfxUndoArray *pActUndoArray; SfxUndoArray *pFatherUndoArray; + bool mbUndoEnabled; public: SfxUndoManager( USHORT nMaxUndoActionCount = 20 ); virtual ~SfxUndoManager(); @@ -182,6 +183,16 @@ public: /** clears the redo stack and removes the top undo action */ void RemoveLastUndoAction(); + + // enables (true) or disables (false) recording of undo actions + // If undo actions are added while undo is disabled, they are deleted. + // Disabling undo does not clear the current undo buffer! + void EnableUndo( bool bEnable ); + + // returns true if undo is currently enabled + // This returns false if undo was disabled using EnableUndo( false ) and + // also during the runtime of the Undo() and Redo() methods. + bool IsUndoEnabled() const { return mbUndoEnabled; } }; //========================================================================= diff --git a/svtools/inc/tabbar.hxx b/svtools/inc/tabbar.hxx index c5be561fec9d..5261697dd8b0 100644 --- a/svtools/inc/tabbar.hxx +++ b/svtools/inc/tabbar.hxx @@ -323,12 +323,12 @@ typedef USHORT TabBarPageBits; // - TabBar-Types - // ---------------- -#define TAB_APPEND ((USHORT)0xFFFF) -#define TAB_PAGE_NOTFOUND ((USHORT)0xFFFF) +#define TABBAR_APPEND ((USHORT)0xFFFF) +#define TABBAR_PAGE_NOTFOUND ((USHORT)0xFFFF) -#define TAB_RENAMING_YES ((long)TRUE) -#define TAB_RENAMING_NO ((long)FALSE) -#define TAB_RENAMING_CANCEL ((long)2) +#define TABBAR_RENAMING_YES ((long)TRUE) +#define TABBAR_RENAMING_NO ((long)FALSE) +#define TABBAR_RENAMING_CANCEL ((long)2) // ---------- // - TabBar - @@ -427,7 +427,7 @@ public: void InsertPage( USHORT nPageId, const XubString& rText, TabBarPageBits nBits = 0, - USHORT nPos = TAB_APPEND ); + USHORT nPos = TABBAR_APPEND ); void RemovePage( USHORT nPageId ); void MovePage( USHORT nPageId, USHORT nNewPos ); void Clear(); @@ -456,7 +456,7 @@ public: void SelectPage( USHORT nPageId, BOOL bSelect = TRUE ); void SelectPageRange( BOOL bSelect = FALSE, USHORT nStartPos = 0, - USHORT nEndPos = TAB_APPEND ); + USHORT nEndPos = TABBAR_APPEND ); USHORT GetSelectPage( USHORT nSelIndex = 0 ) const; USHORT GetSelectPageCount() const; BOOL IsPageSelected( USHORT nPageId ) const; diff --git a/svtools/prj/build.lst b/svtools/prj/build.lst index ee2414e0da59..a6a409055faa 100644 --- a/svtools/prj/build.lst +++ b/svtools/prj/build.lst @@ -1,4 +1,4 @@ -st svtools : offuh toolkit ucbhelper unotools JPEG:jpeg cppu cppuhelper comphelper sal sot jvmfwk NULL +st svtools : l10n offuh toolkit ucbhelper unotools JPEG:jpeg cppu cppuhelper comphelper sal sot jvmfwk NULL st svtools usr1 - all st_mkout NULL st svtools\inc nmake - all st_inc NULL st svtools\inc\sane get - all st_incsa NULL diff --git a/svtools/prj/d.lst b/svtools/prj/d.lst index 6b85194db6c1..4ff74419b9d4 100644 --- a/svtools/prj/d.lst +++ b/svtools/prj/d.lst @@ -312,6 +312,7 @@ mkdir: %_DEST%\inc%_EXT%\svtools ..\inc\textwindowaccessibility.hxx %_DEST%\inc%_EXT%\svtools\textwindowaccessibility.hxx ..\inc\docpasswdrequest.hxx %_DEST%\inc%_EXT%\svtools\docpasswdrequest.hxx +..\inc\docmspasswdrequest.hxx %_DEST%\inc%_EXT%\svtools\docmspasswdrequest.hxx ..\inc\fontsubstconfig.hxx %_DEST%\inc%_EXT%\svtools\fontsubstconfig.hxx ..\inc\apearcfg.hxx %_DEST%\inc%_EXT%\svtools\apearcfg.hxx ..\inc\fltrcfg.hxx %_DEST%\inc%_EXT%\svtools\fltrcfg.hxx diff --git a/svtools/qa/complex/ConfigItems/helper/HistoryOptTest.cxx b/svtools/qa/complex/ConfigItems/helper/HistoryOptTest.cxx index 8f191abf61ca..723b3e44f3e5 100644 --- a/svtools/qa/complex/ConfigItems/helper/HistoryOptTest.cxx +++ b/svtools/qa/complex/ConfigItems/helper/HistoryOptTest.cxx @@ -803,4 +803,4 @@ void HistoryOptTest::impl_checkHelpBookmarks() impl_checkGetList(s_sHelpBookmarks); impl_checkAppendItem(s_sHelpBookmarks); } -*/
+*/ diff --git a/svtools/qa/complex/ConfigItems/helper/UserOptTest.cxx b/svtools/qa/complex/ConfigItems/helper/UserOptTest.cxx index 3780eff3f741..14ee513ee0cb 100644 --- a/svtools/qa/complex/ConfigItems/helper/UserOptTest.cxx +++ b/svtools/qa/complex/ConfigItems/helper/UserOptTest.cxx @@ -31,12 +31,12 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - ************************************************************************/
-
-#include "UserOptTest.hxx"
-
-namespace css = ::com::sun::star;
-
+ ************************************************************************/ + +#include "UserOptTest.hxx" + +namespace css = ::com::sun::star; + //============================================================================= static const ::rtl::OUString MESSAGE_SETCOMPANY_FAILED = ::rtl::OUString::createFromAscii("set company failed") ; static const ::rtl::OUString MESSAGE_SETFIRSTNAME_FAILED = ::rtl::OUString::createFromAscii("set firstname failed") ; @@ -57,59 +57,59 @@ static const ::rtl::OUString MESSAGE_SETCUSTOMERNUMBER_FAILED = ::rtl::OUString: static const ::rtl::OUString MESSAGE_SETFATHERSNAME_FAILED = ::rtl::OUString::createFromAscii("set fathersname failed") ; static const ::rtl::OUString MESSAGE_SETAPARTMENT_FAILED = ::rtl::OUString::createFromAscii("set apartment failed") ; -//=============================================================================
-
-
-UserOptTest::UserOptTest()
- :m_aConfigItem()
- ,m_xCfg()
-{
-}
-
-UserOptTest::~UserOptTest()
-{
-}
-
-void UserOptTest::impl_checkUserData()
-{
- impl_checkSetCompany( ::rtl::OUString() );
- impl_checkSetFirstName( ::rtl::OUString() );
- impl_checkSetLastName( ::rtl::OUString() );
- impl_checkSetID( ::rtl::OUString() );
- impl_checkSetStreet( ::rtl::OUString() );
- impl_checkSetCity( ::rtl::OUString() );
- impl_checkSetState( ::rtl::OUString() );
- impl_checkSetZip( ::rtl::OUString() );
- impl_checkSetCountry( ::rtl::OUString() );
- impl_checkSetPosition( ::rtl::OUString() );
- impl_checkSetTitle( ::rtl::OUString() );
- impl_checkSetTelephoneHome( ::rtl::OUString() );
- impl_checkSetTelephoneWork( ::rtl::OUString() );
- impl_checkSetFax( ::rtl::OUString() );
- impl_checkSetEmail( ::rtl::OUString() );
- //impl_checkSetCustomerNumber( ::rtl::OUString() );
- impl_checkSetFathersName( ::rtl::OUString() );
- impl_checkSetApartment( ::rtl::OUString() );
-
- impl_checkSetCompany( ::rtl::OUString::createFromAscii("RedFlag2000") );
- impl_checkSetFirstName( ::rtl::OUString::createFromAscii("Yan") );
- impl_checkSetLastName( ::rtl::OUString::createFromAscii("Wu") );
- impl_checkSetID( ::rtl::OUString::createFromAscii("wuy") );
- impl_checkSetStreet( ::rtl::OUString::createFromAscii("SouthFifthRing") );
- impl_checkSetCity( ::rtl::OUString::createFromAscii("Beijing") );
- impl_checkSetState( ::rtl::OUString::createFromAscii("Beijing") );
- impl_checkSetZip( ::rtl::OUString::createFromAscii("100176") );
- impl_checkSetCountry( ::rtl::OUString::createFromAscii("China") );
- impl_checkSetPosition( ::rtl::OUString::createFromAscii("Engineer") );
- impl_checkSetTitle( ::rtl::OUString::createFromAscii("Software Engineer") );
- impl_checkSetTelephoneHome( ::rtl::OUString::createFromAscii("010-51570010") );
- impl_checkSetTelephoneWork( ::rtl::OUString::createFromAscii("010-51570010") );
- impl_checkSetFax( ::rtl::OUString::createFromAscii("010-51570010") );
- impl_checkSetEmail( ::rtl::OUString::createFromAscii("wuy@redflag2000.cn") );
- //impl_checkSetCustomerNumber( ::rtl::OUString::createFromAscii("87654321") );
- impl_checkSetFathersName( ::rtl::OUString::createFromAscii("father") );
- impl_checkSetApartment( ::rtl::OUString::createFromAscii("apartment") );
-}
+//============================================================================= + + +UserOptTest::UserOptTest() + :m_aConfigItem() + ,m_xCfg() +{ +} + +UserOptTest::~UserOptTest() +{ +} + +void UserOptTest::impl_checkUserData() +{ + impl_checkSetCompany( ::rtl::OUString() ); + impl_checkSetFirstName( ::rtl::OUString() ); + impl_checkSetLastName( ::rtl::OUString() ); + impl_checkSetID( ::rtl::OUString() ); + impl_checkSetStreet( ::rtl::OUString() ); + impl_checkSetCity( ::rtl::OUString() ); + impl_checkSetState( ::rtl::OUString() ); + impl_checkSetZip( ::rtl::OUString() ); + impl_checkSetCountry( ::rtl::OUString() ); + impl_checkSetPosition( ::rtl::OUString() ); + impl_checkSetTitle( ::rtl::OUString() ); + impl_checkSetTelephoneHome( ::rtl::OUString() ); + impl_checkSetTelephoneWork( ::rtl::OUString() ); + impl_checkSetFax( ::rtl::OUString() ); + impl_checkSetEmail( ::rtl::OUString() ); + //impl_checkSetCustomerNumber( ::rtl::OUString() ); + impl_checkSetFathersName( ::rtl::OUString() ); + impl_checkSetApartment( ::rtl::OUString() ); + + impl_checkSetCompany( ::rtl::OUString::createFromAscii("RedFlag2000") ); + impl_checkSetFirstName( ::rtl::OUString::createFromAscii("Yan") ); + impl_checkSetLastName( ::rtl::OUString::createFromAscii("Wu") ); + impl_checkSetID( ::rtl::OUString::createFromAscii("wuy") ); + impl_checkSetStreet( ::rtl::OUString::createFromAscii("SouthFifthRing") ); + impl_checkSetCity( ::rtl::OUString::createFromAscii("Beijing") ); + impl_checkSetState( ::rtl::OUString::createFromAscii("Beijing") ); + impl_checkSetZip( ::rtl::OUString::createFromAscii("100176") ); + impl_checkSetCountry( ::rtl::OUString::createFromAscii("China") ); + impl_checkSetPosition( ::rtl::OUString::createFromAscii("Engineer") ); + impl_checkSetTitle( ::rtl::OUString::createFromAscii("Software Engineer") ); + impl_checkSetTelephoneHome( ::rtl::OUString::createFromAscii("010-51570010") ); + impl_checkSetTelephoneWork( ::rtl::OUString::createFromAscii("010-51570010") ); + impl_checkSetFax( ::rtl::OUString::createFromAscii("010-51570010") ); + impl_checkSetEmail( ::rtl::OUString::createFromAscii("wuy@redflag2000.cn") ); + //impl_checkSetCustomerNumber( ::rtl::OUString::createFromAscii("87654321") ); + impl_checkSetFathersName( ::rtl::OUString::createFromAscii("father") ); + impl_checkSetApartment( ::rtl::OUString::createFromAscii("apartment") ); +} void UserOptTest::impl_checkSetCompany( const ::rtl::OUString& sUserData ) { diff --git a/svtools/qa/complex/ConfigItems/helper/UserOptTest.hxx b/svtools/qa/complex/ConfigItems/helper/UserOptTest.hxx index 203a4cbc7cbd..8234b0b7edf4 100644 --- a/svtools/qa/complex/ConfigItems/helper/UserOptTest.hxx +++ b/svtools/qa/complex/ConfigItems/helper/UserOptTest.hxx @@ -31,48 +31,48 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - ************************************************************************/
-
-#ifndef SVTOOLS_USEROPTTEST_HXX
-#define SVTOOLS_USEROPTTEST_HXX
-
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <svtools/useroptions.hxx>
-
-namespace css = ::com::sun::star;
-
-class UserOptTest
-{
-public:
- UserOptTest();
- ~UserOptTest();
-
- void impl_checkUserData();
-
-private:
- void impl_checkSetCompany( const ::rtl::OUString& sUserData );
- void impl_checkSetFirstName( const ::rtl::OUString& sUserData );
- void impl_checkSetLastName( const ::rtl::OUString& sUserData );
- void impl_checkSetID( const ::rtl::OUString& sUserData );
- void impl_checkSetStreet( const ::rtl::OUString& sUserData );
- void impl_checkSetCity( const ::rtl::OUString& sUserData );
- void impl_checkSetState( const ::rtl::OUString& sUserData );
- void impl_checkSetZip( const ::rtl::OUString& sUserData );
- void impl_checkSetCountry( const ::rtl::OUString& sUserData );
- void impl_checkSetPosition( const ::rtl::OUString& sUserData );
- void impl_checkSetTitle( const ::rtl::OUString& sUserData );
- void impl_checkSetTelephoneHome( const ::rtl::OUString& sUserData );
- void impl_checkSetTelephoneWork( const ::rtl::OUString& sUserData );
- void impl_checkSetFax( const ::rtl::OUString& sUserData );
- void impl_checkSetEmail( const ::rtl::OUString& sUserData );
- void impl_checkSetCustomerNumber( const ::rtl::OUString& sUserData );
- void impl_checkSetFathersName( const ::rtl::OUString& sUserData );
- void impl_checkSetApartment( const ::rtl::OUString& sUserData );
-
-private:
- SvtUserOptions m_aConfigItem;
-
- css::uno::Reference< css::container::XNameAccess > m_xCfg;
-};
-
-#endif // #ifndef SVTOOLS_USEROPTTEST_HXX
+ ************************************************************************/ + +#ifndef SVTOOLS_USEROPTTEST_HXX +#define SVTOOLS_USEROPTTEST_HXX + +#include <com/sun/star/container/XNameAccess.hpp> +#include <svtools/useroptions.hxx> + +namespace css = ::com::sun::star; + +class UserOptTest +{ +public: + UserOptTest(); + ~UserOptTest(); + + void impl_checkUserData(); + +private: + void impl_checkSetCompany( const ::rtl::OUString& sUserData ); + void impl_checkSetFirstName( const ::rtl::OUString& sUserData ); + void impl_checkSetLastName( const ::rtl::OUString& sUserData ); + void impl_checkSetID( const ::rtl::OUString& sUserData ); + void impl_checkSetStreet( const ::rtl::OUString& sUserData ); + void impl_checkSetCity( const ::rtl::OUString& sUserData ); + void impl_checkSetState( const ::rtl::OUString& sUserData ); + void impl_checkSetZip( const ::rtl::OUString& sUserData ); + void impl_checkSetCountry( const ::rtl::OUString& sUserData ); + void impl_checkSetPosition( const ::rtl::OUString& sUserData ); + void impl_checkSetTitle( const ::rtl::OUString& sUserData ); + void impl_checkSetTelephoneHome( const ::rtl::OUString& sUserData ); + void impl_checkSetTelephoneWork( const ::rtl::OUString& sUserData ); + void impl_checkSetFax( const ::rtl::OUString& sUserData ); + void impl_checkSetEmail( const ::rtl::OUString& sUserData ); + void impl_checkSetCustomerNumber( const ::rtl::OUString& sUserData ); + void impl_checkSetFathersName( const ::rtl::OUString& sUserData ); + void impl_checkSetApartment( const ::rtl::OUString& sUserData ); + +private: + SvtUserOptions m_aConfigItem; + + css::uno::Reference< css::container::XNameAccess > m_xCfg; +}; + +#endif // #ifndef SVTOOLS_USEROPTTEST_HXX diff --git a/svtools/source/brwbox/brwbox1.cxx b/svtools/source/brwbox/brwbox1.cxx index 05ab0e1b0c91..767283a8e425 100644 --- a/svtools/source/brwbox/brwbox1.cxx +++ b/svtools/source/brwbox/brwbox1.cxx @@ -1711,7 +1711,7 @@ BOOL BrowseBox::GoToColumnId( USHORT nColId, BOOL bMakeVisible, BOOL bRowColMove if (!bRowColMove && !IsCursorMoveAllowed( nCurRow, nColId ) ) return FALSE; - if ( nColId != nCurColId || bMakeVisible && !IsFieldVisible(nCurRow, nColId, TRUE)) + if ( nColId != nCurColId || (bMakeVisible && !IsFieldVisible(nCurRow, nColId, TRUE))) { USHORT nNewPos = GetColumnPos(nColId); BrowserColumn* pColumn = pCols->GetObject( nNewPos ); diff --git a/svtools/source/config/extcolorcfg.cxx b/svtools/source/config/extcolorcfg.cxx index 61ae3d1d0ca0..4610a1571baf 100644 --- a/svtools/source/config/extcolorcfg.cxx +++ b/svtools/source/config/extcolorcfg.cxx @@ -53,6 +53,7 @@ #include <vcl/svapp.hxx> #include <vcl/event.hxx> #include <rtl/instance.hxx> +#include <rtl/strbuf.hxx> #include <comphelper/stl_types.hxx> @@ -119,10 +120,17 @@ public: if ( aFind != m_aConfigValues.end() ) { TConfigValues::iterator aFind2 = aFind->second.first.find(_sName); - if ( aFind != m_aConfigValues.end() ) + if ( aFind2 != aFind->second.first.end() ) return aFind2->second; } - OSL_ENSURE(0,"Could find the required config!"); +#if OSL_DEBUG_LEVEL > 0 + ::rtl::OStringBuffer aMessage( "Could find the required config:\n" ); + aMessage.append( "component: " ); + aMessage.append( ::rtl::OUStringToOString( _sComponentName, RTL_TEXTENCODING_UTF8 ) ); + aMessage.append( "\nname: " ); + aMessage.append( ::rtl::OUStringToOString( _sName, RTL_TEXTENCODING_UTF8 ) ); + OSL_ENSURE( 0, aMessage.makeStringAndClear().getStr() ); +#endif return ExtendedColorConfigValue(); } void SetColorConfigValue(const ::rtl::OUString& _sName, diff --git a/svtools/source/config/historyoptions.cxx b/svtools/source/config/historyoptions.cxx index d658f25d1a73..758753df0e4e 100644 --- a/svtools/source/config/historyoptions.cxx +++ b/svtools/source/config/historyoptions.cxx @@ -160,8 +160,8 @@ public: const OUString& sTitle , const OUString& sPassword ); -private:
- void impl_truncateList (EHistoryType eHistory, sal_uInt32 nSize);
+private: + void impl_truncateList (EHistoryType eHistory, sal_uInt32 nSize); private: css::uno::Reference< css::container::XNameAccess > m_xCfg; @@ -248,12 +248,12 @@ sal_uInt32 SvtHistoryOptions_Impl::GetSize( EHistoryType eHistory ) //***************************************************************************************************************** void SvtHistoryOptions_Impl::SetSize( EHistoryType eHistory, sal_uInt32 nSize ) { - css::uno::Reference< css::beans::XPropertySet > xListAccess(m_xCommonXCU, css::uno::UNO_QUERY);
- if (! xListAccess.is ())
+ css::uno::Reference< css::beans::XPropertySet > xListAccess(m_xCommonXCU, css::uno::UNO_QUERY); + if (! xListAccess.is ()) return; try - {
+ { switch( eHistory ) { case ePICKLIST: @@ -291,15 +291,15 @@ void SvtHistoryOptions_Impl::SetSize( EHistoryType eHistory, sal_uInt32 nSize ) LogHelper::logIt(ex); } } -
+ //***************************************************************************************************************** -void SvtHistoryOptions_Impl::impl_truncateList ( EHistoryType eHistory, sal_uInt32 nSize )
+void SvtHistoryOptions_Impl::impl_truncateList ( EHistoryType eHistory, sal_uInt32 nSize ) { css::uno::Reference< css::container::XNameAccess > xList; css::uno::Reference< css::container::XNameContainer > xItemList; css::uno::Reference< css::container::XNameContainer > xOrderList; css::uno::Reference< css::beans::XPropertySet > xSet; -
+ try { switch( eHistory ) @@ -322,11 +322,11 @@ void SvtHistoryOptions_Impl::impl_truncateList ( EHistoryType eHistory, sal_uInt // If too much items in current list ... // truncate the oldest items BEFORE you set the new one. - if ( ! xList.is())
- return;
+ if ( ! xList.is()) + return; xList->getByName(s_sOrderList) >>= xOrderList; - xList->getByName(s_sItemList) >>= xItemList;
+ xList->getByName(s_sItemList) >>= xItemList; const sal_uInt32 nLength = xOrderList->getElementNames().getLength(); if (nSize < nLength) @@ -348,7 +348,7 @@ void SvtHistoryOptions_Impl::impl_truncateList ( EHistoryType eHistory, sal_uInt { LogHelper::logIt(ex); } -}
+} //***************************************************************************************************************** // public method @@ -416,8 +416,8 @@ void SvtHistoryOptions_Impl::Clear( EHistoryType eHistory ) //***************************************************************************************************************** Sequence< Sequence< PropertyValue > > SvtHistoryOptions_Impl::GetList( EHistoryType eHistory ) { - impl_truncateList (eHistory, GetSize (eHistory));
-
+ impl_truncateList (eHistory, GetSize (eHistory)); + Sequence< Sequence< PropertyValue > > seqReturn; // Set default return value. Sequence< PropertyValue > seqProperties( 4 ); Sequence< ::rtl::OUString > lOrders; @@ -433,12 +433,12 @@ Sequence< Sequence< PropertyValue > > SvtHistoryOptions_Impl::GetList( EHistoryT seqProperties[s_nOffsetPassword ].Name = HISTORY_PROPERTYNAME_PASSWORD; try - {
+ { switch( eHistory ) { case ePICKLIST: { - m_xCfg->getByName(s_sPickList) >>= xListAccess;
+ m_xCfg->getByName(s_sPickList) >>= xListAccess; break; } @@ -457,7 +457,7 @@ Sequence< Sequence< PropertyValue > > SvtHistoryOptions_Impl::GetList( EHistoryT default: break; } -
+ if (xListAccess.is()) { xListAccess->getByName(s_sItemList) >>= xItemList; @@ -500,8 +500,8 @@ void SvtHistoryOptions_Impl::AppendItem( EHistoryType eHistory , const OUString& sTitle , const OUString& sPassword ) { - impl_truncateList (eHistory, GetSize (eHistory));
-
+ impl_truncateList (eHistory, GetSize (eHistory)); + css::uno::Reference< css::container::XNameAccess > xListAccess; sal_Int32 nMaxSize = 0; diff --git a/svtools/source/config/menuoptions.cxx b/svtools/source/config/menuoptions.cxx index e8fa39d6b7bb..2d0e8d905ad9 100644 --- a/svtools/source/config/menuoptions.cxx +++ b/svtools/source/config/menuoptions.cxx @@ -43,6 +43,7 @@ #include <tools/debug.hxx> #include <com/sun/star/uno/Any.hxx> #include <com/sun/star/uno/Sequence.hxx> +#include <vcl/svapp.hxx> #include <rtl/logfile.hxx> #include "itemholder1.hxx" @@ -63,17 +64,19 @@ using namespace ::com::sun::star::uno ; #define ROOTNODE_MENU OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/View/Menu" )) #define DEFAULT_DONTHIDEDISABLEDENTRIES sal_False #define DEFAULT_FOLLOWMOUSE sal_True -#define DEFAULT_MENUICONS sal_True +#define DEFAULT_MENUICONS 2 #define PROPERTYNAME_DONTHIDEDISABLEDENTRIES OUString(RTL_CONSTASCII_USTRINGPARAM("DontHideDisabledEntry" )) #define PROPERTYNAME_FOLLOWMOUSE OUString(RTL_CONSTASCII_USTRINGPARAM("FollowMouse" )) #define PROPERTYNAME_SHOWICONSINMENUES OUString(RTL_CONSTASCII_USTRINGPARAM("ShowIconsInMenues" )) +#define PROPERTYNAME_SYSTEMICONSINMENUES OUString(RTL_CONSTASCII_USTRINGPARAM("IsSystemIconsInMenus" )) #define PROPERTYHANDLE_DONTHIDEDISABLEDENTRIES 0 #define PROPERTYHANDLE_FOLLOWMOUSE 1 #define PROPERTYHANDLE_SHOWICONSINMENUES 2 +#define PROPERTYHANDLE_SYSTEMICONSINMENUES 3 -#define PROPERTYCOUNT 3 +#define PROPERTYCOUNT 4 #include <tools/link.hxx> #include <tools/list.hxx> @@ -93,7 +96,7 @@ class SvtMenuOptions_Impl : public ConfigItem LinkList aList; sal_Bool m_bDontHideDisabledEntries ; /// cache "DontHideDisabledEntries" of Menu section sal_Bool m_bFollowMouse ; /// cache "FollowMouse" of Menu section - sal_Bool m_bMenuIcons ; /// cache "MenuIcons" of Menu section + sal_Int16 m_nMenuIcons ; /// cache "MenuIcons" of Menu section //------------------------------------------------------------------------------------------------------------- // public methods @@ -169,8 +172,8 @@ class SvtMenuOptions_Impl : public ConfigItem sal_Bool IsFollowMouseEnabled() const { return m_bFollowMouse; } - sal_Bool IsMenuIconsEnabled() const - { return m_bMenuIcons; } + sal_Int16 GetMenuIconsState() const + { return m_nMenuIcons; } void SetEntryHidingState ( sal_Bool bState ) { @@ -190,9 +193,9 @@ class SvtMenuOptions_Impl : public ConfigItem Commit(); } - void SetMenuIconsState ( sal_Bool bState ) + void SetMenuIconsState ( sal_Int16 bState ) { - m_bMenuIcons = bState; + m_nMenuIcons = bState; SetModified(); for ( USHORT n=0; n<aList.Count(); n++ ) aList.GetObject(n)->Call( this ); @@ -234,7 +237,7 @@ SvtMenuOptions_Impl::SvtMenuOptions_Impl() // Init member then. , m_bDontHideDisabledEntries ( DEFAULT_DONTHIDEDISABLEDENTRIES ) , m_bFollowMouse ( DEFAULT_FOLLOWMOUSE ) - , m_bMenuIcons ( DEFAULT_MENUICONS ) + , m_nMenuIcons ( DEFAULT_MENUICONS ) { // Use our static list of configuration keys to get his values. Sequence< OUString > seqNames = impl_GetPropertyNames(); @@ -245,6 +248,9 @@ SvtMenuOptions_Impl::SvtMenuOptions_Impl() // Follow assignment use order of values in relation to our list of key names! DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nI miss some values of configuration keys!\n" ); + sal_Bool bMenuIcons = true; + sal_Bool bSystemMenuIcons = true; + // Copy values from list in right order to ouer internal member. sal_Int32 nPropertyCount = seqValues.getLength() ; sal_Int32 nProperty = 0 ; @@ -268,12 +274,19 @@ SvtMenuOptions_Impl::SvtMenuOptions_Impl() break; case PROPERTYHANDLE_SHOWICONSINMENUES : { DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\ShowIconsInMenues\"?" ); - seqValues[nProperty] >>= m_bMenuIcons; + seqValues[nProperty] >>= bMenuIcons; + } + break; + case PROPERTYHANDLE_SYSTEMICONSINMENUES : { + DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\IsSystemIconsInMenus\"?" ); + seqValues[nProperty] >>= bSystemMenuIcons; } break; } } + m_nMenuIcons = bSystemMenuIcons ? 2 : bMenuIcons; + EnableNotification( seqNames ); } @@ -303,6 +316,10 @@ void SvtMenuOptions_Impl::Notify( const Sequence< OUString >& seqPropertyNames ) // Safe impossible cases. // We need values from ALL notified configuration keys. DBG_ASSERT( !(seqPropertyNames.getLength()!=seqValues.getLength()), "SvtMenuOptions_Impl::Notify()\nI miss some values of configuration keys!\n" ); + + sal_Bool bMenuIcons = true; + sal_Bool bSystemMenuIcons = true; + // Step over list of property names and get right value from coreesponding value list to set it on internal members! sal_Int32 nCount = seqPropertyNames.getLength(); for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty ) @@ -312,22 +329,29 @@ void SvtMenuOptions_Impl::Notify( const Sequence< OUString >& seqPropertyNames ) DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::Notify()\nWho has changed the value type of \"Office.Common\\View\\Menu\\DontHideDisabledEntry\"?" ); seqValues[nProperty] >>= m_bDontHideDisabledEntries; } - else - if( seqPropertyNames[nProperty] == PROPERTYNAME_FOLLOWMOUSE ) + else if( seqPropertyNames[nProperty] == PROPERTYNAME_FOLLOWMOUSE ) { DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::Notify()\nWho has changed the value type of \"Office.Common\\View\\Menu\\FollowMouse\"?" ); seqValues[nProperty] >>= m_bFollowMouse; } - if( seqPropertyNames[nProperty] == PROPERTYNAME_SHOWICONSINMENUES ) + else if( seqPropertyNames[nProperty] == PROPERTYNAME_SHOWICONSINMENUES ) { DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\ShowIconsInMenues\"?" ); - seqValues[nProperty] >>= m_bMenuIcons; + seqValues[nProperty] >>= bMenuIcons; } + else if( seqPropertyNames[nProperty] == PROPERTYNAME_SYSTEMICONSINMENUES ) + { + DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\IsSystemIconsInMenus\"?" ); + seqValues[nProperty] >>= bSystemMenuIcons; + } + #if OSL_DEBUG_LEVEL > 1 else DBG_ASSERT( sal_False, "SvtMenuOptions_Impl::Notify()\nUnkown property detected ... I can't handle these!\n" ); #endif } + m_nMenuIcons = bSystemMenuIcons ? 2 : bMenuIcons; + for ( USHORT n=0; n<aList.Count(); n++ ) aList.GetObject(n)->Call( this ); } @@ -354,8 +378,13 @@ void SvtMenuOptions_Impl::Commit() seqValues[nProperty] <<= m_bFollowMouse; } break; + //Output cache of current setting as possibly modified by System Theme for older version case PROPERTYHANDLE_SHOWICONSINMENUES : { - seqValues[nProperty] <<= m_bMenuIcons; + seqValues[nProperty] <<=(sal_Bool)(Application::GetSettings().GetStyleSettings().GetUseImagesInMenus()); + } + break; + case PROPERTYHANDLE_SYSTEMICONSINMENUES : { + seqValues[nProperty] <<= (m_nMenuIcons == 2 ? sal_True : sal_False) ; } break; } @@ -374,7 +403,8 @@ Sequence< OUString > SvtMenuOptions_Impl::impl_GetPropertyNames() { PROPERTYNAME_DONTHIDEDISABLEDENTRIES , PROPERTYNAME_FOLLOWMOUSE , - PROPERTYNAME_SHOWICONSINMENUES + PROPERTYNAME_SHOWICONSINMENUES , + PROPERTYNAME_SYSTEMICONSINMENUES }; // Initialize return sequence with these list ... static const Sequence< OUString > seqPropertyNames( pProperties, PROPERTYCOUNT ); @@ -483,16 +513,16 @@ void SvtMenuOptions::SetFollowMouseState( sal_Bool bState ) //***************************************************************************************************************** // public method //***************************************************************************************************************** -sal_Bool SvtMenuOptions::IsMenuIconsEnabled() const +sal_Int16 SvtMenuOptions::GetMenuIconsState() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsMenuIconsEnabled(); + return m_pDataContainer->GetMenuIconsState(); } //***************************************************************************************************************** // public method //***************************************************************************************************************** -void SvtMenuOptions::SetMenuIconsState( sal_Bool bState ) +void SvtMenuOptions::SetMenuIconsState( sal_Int16 bState ) { MutexGuard aGuard( GetOwnStaticMutex() ); m_pDataContainer->SetMenuIconsState( bState ); diff --git a/svtools/source/config/printoptions.cxx b/svtools/source/config/printoptions.cxx index 657d82ddb44e..0f54366c47f6 100644 --- a/svtools/source/config/printoptions.cxx +++ b/svtools/source/config/printoptions.cxx @@ -168,17 +168,17 @@ public: void SetReducedBitmapResolution( sal_Int16 nResolution ) ; void SetReducedBitmapIncludesTransparency( sal_Bool bState ) ; void SetConvertToGreyscales( sal_Bool bState ) ; -
+ //------------------------------------------------------------------------------------------------------------- // private API -//-------------------------------------------------------------------------------------------------------------
- -private:
- void impl_setValue (const ::rtl::OUString& sProp,
- ::sal_Bool bNew );
- void impl_setValue (const ::rtl::OUString& sProp,
- ::sal_Int16 nNew );
-
+//------------------------------------------------------------------------------------------------------------- + +private: + void impl_setValue (const ::rtl::OUString& sProp, + ::sal_Bool bNew ); + void impl_setValue (const ::rtl::OUString& sProp, + ::sal_Int16 nNew ); + //------------------------------------------------------------------------------------------------------------- // private member //------------------------------------------------------------------------------------------------------------- @@ -431,7 +431,7 @@ sal_Bool SvtPrintOptions_Impl::IsConvertToGreyscales() const return bRet; } -
+ void SvtPrintOptions_Impl::SetReduceTransparency(sal_Bool bState) { impl_setValue(PROPERTYNAME_REDUCETRANSPARENCY, bState); @@ -488,21 +488,21 @@ SvtPrintOptions_Impl::~SvtPrintOptions_Impl() m_xCfg.clear(); } -void SvtPrintOptions_Impl::impl_setValue (const ::rtl::OUString& sProp,
- ::sal_Bool bNew )
-{
+void SvtPrintOptions_Impl::impl_setValue (const ::rtl::OUString& sProp, + ::sal_Bool bNew ) +{ try { - if ( ! m_xNode.is())
- return;
+ if ( ! m_xNode.is()) + return; css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY); - if ( ! xSet.is())
- return;
+ if ( ! xSet.is()) + return; ::sal_Bool bOld = ! bNew; - if ( ! (xSet->getPropertyValue(sProp) >>= bOld))
- return;
+ if ( ! (xSet->getPropertyValue(sProp) >>= bOld)) + return; if (bOld != bNew) { @@ -514,23 +514,23 @@ void SvtPrintOptions_Impl::impl_setValue (const ::rtl::OUString& sProp, { LogHelper::logIt(ex); } -}
+} -void SvtPrintOptions_Impl::impl_setValue (const ::rtl::OUString& sProp,
- ::sal_Int16 nNew )
-{
+void SvtPrintOptions_Impl::impl_setValue (const ::rtl::OUString& sProp, + ::sal_Int16 nNew ) +{ try { - if ( ! m_xNode.is())
- return;
+ if ( ! m_xNode.is()) + return; css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY); - if ( ! xSet.is())
- return;
+ if ( ! xSet.is()) + return; ::sal_Int16 nOld = nNew+1; - if ( ! (xSet->getPropertyValue(sProp) >>= nOld))
- return;
+ if ( ! (xSet->getPropertyValue(sProp) >>= nOld)) + return; if (nOld != nNew) { @@ -542,8 +542,8 @@ void SvtPrintOptions_Impl::impl_setValue (const ::rtl::OUString& sProp, { LogHelper::logIt(ex); } -}
-
+} + // ----------------------------------------------------------------------------- diff --git a/svtools/source/config/regoptions.cxx b/svtools/source/config/regoptions.cxx index 98c4bb7ae2d5..7c94807f2c25 100644 --- a/svtools/source/config/regoptions.cxx +++ b/svtools/source/config/regoptions.cxx @@ -35,6 +35,8 @@ #include <tools/date.hxx> #include <comphelper/processfactory.hxx> #include <osl/mutex.hxx> +#include <unotools/bootstrap.hxx> +#include <rtl/ustring.hxx> //........................................................................ namespace svt @@ -172,6 +174,7 @@ namespace svt static ::osl::Mutex& getStaticMutex(); // get the mutex used to protect the static members of this class void commit( ); + sal_Int32 getBuildId() const; private: RegOptions::DialogPermission implGetDialogPermission( ) const; @@ -282,13 +285,8 @@ namespace svt m_aRegistrationNode.getNodeValue( lcl_getReminderDateName() ) >>= sStringValue; bool bIsPatchDate = ( sStringValue.equals( lcl_getPatchName() ) != sal_False ); if ( !bIsPatchDate && sStringValue.getLength() ) - { nIntDate = lcl_convertString2Date( sStringValue ); - OSL_ENSURE( nIntDate, "RegOptionsImpl::RegOptionsImpl: incorrect value found for the reminder date!" ); - } m_aReminderDate.SetDate( nIntDate ); - OSL_ENSURE( bIsPatchDate || !sStringValue.getLength() || m_aReminderDate.IsValid(), - "RegOptionsImpl::RegOptionsImpl: inavlid reminder date value!" ); } //-------------------------------------------------------------------- @@ -364,13 +362,34 @@ namespace svt //-------------------------------------------------------------------- void RegOptionsImpl::removeReminder() { + ::rtl::OUString aDefault; + ::rtl::OUString aReminderValue( lcl_getPatchName() ); + aReminderValue += ::rtl::OUString::valueOf(getBuildId()); + m_aRegistrationNode.setNodeValue( lcl_getReminderDateName(), - makeAny( ::rtl::OUString() ) + Any( aReminderValue ) ); } //-------------------------------------------------------------------- + sal_Int32 RegOptionsImpl::getBuildId() const + { + sal_Int32 nBuildId( 0 ); + ::rtl::OUString aDefault; + ::rtl::OUString aBuildIdData = utl::Bootstrap::getBuildIdData( aDefault ); + sal_Int32 nIndex1 = aBuildIdData.indexOf(':'); + sal_Int32 nIndex2 = aBuildIdData.indexOf(')'); + if (( nIndex1 > 0 ) && ( nIndex2 > 0 ) && ( nIndex2-1 > nIndex1+1 )) + { + ::rtl::OUString aBuildId = aBuildIdData.copy( nIndex1+1, nIndex2-nIndex1-1 ); + nBuildId = aBuildId.toInt32(); + } + + return nBuildId; + } + + //-------------------------------------------------------------------- bool RegOptionsImpl::hasReminderDateCome() const { bool bRet = false; @@ -379,8 +398,22 @@ namespace svt m_aRegistrationNode.getNodeValue( lcl_getReminderDateName() ) >>= sDate; if ( sDate.getLength() ) { - if ( sDate.equals( lcl_getPatchName() ) ) - bRet = true; + if ( sDate.indexOf( lcl_getPatchName() ) == 0) + { + if (sDate.equals( lcl_getPatchName() )) + bRet = true; + else if (sDate.getLength() > lcl_getPatchName().getLength() ) + { + // Check the build ID to determine if the registration + // dialog needs to be shown. + sal_Int32 nBuildId = getBuildId(); + ::rtl::OUString aStoredBuildId( sDate.copy(lcl_getPatchName().getLength())); + + // remind if the current build ID is not the same as the stored one + if ( nBuildId != aStoredBuildId.toInt32() ) + bRet = true; + } + } else { nDate = lcl_convertString2Date( sDate ); @@ -392,6 +425,9 @@ namespace svt } } } + else + bRet = true; + return bRet; } @@ -423,10 +459,7 @@ namespace svt ); // and clear the reminder date - m_aRegistrationNode.setNodeValue( - lcl_getReminderDateName(), - Any() - ); + removeReminder(); } } } diff --git a/svtools/source/config/securityoptions.cxx b/svtools/source/config/securityoptions.cxx index 6fdb314f9c74..8fbc9008d51e 100644 --- a/svtools/source/config/securityoptions.cxx +++ b/svtools/source/config/securityoptions.cxx @@ -901,7 +901,7 @@ sal_Bool SvtSecurityOptions_Impl::IsSecureURL( const OUString& sURL , INetProtocol aProtocol = aURL.GetProtocol(); // All other URLs must checked in combination with referer and internal information about security - if ( aProtocol != INET_PROT_MACRO && aProtocol != INET_PROT_SLOT || + if ( (aProtocol != INET_PROT_MACRO && aProtocol != INET_PROT_SLOT) || aURL.GetMainURL( INetURLObject::NO_DECODE ).matchIgnoreAsciiCaseAsciiL( "macro:///", 9 ) == 0) { // security check only for "macro" ( without app basic ) or "slot" protocols diff --git a/svtools/source/contnr/fileview.cxx b/svtools/source/contnr/fileview.cxx index d56c270fd5a8..274557051c27 100644 --- a/svtools/source/contnr/fileview.cxx +++ b/svtools/source/contnr/fileview.cxx @@ -1065,7 +1065,10 @@ BOOL ViewTabListBox_Impl::DoubleClickHdl() ::rtl::OUString sRet = SvHeaderTabListBox::GetAccessibleObjectDescription( _eType, _nPos ); if ( ::svt::BBTYPE_TABLECELL == _eType ) { - sal_Int32 nRow = _nPos / GetColumnCount(); + sal_Int32 nRow = -1; + const sal_uInt16 nColumnCount = GetColumnCount(); + if (nColumnCount > 0) + nRow = _nPos / nColumnCount; SvLBoxEntry* pEntry = GetEntry( nRow ); if ( pEntry ) { diff --git a/svtools/source/contnr/svimpbox.cxx b/svtools/source/contnr/svimpbox.cxx index 276557854f02..e17b81e548a9 100644 --- a/svtools/source/contnr/svimpbox.cxx +++ b/svtools/source/contnr/svimpbox.cxx @@ -3213,7 +3213,9 @@ void SvImpLBox::Command( const CommandEvent& rCEvt ) if( pPopup ) { // do action for selected entry in popup menu - pView->ExcecuteContextMenuAction( pPopup->Execute( pView, aPopupPos ) ); + USHORT nMenuAction = pPopup->Execute( pView, aPopupPos ); + if ( nMenuAction ) + pView->ExcecuteContextMenuAction( nMenuAction ); lcl_DeleteSubPopups(pPopup); delete pPopup; } diff --git a/svtools/source/contnr/svlbox.cxx b/svtools/source/contnr/svlbox.cxx index 1c81343cd84f..e56db398b8fb 100644 --- a/svtools/source/contnr/svlbox.cxx +++ b/svtools/source/contnr/svlbox.cxx @@ -1203,6 +1203,12 @@ void SvLBox::ViewDataInitialized( SvLBoxEntry* ) DBG_CHKTHIS(SvLBox,0); } +void SvLBox::StateChanged( StateChangedType eType ) +{ + if( eType == STATE_CHANGE_ENABLE ) + Invalidate( INVALIDATE_CHILDREN ); + Control::StateChanged( eType ); +} void SvLBox::ImplShowTargetEmphasis( SvLBoxEntry* pEntry, BOOL bShow) { diff --git a/svtools/source/contnr/svtabbx.cxx b/svtools/source/contnr/svtabbx.cxx index 32e8e68facb1..fc02c85dfd25 100644 --- a/svtools/source/contnr/svtabbx.cxx +++ b/svtools/source/contnr/svtabbx.cxx @@ -980,10 +980,12 @@ Reference< XAccessible > SvHeaderTabListBox::CreateAccessibleCell( sal_Int32 _nR if ( !AreChildrenTransient() ) { + const sal_uInt16 nColumnCount = GetColumnCount(); + // first call? -> initial list if ( m_aAccessibleChildren.empty() ) { - sal_Int32 nCount = ( GetRowCount() + 1 ) * GetColumnCount(); + sal_Int32 nCount = ( GetRowCount() + 1 ) * nColumnCount; m_aAccessibleChildren.assign( nCount, Reference< XAccessible >() ); } @@ -1021,8 +1023,9 @@ Reference< XAccessible > SvHeaderTabListBox::CreateAccessibleColumnHeader( sal_u // first call? -> initial list if ( m_aAccessibleChildren.empty() ) { - sal_Int32 nCount = AreChildrenTransient() ? GetColumnCount() - : ( GetRowCount() + 1 ) * GetColumnCount(); + const sal_uInt16 nColumnCount = GetColumnCount(); + sal_Int32 nCount = AreChildrenTransient() ? + nColumnCount : ( GetRowCount() + 1 ) * nColumnCount; m_aAccessibleChildren.assign( nCount, Reference< XAccessible >() ); } @@ -1098,9 +1101,12 @@ sal_Bool SvHeaderTabListBox::ConvertPointToColumnHeader( sal_uInt16&, const Poin if ( _nPos >= 0 ) { sal_uInt16 nColumnCount = GetColumnCount(); - sal_Int32 nRow = _nPos / nColumnCount; - sal_uInt16 nColumn = static_cast< sal_uInt16 >( _nPos % nColumnCount ); - aRetText = GetCellText( nRow, nColumn ); + if (nColumnCount > 0) + { + sal_Int32 nRow = _nPos / nColumnCount; + sal_uInt16 nColumn = static_cast< sal_uInt16 >( _nPos % nColumnCount ); + aRetText = GetCellText( nRow, nColumn ); + } } break; } @@ -1135,16 +1141,19 @@ sal_Bool SvHeaderTabListBox::ConvertPointToColumnHeader( sal_uInt16&, const Poin static const String sVar2( RTL_CONSTASCII_USTRINGPARAM( "%2" ) ); sal_uInt16 nColumnCount = GetColumnCount(); - sal_Int32 nRow = _nPos / nColumnCount; - sal_uInt16 nColumn = static_cast< sal_uInt16 >( _nPos % nColumnCount ); - - String aText( SvtResId( STR_SVT_ACC_DESC_TABLISTBOX ) ); - aText.SearchAndReplace( sVar1, String::CreateFromInt32( nRow ) ); - String sColHeader = m_pImpl->m_pHeaderBar->GetItemText( m_pImpl->m_pHeaderBar->GetItemId( nColumn ) ); - if ( sColHeader.Len() == 0 ) - sColHeader = String::CreateFromInt32( nColumn ); - aText.SearchAndReplace( sVar2, sColHeader ); - aRetText = aText; + if (nColumnCount > 0) + { + sal_Int32 nRow = _nPos / nColumnCount; + sal_uInt16 nColumn = static_cast< sal_uInt16 >( _nPos % nColumnCount ); + + String aText( SvtResId( STR_SVT_ACC_DESC_TABLISTBOX ) ); + aText.SearchAndReplace( sVar1, String::CreateFromInt32( nRow ) ); + String sColHeader = m_pImpl->m_pHeaderBar->GetItemText( m_pImpl->m_pHeaderBar->GetItemId( nColumn ) ); + if ( sColHeader.Len() == 0 ) + sColHeader = String::CreateFromInt32( nColumn ); + aText.SearchAndReplace( sVar2, sColHeader ); + aRetText = aText; + } } return aRetText; diff --git a/svtools/source/contnr/templwin.cxx b/svtools/source/contnr/templwin.cxx index 042088d317bb..2b212fdcffeb 100644 --- a/svtools/source/contnr/templwin.cxx +++ b/svtools/source/contnr/templwin.cxx @@ -35,6 +35,7 @@ #include <svtools/svtdata.hxx> #include <svtools/pathoptions.hxx> #include <svtools/dynamicmenuoptions.hxx> +#include <svtools/extendedsecurityoptions.hxx> #include <svtools/xtextedt.hxx> #include <svtools/inettype.hxx> #include "imagemgr.hxx" @@ -1742,9 +1743,16 @@ void SvtDocumentTemplateDialog::InitImpl( ) pImpl = new SvtTmplDlg_Impl( this ); pImpl->aTitle = GetText(); + bool bHideLink = ( SvtExtendedSecurityOptions().GetOpenHyperlinkMode() + == SvtExtendedSecurityOptions::OPEN_NEVER ); + if ( !bHideLink ) + { aMoreTemplatesLink.SetURL( String( RTL_CONSTASCII_STRINGPARAM( "http://templates.services.openoffice.org/?cid=923508" ) ) ); aMoreTemplatesLink.SetClickHdl( LINK( this, SvtDocumentTemplateDialog, OpenLinkHdl_Impl ) ); + } + else + aMoreTemplatesLink.Hide(); aManageBtn.SetClickHdl( LINK( this, SvtDocumentTemplateDialog, OrganizerHdl_Impl ) ); Link aLink = LINK( this, SvtDocumentTemplateDialog, OKHdl_Impl ); @@ -1762,14 +1770,17 @@ void SvtDocumentTemplateDialog::InitImpl( ) Size aSize = GetOutputSizePixel(); Point aPos = aMoreTemplatesLink.GetPosPixel(); Size a6Size = LogicToPixel( Size( 6, 6 ), MAP_APPFONT ); - aPos.Y() -= a6Size.Height(); + if ( bHideLink ) + aPos.Y() += aMoreTemplatesLink.GetSizePixel().Height(); + else + aPos.Y() -= a6Size.Height(); long nDelta = aPos.Y() - nHeight; aSize.Height() -= nDelta; SetOutputSizePixel( aSize ); aSize.Height() = nHeight; - aSize.Width() -= a6Size.Width(); - pImpl->pWin->SetPosSizePixel( Point( a6Size.Width() / 2, 0 ), aSize ); + aSize.Width() -= ( a6Size.Width() * 2 ); + pImpl->pWin->SetPosSizePixel( Point( a6Size.Width(), 0 ), aSize ); aPos = aMoreTemplatesLink.GetPosPixel(); aPos.Y() -= nDelta; diff --git a/svtools/source/contnr/templwin.src b/svtools/source/contnr/templwin.src index c8b9c4d58123..30149de4da14 100644 --- a/svtools/source/contnr/templwin.src +++ b/svtools/source/contnr/templwin.src @@ -275,7 +275,7 @@ ModalDialog DLG_DOCTEMPLATE HelpId = HID_TEMPLATEDLG_DIALOG ; OutputSize = TRUE ; SVLook = TRUE ; - Size = MAP_APPFONT( 320, 245 ); + Size = MAP_APPFONT( 320, 250 ); Text [ en-US ] = "Templates and Documents" ; Moveable = TRUE ; FixedText FT_DOCTEMPLATE_LINK @@ -288,35 +288,35 @@ ModalDialog DLG_DOCTEMPLATE FixedLine FL_DOCTEMPLATE { Pos = MAP_APPFONT( 0, 219 ); - Size = MAP_APPFONT( 320, 1 ); + Size = MAP_APPFONT( 320, 8 ); }; PushButton BTN_DOCTEMPLATE_MANAGE { - Pos = MAP_APPFONT( 3, 225 ); + Pos = MAP_APPFONT( 6, 230 ); Size = MAP_APPFONT( 50, 14 ); Text [ en-US ] = "Organi~ze..."; }; PushButton BTN_DOCTEMPLATE_EDIT { - Pos = MAP_APPFONT( 56, 225 ); + Pos = MAP_APPFONT( 59, 230 ); Size = MAP_APPFONT( 50, 14 ); Text [ en-US ] = "~Edit"; }; OKButton BTN_DOCTEMPLATE_OPEN { - Pos = MAP_APPFONT( 158, 225 ); + Pos = MAP_APPFONT( 155, 230 ); Size = MAP_APPFONT( 50, 14 ); DefButton = TRUE; Text [ en-US ] = "~Open"; }; CancelButton BTN_DOCTEMPLATE_CANCEL { - Pos = MAP_APPFONT( 211, 225 ); + Pos = MAP_APPFONT( 208, 230 ); Size = MAP_APPFONT( 50, 14 ); }; HelpButton BTN_DOCTEMPLATE_HELP { - Pos = MAP_APPFONT( 267, 225 ); + Pos = MAP_APPFONT( 264, 230 ); Size = MAP_APPFONT( 50, 14 ); }; }; diff --git a/svtools/source/control/filectrl.cxx b/svtools/source/control/filectrl.cxx index 76893744688b..d820dce097ed 100644 --- a/svtools/source/control/filectrl.cxx +++ b/svtools/source/control/filectrl.cxx @@ -47,7 +47,7 @@ FileControl::FileControl( Window* pParent, WinBits nStyle, FileControlMode nFlags ) : Window( pParent, nStyle|WB_DIALOGCONTROL ), maEdit( this, (nStyle&(~WB_BORDER))|WB_NOTABSTOP ), - maButton( this, nStyle&(~WB_BORDER)|WB_NOLIGHTBORDER|WB_NOPOINTERFOCUS|WB_NOTABSTOP ), + maButton( this, (nStyle&(~WB_BORDER))|WB_NOLIGHTBORDER|WB_NOPOINTERFOCUS|WB_NOTABSTOP ), maButtonText( SvtResId( STR_FILECTRL_BUTTONTEXT ) ), mnFlags( nFlags ), mnInternalFlags( FILECTRL_ORIGINALBUTTONTEXT ) @@ -164,11 +164,11 @@ void FileControl::Resize() Size aOutSz = GetOutputSizePixel(); long nButtonTextWidth = maButton.GetTextWidth( maButtonText ); if ( ((mnInternalFlags & FILECTRL_ORIGINALBUTTONTEXT) == 0) || - nButtonTextWidth < aOutSz.Width()/3 && + ( nButtonTextWidth < aOutSz.Width()/3 && ( mnFlags & FILECTRL_RESIZEBUTTONBYPATHLEN ? ( maEdit.GetTextWidth( maEdit.GetText() ) <= aOutSz.Width() - nButtonTextWidth - ButtonBorder ) - : TRUE ) + : TRUE ) ) ) { maButton.SetText( maButtonText ); diff --git a/svtools/source/control/inettbc.cxx b/svtools/source/control/inettbc.cxx index 2f9e881e39c9..4a01a03ad759 100644 --- a/svtools/source/control/inettbc.cxx +++ b/svtools/source/control/inettbc.cxx @@ -374,8 +374,8 @@ void SvtMatchContext_Impl::ReadFolder( const String& rURL, sal_Bool bExectMatch = bPureHomePath || aText.CompareToAscii( "." ) == COMPARE_EQUAL - || aText.Len() > 1 && aText.Copy( aText.Len() - 2, 2 ).CompareToAscii( "/." ) == COMPARE_EQUAL - || aText.Len() > 1 && aText.Copy( aText.Len() - 3, 3 ).CompareToAscii( "/.." ) == COMPARE_EQUAL; + || (aText.Len() > 1 && aText.Copy( aText.Len() - 2, 2 ).CompareToAscii( "/." ) == COMPARE_EQUAL) + || (aText.Len() > 2 && aText.Copy( aText.Len() - 3, 3 ).CompareToAscii( "/.." ) == COMPARE_EQUAL); // for pure home pathes ( ~username ) the '.' at the end of rMatch // means that it poits to root catalog @@ -641,7 +641,7 @@ void SvtMatchContext_Impl::run() // if the user input is a valid URL, go on with it // otherwise it could be parsed smart with a predefined smart protocol // ( or if this is not set with the protocol of a predefined base URL ) - if( eProt == INET_PROT_NOT_VALID || eProt == eSmartProt || eSmartProt == INET_PROT_NOT_VALID && eProt == eBaseProt ) + if( eProt == INET_PROT_NOT_VALID || eProt == eSmartProt || (eSmartProt == INET_PROT_NOT_VALID && eProt == eBaseProt) ) { // not stopped yet ? if( schedule() ) diff --git a/svtools/source/control/scrwin.cxx b/svtools/source/control/scrwin.cxx index 9805110c9254..162f23948385 100644 --- a/svtools/source/control/scrwin.cxx +++ b/svtools/source/control/scrwin.cxx @@ -273,8 +273,8 @@ void __EXPORT ScrollableWindow::Resize() // disable painting in the corner between the scrollbars if ( bVVisible && bHVisible ) { - aCornerWin.SetPosSizePixel( - *((Point*) &aOutPixSz), Size(nScrSize, nScrSize) ); + aCornerWin.SetPosSizePixel(Point(aOutPixSz.Width(), aOutPixSz.Height()), + Size(nScrSize, nScrSize) ); aCornerWin.Show(); } else diff --git a/svtools/source/control/tabbar.cxx b/svtools/source/control/tabbar.cxx index 6f3db6175677..ed1abbe53a2a 100644 --- a/svtools/source/control/tabbar.cxx +++ b/svtools/source/control/tabbar.cxx @@ -1543,7 +1543,7 @@ void TabBar::InsertPage( USHORT nPageId, const XubString& rText, TabBarPageBits nBits, USHORT nPos ) { DBG_ASSERT( nPageId, "TabBar::InsertPage(): PageId == 0" ); - DBG_ASSERT( GetPagePos( nPageId ) == TAB_PAGE_NOTFOUND, + DBG_ASSERT( GetPagePos( nPageId ) == TABBAR_PAGE_NOTFOUND, "TabBar::InsertPage(): PageId already exists" ); DBG_ASSERT( nBits <= TPB_SPECIAL, "TabBar::InsertPage(): nBits is wrong" ); @@ -1570,7 +1570,7 @@ void TabBar::RemovePage( USHORT nPageId ) USHORT nPos = GetPagePos( nPageId ); // Existiert Item - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) { if ( mnCurPageId == nPageId ) mnCurPageId = 0; @@ -1605,7 +1605,7 @@ void TabBar::MovePage( USHORT nPageId, USHORT nNewPos ) return; // Existiert Item - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) { // TabBar-Item in der Liste verschieben ImplTabBarItem* pItem = mpItemList->Remove( nPos ); @@ -1643,7 +1643,7 @@ void TabBar::Clear() if ( IsReallyVisible() && IsUpdateMode() ) Invalidate(); - CallEventListeners( VCLEVENT_TABBAR_PAGEREMOVED, (void*) TAB_PAGE_NOTFOUND ); + CallEventListeners( VCLEVENT_TABBAR_PAGEREMOVED, (void*) TABBAR_PAGE_NOTFOUND ); } // ----------------------------------------------------------------------- @@ -1652,7 +1652,7 @@ void TabBar::EnablePage( USHORT nPageId, BOOL bEnable ) { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) { ImplTabBarItem* pItem = mpItemList->GetObject( nPos ); @@ -1675,7 +1675,7 @@ BOOL TabBar::IsPageEnabled( USHORT nPageId ) const { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) return mpItemList->GetObject( nPos )->mbEnable; else return FALSE; @@ -1687,7 +1687,7 @@ void TabBar::SetPageBits( USHORT nPageId, TabBarPageBits nBits ) { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) { ImplTabBarItem* pItem = mpItemList->GetObject( nPos ); @@ -1708,7 +1708,7 @@ TabBarPageBits TabBar::GetPageBits( USHORT nPageId ) const { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) return mpItemList->GetObject( nPos )->mnBits; else return FALSE; @@ -1745,7 +1745,7 @@ USHORT TabBar::GetPagePos( USHORT nPageId ) const pItem = mpItemList->Next(); } - return TAB_PAGE_NOTFOUND; + return TABBAR_PAGE_NOTFOUND; } // ----------------------------------------------------------------------- @@ -1770,7 +1770,7 @@ Rectangle TabBar::GetPageRect( USHORT nPageId ) const { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) return mpItemList->GetObject( nPos )->maRect; else return Rectangle(); @@ -1783,7 +1783,7 @@ void TabBar::SetCurPageId( USHORT nPageId ) USHORT nPos = GetPagePos( nPageId ); // Wenn Item nicht existiert, dann nichts machen - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) { // Wenn sich aktuelle Page nicht geaendert hat, dann muessen wir // jetzt nichts mehr machen @@ -1875,7 +1875,7 @@ void TabBar::MakeVisible( USHORT nPageId ) USHORT nPos = GetPagePos( nPageId ); // Wenn Item nicht existiert, dann nichts machen - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) { if ( nPos < mnFirstPos ) SetFirstPageId( nPageId ); @@ -1924,7 +1924,7 @@ void TabBar::SetFirstPageId( USHORT nPageId ) USHORT nPos = GetPagePos( nPageId ); // Wenn Item nicht existiert, dann FALSE zurueckgeben - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) { if ( nPos != mnFirstPos ) { @@ -1958,7 +1958,7 @@ void TabBar::SelectPage( USHORT nPageId, BOOL bSelect ) { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) { ImplTabBarItem* pItem = mpItemList->GetObject( nPos ); @@ -2039,7 +2039,7 @@ USHORT TabBar::GetSelectPageCount() const BOOL TabBar::IsPageSelected( USHORT nPageId ) const { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) return mpItemList->GetObject( nPos )->mbSelect; else return FALSE; @@ -2050,7 +2050,7 @@ BOOL TabBar::IsPageSelected( USHORT nPageId ) const BOOL TabBar::StartEditMode( USHORT nPageId ) { USHORT nPos = GetPagePos( nPageId ); - if ( mpEdit || (nPos == TAB_PAGE_NOTFOUND) || (mnLastOffX < 8) ) + if ( mpEdit || (nPos == TABBAR_PAGE_NOTFOUND) || (mnLastOffX < 8) ) return FALSE; mnEditId = nPageId; @@ -2126,11 +2126,11 @@ void TabBar::EndEditMode( BOOL bCancel ) if ( !bCancel ) { long nAllowRenaming = AllowRenaming(); - if ( nAllowRenaming == TAB_RENAMING_YES ) + if ( nAllowRenaming == TABBAR_RENAMING_YES ) SetPageText( mnEditId, maEditText ); - else if ( nAllowRenaming == TAB_RENAMING_NO ) + else if ( nAllowRenaming == TABBAR_RENAMING_NO ) bEnd = FALSE; - else // nAllowRenaming == TAB_RENAMING_CANCEL + else // nAllowRenaming == TABBAR_RENAMING_CANCEL mbEditCanceled = TRUE; } @@ -2271,7 +2271,7 @@ void TabBar::SetSelectTextColor( const Color& rColor ) void TabBar::SetPageText( USHORT nPageId, const XubString& rText ) { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) { mpItemList->GetObject( nPos )->maText = rText; mbSizeFormat = TRUE; @@ -2289,7 +2289,7 @@ void TabBar::SetPageText( USHORT nPageId, const XubString& rText ) XubString TabBar::GetPageText( USHORT nPageId ) const { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) return mpItemList->GetObject( nPos )->maText; else return XubString(); @@ -2300,7 +2300,7 @@ XubString TabBar::GetPageText( USHORT nPageId ) const void TabBar::SetHelpText( USHORT nPageId, const XubString& rText ) { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) mpItemList->GetObject( nPos )->maHelpText = rText; } @@ -2309,7 +2309,7 @@ void TabBar::SetHelpText( USHORT nPageId, const XubString& rText ) XubString TabBar::GetHelpText( USHORT nPageId ) const { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) { ImplTabBarItem* pItem = mpItemList->GetObject( nPos ); if ( !pItem->maHelpText.Len() && pItem->mnHelpId ) @@ -2330,7 +2330,7 @@ XubString TabBar::GetHelpText( USHORT nPageId ) const void TabBar::SetHelpId( USHORT nPageId, ULONG nHelpId ) { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) mpItemList->GetObject( nPos )->mnHelpId = nHelpId; } @@ -2339,7 +2339,7 @@ void TabBar::SetHelpId( USHORT nPageId, ULONG nHelpId ) ULONG TabBar::GetHelpId( USHORT nPageId ) const { USHORT nPos = GetPagePos( nPageId ); - if ( nPos != TAB_PAGE_NOTFOUND ) + if ( nPos != TABBAR_PAGE_NOTFOUND ) return mpItemList->GetObject( nPos )->mnHelpId; else return 0; diff --git a/svtools/source/edit/editsyntaxhighlighter.cxx b/svtools/source/edit/editsyntaxhighlighter.cxx index 74d72e32155c..990e3041d903 100644 --- a/svtools/source/edit/editsyntaxhighlighter.cxx +++ b/svtools/source/edit/editsyntaxhighlighter.cxx @@ -29,14 +29,14 @@ ************************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_svtools.hxx"
-
+#include "precompiled_svtools.hxx" + #include <svtools/svmedit.hxx> -#include <svtools/xtextedt.hxx>
-#include <svtools/editsyntaxhighlighter.hxx>
-#include "../../inc/txtattr.hxx"
-
-
+#include <svtools/xtextedt.hxx> +#include <svtools/editsyntaxhighlighter.hxx> +#include "../../inc/txtattr.hxx" + + MultiLineEditSyntaxHighlight::MultiLineEditSyntaxHighlight( Window* pParent, WinBits nWinStyle, HighlighterLanguage aLanguage): MultiLineEdit(pParent,nWinStyle), mbDoBracketHilight(true) { diff --git a/svtools/source/edit/svmedit.cxx b/svtools/source/edit/svmedit.cxx index 279af7c83cef..135761195e48 100644 --- a/svtools/source/edit/svmedit.cxx +++ b/svtools/source/edit/svmedit.cxx @@ -452,46 +452,62 @@ String ImpSvMEdit::GetSelected( LineEnd aSeparator ) const void ImpSvMEdit::Resize() { - WinBits nWinStyle( pSvMultiLineEdit->GetStyle() ); - if ( ( nWinStyle & WB_AUTOVSCROLL ) == WB_AUTOVSCROLL ) - ImpUpdateSrollBarVis( nWinStyle ); - - Size aSz = pSvMultiLineEdit->GetOutputSizePixel(); - Size aEditSize = aSz; - long nSBWidth = pSvMultiLineEdit->GetSettings().GetStyleSettings().GetScrollBarSize(); - nSBWidth = pSvMultiLineEdit->CalcZoom( nSBWidth ); - - if ( mpHScrollBar ) - aSz.Height() -= nSBWidth+1; - if ( mpVScrollBar ) - aSz.Width() -= nSBWidth+1; + size_t nIteration = 1; + do + { + WinBits nWinStyle( pSvMultiLineEdit->GetStyle() ); + if ( ( nWinStyle & WB_AUTOVSCROLL ) == WB_AUTOVSCROLL ) + ImpUpdateSrollBarVis( nWinStyle ); - Size aTextWindowSz( aSz ); - aTextWindowSz.Width() -= maTextWindowOffset.X(); - aTextWindowSz.Height() -= maTextWindowOffset.Y(); - Point aTextWindowPos( maTextWindowOffset ); + Size aSz = pSvMultiLineEdit->GetOutputSizePixel(); + Size aEditSize = aSz; + long nSBWidth = pSvMultiLineEdit->GetSettings().GetStyleSettings().GetScrollBarSize(); + nSBWidth = pSvMultiLineEdit->CalcZoom( nSBWidth ); - if ( !mpHScrollBar ) - mpTextWindow->GetTextEngine()->SetMaxTextWidth( aSz.Width() ); + if ( mpHScrollBar ) + aSz.Height() -= nSBWidth+1; + if ( mpVScrollBar ) + aSz.Width() -= nSBWidth+1; - if ( mpHScrollBar ) - mpHScrollBar->SetPosSizePixel( 0, aEditSize.Height()-nSBWidth, aSz.Width(), nSBWidth ); + if ( !mpHScrollBar ) + mpTextWindow->GetTextEngine()->SetMaxTextWidth( aSz.Width() ); + else + mpHScrollBar->SetPosSizePixel( 0, aEditSize.Height()-nSBWidth, aSz.Width(), nSBWidth ); - if ( mpVScrollBar ) - { - if( Application::GetSettings().GetLayoutRTL() ) + Point aTextWindowPos( maTextWindowOffset ); + if ( mpVScrollBar ) { - mpVScrollBar->SetPosSizePixel( 0, 0, nSBWidth, aSz.Height() ); - aTextWindowPos.X() += nSBWidth; + if( Application::GetSettings().GetLayoutRTL() ) + { + mpVScrollBar->SetPosSizePixel( 0, 0, nSBWidth, aSz.Height() ); + aTextWindowPos.X() += nSBWidth; + } + else + mpVScrollBar->SetPosSizePixel( aEditSize.Width()-nSBWidth, 0, nSBWidth, aSz.Height() ); } - else - mpVScrollBar->SetPosSizePixel( aEditSize.Width()-nSBWidth, 0, nSBWidth, aSz.Height() ); - } - mpTextWindow->SetPosSizePixel( aTextWindowPos, aTextWindowSz ); + if ( mpScrollBox ) + mpScrollBox->SetPosSizePixel( aSz.Width(), aSz.Height(), nSBWidth, nSBWidth ); + + Size aTextWindowSize( aSz ); + aTextWindowSize.Width() -= maTextWindowOffset.X(); + aTextWindowSize.Height() -= maTextWindowOffset.Y(); + if ( aTextWindowSize.Width() < 0 ) + aTextWindowSize.Width() = 0; + if ( aTextWindowSize.Height() < 0 ) + aTextWindowSize.Height() = 0; + + Size aOldTextWindowSize( mpTextWindow->GetSizePixel() ); + mpTextWindow->SetPosSizePixel( aTextWindowPos, aTextWindowSize ); + if ( aOldTextWindowSize == aTextWindowSize ) + break; + + // Changing the text window size might effectively have changed the need for + // scrollbars, so do another iteration. + ++nIteration; + OSL_ENSURE( nIteration < 3, "ImpSvMEdit::Resize: isn't this expected to terminate with the second iteration?" ); - if ( mpScrollBox ) - mpScrollBox->SetPosSizePixel( aSz.Width(), aSz.Height(), nSBWidth, nSBWidth ); + } while ( nIteration <= 3 ); // artificial break after four iterations ImpInitScrollBars(); } diff --git a/svtools/source/filter.vcl/ixbm/xbmread.cxx b/svtools/source/filter.vcl/ixbm/xbmread.cxx index 7429ffcc90cd..32f73d62c195 100644 --- a/svtools/source/filter.vcl/ixbm/xbmread.cxx +++ b/svtools/source/filter.vcl/ixbm/xbmread.cxx @@ -157,7 +157,7 @@ long XBMReader::ParseDefine( const sal_Char* pDefine ) { long nRet = 0; char* pTmp = (char*) pDefine; - char cTmp; + unsigned char cTmp; // bis zum Ende gehen pTmp += ( strlen( pDefine ) - 1 ); diff --git a/svtools/source/filter.vcl/wmf/enhwmf.cxx b/svtools/source/filter.vcl/wmf/enhwmf.cxx index 5efc20be09d2..db12dab82cbd 100644 --- a/svtools/source/filter.vcl/wmf/enhwmf.cxx +++ b/svtools/source/filter.vcl/wmf/enhwmf.cxx @@ -390,10 +390,10 @@ BOOL EnhWMFReader::ReadEnhWMF() pnPoints[ i ] = (UINT16)nPoints; } - if ( ( nGesPoints * sizeof(Point) ) <= ( nEndPos - pWMF->Tell() ) ) + if ( ( nGesPoints * (sizeof(sal_uInt32)+sizeof(sal_uInt32)) ) <= ( nEndPos - pWMF->Tell() ) ) { // Polygonpunkte holen: - pPtAry = (Point*) new char[ nGesPoints * sizeof(Point) ]; + pPtAry = new Point[ nGesPoints ]; for ( i = 0; i < nGesPoints; i++ ) { @@ -403,7 +403,7 @@ BOOL EnhWMFReader::ReadEnhWMF() // PolyPolygon Actions erzeugen PolyPolygon aPolyPoly( (UINT16)nPoly, pnPoints, pPtAry ); pOut->DrawPolyPolygon( aPolyPoly, bRecordPath ); - delete[] (char*) pPtAry; + delete[] pPtAry; } delete[] pnPoints; } @@ -1157,10 +1157,10 @@ BOOL EnhWMFReader::ReadEnhWMF() *pWMF >> nPoints; pnPoints[ i ] = (UINT16)nPoints; } - if ( ( nGesPoints * sizeof(Point) ) <= ( nEndPos - pWMF->Tell() ) ) + if ( ( nGesPoints * (sizeof(sal_uInt16)+sizeof(sal_uInt16)) ) <= ( nEndPos - pWMF->Tell() ) ) { // Polygonpunkte holen: - pPtAry = (Point*) new char[ nGesPoints * sizeof(Point) ]; + pPtAry = new Point[ nGesPoints ]; for ( i = 0; i < nGesPoints; i++ ) { *pWMF >> nX16 >> nY16; @@ -1170,7 +1170,7 @@ BOOL EnhWMFReader::ReadEnhWMF() // PolyPolygon Actions erzeugen PolyPolygon aPolyPoly( (UINT16)nPoly, pnPoints, pPtAry ); pOut->DrawPolyPolygon( aPolyPoly, bRecordPath ); - delete[] (char*) pPtAry; + delete[] pPtAry; } delete[] pnPoints; } diff --git a/svtools/source/filter.vcl/wmf/winwmf.cxx b/svtools/source/filter.vcl/wmf/winwmf.cxx index 490ddaa82d40..0930b0ece8a8 100644 --- a/svtools/source/filter.vcl/wmf/winwmf.cxx +++ b/svtools/source/filter.vcl/wmf/winwmf.cxx @@ -276,7 +276,7 @@ void WMFReader::ReadRecordParams( USHORT nFunc ) case W_META_ROUNDRECT: { Size aSize( ReadYXExt() ); - pOut->DrawRoundRect( ReadRectangle(), aSize ); + pOut->DrawRoundRect( ReadRectangle(), Size( aSize.Width() / 2, aSize.Height() / 2 ) ); } break; @@ -290,7 +290,9 @@ void WMFReader::ReadRecordParams( USHORT nFunc ) { Point aEnd( ReadYX() ); Point aStart( ReadYX() ); - pOut->DrawArc( ReadRectangle(), aStart, aEnd ); + Rectangle aRect( ReadRectangle() ); + aRect.Justify(); + pOut->DrawArc( aRect, aStart, aEnd ); } break; @@ -299,6 +301,7 @@ void WMFReader::ReadRecordParams( USHORT nFunc ) Point aEnd( ReadYX() ); Point aStart( ReadYX() ); Rectangle aRect( ReadRectangle() ); + aRect.Justify(); // #i73608# OutputDevice deviates from WMF // semantics. start==end means full ellipse here. @@ -313,7 +316,9 @@ void WMFReader::ReadRecordParams( USHORT nFunc ) { Point aEnd( ReadYX() ); Point aStart( ReadYX() ); - pOut->DrawChord( ReadRectangle(), aStart, aEnd ); + Rectangle aRect( ReadRectangle() ); + aRect.Justify(); + pOut->DrawChord( aRect, aStart, aEnd ); } break; diff --git a/svtools/source/inc/configitems/useroptions_const.hxx b/svtools/source/inc/configitems/useroptions_const.hxx index bd3c6535b00c..4dbd6da8bba3 100644 --- a/svtools/source/inc/configitems/useroptions_const.hxx +++ b/svtools/source/inc/configitems/useroptions_const.hxx @@ -31,34 +31,34 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - ************************************************************************/
-
-#ifndef INCLUDE_CONFIGITEMS_USEROPTIONS_CONST_HXX
-#define INCLUDE_CONFIGITEMS_USEROPTIONS_CONST_HXX
-
-#include <rtl/ustring.hxx>
-
-namespace
-{
- static const ::rtl::OUString s_sData = ::rtl::OUString::createFromAscii("org.openoffice.UserProfile/Data");
- static const ::rtl::OUString s_so = ::rtl::OUString::createFromAscii("o"); // USER_OPT_COMPANY
- static const ::rtl::OUString s_sgivenname = ::rtl::OUString::createFromAscii("givenname"); // USER_OPT_FIRSTNAME
- static const ::rtl::OUString s_ssn = ::rtl::OUString::createFromAscii("sn"); // USER_OPT_LASTNAME
- static const ::rtl::OUString s_sinitials = ::rtl::OUString::createFromAscii("initials"); // USER_OPT_ID
- static const ::rtl::OUString s_sstreet = ::rtl::OUString::createFromAscii("street"); // USER_OPT_STREET
- static const ::rtl::OUString s_sl = ::rtl::OUString::createFromAscii("l"); // USER_OPT_CITY
- static const ::rtl::OUString s_sst = ::rtl::OUString::createFromAscii("st"); // USER_OPT_STATE
- static const ::rtl::OUString s_spostalcode = ::rtl::OUString::createFromAscii("postalcode"); // USER_OPT_ZIP
- static const ::rtl::OUString s_sc = ::rtl::OUString::createFromAscii("c"); // USER_OPT_COUNTRY
- static const ::rtl::OUString s_stitle = ::rtl::OUString::createFromAscii("title"); // USER_OPT_TITLE
- static const ::rtl::OUString s_sposition = ::rtl::OUString::createFromAscii("position"); // USER_OPT_POSITION
- static const ::rtl::OUString s_shomephone = ::rtl::OUString::createFromAscii("homephone"); // USER_OPT_TELEPHONEHOME
- static const ::rtl::OUString s_stelephonenumber = ::rtl::OUString::createFromAscii("telephonenumber"); // USER_OPT_TELEPHONEWORK
- static const ::rtl::OUString s_sfacsimiletelephonenumber = ::rtl::OUString::createFromAscii("facsimiletelephonenumber"); // USER_OPT_FAX
- static const ::rtl::OUString s_smail = ::rtl::OUString::createFromAscii("mail"); // USER_OPT_EMAIL
- static const ::rtl::OUString s_scustomernumber = ::rtl::OUString::createFromAscii("customernumber"); // USER_OPT_CUSTOMERNUMBER
- static const ::rtl::OUString s_sfathersname = ::rtl::OUString::createFromAscii("fathersname"); // USER_OPT_FATHERSNAME
- static const ::rtl::OUString s_sapartment = ::rtl::OUString::createFromAscii("apartment"); // USER_OPT_APARTMENT
-}
-
-#endif // INCLUDE_CONFIGITEMS_USEROPTIONS_CONST_HXX
+ ************************************************************************/ + +#ifndef INCLUDE_CONFIGITEMS_USEROPTIONS_CONST_HXX +#define INCLUDE_CONFIGITEMS_USEROPTIONS_CONST_HXX + +#include <rtl/ustring.hxx> + +namespace +{ + static const ::rtl::OUString s_sData = ::rtl::OUString::createFromAscii("org.openoffice.UserProfile/Data"); + static const ::rtl::OUString s_so = ::rtl::OUString::createFromAscii("o"); // USER_OPT_COMPANY + static const ::rtl::OUString s_sgivenname = ::rtl::OUString::createFromAscii("givenname"); // USER_OPT_FIRSTNAME + static const ::rtl::OUString s_ssn = ::rtl::OUString::createFromAscii("sn"); // USER_OPT_LASTNAME + static const ::rtl::OUString s_sinitials = ::rtl::OUString::createFromAscii("initials"); // USER_OPT_ID + static const ::rtl::OUString s_sstreet = ::rtl::OUString::createFromAscii("street"); // USER_OPT_STREET + static const ::rtl::OUString s_sl = ::rtl::OUString::createFromAscii("l"); // USER_OPT_CITY + static const ::rtl::OUString s_sst = ::rtl::OUString::createFromAscii("st"); // USER_OPT_STATE + static const ::rtl::OUString s_spostalcode = ::rtl::OUString::createFromAscii("postalcode"); // USER_OPT_ZIP + static const ::rtl::OUString s_sc = ::rtl::OUString::createFromAscii("c"); // USER_OPT_COUNTRY + static const ::rtl::OUString s_stitle = ::rtl::OUString::createFromAscii("title"); // USER_OPT_TITLE + static const ::rtl::OUString s_sposition = ::rtl::OUString::createFromAscii("position"); // USER_OPT_POSITION + static const ::rtl::OUString s_shomephone = ::rtl::OUString::createFromAscii("homephone"); // USER_OPT_TELEPHONEHOME + static const ::rtl::OUString s_stelephonenumber = ::rtl::OUString::createFromAscii("telephonenumber"); // USER_OPT_TELEPHONEWORK + static const ::rtl::OUString s_sfacsimiletelephonenumber = ::rtl::OUString::createFromAscii("facsimiletelephonenumber"); // USER_OPT_FAX + static const ::rtl::OUString s_smail = ::rtl::OUString::createFromAscii("mail"); // USER_OPT_EMAIL + static const ::rtl::OUString s_scustomernumber = ::rtl::OUString::createFromAscii("customernumber"); // USER_OPT_CUSTOMERNUMBER + static const ::rtl::OUString s_sfathersname = ::rtl::OUString::createFromAscii("fathersname"); // USER_OPT_FATHERSNAME + static const ::rtl::OUString s_sapartment = ::rtl::OUString::createFromAscii("apartment"); // USER_OPT_APARTMENT +} + +#endif // INCLUDE_CONFIGITEMS_USEROPTIONS_CONST_HXX diff --git a/svtools/source/items1/itemprop.cxx b/svtools/source/items1/itemprop.cxx index 0c31e3f0a64a..354e0a1441ba 100644 --- a/svtools/source/items1/itemprop.cxx +++ b/svtools/source/items1/itemprop.cxx @@ -30,56 +30,189 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_svtools.hxx" -#include <string.h> -#ifndef GCC -#endif #include <svtools/itemprop.hxx> #include <svtools/itempool.hxx> #include <svtools/itemset.hxx> #include <com/sun/star/beans/PropertyAttribute.hpp> - +#include <hash_map> /************************************************************************* UNO III Implementation *************************************************************************/ +using namespace com::sun::star; using namespace com::sun::star::beans; using namespace com::sun::star::lang; using namespace com::sun::star::uno; using namespace ::rtl; -/* -----------------------------21.02.00 11:26-------------------------------- +/*-- 16.02.2009 10:03:55--------------------------------------------------- - ---------------------------------------------------------------------------*/ -const SfxItemPropertyMap* SfxItemPropertyMap::GetByName( - const SfxItemPropertyMap *pMap, const OUString &rName ) + -----------------------------------------------------------------------*/ + +struct equalOUString +{ + bool operator()(const ::rtl::OUString& r1, const ::rtl::OUString& r2) const + { + return r1.equals( r2 ); + } +}; + +typedef ::std::hash_map< ::rtl::OUString, + SfxItemPropertySimpleEntry, + ::rtl::OUStringHash, + equalOUString > SfxItemPropertyHashMap_t; + +class SfxItemPropertyMap_Impl : public SfxItemPropertyHashMap_t +{ +public: + mutable uno::Sequence< beans::Property > m_aPropSeq; + + SfxItemPropertyMap_Impl(){} + SfxItemPropertyMap_Impl( const SfxItemPropertyMap_Impl* pSource ); +}; +SfxItemPropertyMap_Impl::SfxItemPropertyMap_Impl( const SfxItemPropertyMap_Impl* pSource ) { - while ( pMap->pName ) + this->SfxItemPropertyHashMap_t::operator=( *pSource ); + m_aPropSeq = pSource->m_aPropSeq; +} + +/*-- 16.02.2009 10:03:51--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SfxItemPropertyMap::SfxItemPropertyMap( const SfxItemPropertyMapEntry* pEntries ) : + m_pImpl( new SfxItemPropertyMap_Impl ) +{ + while( pEntries->pName ) { - if( rName.equalsAsciiL( pMap->pName, pMap->nNameLen ) ) - return pMap; - ++pMap; + ::rtl::OUString sEntry(pEntries->pName, pEntries->nNameLen, RTL_TEXTENCODING_ASCII_US ); + (*m_pImpl) [ sEntry ] = pEntries; + ++pEntries; } - return 0; } -/* -----------------------------12.12.03 14:04-------------------------------- +/*-- 16.02.2009 12:46:41--------------------------------------------------- - ---------------------------------------------------------------------------*/ -const SfxItemPropertyMap* SfxItemPropertyMap::GetTolerantByName( - const SfxItemPropertyMap *pMap, const OUString &rName ) + -----------------------------------------------------------------------*/ +SfxItemPropertyMap::SfxItemPropertyMap( const SfxItemPropertyMap* pSource ) : + m_pImpl( new SfxItemPropertyMap_Impl( pSource->m_pImpl ) ) { - sal_Int32 nLength(rName.getLength()); - while ( pMap->pName ) +} +/*-- 16.02.2009 10:03:51--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SfxItemPropertyMap::~SfxItemPropertyMap() +{ + delete m_pImpl; +} +/*-- 16.02.2009 10:03:51--------------------------------------------------- + + -----------------------------------------------------------------------*/ +const SfxItemPropertySimpleEntry* SfxItemPropertyMap::getByName( const ::rtl::OUString &rName ) const +{ + SfxItemPropertyHashMap_t::const_iterator aIter = m_pImpl->find(rName); + if( aIter == m_pImpl->end() ) + return 0; + return &aIter->second; +} + +/*-- 16.02.2009 10:44:24--------------------------------------------------- + + -----------------------------------------------------------------------*/ +uno::Sequence<beans::Property> SfxItemPropertyMap::getProperties() const +{ + if( !m_pImpl->m_aPropSeq.getLength() ) { - if( nLength == pMap->nNameLen ) + m_pImpl->m_aPropSeq.realloc( m_pImpl->size() ); + beans::Property* pPropArray = m_pImpl->m_aPropSeq.getArray(); + sal_uInt32 n = 0; + SfxItemPropertyHashMap_t::const_iterator aIt = m_pImpl->begin(); + while( aIt != m_pImpl->end() ) + //for ( const SfxItemPropertyMap *pMap = _pMap; pMap->pName; ++pMap ) { - sal_Int32 nResult(rName.compareToAscii(pMap->pName)); - if (nResult == 0) - return pMap; - else if (nResult < 0) - return 0; + const SfxItemPropertySimpleEntry* pEntry = &(*aIt).second; + pPropArray[n].Name = (*aIt).first; + pPropArray[n].Handle = pEntry->nWID; + if(pEntry->pType) + pPropArray[n].Type = *pEntry->pType; + pPropArray[n].Attributes = + sal::static_int_cast< sal_Int16 >(pEntry->nFlags); + n++; + ++aIt; } - ++pMap; } - return 0; + + return m_pImpl->m_aPropSeq; +} +/*-- 16.02.2009 11:04:31--------------------------------------------------- + + -----------------------------------------------------------------------*/ +beans::Property SfxItemPropertyMap::getPropertyByName( const ::rtl::OUString rName ) const + throw( beans::UnknownPropertyException ) +{ + SfxItemPropertyHashMap_t::const_iterator aIter = m_pImpl->find(rName); + if( aIter == m_pImpl->end() ) + throw UnknownPropertyException(); + const SfxItemPropertySimpleEntry* pEntry = &aIter->second; + beans::Property aProp; + aProp.Name = rName; + aProp.Handle = pEntry->nWID; + if(pEntry->pType) + aProp.Type = *pEntry->pType; + aProp.Attributes = sal::static_int_cast< sal_Int16 >(pEntry->nFlags); + return aProp; +} +/*-- 16.02.2009 11:09:16--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SfxItemPropertyMap::hasPropertyByName( const ::rtl::OUString& rName ) const +{ + SfxItemPropertyHashMap_t::const_iterator aIter = m_pImpl->find(rName); + return aIter != m_pImpl->end(); +} +/*-- 16.02.2009 11:25:14--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SfxItemPropertyMap::mergeProperties( const uno::Sequence< beans::Property >& rPropSeq ) +{ + const beans::Property* pPropArray = rPropSeq.getConstArray(); + sal_uInt32 nElements = rPropSeq.getLength(); + for( sal_uInt32 nElement = 0; nElement < nElements; ++nElement ) + { + SfxItemPropertySimpleEntry aTemp( + sal::static_int_cast< sal_Int16 >( pPropArray[nElement].Handle ), //nWID + &pPropArray[nElement].Type, //pType + pPropArray[nElement].Attributes, //nFlags + 0 ); //nMemberId + (*m_pImpl)[pPropArray[nElement].Name] = aTemp; + } +} +/*-- 18.02.2009 12:04:42--------------------------------------------------- + + -----------------------------------------------------------------------*/ +PropertyEntryVector_t SfxItemPropertyMap::getPropertyEntries() const +{ + PropertyEntryVector_t aRet; + aRet.reserve(m_pImpl->size()); + + SfxItemPropertyHashMap_t::const_iterator aIt = m_pImpl->begin(); + while( aIt != m_pImpl->end() ) + { + const SfxItemPropertySimpleEntry* pEntry = &(*aIt).second; + aRet.push_back( SfxItemPropertyNamedEntry( (*aIt).first, * pEntry ) ); + ++aIt; + } + return aRet; +} +/*-- 18.02.2009 15:11:06--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_uInt32 SfxItemPropertyMap::getSize() const +{ + return m_pImpl->size(); +} +/*-- 16.02.2009 13:44:54--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SfxItemPropertySet::~SfxItemPropertySet() +{ } /* -----------------------------21.02.00 11:26-------------------------------- @@ -91,55 +224,41 @@ BOOL SfxItemPropertySet::FillItem(SfxItemSet&, USHORT, BOOL) const /* -----------------------------06.06.01 12:32-------------------------------- ---------------------------------------------------------------------------*/ -void SfxItemPropertySet::getPropertyValue( const SfxItemPropertyMap& rMap, +void SfxItemPropertySet::getPropertyValue( const SfxItemPropertySimpleEntry& rEntry, const SfxItemSet& rSet, Any& rAny ) const throw(RuntimeException) { - // item holen + // get the SfxPoolItem const SfxPoolItem* pItem = 0; - SfxItemState eState = rSet.GetItemState( rMap.nWID, TRUE, &pItem ); - if(SFX_ITEM_SET != eState && SFX_WHICH_MAX > rMap.nWID ) - pItem = &rSet.GetPool()->GetDefaultItem(rMap.nWID); - // item-Wert als UnoAny zurueckgeben + SfxItemState eState = rSet.GetItemState( rEntry.nWID, TRUE, &pItem ); + if(SFX_ITEM_SET != eState && SFX_WHICH_MAX > rEntry.nWID ) + pItem = &rSet.GetPool()->GetDefaultItem(rEntry.nWID); + // return item values as uno::Any if(eState >= SFX_ITEM_DEFAULT && pItem) { - pItem->QueryValue( rAny, rMap.nMemberId ); + pItem->QueryValue( rAny, rEntry.nMemberId ); } else { - SfxItemSet aSet(*rSet.GetPool(), rMap.nWID, rMap.nWID); - if(FillItem(aSet, rMap.nWID, TRUE)) + SfxItemSet aSet(*rSet.GetPool(), rEntry.nWID, rEntry.nWID); + if(FillItem(aSet, rEntry.nWID, TRUE)) { - const SfxPoolItem& rItem = aSet.Get(rMap.nWID); - rItem.QueryValue( rAny, rMap.nMemberId ); + const SfxPoolItem& rItem = aSet.Get(rEntry.nWID); + rItem.QueryValue( rAny, rEntry.nMemberId ); } - else if(0 == (rMap.nFlags & PropertyAttribute::MAYBEVOID)) + else if(0 == (rEntry.nFlags & PropertyAttribute::MAYBEVOID)) throw RuntimeException(); } - // allgemeine SfxEnumItem Values in konkrete wandeln - if( rMap.pType && TypeClass_ENUM == rMap.pType->getTypeClass() && + // convert general SfxEnumItem values to specific values + if( rEntry.pType && TypeClass_ENUM == rEntry.pType->getTypeClass() && rAny.getValueTypeClass() == TypeClass_LONG ) { INT32 nTmp = *(INT32*)rAny.getValue(); - rAny.setValue( &nTmp, *rMap.pType ); + rAny.setValue( &nTmp, *rEntry.pType ); } } - - -/* -----------------------------15.11.00 12:32-------------------------------- - - ---------------------------------------------------------------------------*/ -Any SfxItemPropertySet::getPropertyValue( const SfxItemPropertyMap& rMap, - const SfxItemSet& rSet ) const - throw(RuntimeException) -{ - Any aAny; - getPropertyValue(rMap, rSet, aAny); - return aAny; -} - /* -----------------------------06.06.01 12:32-------------------------------- ---------------------------------------------------------------------------*/ @@ -147,11 +266,11 @@ void SfxItemPropertySet::getPropertyValue( const OUString &rName, const SfxItemSet& rSet, Any& rAny ) const throw(RuntimeException, UnknownPropertyException) { - // which-id ermitteln - const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName( _pMap, rName ); - if ( !pMap ) + // detect which-id + const SfxItemPropertySimpleEntry* pEntry = m_aMap.getByName( rName ); + if ( !pEntry ) throw UnknownPropertyException(); - getPropertyValue( *pMap,rSet, rAny ); + getPropertyValue( *pEntry,rSet, rAny ); } /* -----------------------------21.02.00 11:26-------------------------------- @@ -167,25 +286,25 @@ Any SfxItemPropertySet::getPropertyValue( const OUString &rName, /* -----------------------------15.11.00 14:46-------------------------------- ---------------------------------------------------------------------------*/ -void SfxItemPropertySet::setPropertyValue( const SfxItemPropertyMap& rMap, +void SfxItemPropertySet::setPropertyValue( const SfxItemPropertySimpleEntry& rEntry, const Any& aVal, SfxItemSet& rSet ) const throw(RuntimeException, IllegalArgumentException) { - // item holen + // get the SfxPoolItem const SfxPoolItem* pItem = 0; SfxPoolItem *pNewItem = 0; - SfxItemState eState = rSet.GetItemState( rMap.nWID, TRUE, &pItem ); - if(SFX_ITEM_SET != eState && SFX_WHICH_MAX > rMap.nWID ) - pItem = &rSet.GetPool()->GetDefaultItem(rMap.nWID); + SfxItemState eState = rSet.GetItemState( rEntry.nWID, TRUE, &pItem ); + if(SFX_ITEM_SET != eState && SFX_WHICH_MAX > rEntry.nWID ) + pItem = &rSet.GetPool()->GetDefaultItem(rEntry.nWID); //maybe there's another way to find an Item if(eState < SFX_ITEM_DEFAULT) { - SfxItemSet aSet(*rSet.GetPool(), rMap.nWID, rMap.nWID); - if(FillItem(aSet, rMap.nWID, FALSE)) + SfxItemSet aSet(*rSet.GetPool(), rEntry.nWID, rEntry.nWID); + if(FillItem(aSet, rEntry.nWID, FALSE)) { - const SfxPoolItem &rItem = aSet.Get(rMap.nWID); + const SfxPoolItem &rItem = aSet.Get(rEntry.nWID); pNewItem = rItem.Clone(); } } @@ -195,13 +314,13 @@ void SfxItemPropertySet::setPropertyValue( const SfxItemPropertyMap& rMap, } if(pNewItem) { - if( !pNewItem->PutValue( aVal, rMap.nMemberId ) ) + if( !pNewItem->PutValue( aVal, rEntry.nMemberId ) ) { DELETEZ(pNewItem); throw IllegalArgumentException(); } - // neues item in itemset setzen - rSet.Put( *pNewItem, rMap.nWID ); + // apply new item + rSet.Put( *pNewItem, rEntry.nWID ); delete pNewItem; } } @@ -215,21 +334,21 @@ void SfxItemPropertySet::setPropertyValue( const OUString &rName, IllegalArgumentException, UnknownPropertyException) { - const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName( _pMap, rName ); - if ( !pMap ) + const SfxItemPropertySimpleEntry* pEntry = m_aMap.getByName( rName ); + if ( !pEntry ) { throw UnknownPropertyException(); } - setPropertyValue(*pMap, aVal, rSet); + setPropertyValue(*pEntry, aVal, rSet); } /* -----------------------------21.02.00 11:26-------------------------------- ---------------------------------------------------------------------------*/ -PropertyState SfxItemPropertySet::getPropertyState(const SfxItemPropertyMap& rMap, const SfxItemSet& rSet) +PropertyState SfxItemPropertySet::getPropertyState(const SfxItemPropertySimpleEntry& rEntry, const SfxItemSet& rSet) const throw() { PropertyState eRet = PropertyState_DIRECT_VALUE; - USHORT nWhich = rMap.nWID; + USHORT nWhich = rEntry.nWID; // item state holen SfxItemState eState = rSet.GetItemState( nWhich, FALSE ); @@ -240,20 +359,19 @@ PropertyState SfxItemPropertySet::getPropertyState(const SfxItemPropertyMap& rMa eRet = PropertyState_AMBIGUOUS_VALUE; return eRet; } - PropertyState SfxItemPropertySet::getPropertyState( - const OUString& rName, const SfxItemSet& rSet) + const OUString& rName, const SfxItemSet& rSet) const throw(UnknownPropertyException) { PropertyState eRet = PropertyState_DIRECT_VALUE; // which-id ermitteln - const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName( _pMap, rName ); - USHORT nWhich = pMap ? pMap->nWID : 0; - if ( !nWhich ) + const SfxItemPropertySimpleEntry* pEntry = m_aMap.getByName( rName ); + if( !pEntry || !pEntry->nWID ) { throw UnknownPropertyException(); } + USHORT nWhich = pEntry->nWID; // item holen const SfxPoolItem* pItem = 0; @@ -273,10 +391,33 @@ PropertyState SfxItemPropertySet::getPropertyState( Reference<XPropertySetInfo> SfxItemPropertySet::getPropertySetInfo() const { - Reference<XPropertySetInfo> aRef(new SfxItemPropertySetInfo( _pMap )); - return aRef; + if( !m_xInfo.is() ) + m_xInfo = new SfxItemPropertySetInfo( &m_aMap ); + return m_xInfo; +} +/*-- 16.02.2009 13:49:25--------------------------------------------------- + + -----------------------------------------------------------------------*/ +struct SfxItemPropertySetInfo_Impl +{ + SfxItemPropertyMap* m_pOwnMap; +}; +/*-- 16.02.2009 13:49:24--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SfxItemPropertySetInfo::SfxItemPropertySetInfo(const SfxItemPropertyMap *pMap ) : + m_pImpl( new SfxItemPropertySetInfo_Impl ) +{ + m_pImpl->m_pOwnMap = new SfxItemPropertyMap( pMap ); } +/*-- 16.02.2009 13:49:25--------------------------------------------------- + -----------------------------------------------------------------------*/ +SfxItemPropertySetInfo::SfxItemPropertySetInfo(const SfxItemPropertyMapEntry *pEntries ) : + m_pImpl( new SfxItemPropertySetInfo_Impl ) +{ + m_pImpl->m_pOwnMap = new SfxItemPropertyMap( pEntries ); +} /* -----------------------------21.02.00 11:09-------------------------------- ---------------------------------------------------------------------------*/ @@ -284,26 +425,23 @@ Sequence< Property > SAL_CALL SfxItemPropertySetInfo::getProperties( ) throw(RuntimeException) { - USHORT n = 0; - { - for ( const SfxItemPropertyMap *pMap = _pMap; pMap->pName; ++pMap ) - ++n; - } + return m_pImpl->m_pOwnMap->getProperties(); +} +/*-- 16.02.2009 13:49:27--------------------------------------------------- - Sequence<Property> aPropSeq( n ); - n = 0; - for ( const SfxItemPropertyMap *pMap = _pMap; pMap->pName; ++pMap ) - { - aPropSeq.getArray()[n].Name = OUString::createFromAscii( pMap->pName ); - aPropSeq.getArray()[n].Handle = pMap->nWID; - if(pMap->pType) - aPropSeq.getArray()[n].Type = *pMap->pType; - aPropSeq.getArray()[n].Attributes = - sal::static_int_cast< sal_Int16 >(pMap->nFlags); - n++; - } + -----------------------------------------------------------------------*/ +const SfxItemPropertyMap* SfxItemPropertySetInfo::getMap() const +{ + return m_pImpl->m_pOwnMap; +} + +/*-- 16.02.2009 12:43:36--------------------------------------------------- - return aPropSeq; + -----------------------------------------------------------------------*/ +SfxItemPropertySetInfo::~SfxItemPropertySetInfo() +{ + delete m_pImpl->m_pOwnMap; + delete m_pImpl; } /* -----------------------------21.02.00 11:27-------------------------------- @@ -312,22 +450,7 @@ Property SAL_CALL SfxItemPropertySetInfo::getPropertyByName( const ::rtl::OUString& rName ) throw(UnknownPropertyException, RuntimeException) { - Property aProp; - for( const SfxItemPropertyMap *pMap = _pMap; pMap->pName; ++pMap ) - { - if( rName.equalsAsciiL( pMap->pName, pMap->nNameLen )) - { - aProp.Name = rName; - aProp.Handle = pMap->nWID; - if(pMap->pType) - aProp.Type = *pMap->pType; - aProp.Attributes = sal::static_int_cast< sal_Int16 >(pMap->nFlags); - break; - } - } - if(!aProp.Name.getLength()) - throw UnknownPropertyException(); - return aProp; + return m_pImpl->m_pOwnMap->getPropertyByName( rName ); } /* -----------------------------21.02.00 11:28-------------------------------- @@ -336,79 +459,23 @@ sal_Bool SAL_CALL SfxItemPropertySetInfo::hasPropertyByName( const ::rtl::OUString& rName ) throw(RuntimeException) { - for ( const SfxItemPropertyMap *pMap = _pMap; pMap->pName; ++pMap ) - { - if( rName.equalsAsciiL( pMap->pName, pMap->nNameLen )) - return TRUE; - } - return FALSE; + return m_pImpl->m_pOwnMap->hasPropertyByName( rName ); } /* -----------------------------21.02.00 12:03-------------------------------- ---------------------------------------------------------------------------*/ SfxExtItemPropertySetInfo::SfxExtItemPropertySetInfo( - const SfxItemPropertyMap *pMap, + const SfxItemPropertyMapEntry *pMap, const Sequence<Property>& rPropSeq ) : - _pExtMap(pMap) + aExtMap( pMap ) { - long nLen = rPropSeq.getLength(); - long nExtLen = 0; - while(pMap[nExtLen].pName) - nExtLen++; - aPropertySeq.realloc(nExtLen + nLen); - - - long nNewLen = aPropertySeq.getLength(); - Property* pNewArr = aPropertySeq.getArray(); - long nCount1 = 0;//map - long nCount2 = 0;//sequence - long nDouble = 0;//Anzahl gleicher Property-Namen - BOOL bFromMap, bZero = FALSE; + aExtMap.mergeProperties( rPropSeq ); +} +/*-- 16.02.2009 12:06:49--------------------------------------------------- - const Property* pPropSeqArr = rPropSeq.getConstArray(); - for( long i = 0; i < nNewLen; i++) - { - bFromMap = FALSE; - if(nCount1 < nExtLen && nCount2 < nLen) - { -// int nDiff = strcmp(pMap[nCount1].pName, OUStringToString(rPropSeq.getConstArray()[nCount2].Name, CHARSET_SYSTEM )); - sal_Int32 nDiff = pPropSeqArr[nCount2].Name.compareToAscii(pMap[nCount1].pName, pMap[nCount1].nNameLen ); - if(nDiff > 0) - { - bFromMap = TRUE; - } - else if(0 == nDiff) - { - nDouble++; - bFromMap = TRUE; - nCount2++; - } - } - else - { - if(nCount1 < nExtLen) - bFromMap = TRUE; - else if(nCount2>= nLen) - bZero = TRUE; - } - if(bFromMap) - { - pNewArr[i].Name = OUString::createFromAscii( pMap[nCount1].pName ); - pNewArr[i].Handle = pMap[nCount1].nWID; - if(pMap[nCount1].pType) - pNewArr[i].Type = *pMap[nCount1].pType; - pNewArr[i].Attributes = sal::static_int_cast< sal_Int16 >( - pMap[nCount1].nFlags); - nCount1++; - } - else if(!bZero) - { - pNewArr[i] = pPropSeqArr[nCount2]; - nCount2++; - } - } - if(nDouble) - aPropertySeq.realloc(nExtLen + nLen - nDouble); + -----------------------------------------------------------------------*/ +SfxExtItemPropertySetInfo::~SfxExtItemPropertySetInfo() +{ } /* -----------------------------21.02.00 12:03-------------------------------- @@ -416,38 +483,24 @@ SfxExtItemPropertySetInfo::SfxExtItemPropertySetInfo( Sequence< Property > SAL_CALL SfxExtItemPropertySetInfo::getProperties( ) throw(RuntimeException) { - return aPropertySeq; + return aExtMap.getProperties(); } /* -----------------------------21.02.00 12:03-------------------------------- ---------------------------------------------------------------------------*/ Property SAL_CALL - SfxExtItemPropertySetInfo::getPropertyByName( const OUString& aPropertyName ) + SfxExtItemPropertySetInfo::getPropertyByName( const OUString& rPropertyName ) throw(UnknownPropertyException, RuntimeException) { - const Property* pPropArr = aPropertySeq.getConstArray(); - long nLen = aPropertySeq.getLength(); - for( long i = 0; i < nLen; i++) - { - if(aPropertyName == pPropArr[i].Name) - return pPropArr[i]; - } - return Property(); + return aExtMap.getPropertyByName( rPropertyName ); } /* -----------------------------21.02.00 12:03-------------------------------- ---------------------------------------------------------------------------*/ sal_Bool SAL_CALL - SfxExtItemPropertySetInfo::hasPropertyByName( const OUString& aPropertyName ) + SfxExtItemPropertySetInfo::hasPropertyByName( const OUString& rPropertyName ) throw(RuntimeException) { - const Property* pPropArr = aPropertySeq.getConstArray(); - long nLen = aPropertySeq.getLength(); - for( long i = 0; i < nLen; i++) - { - if(aPropertyName == pPropArr[i].Name) - return TRUE; - } - return FALSE; + return aExtMap.hasPropertyByName( rPropertyName ); } diff --git a/svtools/source/items1/itemset.cxx b/svtools/source/items1/itemset.cxx index 48fe2877b892..6edeffe6d250 100644 --- a/svtools/source/items1/itemset.cxx +++ b/svtools/source/items1/itemset.cxx @@ -541,7 +541,7 @@ SfxItemState SfxItemSet::GetItemState( USHORT nWhich, // Unterschiedlich vorhanden return SFX_ITEM_DONTCARE; - if ( (*ppFnd)->IsA(TYPE(SfxVoidItem)) ) + if ( (*ppFnd)->Type() == TYPE(SfxVoidItem) )
return SFX_ITEM_DISABLED; if (ppItem) diff --git a/svtools/source/misc/acceleratorexecute.cxx b/svtools/source/misc/acceleratorexecute.cxx index e6e78656eedd..16bc8339a0d9 100644 --- a/svtools/source/misc/acceleratorexecute.cxx +++ b/svtools/source/misc/acceleratorexecute.cxx @@ -79,7 +79,6 @@ #include <vcl/window.hxx> #include <vcl/svapp.hxx> #include <vos/mutex.hxx> -#include <comphelper/uieventslogger.hxx> //=============================================== // namespace @@ -257,22 +256,6 @@ sal_Bool AcceleratorExecute::execute(const css::awt::KeyEvent& aAWTKey) sal_Bool bRet = xDispatch.is(); if ( bRet ) { - if(::comphelper::UiEventsLogger::isEnabled() && m_xSMGR.is() && m_xDispatcher.is()) //#i88653# - { - try - { - css::uno::Reference< css::frame::XModuleManager > xModuleDetection( - m_xSMGR->createInstance(::rtl::OUString::createFromAscii("com.sun.star.frame.ModuleManager")), - css::uno::UNO_QUERY_THROW); - - const ::rtl::OUString sModule = xModuleDetection->identify(m_xDispatcher); - css::uno::Sequence<css::beans::PropertyValue> source; - ::comphelper::UiEventsLogger::appendDispatchOrigin(source, sModule, ::rtl::OUString::createFromAscii("AcceleratorExecute")); - ::comphelper::UiEventsLogger::logDispatch(aURL, source); - } - catch(const css::uno::Exception&) - { } - } // Note: Such instance can be used one times only and destroy itself afterwards .-) AsyncAccelExec* pExec = AsyncAccelExec::createOnShotInstance(xDispatch, aURL); pExec->execAsync(); @@ -294,7 +277,8 @@ css::awt::KeyEvent AcceleratorExecute::st_VCLKey2AWTKey(const KeyCode& aVCLKey) aAWTKey.Modifiers |= css::awt::KeyModifier::MOD1; if (aVCLKey.IsMod2()) aAWTKey.Modifiers |= css::awt::KeyModifier::MOD2; - + if (aVCLKey.IsMod3()) + aAWTKey.Modifiers |= css::awt::KeyModifier::MOD3; return aAWTKey; } @@ -304,9 +288,10 @@ KeyCode AcceleratorExecute::st_AWTKey2VCLKey(const css::awt::KeyEvent& aAWTKey) sal_Bool bShift = ((aAWTKey.Modifiers & css::awt::KeyModifier::SHIFT) == css::awt::KeyModifier::SHIFT ); sal_Bool bMod1 = ((aAWTKey.Modifiers & css::awt::KeyModifier::MOD1 ) == css::awt::KeyModifier::MOD1 ); sal_Bool bMod2 = ((aAWTKey.Modifiers & css::awt::KeyModifier::MOD2 ) == css::awt::KeyModifier::MOD2 ); + sal_Bool bMod3 = ((aAWTKey.Modifiers & css::awt::KeyModifier::MOD3 ) == css::awt::KeyModifier::MOD3 ); USHORT nKey = (USHORT)aAWTKey.KeyCode; - return KeyCode(nKey, bShift, bMod1, bMod2); + return KeyCode(nKey, bShift, bMod1, bMod2, bMod3); } //----------------------------------------------- ::rtl::OUString AcceleratorExecute::findCommand(const css::awt::KeyEvent& aKey) @@ -482,8 +467,8 @@ css::uno::Reference< css::ui::XAcceleratorConfiguration > AcceleratorExecute::st { sModule = xModuleDetection->identify(xFrame); } - catch(const css::uno::RuntimeException&) - { throw; } + catch(const css::uno::RuntimeException&rEx) + { (void) rEx; throw; } catch(const css::uno::Exception&) { return css::uno::Reference< css::ui::XAcceleratorConfiguration >(); } @@ -491,8 +476,14 @@ css::uno::Reference< css::ui::XAcceleratorConfiguration > AcceleratorExecute::st xSMGR->createInstance(::rtl::OUString::createFromAscii("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")), css::uno::UNO_QUERY_THROW); - css::uno::Reference< css::ui::XUIConfigurationManager > xUIManager = xUISupplier->getUIConfigurationManager(sModule); - css::uno::Reference< css::ui::XAcceleratorConfiguration > xAccCfg (xUIManager->getShortCutManager(), css::uno::UNO_QUERY_THROW); + css::uno::Reference< css::ui::XAcceleratorConfiguration > xAccCfg; + try + { + css::uno::Reference< css::ui::XUIConfigurationManager > xUIManager = xUISupplier->getUIConfigurationManager(sModule); + xAccCfg = css::uno::Reference< css::ui::XAcceleratorConfiguration >(xUIManager->getShortCutManager(), css::uno::UNO_QUERY_THROW); + } + catch(const css::container::NoSuchElementException&) + {} return xAccCfg; } @@ -577,7 +568,7 @@ IMPL_LINK(AsyncAccelExec, impl_ts_asyncCallback, void*,) } catch(const css::lang::DisposedException&) {} - catch(const css::uno::RuntimeException&) + catch(const css::uno::RuntimeException& ) { throw; } catch(const css::uno::Exception&) {} diff --git a/svtools/source/misc/documentlockfile.cxx b/svtools/source/misc/documentlockfile.cxx index 71b541cfe894..990f1ba58d73 100644 --- a/svtools/source/misc/documentlockfile.cxx +++ b/svtools/source/misc/documentlockfile.cxx @@ -202,7 +202,7 @@ sal_Bool DocumentLockFile::OverwriteOwnLockFile() WriteEntryToStream( aNewEntry, xOutput ); xOutput->closeOutput(); } - catch( ucb::NameClashException& ) + catch( uno::Exception& ) { return sal_False; } diff --git a/svtools/source/misc/errtxt.src b/svtools/source/misc/errtxt.src index 72b575f96f43..033ecefc10e7 100644 --- a/svtools/source/misc/errtxt.src +++ b/svtools/source/misc/errtxt.src @@ -503,6 +503,10 @@ Resource RID_ERRHDL { Text [ en-US ] = "Function not possible: write protected." ; }; + String ERRCODE_SFX_SHARED_NOPASSWORDCHANGE + { + Text [ en-US ] = "The password of a shared spreadsheet cannot be set or changed.\nDeactivate sharing mode first."; + }; }; // eof ------------------------------------------------------------------------ diff --git a/svtools/source/misc1/adrparse.cxx b/svtools/source/misc1/adrparse.cxx index d9b389513f80..37c25d6c669f 100644 --- a/svtools/source/misc1/adrparse.cxx +++ b/svtools/source/misc1/adrparse.cxx @@ -172,8 +172,8 @@ inline void SvAddressParser_Impl::addTokenToRealName() if (!m_pRealNameBegin) m_pRealNameBegin = m_pRealNameContentBegin = m_pCurTokenBegin; else if (m_pRealNameEnd < m_pCurTokenBegin - 1 - || m_pRealNameEnd == m_pCurTokenBegin - 1 - && *m_pRealNameEnd != ' ') + || (m_pRealNameEnd == m_pCurTokenBegin - 1 + && *m_pRealNameEnd != ' ')) m_bRealNameReparse = true; m_pRealNameEnd = m_pRealNameContentEnd = m_pCurTokenEnd; } @@ -634,8 +634,8 @@ SvAddressParser_Impl::SvAddressParser_Impl(SvAddressParser * pParser, else { m_pAddrSpec = m_aInnerAddrSpec.isValid() - || !m_aOuterAddrSpec.isValid() - && m_aInnerAddrSpec.isPoorlyValid() ? + || (!m_aOuterAddrSpec.isValid() + && m_aInnerAddrSpec.isPoorlyValid()) ? &m_aInnerAddrSpec : m_aOuterAddrSpec.isPoorlyValid() ? &m_aOuterAddrSpec : 0; @@ -663,11 +663,11 @@ SvAddressParser_Impl::SvAddressParser_Impl(SvAddressParser * pParser, } UniString aTheRealName; if (!m_pRealNameBegin - || m_pAddrSpec == &m_aOuterAddrSpec + || (m_pAddrSpec == &m_aOuterAddrSpec && m_pRealNameBegin == m_aOuterAddrSpec.m_pBegin && m_pRealNameEnd == m_aOuterAddrSpec.m_pEnd - && m_pFirstCommentBegin) + && m_pFirstCommentBegin)) if (!m_pFirstCommentBegin) aTheRealName = aTheAddrSpec; else if (m_bFirstCommentReparse) @@ -820,7 +820,7 @@ bool SvAddressParser::createRFC822Mailbox(String const & rPhrase, return false; if (*p == '"') break; - if (*p == '\x0D' || *p == '\\' && ++p == pEnd + if (*p == '\x0D' || (*p == '\\' && ++p == pEnd) || !INetMIME::isUSASCII(*p)) return false; if (INetMIME::needsQuotedStringEscape(*p)) @@ -868,7 +868,7 @@ bool SvAddressParser::createRFC822Mailbox(String const & rPhrase, return false; if (*p == ']') break; - if (*p == '\x0D' || *p == '[' || *p == '\\' && ++p == pEnd + if (*p == '\x0D' || *p == '[' || (*p == '\\' && ++p == pEnd) || !INetMIME::isUSASCII(*p)) return false; if (*p >= '[' && *p <= ']') diff --git a/svtools/source/misc1/docmspasswdrequest.cxx b/svtools/source/misc1/docmspasswdrequest.cxx new file mode 100644 index 000000000000..e892d3a57d1a --- /dev/null +++ b/svtools/source/misc1/docmspasswdrequest.cxx @@ -0,0 +1,143 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright IBM Corporation 2009. + * Copyright 2009 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: docmspasswdrequest.cxx,v $ + * $Revision: 1.0 $ + * + * 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_svtools.hxx" + +#include "docmspasswdrequest.hxx" +#include <com/sun/star/task/XInteractionAbort.hpp> +#include <com/sun/star/task/XInteractionPassword.hpp> + +//========================================================================== + +class MSAbortContinuation : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionAbort > +{ + sal_Bool mbSelected; + +public: + MSAbortContinuation() : mbSelected( sal_False ) {} + + sal_Bool isSelected() { return mbSelected; } + + void reset() { mbSelected = sal_False; } + + virtual void SAL_CALL select() throw(::com::sun::star::uno::RuntimeException) { mbSelected = sal_True; } +}; + +//========================================================================== + +class MSPasswordContinuation : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionPassword > +{ + sal_Bool mbSelected; + ::rtl::OUString maPassword; + +public: + MSPasswordContinuation() : mbSelected( sal_False ) {} + + sal_Bool isSelected() { return mbSelected; } + + void reset() { mbSelected = sal_False; } + + virtual void SAL_CALL select() throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setPassword( const ::rtl::OUString& aPass ) throw (::com::sun::star::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getPassword( ) throw (::com::sun::star::uno::RuntimeException); +}; + +void SAL_CALL MSPasswordContinuation::select() + throw(::com::sun::star::uno::RuntimeException) +{ + mbSelected = sal_True; +} + +void SAL_CALL MSPasswordContinuation::setPassword( const ::rtl::OUString& aPass ) + throw (::com::sun::star::uno::RuntimeException) +{ + maPassword = aPass; +} + +::rtl::OUString SAL_CALL MSPasswordContinuation::getPassword() + throw (::com::sun::star::uno::RuntimeException) +{ + return maPassword; +} + +//========================================================================== + +RequestMSDocumentPassword::RequestMSDocumentPassword( ::com::sun::star::task::PasswordRequestMode nMode, ::rtl::OUString aName ) +{ + ::rtl::OUString temp; + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > temp2; + ::com::sun::star::task::DocumentMSPasswordRequest + aDocumentMSPasswordRequest( temp, + temp2, + ::com::sun::star::task::InteractionClassification_QUERY, + nMode, + aName ); + + m_aRequest <<= aDocumentMSPasswordRequest; + + m_pAbort = new MSAbortContinuation; + m_pPassword = new MSPasswordContinuation; + + m_lContinuations.realloc( 2 ); + m_lContinuations[0] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pAbort ); + m_lContinuations[1] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pPassword ); +} + +sal_Bool RequestMSDocumentPassword::isAbort() +{ + return m_pAbort->isSelected(); +} + +sal_Bool RequestMSDocumentPassword::isPassword() +{ + return m_pPassword->isSelected(); +} + +::rtl::OUString RequestMSDocumentPassword::getPassword() +{ + return m_pPassword->getPassword(); +} + +::com::sun::star::uno::Any SAL_CALL RequestMSDocumentPassword::getRequest() + throw( ::com::sun::star::uno::RuntimeException ) +{ + return m_aRequest; +} + +::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > > + SAL_CALL RequestMSDocumentPassword::getContinuations() + throw( ::com::sun::star::uno::RuntimeException ) +{ + return m_lContinuations; +} + + diff --git a/svtools/source/misc1/makefile.mk b/svtools/source/misc1/makefile.mk index 0d1e67fd9021..3ca57ff36f92 100644 --- a/svtools/source/misc1/makefile.mk +++ b/svtools/source/misc1/makefile.mk @@ -50,6 +50,7 @@ SLOFILES=\ $(EXCEPTIONSFILES) \ $(SLO)$/adrparse.obj \ $(SLO)$/docpasswdrequest.obj \ + $(SLO)$/docmspasswdrequest.obj \ $(SLO)$/filenotation.obj \ $(SLO)$/inethist.obj \ $(SLO)$/inettype.obj \ diff --git a/svtools/source/numbers/numfmuno.cxx b/svtools/source/numbers/numfmuno.cxx index 5d9c88ec8760..7417367ec124 100644 --- a/svtools/source/numbers/numfmuno.cxx +++ b/svtools/source/numbers/numfmuno.cxx @@ -83,9 +83,9 @@ using namespace com::sun::star; // alles ohne Which-ID, Map nur fuer PropertySetInfo -const SfxItemPropertyMap* lcl_GetNumberFormatPropertyMap() +const SfxItemPropertyMapEntry* lcl_GetNumberFormatPropertyMap() { - static SfxItemPropertyMap aNumberFormatPropertyMap_Impl[] = + static SfxItemPropertyMapEntry aNumberFormatPropertyMap_Impl[] = { {MAP_CHAR_LEN(PROPERTYNAME_FMTSTR), 0, &getCppuType((rtl::OUString*)0),beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY, 0}, {MAP_CHAR_LEN(PROPERTYNAME_LOCALE), 0, &getCppuType((lang::Locale*)0),beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY, 0}, @@ -105,9 +105,9 @@ const SfxItemPropertyMap* lcl_GetNumberFormatPropertyMap() return aNumberFormatPropertyMap_Impl; } -const SfxItemPropertyMap* lcl_GetNumberSettingsPropertyMap() +const SfxItemPropertyMapEntry* lcl_GetNumberSettingsPropertyMap() { - static SfxItemPropertyMap aNumberSettingsPropertyMap_Impl[] = + static SfxItemPropertyMapEntry aNumberSettingsPropertyMap_Impl[] = { {MAP_CHAR_LEN(PROPERTYNAME_NOZERO), 0, &getBooleanCppuType(), beans::PropertyAttribute::BOUND, 0}, {MAP_CHAR_LEN(PROPERTYNAME_NULLDATE), 0, &getCppuType((util::Date*)0), beans::PropertyAttribute::BOUND, 0}, diff --git a/svtools/source/svhtml/htmlkey2.cxx b/svtools/source/svhtml/htmlkey2.cxx deleted file mode 100644 index 10820f7feba3..000000000000 --- a/svtools/source/svhtml/htmlkey2.cxx +++ /dev/null @@ -1,830 +0,0 @@ -/************************************************************************* - * - * 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: htmlkey2.cxx,v $ - * $Revision: 1.9 $ - * - * 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_svtools.hxx" - -#include "htmlkywd.hxx" - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_doctype32, - "HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\"" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_doctype40, - "HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"" ); - - -// diese werden nur eingeschaltet -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_area, "AREA" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_base, "BASE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_comment, "!--" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_doctype, "!DOCTYPE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_embed, "EMBED" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_figureoverlay, "OVERLAY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_horzrule, "HR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_horztab, "TAB" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_image, "IMG" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_image2, "IMAGE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_input, "INPUT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_isindex, "ISINDEX" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_linebreak, "BR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_li, "LI" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_link, "LINK" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_meta, "META" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_nextid, "NEXTID" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_nobr, "NOBR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_of, "OF" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_option, "OPTION" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_param, "PARAM" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_range, "RANGE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_spacer, "SPACER" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_wbr, "WBR" ); - -// diese werden wieder abgeschaltet -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_abbreviation, "ABBREV" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_above, "ABOVE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_acronym, "ACRONYM" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_address, "ADDRESS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_anchor, "A" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_applet, "APPLET" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_array, "ARRAY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_author, "AU" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_banner, "BANNER" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_bar, "BAR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_basefont, "BASEFONT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_below, "BELOW" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_bigprint, "BIG" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_blink, "BLINK" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_blockquote, "BLOCKQUOTE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_blockquote30, "BQ" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_body, "BODY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_bold, "B" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_boldtext, "BT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_box, "BOX" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_caption, "CAPTION" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_center, "CENTER" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_citiation, "CITE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_code, "CODE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_col, "COL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_colgroup, "COLGROUP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_credit, "CREDIT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_dd, "DD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_deflist, "DL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_deletedtext, "DEL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_dirlist, "DIR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_division, "DIV" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_dot, "DOT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_doubledot, "DDOT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_dt, "DT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_emphasis, "EM" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_figure, "FIG" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_font, "FONT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_footnote, "FN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_form, "FORM" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_frame, "FRAME" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_frameset, "FRAMESET" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_hat, "HAT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_head1, "H1" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_head2, "H2" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_head3, "H3" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_head4, "H4" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_head5, "H5" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_head6, "H6" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_head, "HEAD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_html, "HTML" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_iframe, "IFRAME" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_ilayer, "ILAYER" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_insertedtext, "INS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_italic, "I" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_item, "ITEM" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_keyboard, "KBD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_language, "LANG" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_layer, "LAYER" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_listheader, "LH" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_map, "MAP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_math, "MATH" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_menulist, "MENU" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_multicol, "MULTICOL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_noembed, "NOEMBED" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_noframe, "NOFRAME" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_noframes, "NOFRAMES" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_noscript, "NOSCRIPT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_note, "NOTE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_object, "OBJECT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_orderlist, "OL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_parabreak, "P" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_person, "PERSON" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_plaintext, "T" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_preformtxt, "PRE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_root, "ROOT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_row, "ROW" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_sample, "SAMP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_script, "SCRIPT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_select, "SELECT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_shortquote, "Q" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_smallprint, "SMALL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_span, "SPAN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_squareroot, "AQRT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_strikethrough, "S" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_strong, "STRONG" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_style, "STYLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_subscript, "SUB" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_superscript, "SUP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_table, "TABLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_tablerow, "TR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_tabledata, "TD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_tableheader, "TH" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_tbody, "TBODY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_teletype, "TT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_text, "TEXT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_textarea, "TEXTAREA" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_textflow, "TEXTFLOW" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_tfoot, "TFOOT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_thead, "THEAD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_tilde, "TILDE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_title, "TITLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_underline, "U" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_unorderlist, "UL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_variable, "VAR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_vector, "VEC" ); - -// obsolete features -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_xmp, "XMP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_listing, "LISTING" ); - -// proposed features -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_definstance, "DFN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_strike, "STRIKE" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_bgsound, "BGSOUND" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_comment2, "COMMENT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_marquee, "MARQUEE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_plaintext2, "PLAINTEXT" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_sdfield, "SDFIELD" ); - -// die Namen fuer alle Zeichen -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_lt, "lt" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_gt, "gt" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_amp, "amp" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_quot, "quot" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Aacute, "Aacute" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Agrave, "Agrave" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Acirc, "Acirc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Atilde, "Atilde" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Aring, "Aring" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Auml, "Auml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_AElig, "AElig" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Ccedil, "Ccedil" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Eacute, "Eacute" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Egrave, "Egrave" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Ecirc, "Ecirc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Euml, "Euml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Iacute, "Iacute" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Igrave, "Igrave" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Icirc, "Icirc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Iuml, "Iuml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_ETH, "ETH" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Ntilde, "Ntilde" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Oacute, "Oacute" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Ograve, "Ograve" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Ocirc, "Ocirc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Otilde, "Otilde" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Ouml, "Ouml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Oslash, "Oslash" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Uacute, "Uacute" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Ugrave, "Ugrave" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Ucirc, "Ucirc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Uuml, "Uuml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_Yacute, "Yacute" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_THORN, "THORN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_szlig, "szlig" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_aacute, "aacute" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_agrave, "agrave" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_acirc, "acirc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_atilde, "atilde" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_aring, "aring" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_auml, "auml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_aelig, "aelig" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ccedil, "ccedil" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_eacute, "eacute" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_egrave, "egrave" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ecirc, "ecirc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_euml, "euml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_iacute, "iacute" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_igrave, "igrave" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_icirc, "icirc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_iuml, "iuml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_eth, "eth" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ntilde, "ntilde" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_oacute, "oacute" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ograve, "ograve" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ocirc, "ocirc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_otilde, "otilde" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ouml, "ouml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_oslash, "oslash" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_uacute, "uacute" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ugrave, "ugrave" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ucirc, "ucirc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_uuml, "uuml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_yacute, "yacute" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_thorn, "thorn" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_yuml, "yuml" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_acute, "acute" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_brvbar, "brvbar" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_cedil, "cedil" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_cent, "cent" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_copy, "copy" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_curren, "curren" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_deg, "deg" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_divide, "divide" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_frac12, "frac12" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_frac14, "frac14" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_frac34, "frac34" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_iexcl, "iexcl" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_iquest, "iquest" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_laquo, "laquo" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_macr, "macr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_micro, "micro" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_middot, "middot" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_nbsp, "nbsp" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_not, "not" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ordf, "ordf" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ordm, "ordm" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_para, "para" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_plusmn, "plusmn" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_pound, "pound" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_raquo, "raquo" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_reg, "reg" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sect, "sect" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_shy, "shy" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sup1, "sup1" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sup2, "sup2" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sup3, "sup3" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_times, "times" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_uml, "uml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_yen, "yen" ); - -// Netscape kennt noch ein paar in Grossbuchstaben ... -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_LT, "LT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_GT, "GT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_AMP, "AMP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_C_QUOT, "QUOT" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_COPY, "COPY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_REG, "REG" ); - -// HTML4 -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_alefsym, "alefsym" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Alpha, "Alpha" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_alpha, "alpha" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_and, "and" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ang, "ang" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_asymp, "asymp" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_bdquo, "bdquo" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Beta, "Beta" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_beta, "beta" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_bull, "bull" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_cap, "cap" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_chi, "chi" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Chi, "Chi" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_circ, "circ" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_clubs, "clubs" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_cong, "cong" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_crarr, "crarr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_cup, "cup" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_dagger, "dagger" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Dagger, "Dagger" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_darr, "darr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_dArr, "dArr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Delta, "Delta" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_delta, "delta" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_diams, "diams" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_empty, "empty" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_emsp, "emsp" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ensp, "ensp" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Epsilon, "Epsilon" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_epsilon, "epsilon" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_equiv, "equiv" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Eta, "Eta" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_eta, "eta" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_euro, "euro" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_exist, "exist" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_fnof, "fnof" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_forall, "forall" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_frasl, "frasl" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Gamma, "Gamma" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_gamma, "gamma" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ge, "ge" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_harr, "harr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_hArr, "hArr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_hearts, "hearts" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_hellip, "hellip" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_image, "image" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_infin, "infin" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_int, "int" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Iota, "Iota" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_iota, "iota" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_isin, "isin" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Kappa, "Kappa" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_kappa, "kappa" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Lambda, "Lambda" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_lambda, "lambda" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_lang, "lang" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_larr, "larr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_lArr, "lArr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_lceil, "lceil" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ldquo, "ldquo" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_le, "le" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_lfloor, "lfloor" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_lowast, "lowast" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_loz, "loz" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_lrm, "lrm" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_lsaquo, "lsaquo" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_lsquo, "lsquo" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_mdash, "mdash" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_minus, "minus" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Mu, "Mu" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_mu, "mu" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_nabla, "nabla" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ndash, "ndash" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ne, "ne" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_ni, "ni" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_notin, "notin" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_nsub, "nsub" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Nu, "Nu" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_nu, "nu" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_OElig, "OElig" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_oelig, "oelig" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_oline, "oline" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Omega, "Omega" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_omega, "omega" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Omicron, "Omicron" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_omicron, "omicron" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_oplus, "oplus" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_or, "or" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_otimes, "otimes" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_part, "part" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_permil, "permil" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_perp, "perp" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Phi, "Phi" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_phi, "phi" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Pi, "Pi" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_pi, "pi" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_piv, "piv" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_prime, "prime" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Prime, "Prime" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_prod, "prod" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_prop, "prop" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Psi, "Psi" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_psi, "psi" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_radic, "radic" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_rang, "rang" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_rarr, "rarr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_rArr, "rArr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_rceil, "rceil" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_rdquo, "rdquo" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_real, "real" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_rfloor, "rfloor" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Rho, "Rho" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_rho, "rho" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_rlm, "rlm" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_rsaquo, "rsaquo" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_rsquo, "rsquo" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sbquo, "sbquo" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Scaron, "Scaron" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_scaron, "scaron" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sdot, "sdot" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Sigma, "Sigma" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sigma, "sigma" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sigmaf, "sigmaf" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sim, "sim" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_spades, "spades" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sub, "sub" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sube, "sube" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sum, "sum" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_sup, "sup" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_supe, "supe" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Tau, "Tau" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_tau, "tau" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_there4, "there4" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Theta, "Theta" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_theta, "theta" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_thetasym, "thetasym" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_thinsp, "thinsp" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_tilde, "tilde" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_trade, "trade" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_uarr, "uarr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_uArr, "uArr" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_upsih, "upsih" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Upsilon, "Upsilon" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_upsilon, "upsilon" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_weierp, "weierp" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Xi, "Xi" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_xi, "xi" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Yuml, "Yuml" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_Zeta, "Zeta" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_zeta, "zeta" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_zwj, "zwj" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_S_zwnj, "zwnj" ); - -// HTML Attribut-Token (=Optionen) - -// Attribute ohne Wert -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_box, "BOX" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_checked, "CHECKED" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_compact, "COMPACT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_continue, "CONTINUE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_controls, "CONTROLS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_declare, "DECLARE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_disabled, "DISABLED" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_folded, "FOLDED" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_ismap, "ISMAP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_mayscript, "MAYSCRIPT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_multiple, "MULTIPLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_noflow, "NOFLOW" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_nohref, "NOHREF" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_noresize, "NORESIZE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_noshade, "NOSHADE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_nowrap, "NOWRAP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_plain, "PLAIN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_sdfixed, "SDFIXED" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_selected, "SELECTED" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_shapes, "SHAPES" ); - -// Attribute mit einem String als Wert -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_above, "ABOVE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_accesskey, "ACCESSKEY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_accept, "ACCEPT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_add_date, "ADD_DATE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_alt, "ALT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_axes, "AXES" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_axis, "AXIS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_below, "BELOW" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_char, "CHAR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_class, "CLASS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_clip, "CLIP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_code, "CODE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_codetype, "CODETYPE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_colspec, "COLSPEC" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_content, "CONTENT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_coords, "COORDS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_dp, "DP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_enctype, "ENCTYPE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_error, "ERROR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_face, "FACE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_frameborder, "FRAMEBORDER" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_httpequiv, "HTTP-EQUIV" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_language, "LANGUAGE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_last_modified, "LAST_MODIFIED" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_last_visit, "LAST_VISIT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_md, "MD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_n, "N" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_name, "NAME" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_notation, "NOTATION" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_prompt, "PROMPT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_shape, "SHAPE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_standby, "STANDBY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_style, "STYLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_title, "TITLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_value, "VALUE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDval, "SDVAL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDnum, "SDNUM" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_sdlibrary, "SDLIBRARY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_sdmodule, "SDMODULE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_sdevent, "SDEVENT-" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_sdaddparam, "SDADDPARAM-" ); - -// Attribute mit einem SGML-Identifier als Wert -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_from, "FROM" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_id, "ID" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_target, "TARGET" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_to, "TO" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_until, "UNTIL" ); - -// Attribute mit einem URI als Wert -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_action, "ACTION" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_archive, "ARCHIVE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_background, "BACKGROUND" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_classid, "CLASSID" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_codebase, "CODEBASE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_data, "DATA" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_dynsrc, "DYNSRC" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_dynsync, "DYNSYNC" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_imagemap, "IMAGEMAP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_href, "HREF" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_lowsrc, "LOWSRC" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_script, "SCRIPT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_src, "SRC" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_usemap, "USEMAP" ); - -// Attribute mit Entity-Namen als Wert -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_dingbat, "DINGBAT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_sym, "SYM" ); - -// Attribute mit einer Farbe als Wert (alle Netscape) -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_alink, "ALINK" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_bgcolor, "BGCOLOR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_bordercolor, "BORDERCOLOR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_bordercolorlight, "BORDERCOLORLIGHT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_bordercolordark, "BORDERCOLORDARK" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_color, "COLOR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_link, "LINK" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_text, "TEXT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_vlink, "VLINK" ); - -// Attribute mit einem numerischen Wert -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_border, "BORDER" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_cellspacing, "CELLSPACING" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_cellpadding, "CELLPADDING" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_charoff, "CHAROFF" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_colspan, "COLSPAN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_framespacing, "FRAMESPACING" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_gutter, "GUTTER" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_indent, "INDENT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_height, "HEIGHT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_hspace, "HSPACE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_left, "LEFT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_leftmargin, "LEFTMARGIN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_loop, "LOOP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_marginheight, "MARGINHEIGHT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_marginwidth, "MARGINWIDTH" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_max, "MAX" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_maxlength, "MAXLENGTH" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_min, "MIN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_pagex, "PAGEX" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_pagey, "PAGEY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_pointsize, "POINT-SIZE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_rowspan, "ROWSPAN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_scrollamount, "SCROLLAMOUNT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_scrolldelay, "SCROLLDELAY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_seqnum, "SEQNUM" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_skip, "SKIP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_span, "SPAN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_tabindex, "TABINDEX" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_top, "TOP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_topmargin, "TOPMARGIN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_vspace, "VSPACE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_weight, "WEIGHT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_width, "WIDTH" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_x, "X" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_y, "Y" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_zindex, "Z-INDEX" ); - -// Attribute mit Enum-Werten -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_behavior, "BEHAVIOR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_bgproperties, "BGPROPERTIES" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_clear, "CLEAR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_dir, "DIR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_direction, "DIRECTION" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_format, "FORMAT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_frame, "FRAME" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_lang, "LANG" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_method, "METHOD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_palette, "PALETTE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_rel, "REL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_rev, "REV" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_rules, "RULES" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_scrolling, "SCROLLING" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_sdreadonly, "READONLY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_subtype, "SUBTYPE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_type, "TYPE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_valign, "VALIGN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_valuetype, "VALUETYPE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_visibility, "VISIBILITY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_wrap, "WRAP" ); - -// Attribute mit Script-Code als Wert -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onblur, "ONBLUR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onchange, "ONCHANGE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onclick, "ONCLICK" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onfocus, "ONFOCUS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onload, "ONLOAD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onmouseover, "ONMOUSEOVER" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onreset, "ONRESET" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onselect, "ONSELECT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onsubmit, "ONSUBMIT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onunload, "ONUNLOAD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onabort, "ONABORT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onerror, "ONERROR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_onmouseout, "ONMOUSEOUT" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonblur, "SDONBLUR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonchange, "SDONCHANGE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonclick, "SDONCLICK" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonfocus, "SDONFOCUS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonload, "SDONLOAD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonmouseover, "SDONMOUSEOVER" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonreset, "SDONRESET" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonselect, "SDONSELECT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonsubmit, "SDONSUBMIT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonunload, "SDONUNLOAD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonabort, "SDONABORT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonerror, "SDONERROR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_SDonmouseout, "SDONMOUSEOUT" ); - -// Attribute mit Kontext-abhaengigen Werten -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_align, "ALIGN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_cols, "COLS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_rows, "ROWS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_start, "START" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_size, "SIZE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_O_units, "UNITS" ); - - -// Werte von <INPUT TYPE=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_text, "TEXT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_password, "PASSWORD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_checkbox, "CHECKBOX" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_radio, "RADIO" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_range, "RANGE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_scribble, "SCRIBBLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_file, "FILE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_hidden, "HIDDEN" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_submit, "SUBMIT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_image, "IMAGE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_reset, "RESET" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_IT_button, "BUTTON" ); - -// Werte von <TABLE FRAME=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TF_void, "VOID" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TF_above, "ABOVE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TF_below, "BELOW" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TF_hsides, "HSIDES" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TF_lhs, "LHS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TF_rhs, "RHS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TF_vsides, "VSIDES" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TF_box, "BOX" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TF_border, "BORDER" ); - -// Werte von <TABLE RULES=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TR_none, "NONE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TR_groups, "GROUPS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TR_rows, "ROWS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TR_cols, "COLS" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_TR_all, "ALL" ); - -// Werte von <P, H?, TR, TH, TD ALIGN=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_AL_left, "LEFT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_AL_center, "CENTER" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_AL_middle, "MIDDLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_AL_right, "RIGHT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_AL_justify, "JUSTIFY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_AL_char, "CHAR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_AL_all, "ALL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_AL_none, "NONE" ); - -// Werte von <TR VALIGN=...>, <IMG ALIGN=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_VA_top, "TOP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_VA_middle, "MIDDLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_VA_bottom, "BOTTOM" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_VA_baseline, "BASELINE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_VA_texttop, "TEXTTOP" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_VA_absmiddle, "ABSMIDDLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_VA_absbottom, "ABSBOTTOM" ); - -// Werte von <AREA SHAPE=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SH_rect, "RECT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SH_rectangle, "RECTANGLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SH_circ, "CIRC" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SH_circle, "CIRCLE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SH_poly, "POLY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SH_polygon, "POLYGON" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SH_default, "DEFAULT" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_LG_starbasic, "STARBASIC" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_LG_javascript, "JAVASCRIPT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_LG_javascript11, "JAVASCRIPT1.1" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_LG_livescript, "LIVESCRIPT" ); -//sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_LG_vbscript, "VBSCRIPT" ); -//sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_LG_unused_javascript, "UNUSED JAVASCRIPT" ); -//sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_LG_starone, "StarScript" ); - -// ein par Werte fuer unser StarBASIC-Support -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SB_library, "$LIBRARY:" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SB_module, "$MODULE:" ); - - -// Werte von <FORM METHOD=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_METHOD_get, "GET" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_METHOD_post, "POST" ); - -// Werte von <META CONTENT/HTTP-EQUIV=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_refresh, "REFRESH" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_generator, "GENERATOR" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_author, "AUTHOR" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_classification, "CLASSIFICATION" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_description, "DESCRIPTION" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_keywords, "KEYWORDS" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_changed, "CHANGED" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_changedby, "CHANGEDBY" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_created, "CREATED" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_content_type, "CONTENT-TYPE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_content_script_type, "CONTENT-SCRIPT-TYPE" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_sdendnote, "SDENDNOTE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_META_sdfootnote, "SDFOOTNOTE" ); - -// Werte von <UL TYPE=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_ULTYPE_disc, "DISC" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_ULTYPE_square, "SQUARE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_ULTYPE_circle, "CIRCLE" ); - -// Werte von <FRAMESET SCROLLING=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SCROLL_yes, "YES" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SCROLL_no, "NO" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SCROLL_auto, "AUTO" ); - -// Werte von <MULTICOL TYPE=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_MCTYPE_horizontal, "HORIZONTAL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_MCTYPE_vertical, "VERTICAL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_MCTYPE_box, "BOX" ); - -// Werte von <MARQUEE BEHAVIOUR=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_BEHAV_scroll, "SCROLL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_BEHAV_slide, "SLIDE" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_BEHAV_alternate, "ALTERNATE" ); - -// Werte von <MARQUEE LOOP=...> -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_LOOP_infinite, "INFINITE" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SPTYPE_block, "BLOCK" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SPTYPE_horizontal, "HORIZONTAL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_SPTYPE_vertical, "VERTICAL" ); - - -// interne Grafik-Namen -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_private_image, "private:image/" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_internal_gopher, "internal-gopher-" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_internal_icon, "internal-icon-" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_GOPHER_binary, "binary" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_GOPHER_image, "image" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_GOPHER_index, "index" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_GOPHER_menu, "menu" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_GOPHER_movie, "movie" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_GOPHER_sound, "sound" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_GOPHER_telnet, "telnet" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_GOPHER_text, "text" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_GOPHER_unknown, "unknown" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_ICON_baddata, "baddata" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_ICON_delayed, "delayed" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_ICON_embed, "embed" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_ICON_insecure, "insecure" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_INT_ICON_notfound, "notfound" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_sdendnote, "sdendnote" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_sdendnote_anc, "sdendnoteanc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_sdendnote_sym, "sdendnotesym" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_sdfootnote, "sdfootnote" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_sdfootnote_anc, "sdfootnoteanc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_sdfootnote_sym, "sdfootnotesym" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_FTN_anchor, "anc" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_FTN_symbol, "sym" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_WW_off, "OFF" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_WW_hard, "HARD" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_WW_soft, "SOFT" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_WW_virtual, "VIRTUAL" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_WW_physical, "PHYSICAL" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_on, "on" ); - -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_ET_url, "application/x-www-form-urlencoded" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_ET_multipart, "multipart/form-data" ); -sal_Char const SVTOOLS_CONSTASCII_DEF( sHTML_ET_text, "text/plain" ); diff --git a/svtools/source/svhtml/htmlkywd.cxx b/svtools/source/svhtml/htmlkywd.cxx index 12077840167c..052b10d2c564 100644 --- a/svtools/source/svhtml/htmlkywd.cxx +++ b/svtools/source/svhtml/htmlkywd.cxx @@ -51,301 +51,154 @@ struct HTML_TokenEntry int nToken; }; -// die Farbnamen werden nicht exportiert -// Sie stammen aus "http://www.uio.no/~mnbjerke/colors_w.html" -// und scheinen im Gegensatz zu denen aus -// "http://www.infi.net/wwwimages/colorindex.html" -// zu stimmen -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_aliceblue, "ALICEBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_antiquewhite, "ANTIQUEWHITE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_aqua, "AQUA" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_aquamarine, "AQUAMARINE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_azure, "AZURE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_beige, "BEIGE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_bisque, "BISQUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_black, "BLACK" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_blanchedalmond, "BLANCHEDALMOND" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_blue, "BLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_blueviolet, "BLUEVIOLET" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_brown, "BROWN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_burlywood, "BURLYWOOD" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_cadetblue, "CADETBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_chartreuse, "CHARTREUSE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_chocolate, "CHOCOLATE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_coral, "CORAL" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_cornflowerblue, "CORNFLOWERBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_cornsilk, "CORNSILK" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_crimson, "CRIMSON" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_cyan, "CYAN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkblue, "DARKBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkcyan, "DARKCYAN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkgoldenrod, "DARKGOLDENROD" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkgray, "DARKGRAY" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkgreen, "DARKGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkkhaki, "DARKKHAKI" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkmagenta, "DARKMAGENTA" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkolivegreen, "DARKOLIVEGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkorange, "DARKORANGE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkorchid, "DARKORCHID" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkred, "DARKRED" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darksalmon, "DARKSALMON" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkseagreen, "DARKSEAGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkslateblue, "DARKSLATEBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkslategray, "DARKSLATEGRAY" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkturquoise, "DARKTURQUOISE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_darkviolet, "DARKVIOLET" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_deeppink, "DEEPPINK" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_deepskyblue, "DEEPSKYBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_dimgray, "DIMGRAY" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_dodgerblue, "DODGERBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_firebrick, "FIREBRICK" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_floralwhite, "FLORALWHITE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_forestgreen, "FORESTGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_fuchsia, "FUCHSIA" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_gainsboro, "GAINSBORO" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_ghostwhite, "GHOSTWHITE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_gold, "GOLD" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_goldenrod, "GOLDENROD" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_gray, "GRAY" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_green, "GREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_greenyellow, "GREENYELLOW" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_honeydew, "HONEYDEW" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_hotpink, "HOTPINK" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_indianred, "INDIANRED" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_indigo, "INDIGO" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_ivory, "IVORY" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_khaki, "KHAKI" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lavender, "LAVENDER" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lavenderblush, "LAVENDERBLUSH" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lawngreen, "LAWNGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lemonchiffon, "LEMONCHIFFON" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightblue, "LIGHTBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightcoral, "LIGHTCORAL" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightcyan, "LIGHTCYAN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightgoldenrodyellow, "LIGHTGOLDENRODYELLOW" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightgreen, "LIGHTGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightgrey, "LIGHTGREY" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightpink, "LIGHTPINK" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightsalmon, "LIGHTSALMON" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightseagreen, "LIGHTSEAGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightskyblue, "LIGHTSKYBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightslategray, "LIGHTSLATEGRAY" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightsteelblue, "LIGHTSTEELBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lightyellow, "LIGHTYELLOW" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_lime, "LIME" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_limegreen, "LIMEGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_linen, "LINEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_magenta, "MAGENTA" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_maroon, "MAROON" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_mediumaquamarine, "MEDIUMAQUAMARINE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_mediumblue, "MEDIUMBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_mediumorchid, "MEDIUMORCHID" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_mediumpurple, "MEDIUMPURPLE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_mediumseagreen, "MEDIUMSEAGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_mediumslateblue, "MEDIUMSLATEBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_mediumspringgreen, "MEDIUMSPRINGGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_mediumturquoise, "MEDIUMTURQUOISE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_mediumvioletred, "MEDIUMVIOLETRED" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_midnightblue, "MIDNIGHTBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_mintcream, "MINTCREAM" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_mistyrose, "MISTYROSE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_moccasin, "MOCCASIN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_navajowhite, "NAVAJOWHITE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_navy, "NAVY" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_oldlace, "OLDLACE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_olive, "OLIVE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_olivedrab, "OLIVEDRAB" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_orange, "ORANGE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_orangered, "ORANGERED" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_orchid, "ORCHID" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_palegoldenrod, "PALEGOLDENROD" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_palegreen, "PALEGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_paleturquoise, "PALETURQUOISE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_palevioletred, "PALEVIOLETRED" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_papayawhip, "PAPAYAWHIP" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_peachpuff, "PEACHPUFF" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_peru, "PERU" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_pink, "PINK" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_plum, "PLUM" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_powderblue, "POWDERBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_purple, "PURPLE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_red, "RED" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_rosybrown, "ROSYBROWN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_royalblue, "ROYALBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_saddlebrown, "SADDLEBROWN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_salmon, "SALMON" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_sandybrown, "SANDYBROWN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_seagreen, "SEAGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_seashell, "SEASHELL" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_sienna, "SIENNA" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_silver, "SILVER" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_skyblue, "SKYBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_slateblue, "SLATEBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_slategray, "SLATEGRAY" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_snow, "SNOW" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_springgreen, "SPRINGGREEN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_steelblue, "STEELBLUE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_tan, "TAN" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_teal, "TEAL" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_thistle, "THISTLE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_tomato, "TOMATO" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_turquoise, "TURQUOISE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_violet, "VIOLET" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_wheat, "WHEAT" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_white, "WHITE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_whitesmoke, "WHITESMOKE" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_yellow, "YELLOW" ); -sal_Char __READONLY_DATA SVTOOLS_CONSTASCII_DEF( sHTML_COL_yellowgreen, "YELLOWGREEN" ); - - // Flag: RTF-Token Tabelle wurde schon sortiert static int __FAR_DATA bSortKeyWords = FALSE; static HTML_TokenEntry __FAR_DATA aHTMLTokenTab[] = { - {{sHTML_area}, HTML_AREA}, // Netscape 2.0 - {{sHTML_base}, HTML_BASE}, // HTML 3.0 - {{sHTML_comment}, HTML_COMMENT}, - {{sHTML_doctype}, HTML_DOCTYPE}, - {{sHTML_embed}, HTML_EMBED}, // Netscape 2.0 - {{sHTML_figureoverlay}, HTML_FIGUREOVERLAY}, // HTML 3.0 - {{sHTML_horzrule}, HTML_HORZRULE}, - {{sHTML_horztab}, HTML_HORZTAB}, // HTML 3.0 - {{sHTML_image}, HTML_IMAGE}, - {{sHTML_image2}, HTML_IMAGE}, - {{sHTML_input}, HTML_INPUT}, - {{sHTML_isindex}, HTML_ISINDEX}, // HTML 3.0 - {{sHTML_li}, HTML_LI_ON}, - {{sHTML_linebreak}, HTML_LINEBREAK}, - {{sHTML_link}, HTML_LINK}, // HTML 3.0 - {{sHTML_meta}, HTML_META}, // HTML 3.0 - {{sHTML_nextid}, HTML_NEXTID}, // HTML 3.0 - {{sHTML_of}, HTML_OF}, // HTML 3.0 - {{sHTML_option}, HTML_OPTION}, - {{sHTML_param}, HTML_PARAM}, // HotJava - {{sHTML_range}, HTML_RANGE}, // HTML 3.0 - {{sHTML_spacer}, HTML_SPACER}, // Netscape 3.0b5 - {{sHTML_wbr}, HTML_WBR}, // Netscape - - {{sHTML_abbreviation}, HTML_ABBREVIATION_ON}, // HTML 3.0 - {{sHTML_above}, HTML_ABOVE_ON}, // HTML 3.0 - {{sHTML_acronym}, HTML_ACRONYM_ON}, // HTML 3.0 - {{sHTML_address}, HTML_ADDRESS_ON}, - {{sHTML_anchor}, HTML_ANCHOR_ON}, - {{sHTML_applet}, HTML_APPLET_ON}, // HotJava - {{sHTML_array}, HTML_ARRAY_ON}, // HTML 3.0 - {{sHTML_author}, HTML_AUTHOR_ON}, // HTML 3.0 - {{sHTML_banner}, HTML_BANNER_ON}, // HTML 3.0 - {{sHTML_bar}, HTML_BAR_ON}, // HTML 3.0 - {{sHTML_basefont}, HTML_BASEFONT_ON}, // Netscape - {{sHTML_below}, HTML_BELOW_ON}, // HTML 3.0 - {{sHTML_bigprint}, HTML_BIGPRINT_ON}, // HTML 3.0 - {{sHTML_blink}, HTML_BLINK_ON}, // Netscape - {{sHTML_blockquote}, HTML_BLOCKQUOTE_ON}, - {{sHTML_blockquote30}, HTML_BLOCKQUOTE30_ON}, // HTML 3.0 - {{sHTML_body}, HTML_BODY_ON}, - {{sHTML_bold}, HTML_BOLD_ON}, - {{sHTML_boldtext}, HTML_BOLDTEXT_ON}, // HTML 3.0 - {{sHTML_box}, HTML_BOX_ON}, // HTML 3.0 - {{sHTML_caption}, HTML_CAPTION_ON}, // HTML 3.0 - {{sHTML_center}, HTML_CENTER_ON}, // Netscape - {{sHTML_citiation}, HTML_CITIATION_ON}, - {{sHTML_col}, HTML_COL_ON}, // HTML 3 Table Model Draft - {{sHTML_colgroup}, HTML_COLGROUP_ON}, // HTML 3 Table Model Draft - {{sHTML_code}, HTML_CODE_ON}, - {{sHTML_credit}, HTML_CREDIT_ON}, // HTML 3.0 - {{sHTML_dd}, HTML_DD_ON}, - {{sHTML_deflist}, HTML_DEFLIST_ON}, - {{sHTML_deletedtext}, HTML_DELETEDTEXT_ON}, // HTML 3.0 - {{sHTML_dirlist}, HTML_DIRLIST_ON}, - {{sHTML_division}, HTML_DIVISION_ON}, // HTML 3.0 - {{sHTML_dot}, HTML_DOT_ON}, // HTML 3.0 - {{sHTML_doubledot}, HTML_DOUBLEDOT_ON}, // HTML 3.0 - {{sHTML_dt}, HTML_DT_ON}, - {{sHTML_emphasis}, HTML_EMPHASIS_ON}, - {{sHTML_figure}, HTML_FIGURE_ON}, // HTML 3.0 - {{sHTML_font}, HTML_FONT_ON}, // Netscpe - {{sHTML_footnote}, HTML_FOOTNOTE_ON}, // HTML 3.0 - {{sHTML_form}, HTML_FORM_ON}, - {{sHTML_frame}, HTML_FRAME_ON}, // Netscape 2.0 - {{sHTML_frameset}, HTML_FRAMESET_ON}, // Netscape 2.0 - {{sHTML_hat}, HTML_HAT_ON}, // HTML 3.0 - {{sHTML_head}, HTML_HEAD_ON}, - {{sHTML_head1}, HTML_HEAD1_ON}, - {{sHTML_head2}, HTML_HEAD2_ON}, - {{sHTML_head3}, HTML_HEAD3_ON}, - {{sHTML_head4}, HTML_HEAD4_ON}, - {{sHTML_head5}, HTML_HEAD5_ON}, - {{sHTML_head6}, HTML_HEAD6_ON}, - {{sHTML_html}, HTML_HTML_ON}, - {{sHTML_iframe}, HTML_IFRAME_ON}, // IE 3.0b2 - {{sHTML_ilayer}, HTML_ILAYER_ON}, - {{sHTML_insertedtext}, HTML_INSERTEDTEXT_ON}, // HTML 3.0 - {{sHTML_italic}, HTML_ITALIC_ON}, - {{sHTML_item}, HTML_ITEM_ON}, // HTML 3.0 - {{sHTML_keyboard}, HTML_KEYBOARD_ON}, - {{sHTML_language}, HTML_LANGUAGE_ON}, // HTML 3.0 - {{sHTML_layer}, HTML_LAYER_ON}, - {{sHTML_listheader}, HTML_LISTHEADER_ON}, // HTML 3.0 - {{sHTML_map}, HTML_MAP_ON}, // Netscape 2.0 - {{sHTML_math}, HTML_MATH_ON}, // HTML 3.0 - {{sHTML_menulist}, HTML_MENULIST_ON}, - {{sHTML_multicol}, HTML_MULTICOL_ON}, // Netscape 3.0b5 - {{sHTML_nobr}, HTML_NOBR_ON}, // Netscape - {{sHTML_noembed}, HTML_NOEMBED_ON}, // Netscape 2.0 ??? - {{sHTML_noframe}, HTML_NOFRAMES_ON}, // Netscape 2.0 ??? - {{sHTML_noframes}, HTML_NOFRAMES_ON}, // Netscape 2.0 - {{sHTML_noscript}, HTML_NOSCRIPT_ON}, // Netscape 3.0 - {{sHTML_note}, HTML_NOTE_ON}, // HTML 3.0 - {{sHTML_object}, HTML_OBJECT_ON}, - {{sHTML_orderlist}, HTML_ORDERLIST_ON}, - {{sHTML_parabreak}, HTML_PARABREAK_ON}, - {{sHTML_person}, HTML_PERSON_ON}, // HTML 3.0 - {{sHTML_plaintext}, HTML_PLAINTEXT_ON}, // HTML 3.0 - {{sHTML_preformtxt}, HTML_PREFORMTXT_ON}, - {{sHTML_root}, HTML_ROOT_ON}, // HTML 3.0 - {{sHTML_row}, HTML_ROW_ON}, // HTML 3.0 - {{sHTML_sample}, HTML_SAMPLE_ON}, - {{sHTML_script}, HTML_SCRIPT_ON}, // HTML 3.2 - {{sHTML_select}, HTML_SELECT_ON}, - {{sHTML_shortquote}, HTML_SHORTQUOTE_ON}, // HTML 3.0 - {{sHTML_smallprint}, HTML_SMALLPRINT_ON}, // HTML 3.0 - {{sHTML_span}, HTML_SPAN_ON}, // Style Sheets - {{sHTML_squareroot}, HTML_SQUAREROOT_ON}, // HTML 3.0 - {{sHTML_strikethrough},HTML_STRIKETHROUGH_ON}, // HTML 3.0 - {{sHTML_strong}, HTML_STRONG_ON}, - {{sHTML_style}, HTML_STYLE_ON}, // HTML 3.0 - {{sHTML_subscript}, HTML_SUBSCRIPT_ON}, // HTML 3.0 - {{sHTML_superscript}, HTML_SUPERSCRIPT_ON}, // HTML 3.0 - {{sHTML_table}, HTML_TABLE_ON}, // HTML 3.0 - {{sHTML_tabledata}, HTML_TABLEDATA_ON}, // HTML 3.0 - {{sHTML_tableheader}, HTML_TABLEHEADER_ON}, // HTML 3.0 - {{sHTML_tablerow}, HTML_TABLEROW_ON}, // HTML 3.0 - {{sHTML_tbody}, HTML_TBODY_ON}, // HTML 3 Table Model Draft - {{sHTML_teletype}, HTML_TELETYPE_ON}, - {{sHTML_text}, HTML_TEXT_ON}, // HTML 3.0 - {{sHTML_textarea}, HTML_TEXTAREA_ON}, - {{sHTML_textflow}, HTML_TEXTFLOW_ON}, - {{sHTML_tfoot}, HTML_TFOOT_ON}, // HTML 3 Table Model Draft - {{sHTML_thead}, HTML_THEAD_ON}, // HTML 3 Table Model Draft - {{sHTML_tilde}, HTML_TILDE_ON}, // HTML 3.0 - {{sHTML_title}, HTML_TITLE_ON}, - {{sHTML_underline}, HTML_UNDERLINE_ON}, - {{sHTML_unorderlist}, HTML_UNORDERLIST_ON}, - {{sHTML_variable}, HTML_VARIABLE_ON}, - {{sHTML_vector}, HTML_VECTOR_ON}, // HTML 3.0 - - {{sHTML_xmp}, HTML_XMP_ON}, - {{sHTML_listing}, HTML_LISTING_ON}, - - {{sHTML_definstance}, HTML_DEFINSTANCE_ON}, - {{sHTML_strike}, HTML_STRIKE_ON}, - - {{sHTML_bgsound}, HTML_BGSOUND}, - {{sHTML_comment2}, HTML_COMMENT2_ON}, - {{sHTML_marquee}, HTML_MARQUEE_ON}, - {{sHTML_plaintext2}, HTML_PLAINTEXT2_ON}, - - {{sHTML_sdfield}, HTML_SDFIELD_ON} + {{OOO_STRING_SVTOOLS_HTML_area}, HTML_AREA}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_base}, HTML_BASE}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_comment}, HTML_COMMENT}, + {{OOO_STRING_SVTOOLS_HTML_doctype}, HTML_DOCTYPE}, + {{OOO_STRING_SVTOOLS_HTML_embed}, HTML_EMBED}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_figureoverlay}, HTML_FIGUREOVERLAY}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_horzrule}, HTML_HORZRULE}, + {{OOO_STRING_SVTOOLS_HTML_horztab}, HTML_HORZTAB}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_image}, HTML_IMAGE}, + {{OOO_STRING_SVTOOLS_HTML_image2}, HTML_IMAGE}, + {{OOO_STRING_SVTOOLS_HTML_input}, HTML_INPUT}, + {{OOO_STRING_SVTOOLS_HTML_isindex}, HTML_ISINDEX}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_li}, HTML_LI_ON}, + {{OOO_STRING_SVTOOLS_HTML_linebreak}, HTML_LINEBREAK}, + {{OOO_STRING_SVTOOLS_HTML_link}, HTML_LINK}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_meta}, HTML_META}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_nextid}, HTML_NEXTID}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_of}, HTML_OF}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_option}, HTML_OPTION}, + {{OOO_STRING_SVTOOLS_HTML_param}, HTML_PARAM}, // HotJava + {{OOO_STRING_SVTOOLS_HTML_range}, HTML_RANGE}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_spacer}, HTML_SPACER}, // Netscape 3.0b5 + {{OOO_STRING_SVTOOLS_HTML_wbr}, HTML_WBR}, // Netscape + + {{OOO_STRING_SVTOOLS_HTML_abbreviation}, HTML_ABBREVIATION_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_above}, HTML_ABOVE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_acronym}, HTML_ACRONYM_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_address}, HTML_ADDRESS_ON}, + {{OOO_STRING_SVTOOLS_HTML_anchor}, HTML_ANCHOR_ON}, + {{OOO_STRING_SVTOOLS_HTML_applet}, HTML_APPLET_ON}, // HotJava + {{OOO_STRING_SVTOOLS_HTML_array}, HTML_ARRAY_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_author}, HTML_AUTHOR_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_banner}, HTML_BANNER_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_bar}, HTML_BAR_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_basefont}, HTML_BASEFONT_ON}, // Netscape + {{OOO_STRING_SVTOOLS_HTML_below}, HTML_BELOW_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_bigprint}, HTML_BIGPRINT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_blink}, HTML_BLINK_ON}, // Netscape + {{OOO_STRING_SVTOOLS_HTML_blockquote}, HTML_BLOCKQUOTE_ON}, + {{OOO_STRING_SVTOOLS_HTML_blockquote30}, HTML_BLOCKQUOTE30_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_body}, HTML_BODY_ON}, + {{OOO_STRING_SVTOOLS_HTML_bold}, HTML_BOLD_ON}, + {{OOO_STRING_SVTOOLS_HTML_boldtext}, HTML_BOLDTEXT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_box}, HTML_BOX_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_caption}, HTML_CAPTION_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_center}, HTML_CENTER_ON}, // Netscape + {{OOO_STRING_SVTOOLS_HTML_citiation}, HTML_CITIATION_ON}, + {{OOO_STRING_SVTOOLS_HTML_col}, HTML_COL_ON}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_colgroup}, HTML_COLGROUP_ON}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_code}, HTML_CODE_ON}, + {{OOO_STRING_SVTOOLS_HTML_credit}, HTML_CREDIT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_dd}, HTML_DD_ON}, + {{OOO_STRING_SVTOOLS_HTML_deflist}, HTML_DEFLIST_ON}, + {{OOO_STRING_SVTOOLS_HTML_deletedtext}, HTML_DELETEDTEXT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_dirlist}, HTML_DIRLIST_ON}, + {{OOO_STRING_SVTOOLS_HTML_division}, HTML_DIVISION_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_dot}, HTML_DOT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_doubledot}, HTML_DOUBLEDOT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_dt}, HTML_DT_ON}, + {{OOO_STRING_SVTOOLS_HTML_emphasis}, HTML_EMPHASIS_ON}, + {{OOO_STRING_SVTOOLS_HTML_figure}, HTML_FIGURE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_font}, HTML_FONT_ON}, // Netscpe + {{OOO_STRING_SVTOOLS_HTML_footnote}, HTML_FOOTNOTE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_form}, HTML_FORM_ON}, + {{OOO_STRING_SVTOOLS_HTML_frame}, HTML_FRAME_ON}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_frameset}, HTML_FRAMESET_ON}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_hat}, HTML_HAT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_head}, HTML_HEAD_ON}, + {{OOO_STRING_SVTOOLS_HTML_head1}, HTML_HEAD1_ON}, + {{OOO_STRING_SVTOOLS_HTML_head2}, HTML_HEAD2_ON}, + {{OOO_STRING_SVTOOLS_HTML_head3}, HTML_HEAD3_ON}, + {{OOO_STRING_SVTOOLS_HTML_head4}, HTML_HEAD4_ON}, + {{OOO_STRING_SVTOOLS_HTML_head5}, HTML_HEAD5_ON}, + {{OOO_STRING_SVTOOLS_HTML_head6}, HTML_HEAD6_ON}, + {{OOO_STRING_SVTOOLS_HTML_html}, HTML_HTML_ON}, + {{OOO_STRING_SVTOOLS_HTML_iframe}, HTML_IFRAME_ON}, // IE 3.0b2 + {{OOO_STRING_SVTOOLS_HTML_ilayer}, HTML_ILAYER_ON}, + {{OOO_STRING_SVTOOLS_HTML_insertedtext}, HTML_INSERTEDTEXT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_italic}, HTML_ITALIC_ON}, + {{OOO_STRING_SVTOOLS_HTML_item}, HTML_ITEM_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_keyboard}, HTML_KEYBOARD_ON}, + {{OOO_STRING_SVTOOLS_HTML_language}, HTML_LANGUAGE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_layer}, HTML_LAYER_ON}, + {{OOO_STRING_SVTOOLS_HTML_listheader}, HTML_LISTHEADER_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_map}, HTML_MAP_ON}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_math}, HTML_MATH_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_menulist}, HTML_MENULIST_ON}, + {{OOO_STRING_SVTOOLS_HTML_multicol}, HTML_MULTICOL_ON}, // Netscape 3.0b5 + {{OOO_STRING_SVTOOLS_HTML_nobr}, HTML_NOBR_ON}, // Netscape + {{OOO_STRING_SVTOOLS_HTML_noembed}, HTML_NOEMBED_ON}, // Netscape 2.0 ??? + {{OOO_STRING_SVTOOLS_HTML_noframe}, HTML_NOFRAMES_ON}, // Netscape 2.0 ??? + {{OOO_STRING_SVTOOLS_HTML_noframes}, HTML_NOFRAMES_ON}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_noscript}, HTML_NOSCRIPT_ON}, // Netscape 3.0 + {{OOO_STRING_SVTOOLS_HTML_note}, HTML_NOTE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_object}, HTML_OBJECT_ON}, + {{OOO_STRING_SVTOOLS_HTML_orderlist}, HTML_ORDERLIST_ON}, + {{OOO_STRING_SVTOOLS_HTML_parabreak}, HTML_PARABREAK_ON}, + {{OOO_STRING_SVTOOLS_HTML_person}, HTML_PERSON_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_plaintext}, HTML_PLAINTEXT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_preformtxt}, HTML_PREFORMTXT_ON}, + {{OOO_STRING_SVTOOLS_HTML_root}, HTML_ROOT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_row}, HTML_ROW_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_sample}, HTML_SAMPLE_ON}, + {{OOO_STRING_SVTOOLS_HTML_script}, HTML_SCRIPT_ON}, // HTML 3.2 + {{OOO_STRING_SVTOOLS_HTML_select}, HTML_SELECT_ON}, + {{OOO_STRING_SVTOOLS_HTML_shortquote}, HTML_SHORTQUOTE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_smallprint}, HTML_SMALLPRINT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_span}, HTML_SPAN_ON}, // Style Sheets + {{OOO_STRING_SVTOOLS_HTML_squareroot}, HTML_SQUAREROOT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_strikethrough},HTML_STRIKETHROUGH_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_strong}, HTML_STRONG_ON}, + {{OOO_STRING_SVTOOLS_HTML_style}, HTML_STYLE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_subscript}, HTML_SUBSCRIPT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_superscript}, HTML_SUPERSCRIPT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_table}, HTML_TABLE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_tabledata}, HTML_TABLEDATA_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_tableheader}, HTML_TABLEHEADER_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_tablerow}, HTML_TABLEROW_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_tbody}, HTML_TBODY_ON}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_teletype}, HTML_TELETYPE_ON}, + {{OOO_STRING_SVTOOLS_HTML_text}, HTML_TEXT_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_textarea}, HTML_TEXTAREA_ON}, + {{OOO_STRING_SVTOOLS_HTML_textflow}, HTML_TEXTFLOW_ON}, + {{OOO_STRING_SVTOOLS_HTML_tfoot}, HTML_TFOOT_ON}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_thead}, HTML_THEAD_ON}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_tilde}, HTML_TILDE_ON}, // HTML 3.0 + {{OOO_STRING_SVTOOLS_HTML_title}, HTML_TITLE_ON}, + {{OOO_STRING_SVTOOLS_HTML_underline}, HTML_UNDERLINE_ON}, + {{OOO_STRING_SVTOOLS_HTML_unorderlist}, HTML_UNORDERLIST_ON}, + {{OOO_STRING_SVTOOLS_HTML_variable}, HTML_VARIABLE_ON}, + {{OOO_STRING_SVTOOLS_HTML_vector}, HTML_VECTOR_ON}, // HTML 3.0 + + {{OOO_STRING_SVTOOLS_HTML_xmp}, HTML_XMP_ON}, + {{OOO_STRING_SVTOOLS_HTML_listing}, HTML_LISTING_ON}, + + {{OOO_STRING_SVTOOLS_HTML_definstance}, HTML_DEFINSTANCE_ON}, + {{OOO_STRING_SVTOOLS_HTML_strike}, HTML_STRIKE_ON}, + + {{OOO_STRING_SVTOOLS_HTML_bgsound}, HTML_BGSOUND}, + {{OOO_STRING_SVTOOLS_HTML_comment2}, HTML_COMMENT2_ON}, + {{OOO_STRING_SVTOOLS_HTML_marquee}, HTML_MARQUEE_ON}, + {{OOO_STRING_SVTOOLS_HTML_plaintext2}, HTML_PLAINTEXT2_ON}, + + {{OOO_STRING_SVTOOLS_HTML_sdfield}, HTML_SDFIELD_ON} }; @@ -399,7 +252,7 @@ int GetHTMLToken( const String& rName ) int nRet = 0; - if( !rName.CompareToAscii( sHTML_comment, 3UL) ) + if( !rName.CompareToAscii( OOO_STRING_SVTOOLS_HTML_comment, 3UL) ) return HTML_COMMENT; void* pFound; @@ -432,276 +285,276 @@ struct HTML_CharEntry static int __FAR_DATA bSortCharKeyWords = FALSE; static HTML_CharEntry __FAR_DATA aHTMLCharNameTab[] = { - {{sHTML_C_lt}, 60}, - {{sHTML_C_gt}, 62}, - {{sHTML_C_amp}, 38}, - {{sHTML_C_quot}, 34}, - - {{sHTML_C_Agrave}, 192}, - {{sHTML_C_Aacute}, 193}, - {{sHTML_C_Acirc}, 194}, - {{sHTML_C_Atilde}, 195}, - {{sHTML_C_Auml}, 196}, - {{sHTML_C_Aring}, 197}, - {{sHTML_C_AElig}, 198}, - {{sHTML_C_Ccedil}, 199}, - {{sHTML_C_Egrave}, 200}, - {{sHTML_C_Eacute}, 201}, - {{sHTML_C_Ecirc}, 202}, - {{sHTML_C_Euml}, 203}, - {{sHTML_C_Igrave}, 204}, - {{sHTML_C_Iacute}, 205}, - {{sHTML_C_Icirc}, 206}, - {{sHTML_C_Iuml}, 207}, - {{sHTML_C_ETH}, 208}, - {{sHTML_C_Ntilde}, 209}, - {{sHTML_C_Ograve}, 210}, - {{sHTML_C_Oacute}, 211}, - {{sHTML_C_Ocirc}, 212}, - {{sHTML_C_Otilde}, 213}, - {{sHTML_C_Ouml}, 214}, - {{sHTML_C_Oslash}, 216}, - {{sHTML_C_Ugrave}, 217}, - {{sHTML_C_Uacute}, 218}, - {{sHTML_C_Ucirc}, 219}, - {{sHTML_C_Uuml}, 220}, - {{sHTML_C_Yacute}, 221}, - - {{sHTML_C_THORN}, 222}, - {{sHTML_C_szlig}, 223}, - - {{sHTML_S_agrave}, 224}, - {{sHTML_S_aacute}, 225}, - {{sHTML_S_acirc}, 226}, - {{sHTML_S_atilde}, 227}, - {{sHTML_S_auml}, 228}, - {{sHTML_S_aring}, 229}, - {{sHTML_S_aelig}, 230}, - {{sHTML_S_ccedil}, 231}, - {{sHTML_S_egrave}, 232}, - {{sHTML_S_eacute}, 233}, - {{sHTML_S_ecirc}, 234}, - {{sHTML_S_euml}, 235}, - {{sHTML_S_igrave}, 236}, - {{sHTML_S_iacute}, 237}, - {{sHTML_S_icirc}, 238}, - {{sHTML_S_iuml}, 239}, - {{sHTML_S_eth}, 240}, - {{sHTML_S_ntilde}, 241}, - {{sHTML_S_ograve}, 242}, - {{sHTML_S_oacute}, 243}, - {{sHTML_S_ocirc}, 244}, - {{sHTML_S_otilde}, 245}, - {{sHTML_S_ouml}, 246}, - {{sHTML_S_oslash}, 248}, - {{sHTML_S_ugrave}, 249}, - {{sHTML_S_uacute}, 250}, - {{sHTML_S_ucirc}, 251}, - {{sHTML_S_uuml}, 252}, - {{sHTML_S_yacute}, 253}, - {{sHTML_S_thorn}, 254}, - {{sHTML_S_yuml}, 255}, + {{OOO_STRING_SVTOOLS_HTML_C_lt}, 60}, + {{OOO_STRING_SVTOOLS_HTML_C_gt}, 62}, + {{OOO_STRING_SVTOOLS_HTML_C_amp}, 38}, + {{OOO_STRING_SVTOOLS_HTML_C_quot}, 34}, + + {{OOO_STRING_SVTOOLS_HTML_C_Agrave}, 192}, + {{OOO_STRING_SVTOOLS_HTML_C_Aacute}, 193}, + {{OOO_STRING_SVTOOLS_HTML_C_Acirc}, 194}, + {{OOO_STRING_SVTOOLS_HTML_C_Atilde}, 195}, + {{OOO_STRING_SVTOOLS_HTML_C_Auml}, 196}, + {{OOO_STRING_SVTOOLS_HTML_C_Aring}, 197}, + {{OOO_STRING_SVTOOLS_HTML_C_AElig}, 198}, + {{OOO_STRING_SVTOOLS_HTML_C_Ccedil}, 199}, + {{OOO_STRING_SVTOOLS_HTML_C_Egrave}, 200}, + {{OOO_STRING_SVTOOLS_HTML_C_Eacute}, 201}, + {{OOO_STRING_SVTOOLS_HTML_C_Ecirc}, 202}, + {{OOO_STRING_SVTOOLS_HTML_C_Euml}, 203}, + {{OOO_STRING_SVTOOLS_HTML_C_Igrave}, 204}, + {{OOO_STRING_SVTOOLS_HTML_C_Iacute}, 205}, + {{OOO_STRING_SVTOOLS_HTML_C_Icirc}, 206}, + {{OOO_STRING_SVTOOLS_HTML_C_Iuml}, 207}, + {{OOO_STRING_SVTOOLS_HTML_C_ETH}, 208}, + {{OOO_STRING_SVTOOLS_HTML_C_Ntilde}, 209}, + {{OOO_STRING_SVTOOLS_HTML_C_Ograve}, 210}, + {{OOO_STRING_SVTOOLS_HTML_C_Oacute}, 211}, + {{OOO_STRING_SVTOOLS_HTML_C_Ocirc}, 212}, + {{OOO_STRING_SVTOOLS_HTML_C_Otilde}, 213}, + {{OOO_STRING_SVTOOLS_HTML_C_Ouml}, 214}, + {{OOO_STRING_SVTOOLS_HTML_C_Oslash}, 216}, + {{OOO_STRING_SVTOOLS_HTML_C_Ugrave}, 217}, + {{OOO_STRING_SVTOOLS_HTML_C_Uacute}, 218}, + {{OOO_STRING_SVTOOLS_HTML_C_Ucirc}, 219}, + {{OOO_STRING_SVTOOLS_HTML_C_Uuml}, 220}, + {{OOO_STRING_SVTOOLS_HTML_C_Yacute}, 221}, + + {{OOO_STRING_SVTOOLS_HTML_C_THORN}, 222}, + {{OOO_STRING_SVTOOLS_HTML_C_szlig}, 223}, + + {{OOO_STRING_SVTOOLS_HTML_S_agrave}, 224}, + {{OOO_STRING_SVTOOLS_HTML_S_aacute}, 225}, + {{OOO_STRING_SVTOOLS_HTML_S_acirc}, 226}, + {{OOO_STRING_SVTOOLS_HTML_S_atilde}, 227}, + {{OOO_STRING_SVTOOLS_HTML_S_auml}, 228}, + {{OOO_STRING_SVTOOLS_HTML_S_aring}, 229}, + {{OOO_STRING_SVTOOLS_HTML_S_aelig}, 230}, + {{OOO_STRING_SVTOOLS_HTML_S_ccedil}, 231}, + {{OOO_STRING_SVTOOLS_HTML_S_egrave}, 232}, + {{OOO_STRING_SVTOOLS_HTML_S_eacute}, 233}, + {{OOO_STRING_SVTOOLS_HTML_S_ecirc}, 234}, + {{OOO_STRING_SVTOOLS_HTML_S_euml}, 235}, + {{OOO_STRING_SVTOOLS_HTML_S_igrave}, 236}, + {{OOO_STRING_SVTOOLS_HTML_S_iacute}, 237}, + {{OOO_STRING_SVTOOLS_HTML_S_icirc}, 238}, + {{OOO_STRING_SVTOOLS_HTML_S_iuml}, 239}, + {{OOO_STRING_SVTOOLS_HTML_S_eth}, 240}, + {{OOO_STRING_SVTOOLS_HTML_S_ntilde}, 241}, + {{OOO_STRING_SVTOOLS_HTML_S_ograve}, 242}, + {{OOO_STRING_SVTOOLS_HTML_S_oacute}, 243}, + {{OOO_STRING_SVTOOLS_HTML_S_ocirc}, 244}, + {{OOO_STRING_SVTOOLS_HTML_S_otilde}, 245}, + {{OOO_STRING_SVTOOLS_HTML_S_ouml}, 246}, + {{OOO_STRING_SVTOOLS_HTML_S_oslash}, 248}, + {{OOO_STRING_SVTOOLS_HTML_S_ugrave}, 249}, + {{OOO_STRING_SVTOOLS_HTML_S_uacute}, 250}, + {{OOO_STRING_SVTOOLS_HTML_S_ucirc}, 251}, + {{OOO_STRING_SVTOOLS_HTML_S_uuml}, 252}, + {{OOO_STRING_SVTOOLS_HTML_S_yacute}, 253}, + {{OOO_STRING_SVTOOLS_HTML_S_thorn}, 254}, + {{OOO_STRING_SVTOOLS_HTML_S_yuml}, 255}, // Sonderzeichen - {{sHTML_S_acute}, 180}, - {{sHTML_S_brvbar}, 166}, - {{sHTML_S_cedil}, 184}, - {{sHTML_S_cent}, 162}, - {{sHTML_S_copy}, 169}, - {{sHTML_S_curren}, 164}, - {{sHTML_S_deg}, 176}, - {{sHTML_S_divide}, 247}, - {{sHTML_S_frac12}, 189}, - {{sHTML_S_frac14}, 188}, - {{sHTML_S_frac34}, 190}, - {{sHTML_S_iexcl}, 161}, - {{sHTML_S_iquest}, 191}, - {{sHTML_S_laquo}, 171}, - {{sHTML_S_macr}, 175}, - {{sHTML_S_micro}, 181}, - {{sHTML_S_middot}, 183}, - {{sHTML_S_not}, 172}, - {{sHTML_S_ordf}, 170}, - {{sHTML_S_ordm}, 186}, - {{sHTML_S_para}, 182}, - {{sHTML_S_plusmn}, 177}, - {{sHTML_S_pound}, 163}, - {{sHTML_S_raquo}, 187}, - {{sHTML_S_reg}, 174}, - {{sHTML_S_sect}, 167}, - {{sHTML_S_sup1}, 185}, - {{sHTML_S_sup2}, 178}, - {{sHTML_S_sup3}, 179}, - {{sHTML_S_times}, 215}, - {{sHTML_S_uml}, 168}, - {{sHTML_S_yen}, 165}, + {{OOO_STRING_SVTOOLS_HTML_S_acute}, 180}, + {{OOO_STRING_SVTOOLS_HTML_S_brvbar}, 166}, + {{OOO_STRING_SVTOOLS_HTML_S_cedil}, 184}, + {{OOO_STRING_SVTOOLS_HTML_S_cent}, 162}, + {{OOO_STRING_SVTOOLS_HTML_S_copy}, 169}, + {{OOO_STRING_SVTOOLS_HTML_S_curren}, 164}, + {{OOO_STRING_SVTOOLS_HTML_S_deg}, 176}, + {{OOO_STRING_SVTOOLS_HTML_S_divide}, 247}, + {{OOO_STRING_SVTOOLS_HTML_S_frac12}, 189}, + {{OOO_STRING_SVTOOLS_HTML_S_frac14}, 188}, + {{OOO_STRING_SVTOOLS_HTML_S_frac34}, 190}, + {{OOO_STRING_SVTOOLS_HTML_S_iexcl}, 161}, + {{OOO_STRING_SVTOOLS_HTML_S_iquest}, 191}, + {{OOO_STRING_SVTOOLS_HTML_S_laquo}, 171}, + {{OOO_STRING_SVTOOLS_HTML_S_macr}, 175}, + {{OOO_STRING_SVTOOLS_HTML_S_micro}, 181}, + {{OOO_STRING_SVTOOLS_HTML_S_middot}, 183}, + {{OOO_STRING_SVTOOLS_HTML_S_not}, 172}, + {{OOO_STRING_SVTOOLS_HTML_S_ordf}, 170}, + {{OOO_STRING_SVTOOLS_HTML_S_ordm}, 186}, + {{OOO_STRING_SVTOOLS_HTML_S_para}, 182}, + {{OOO_STRING_SVTOOLS_HTML_S_plusmn}, 177}, + {{OOO_STRING_SVTOOLS_HTML_S_pound}, 163}, + {{OOO_STRING_SVTOOLS_HTML_S_raquo}, 187}, + {{OOO_STRING_SVTOOLS_HTML_S_reg}, 174}, + {{OOO_STRING_SVTOOLS_HTML_S_sect}, 167}, + {{OOO_STRING_SVTOOLS_HTML_S_sup1}, 185}, + {{OOO_STRING_SVTOOLS_HTML_S_sup2}, 178}, + {{OOO_STRING_SVTOOLS_HTML_S_sup3}, 179}, + {{OOO_STRING_SVTOOLS_HTML_S_times}, 215}, + {{OOO_STRING_SVTOOLS_HTML_S_uml}, 168}, + {{OOO_STRING_SVTOOLS_HTML_S_yen}, 165}, // Netscape kennt noch ein paar in Grossbuchstaben ... - {{sHTML_C_LT}, 60}, - {{sHTML_C_GT}, 62}, - {{sHTML_C_AMP}, 38}, - {{sHTML_C_QUOT}, 34}, - {{sHTML_S_COPY}, 169}, - {{sHTML_S_REG}, 174}, + {{OOO_STRING_SVTOOLS_HTML_C_LT}, 60}, + {{OOO_STRING_SVTOOLS_HTML_C_GT}, 62}, + {{OOO_STRING_SVTOOLS_HTML_C_AMP}, 38}, + {{OOO_STRING_SVTOOLS_HTML_C_QUOT}, 34}, + {{OOO_STRING_SVTOOLS_HTML_S_COPY}, 169}, + {{OOO_STRING_SVTOOLS_HTML_S_REG}, 174}, // Sonderzeichen, die zu Tokens konvertiert werden !!! - {{sHTML_S_nbsp}, 1}, - {{sHTML_S_shy}, 2}, + {{OOO_STRING_SVTOOLS_HTML_S_nbsp}, 1}, + {{OOO_STRING_SVTOOLS_HTML_S_shy}, 2}, // HTML4 - {{sHTML_S_OElig}, 338}, - {{sHTML_S_oelig}, 339}, - {{sHTML_S_Scaron}, 352}, - {{sHTML_S_scaron}, 353}, - {{sHTML_S_Yuml}, 376}, - {{sHTML_S_fnof}, 402}, - {{sHTML_S_circ}, 710}, - {{sHTML_S_tilde}, 732}, - {{sHTML_S_Alpha}, 913}, - {{sHTML_S_Beta}, 914}, - {{sHTML_S_Gamma}, 915}, - {{sHTML_S_Delta}, 916}, - {{sHTML_S_Epsilon}, 917}, - {{sHTML_S_Zeta}, 918}, - {{sHTML_S_Eta}, 919}, - {{sHTML_S_Theta}, 920}, - {{sHTML_S_Iota}, 921}, - {{sHTML_S_Kappa}, 922}, - {{sHTML_S_Lambda}, 923}, - {{sHTML_S_Mu}, 924}, - {{sHTML_S_Nu}, 925}, - {{sHTML_S_Xi}, 926}, - {{sHTML_S_Omicron}, 927}, - {{sHTML_S_Pi}, 928}, - {{sHTML_S_Rho}, 929}, - {{sHTML_S_Sigma}, 931}, - {{sHTML_S_Tau}, 932}, - {{sHTML_S_Upsilon}, 933}, - {{sHTML_S_Phi}, 934}, - {{sHTML_S_Chi}, 935}, - {{sHTML_S_Psi}, 936}, - {{sHTML_S_Omega}, 937}, - {{sHTML_S_alpha}, 945}, - {{sHTML_S_beta}, 946}, - {{sHTML_S_gamma}, 947}, - {{sHTML_S_delta}, 948}, - {{sHTML_S_epsilon}, 949}, - {{sHTML_S_zeta}, 950}, - {{sHTML_S_eta}, 951}, - {{sHTML_S_theta}, 952}, - {{sHTML_S_iota}, 953}, - {{sHTML_S_kappa}, 954}, - {{sHTML_S_lambda}, 955}, - {{sHTML_S_mu}, 956}, - {{sHTML_S_nu}, 957}, - {{sHTML_S_xi}, 958}, - {{sHTML_S_omicron}, 959}, - {{sHTML_S_pi}, 960}, - {{sHTML_S_rho}, 961}, - {{sHTML_S_sigmaf}, 962}, - {{sHTML_S_sigma}, 963}, - {{sHTML_S_tau}, 964}, - {{sHTML_S_upsilon}, 965}, - {{sHTML_S_phi}, 966}, - {{sHTML_S_chi}, 967}, - {{sHTML_S_psi}, 968}, - {{sHTML_S_omega}, 969}, - {{sHTML_S_thetasym}, 977}, - {{sHTML_S_upsih}, 978}, - {{sHTML_S_piv}, 982}, - {{sHTML_S_ensp}, 8194}, - {{sHTML_S_emsp}, 8195}, - {{sHTML_S_thinsp}, 8201}, - {{sHTML_S_zwnj}, 8204}, - {{sHTML_S_zwj}, 8205}, - {{sHTML_S_lrm}, 8206}, - {{sHTML_S_rlm}, 8207}, - {{sHTML_S_ndash}, 8211}, - {{sHTML_S_mdash}, 8212}, - {{sHTML_S_lsquo}, 8216}, - {{sHTML_S_rsquo}, 8217}, - {{sHTML_S_sbquo}, 8218}, - {{sHTML_S_ldquo}, 8220}, - {{sHTML_S_rdquo}, 8221}, - {{sHTML_S_bdquo}, 8222}, - {{sHTML_S_dagger}, 8224}, - {{sHTML_S_Dagger}, 8225}, - {{sHTML_S_bull}, 8226}, - {{sHTML_S_hellip}, 8230}, - {{sHTML_S_permil}, 8240}, - {{sHTML_S_prime}, 8242}, - {{sHTML_S_Prime}, 8243}, - {{sHTML_S_lsaquo}, 8249}, - {{sHTML_S_rsaquo}, 8250}, - {{sHTML_S_oline}, 8254}, - {{sHTML_S_frasl}, 8260}, - {{sHTML_S_euro}, 8364}, - {{sHTML_S_image}, 8465}, - {{sHTML_S_weierp}, 8472}, - {{sHTML_S_real}, 8476}, - {{sHTML_S_trade}, 8482}, - {{sHTML_S_alefsym}, 8501}, - {{sHTML_S_larr}, 8592}, - {{sHTML_S_uarr}, 8593}, - {{sHTML_S_rarr}, 8594}, - {{sHTML_S_darr}, 8595}, - {{sHTML_S_harr}, 8596}, - {{sHTML_S_crarr}, 8629}, - {{sHTML_S_lArr}, 8656}, - {{sHTML_S_uArr}, 8657}, - {{sHTML_S_rArr}, 8658}, - {{sHTML_S_dArr}, 8659}, - {{sHTML_S_hArr}, 8660}, - {{sHTML_S_forall}, 8704}, - {{sHTML_S_part}, 8706}, - {{sHTML_S_exist}, 8707}, - {{sHTML_S_empty}, 8709}, - {{sHTML_S_nabla}, 8711}, - {{sHTML_S_isin}, 8712}, - {{sHTML_S_notin}, 8713}, - {{sHTML_S_ni}, 8715}, - {{sHTML_S_prod}, 8719}, - {{sHTML_S_sum}, 8721}, - {{sHTML_S_minus}, 8722}, - {{sHTML_S_lowast}, 8727}, - {{sHTML_S_radic}, 8730}, - {{sHTML_S_prop}, 8733}, - {{sHTML_S_infin}, 8734}, - {{sHTML_S_ang}, 8736}, - {{sHTML_S_and}, 8743}, - {{sHTML_S_or}, 8744}, - {{sHTML_S_cap}, 8745}, - {{sHTML_S_cup}, 8746}, - {{sHTML_S_int}, 8747}, - {{sHTML_S_there4}, 8756}, - {{sHTML_S_sim}, 8764}, - {{sHTML_S_cong}, 8773}, - {{sHTML_S_asymp}, 8776}, - {{sHTML_S_ne}, 8800}, - {{sHTML_S_equiv}, 8801}, - {{sHTML_S_le}, 8804}, - {{sHTML_S_ge}, 8805}, - {{sHTML_S_sub}, 8834}, - {{sHTML_S_sup}, 8835}, - {{sHTML_S_nsub}, 8836}, - {{sHTML_S_sube}, 8838}, - {{sHTML_S_supe}, 8839}, - {{sHTML_S_oplus}, 8853}, - {{sHTML_S_otimes}, 8855}, - {{sHTML_S_perp}, 8869}, - {{sHTML_S_sdot}, 8901}, - {{sHTML_S_lceil}, 8968}, - {{sHTML_S_rceil}, 8969}, - {{sHTML_S_lfloor}, 8970}, - {{sHTML_S_rfloor}, 8971}, - {{sHTML_S_lang}, 9001}, - {{sHTML_S_rang}, 9002}, - {{sHTML_S_loz}, 9674}, - {{sHTML_S_spades}, 9824}, - {{sHTML_S_clubs}, 9827}, - {{sHTML_S_hearts}, 9829}, - {{sHTML_S_diams}, 9830} + {{OOO_STRING_SVTOOLS_HTML_S_OElig}, 338}, + {{OOO_STRING_SVTOOLS_HTML_S_oelig}, 339}, + {{OOO_STRING_SVTOOLS_HTML_S_Scaron}, 352}, + {{OOO_STRING_SVTOOLS_HTML_S_scaron}, 353}, + {{OOO_STRING_SVTOOLS_HTML_S_Yuml}, 376}, + {{OOO_STRING_SVTOOLS_HTML_S_fnof}, 402}, + {{OOO_STRING_SVTOOLS_HTML_S_circ}, 710}, + {{OOO_STRING_SVTOOLS_HTML_S_tilde}, 732}, + {{OOO_STRING_SVTOOLS_HTML_S_Alpha}, 913}, + {{OOO_STRING_SVTOOLS_HTML_S_Beta}, 914}, + {{OOO_STRING_SVTOOLS_HTML_S_Gamma}, 915}, + {{OOO_STRING_SVTOOLS_HTML_S_Delta}, 916}, + {{OOO_STRING_SVTOOLS_HTML_S_Epsilon}, 917}, + {{OOO_STRING_SVTOOLS_HTML_S_Zeta}, 918}, + {{OOO_STRING_SVTOOLS_HTML_S_Eta}, 919}, + {{OOO_STRING_SVTOOLS_HTML_S_Theta}, 920}, + {{OOO_STRING_SVTOOLS_HTML_S_Iota}, 921}, + {{OOO_STRING_SVTOOLS_HTML_S_Kappa}, 922}, + {{OOO_STRING_SVTOOLS_HTML_S_Lambda}, 923}, + {{OOO_STRING_SVTOOLS_HTML_S_Mu}, 924}, + {{OOO_STRING_SVTOOLS_HTML_S_Nu}, 925}, + {{OOO_STRING_SVTOOLS_HTML_S_Xi}, 926}, + {{OOO_STRING_SVTOOLS_HTML_S_Omicron}, 927}, + {{OOO_STRING_SVTOOLS_HTML_S_Pi}, 928}, + {{OOO_STRING_SVTOOLS_HTML_S_Rho}, 929}, + {{OOO_STRING_SVTOOLS_HTML_S_Sigma}, 931}, + {{OOO_STRING_SVTOOLS_HTML_S_Tau}, 932}, + {{OOO_STRING_SVTOOLS_HTML_S_Upsilon}, 933}, + {{OOO_STRING_SVTOOLS_HTML_S_Phi}, 934}, + {{OOO_STRING_SVTOOLS_HTML_S_Chi}, 935}, + {{OOO_STRING_SVTOOLS_HTML_S_Psi}, 936}, + {{OOO_STRING_SVTOOLS_HTML_S_Omega}, 937}, + {{OOO_STRING_SVTOOLS_HTML_S_alpha}, 945}, + {{OOO_STRING_SVTOOLS_HTML_S_beta}, 946}, + {{OOO_STRING_SVTOOLS_HTML_S_gamma}, 947}, + {{OOO_STRING_SVTOOLS_HTML_S_delta}, 948}, + {{OOO_STRING_SVTOOLS_HTML_S_epsilon}, 949}, + {{OOO_STRING_SVTOOLS_HTML_S_zeta}, 950}, + {{OOO_STRING_SVTOOLS_HTML_S_eta}, 951}, + {{OOO_STRING_SVTOOLS_HTML_S_theta}, 952}, + {{OOO_STRING_SVTOOLS_HTML_S_iota}, 953}, + {{OOO_STRING_SVTOOLS_HTML_S_kappa}, 954}, + {{OOO_STRING_SVTOOLS_HTML_S_lambda}, 955}, + {{OOO_STRING_SVTOOLS_HTML_S_mu}, 956}, + {{OOO_STRING_SVTOOLS_HTML_S_nu}, 957}, + {{OOO_STRING_SVTOOLS_HTML_S_xi}, 958}, + {{OOO_STRING_SVTOOLS_HTML_S_omicron}, 959}, + {{OOO_STRING_SVTOOLS_HTML_S_pi}, 960}, + {{OOO_STRING_SVTOOLS_HTML_S_rho}, 961}, + {{OOO_STRING_SVTOOLS_HTML_S_sigmaf}, 962}, + {{OOO_STRING_SVTOOLS_HTML_S_sigma}, 963}, + {{OOO_STRING_SVTOOLS_HTML_S_tau}, 964}, + {{OOO_STRING_SVTOOLS_HTML_S_upsilon}, 965}, + {{OOO_STRING_SVTOOLS_HTML_S_phi}, 966}, + {{OOO_STRING_SVTOOLS_HTML_S_chi}, 967}, + {{OOO_STRING_SVTOOLS_HTML_S_psi}, 968}, + {{OOO_STRING_SVTOOLS_HTML_S_omega}, 969}, + {{OOO_STRING_SVTOOLS_HTML_S_thetasym}, 977}, + {{OOO_STRING_SVTOOLS_HTML_S_upsih}, 978}, + {{OOO_STRING_SVTOOLS_HTML_S_piv}, 982}, + {{OOO_STRING_SVTOOLS_HTML_S_ensp}, 8194}, + {{OOO_STRING_SVTOOLS_HTML_S_emsp}, 8195}, + {{OOO_STRING_SVTOOLS_HTML_S_thinsp}, 8201}, + {{OOO_STRING_SVTOOLS_HTML_S_zwnj}, 8204}, + {{OOO_STRING_SVTOOLS_HTML_S_zwj}, 8205}, + {{OOO_STRING_SVTOOLS_HTML_S_lrm}, 8206}, + {{OOO_STRING_SVTOOLS_HTML_S_rlm}, 8207}, + {{OOO_STRING_SVTOOLS_HTML_S_ndash}, 8211}, + {{OOO_STRING_SVTOOLS_HTML_S_mdash}, 8212}, + {{OOO_STRING_SVTOOLS_HTML_S_lsquo}, 8216}, + {{OOO_STRING_SVTOOLS_HTML_S_rsquo}, 8217}, + {{OOO_STRING_SVTOOLS_HTML_S_sbquo}, 8218}, + {{OOO_STRING_SVTOOLS_HTML_S_ldquo}, 8220}, + {{OOO_STRING_SVTOOLS_HTML_S_rdquo}, 8221}, + {{OOO_STRING_SVTOOLS_HTML_S_bdquo}, 8222}, + {{OOO_STRING_SVTOOLS_HTML_S_dagger}, 8224}, + {{OOO_STRING_SVTOOLS_HTML_S_Dagger}, 8225}, + {{OOO_STRING_SVTOOLS_HTML_S_bull}, 8226}, + {{OOO_STRING_SVTOOLS_HTML_S_hellip}, 8230}, + {{OOO_STRING_SVTOOLS_HTML_S_permil}, 8240}, + {{OOO_STRING_SVTOOLS_HTML_S_prime}, 8242}, + {{OOO_STRING_SVTOOLS_HTML_S_Prime}, 8243}, + {{OOO_STRING_SVTOOLS_HTML_S_lsaquo}, 8249}, + {{OOO_STRING_SVTOOLS_HTML_S_rsaquo}, 8250}, + {{OOO_STRING_SVTOOLS_HTML_S_oline}, 8254}, + {{OOO_STRING_SVTOOLS_HTML_S_frasl}, 8260}, + {{OOO_STRING_SVTOOLS_HTML_S_euro}, 8364}, + {{OOO_STRING_SVTOOLS_HTML_S_image}, 8465}, + {{OOO_STRING_SVTOOLS_HTML_S_weierp}, 8472}, + {{OOO_STRING_SVTOOLS_HTML_S_real}, 8476}, + {{OOO_STRING_SVTOOLS_HTML_S_trade}, 8482}, + {{OOO_STRING_SVTOOLS_HTML_S_alefsym}, 8501}, + {{OOO_STRING_SVTOOLS_HTML_S_larr}, 8592}, + {{OOO_STRING_SVTOOLS_HTML_S_uarr}, 8593}, + {{OOO_STRING_SVTOOLS_HTML_S_rarr}, 8594}, + {{OOO_STRING_SVTOOLS_HTML_S_darr}, 8595}, + {{OOO_STRING_SVTOOLS_HTML_S_harr}, 8596}, + {{OOO_STRING_SVTOOLS_HTML_S_crarr}, 8629}, + {{OOO_STRING_SVTOOLS_HTML_S_lArr}, 8656}, + {{OOO_STRING_SVTOOLS_HTML_S_uArr}, 8657}, + {{OOO_STRING_SVTOOLS_HTML_S_rArr}, 8658}, + {{OOO_STRING_SVTOOLS_HTML_S_dArr}, 8659}, + {{OOO_STRING_SVTOOLS_HTML_S_hArr}, 8660}, + {{OOO_STRING_SVTOOLS_HTML_S_forall}, 8704}, + {{OOO_STRING_SVTOOLS_HTML_S_part}, 8706}, + {{OOO_STRING_SVTOOLS_HTML_S_exist}, 8707}, + {{OOO_STRING_SVTOOLS_HTML_S_empty}, 8709}, + {{OOO_STRING_SVTOOLS_HTML_S_nabla}, 8711}, + {{OOO_STRING_SVTOOLS_HTML_S_isin}, 8712}, + {{OOO_STRING_SVTOOLS_HTML_S_notin}, 8713}, + {{OOO_STRING_SVTOOLS_HTML_S_ni}, 8715}, + {{OOO_STRING_SVTOOLS_HTML_S_prod}, 8719}, + {{OOO_STRING_SVTOOLS_HTML_S_sum}, 8721}, + {{OOO_STRING_SVTOOLS_HTML_S_minus}, 8722}, + {{OOO_STRING_SVTOOLS_HTML_S_lowast}, 8727}, + {{OOO_STRING_SVTOOLS_HTML_S_radic}, 8730}, + {{OOO_STRING_SVTOOLS_HTML_S_prop}, 8733}, + {{OOO_STRING_SVTOOLS_HTML_S_infin}, 8734}, + {{OOO_STRING_SVTOOLS_HTML_S_ang}, 8736}, + {{OOO_STRING_SVTOOLS_HTML_S_and}, 8743}, + {{OOO_STRING_SVTOOLS_HTML_S_or}, 8744}, + {{OOO_STRING_SVTOOLS_HTML_S_cap}, 8745}, + {{OOO_STRING_SVTOOLS_HTML_S_cup}, 8746}, + {{OOO_STRING_SVTOOLS_HTML_S_int}, 8747}, + {{OOO_STRING_SVTOOLS_HTML_S_there4}, 8756}, + {{OOO_STRING_SVTOOLS_HTML_S_sim}, 8764}, + {{OOO_STRING_SVTOOLS_HTML_S_cong}, 8773}, + {{OOO_STRING_SVTOOLS_HTML_S_asymp}, 8776}, + {{OOO_STRING_SVTOOLS_HTML_S_ne}, 8800}, + {{OOO_STRING_SVTOOLS_HTML_S_equiv}, 8801}, + {{OOO_STRING_SVTOOLS_HTML_S_le}, 8804}, + {{OOO_STRING_SVTOOLS_HTML_S_ge}, 8805}, + {{OOO_STRING_SVTOOLS_HTML_S_sub}, 8834}, + {{OOO_STRING_SVTOOLS_HTML_S_sup}, 8835}, + {{OOO_STRING_SVTOOLS_HTML_S_nsub}, 8836}, + {{OOO_STRING_SVTOOLS_HTML_S_sube}, 8838}, + {{OOO_STRING_SVTOOLS_HTML_S_supe}, 8839}, + {{OOO_STRING_SVTOOLS_HTML_S_oplus}, 8853}, + {{OOO_STRING_SVTOOLS_HTML_S_otimes}, 8855}, + {{OOO_STRING_SVTOOLS_HTML_S_perp}, 8869}, + {{OOO_STRING_SVTOOLS_HTML_S_sdot}, 8901}, + {{OOO_STRING_SVTOOLS_HTML_S_lceil}, 8968}, + {{OOO_STRING_SVTOOLS_HTML_S_rceil}, 8969}, + {{OOO_STRING_SVTOOLS_HTML_S_lfloor}, 8970}, + {{OOO_STRING_SVTOOLS_HTML_S_rfloor}, 8971}, + {{OOO_STRING_SVTOOLS_HTML_S_lang}, 9001}, + {{OOO_STRING_SVTOOLS_HTML_S_rang}, 9002}, + {{OOO_STRING_SVTOOLS_HTML_S_loz}, 9674}, + {{OOO_STRING_SVTOOLS_HTML_S_spades}, 9824}, + {{OOO_STRING_SVTOOLS_HTML_S_clubs}, 9827}, + {{OOO_STRING_SVTOOLS_HTML_S_hearts}, 9829}, + {{OOO_STRING_SVTOOLS_HTML_S_diams}, 9830} }; extern "C" @@ -775,203 +628,203 @@ static int __FAR_DATA bSortOptionKeyWords = FALSE; static HTML_TokenEntry __FAR_DATA aHTMLOptionTab[] = { // Attribute ohne Wert - {{sHTML_O_box}, HTML_O_BOX}, - {{sHTML_O_checked}, HTML_O_CHECKED}, - {{sHTML_O_compact}, HTML_O_COMPACT}, - {{sHTML_O_continue}, HTML_O_CONTINUE}, - {{sHTML_O_controls}, HTML_O_CONTROLS}, // IExplorer 2.0 - {{sHTML_O_declare}, HTML_O_DECLARE}, - {{sHTML_O_disabled}, HTML_O_DISABLED}, - {{sHTML_O_folded}, HTML_O_FOLDED}, // Netscape internal - {{sHTML_O_ismap}, HTML_O_ISMAP}, - {{sHTML_O_mayscript}, HTML_O_MAYSCRIPT}, - {{sHTML_O_multiple}, HTML_O_MULTIPLE}, - {{sHTML_O_noflow}, HTML_O_NOFLOW}, - {{sHTML_O_nohref}, HTML_O_NOHREF}, // Netscape 2.0 - {{sHTML_O_noresize}, HTML_O_NORESIZE}, // Netscape 2.0 - {{sHTML_O_noshade}, HTML_O_NOSHADE}, // Netscape 2.0 - {{sHTML_O_nowrap}, HTML_O_NOWRAP}, - {{sHTML_O_plain}, HTML_O_PLAIN}, - {{sHTML_O_sdfixed}, HTML_O_SDFIXED}, - {{sHTML_O_selected}, HTML_O_SELECTED}, - {{sHTML_O_shapes}, HTML_O_SHAPES}, + {{OOO_STRING_SVTOOLS_HTML_O_box}, HTML_O_BOX}, + {{OOO_STRING_SVTOOLS_HTML_O_checked}, HTML_O_CHECKED}, + {{OOO_STRING_SVTOOLS_HTML_O_compact}, HTML_O_COMPACT}, + {{OOO_STRING_SVTOOLS_HTML_O_continue}, HTML_O_CONTINUE}, + {{OOO_STRING_SVTOOLS_HTML_O_controls}, HTML_O_CONTROLS}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_declare}, HTML_O_DECLARE}, + {{OOO_STRING_SVTOOLS_HTML_O_disabled}, HTML_O_DISABLED}, + {{OOO_STRING_SVTOOLS_HTML_O_folded}, HTML_O_FOLDED}, // Netscape internal + {{OOO_STRING_SVTOOLS_HTML_O_ismap}, HTML_O_ISMAP}, + {{OOO_STRING_SVTOOLS_HTML_O_mayscript}, HTML_O_MAYSCRIPT}, + {{OOO_STRING_SVTOOLS_HTML_O_multiple}, HTML_O_MULTIPLE}, + {{OOO_STRING_SVTOOLS_HTML_O_noflow}, HTML_O_NOFLOW}, + {{OOO_STRING_SVTOOLS_HTML_O_nohref}, HTML_O_NOHREF}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_noresize}, HTML_O_NORESIZE}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_noshade}, HTML_O_NOSHADE}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_nowrap}, HTML_O_NOWRAP}, + {{OOO_STRING_SVTOOLS_HTML_O_plain}, HTML_O_PLAIN}, + {{OOO_STRING_SVTOOLS_HTML_O_sdfixed}, HTML_O_SDFIXED}, + {{OOO_STRING_SVTOOLS_HTML_O_selected}, HTML_O_SELECTED}, + {{OOO_STRING_SVTOOLS_HTML_O_shapes}, HTML_O_SHAPES}, // Attribute mit einem String als Wert - {{sHTML_O_above}, HTML_O_ABOVE}, - {{sHTML_O_accept}, HTML_O_ACCEPT}, - {{sHTML_O_accesskey}, HTML_O_ACCESSKEY}, - {{sHTML_O_add_date}, HTML_O_ADD_DATE}, // Netscape internal - {{sHTML_O_alt}, HTML_O_ALT}, - {{sHTML_O_axes}, HTML_O_AXES}, - {{sHTML_O_axis}, HTML_O_AXIS}, - {{sHTML_O_below}, HTML_O_BELOW}, - {{sHTML_O_char}, HTML_O_CHAR}, // HTML 3 Table Model Draft - {{sHTML_O_class}, HTML_O_CLASS}, - {{sHTML_O_clip}, HTML_O_CLIP}, - {{sHTML_O_code}, HTML_O_CODE}, // HotJava - {{sHTML_O_codetype}, HTML_O_CODETYPE}, - {{sHTML_O_colspec}, HTML_O_COLSPEC}, - {{sHTML_O_content}, HTML_O_CONTENT}, - {{sHTML_O_coords}, HTML_O_COORDS}, // Netscape 2.0 - {{sHTML_O_dp}, HTML_O_DP}, - {{sHTML_O_enctype}, HTML_O_ENCTYPE}, - {{sHTML_O_error}, HTML_O_ERROR}, - {{sHTML_O_face}, HTML_O_FACE}, // IExplorer 2.0 - {{sHTML_O_frameborder}, HTML_O_FRAMEBORDER}, // IExplorer 3.0 - {{sHTML_O_httpequiv}, HTML_O_HTTPEQUIV}, - {{sHTML_O_language}, HTML_O_LANGUAGE}, // JavaScript - {{sHTML_O_last_modified}, HTML_O_LAST_MODIFIED}, // Netscape internal - {{sHTML_O_last_visit}, HTML_O_LAST_VISIT}, // Netscape internal - {{sHTML_O_md}, HTML_O_MD}, - {{sHTML_O_n}, HTML_O_N}, - {{sHTML_O_name}, HTML_O_NAME}, - {{sHTML_O_notation}, HTML_O_NOTATION}, - {{sHTML_O_prompt}, HTML_O_PROMPT}, - {{sHTML_O_shape}, HTML_O_SHAPE}, - {{sHTML_O_standby}, HTML_O_STANDBY}, - {{sHTML_O_style}, HTML_O_STYLE}, - {{sHTML_O_title}, HTML_O_TITLE}, - {{sHTML_O_value}, HTML_O_VALUE}, - {{sHTML_O_SDval}, HTML_O_SDVAL}, // StarDiv NumberValue - {{sHTML_O_SDnum}, HTML_O_SDNUM}, // StarDiv NumberFormat - {{sHTML_O_sdlibrary}, HTML_O_SDLIBRARY}, - {{sHTML_O_sdmodule}, HTML_O_SDMODULE}, + {{OOO_STRING_SVTOOLS_HTML_O_above}, HTML_O_ABOVE}, + {{OOO_STRING_SVTOOLS_HTML_O_accept}, HTML_O_ACCEPT}, + {{OOO_STRING_SVTOOLS_HTML_O_accesskey}, HTML_O_ACCESSKEY}, + {{OOO_STRING_SVTOOLS_HTML_O_add_date}, HTML_O_ADD_DATE}, // Netscape internal + {{OOO_STRING_SVTOOLS_HTML_O_alt}, HTML_O_ALT}, + {{OOO_STRING_SVTOOLS_HTML_O_axes}, HTML_O_AXES}, + {{OOO_STRING_SVTOOLS_HTML_O_axis}, HTML_O_AXIS}, + {{OOO_STRING_SVTOOLS_HTML_O_below}, HTML_O_BELOW}, + {{OOO_STRING_SVTOOLS_HTML_O_char}, HTML_O_CHAR}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_O_class}, HTML_O_CLASS}, + {{OOO_STRING_SVTOOLS_HTML_O_clip}, HTML_O_CLIP}, + {{OOO_STRING_SVTOOLS_HTML_O_code}, HTML_O_CODE}, // HotJava + {{OOO_STRING_SVTOOLS_HTML_O_codetype}, HTML_O_CODETYPE}, + {{OOO_STRING_SVTOOLS_HTML_O_colspec}, HTML_O_COLSPEC}, + {{OOO_STRING_SVTOOLS_HTML_O_content}, HTML_O_CONTENT}, + {{OOO_STRING_SVTOOLS_HTML_O_coords}, HTML_O_COORDS}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_dp}, HTML_O_DP}, + {{OOO_STRING_SVTOOLS_HTML_O_enctype}, HTML_O_ENCTYPE}, + {{OOO_STRING_SVTOOLS_HTML_O_error}, HTML_O_ERROR}, + {{OOO_STRING_SVTOOLS_HTML_O_face}, HTML_O_FACE}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_frameborder}, HTML_O_FRAMEBORDER}, // IExplorer 3.0 + {{OOO_STRING_SVTOOLS_HTML_O_httpequiv}, HTML_O_HTTPEQUIV}, + {{OOO_STRING_SVTOOLS_HTML_O_language}, HTML_O_LANGUAGE}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_last_modified}, HTML_O_LAST_MODIFIED}, // Netscape internal + {{OOO_STRING_SVTOOLS_HTML_O_last_visit}, HTML_O_LAST_VISIT}, // Netscape internal + {{OOO_STRING_SVTOOLS_HTML_O_md}, HTML_O_MD}, + {{OOO_STRING_SVTOOLS_HTML_O_n}, HTML_O_N}, + {{OOO_STRING_SVTOOLS_HTML_O_name}, HTML_O_NAME}, + {{OOO_STRING_SVTOOLS_HTML_O_notation}, HTML_O_NOTATION}, + {{OOO_STRING_SVTOOLS_HTML_O_prompt}, HTML_O_PROMPT}, + {{OOO_STRING_SVTOOLS_HTML_O_shape}, HTML_O_SHAPE}, + {{OOO_STRING_SVTOOLS_HTML_O_standby}, HTML_O_STANDBY}, + {{OOO_STRING_SVTOOLS_HTML_O_style}, HTML_O_STYLE}, + {{OOO_STRING_SVTOOLS_HTML_O_title}, HTML_O_TITLE}, + {{OOO_STRING_SVTOOLS_HTML_O_value}, HTML_O_VALUE}, + {{OOO_STRING_SVTOOLS_HTML_O_SDval}, HTML_O_SDVAL}, // StarDiv NumberValue + {{OOO_STRING_SVTOOLS_HTML_O_SDnum}, HTML_O_SDNUM}, // StarDiv NumberFormat + {{OOO_STRING_SVTOOLS_HTML_O_sdlibrary}, HTML_O_SDLIBRARY}, + {{OOO_STRING_SVTOOLS_HTML_O_sdmodule}, HTML_O_SDMODULE}, // Attribute mit einem SGML-Identifier als Wert - {{sHTML_O_from}, HTML_O_FROM}, - {{sHTML_O_id}, HTML_O_ID}, - {{sHTML_O_target}, HTML_O_TARGET}, // Netscape 2.0 - {{sHTML_O_to}, HTML_O_TO}, - {{sHTML_O_until}, HTML_O_UNTIL}, + {{OOO_STRING_SVTOOLS_HTML_O_from}, HTML_O_FROM}, + {{OOO_STRING_SVTOOLS_HTML_O_id}, HTML_O_ID}, + {{OOO_STRING_SVTOOLS_HTML_O_target}, HTML_O_TARGET}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_to}, HTML_O_TO}, + {{OOO_STRING_SVTOOLS_HTML_O_until}, HTML_O_UNTIL}, // Attribute mit einem URI als Wert - {{sHTML_O_action}, HTML_O_ACTION}, - {{sHTML_O_archive}, HTML_O_ARCHIVE}, - {{sHTML_O_background}, HTML_O_BACKGROUND}, - {{sHTML_O_classid}, HTML_O_CLASSID}, - {{sHTML_O_codebase}, HTML_O_CODEBASE}, // HotJava - {{sHTML_O_data}, HTML_O_DATA}, - {{sHTML_O_dynsrc}, HTML_O_DYNSRC}, // IExplorer 3.0b1 - {{sHTML_O_dynsync}, HTML_O_DYNSYNC}, // IExplorer 2.0 - {{sHTML_O_imagemap}, HTML_O_IMAGEMAP}, - {{sHTML_O_href}, HTML_O_HREF}, - {{sHTML_O_lowsrc}, HTML_O_LOWSRC}, // Netscape 3.0 - {{sHTML_O_script}, HTML_O_SCRIPT}, - {{sHTML_O_src}, HTML_O_SRC}, - {{sHTML_O_usemap}, HTML_O_USEMAP}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_action}, HTML_O_ACTION}, + {{OOO_STRING_SVTOOLS_HTML_O_archive}, HTML_O_ARCHIVE}, + {{OOO_STRING_SVTOOLS_HTML_O_background}, HTML_O_BACKGROUND}, + {{OOO_STRING_SVTOOLS_HTML_O_classid}, HTML_O_CLASSID}, + {{OOO_STRING_SVTOOLS_HTML_O_codebase}, HTML_O_CODEBASE}, // HotJava + {{OOO_STRING_SVTOOLS_HTML_O_data}, HTML_O_DATA}, + {{OOO_STRING_SVTOOLS_HTML_O_dynsrc}, HTML_O_DYNSRC}, // IExplorer 3.0b1 + {{OOO_STRING_SVTOOLS_HTML_O_dynsync}, HTML_O_DYNSYNC}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_imagemap}, HTML_O_IMAGEMAP}, + {{OOO_STRING_SVTOOLS_HTML_O_href}, HTML_O_HREF}, + {{OOO_STRING_SVTOOLS_HTML_O_lowsrc}, HTML_O_LOWSRC}, // Netscape 3.0 + {{OOO_STRING_SVTOOLS_HTML_O_script}, HTML_O_SCRIPT}, + {{OOO_STRING_SVTOOLS_HTML_O_src}, HTML_O_SRC}, + {{OOO_STRING_SVTOOLS_HTML_O_usemap}, HTML_O_USEMAP}, // Netscape 2.0 // Attribute mit Entity-Namen als Wert - {{sHTML_O_dingbat}, HTML_O_DINGBAT}, - {{sHTML_O_sym}, HTML_O_SYM}, + {{OOO_STRING_SVTOOLS_HTML_O_dingbat}, HTML_O_DINGBAT}, + {{OOO_STRING_SVTOOLS_HTML_O_sym}, HTML_O_SYM}, // Attribute mit einer Farbe als Wert (alle Netscape) - {{sHTML_O_alink}, HTML_O_ALINK}, - {{sHTML_O_bgcolor}, HTML_O_BGCOLOR}, - {{sHTML_O_bordercolor}, HTML_O_BORDERCOLOR}, // IExplorer 2.0 - {{sHTML_O_bordercolorlight}, HTML_O_BORDERCOLORLIGHT}, // IExplorer 2.0 - {{sHTML_O_bordercolordark}, HTML_O_BORDERCOLORDARK}, // IExplorer 2.0 - {{sHTML_O_color}, HTML_O_COLOR}, - {{sHTML_O_link}, HTML_O_LINK}, - {{sHTML_O_text}, HTML_O_TEXT}, - {{sHTML_O_vlink}, HTML_O_VLINK}, + {{OOO_STRING_SVTOOLS_HTML_O_alink}, HTML_O_ALINK}, + {{OOO_STRING_SVTOOLS_HTML_O_bgcolor}, HTML_O_BGCOLOR}, + {{OOO_STRING_SVTOOLS_HTML_O_bordercolor}, HTML_O_BORDERCOLOR}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_bordercolorlight}, HTML_O_BORDERCOLORLIGHT}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_bordercolordark}, HTML_O_BORDERCOLORDARK}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_color}, HTML_O_COLOR}, + {{OOO_STRING_SVTOOLS_HTML_O_link}, HTML_O_LINK}, + {{OOO_STRING_SVTOOLS_HTML_O_text}, HTML_O_TEXT}, + {{OOO_STRING_SVTOOLS_HTML_O_vlink}, HTML_O_VLINK}, // Attribute mit einem numerischen Wert - {{sHTML_O_border}, HTML_O_BORDER}, - {{sHTML_O_cellspacing},HTML_O_CELLSPACING}, // HTML 3 Table Model Draft - {{sHTML_O_cellpadding},HTML_O_CELLPADDING}, // HTML 3 Table Model Draft - {{sHTML_O_charoff}, HTML_O_CHAROFF}, // HTML 3 Table Model Draft - {{sHTML_O_colspan}, HTML_O_COLSPAN}, - {{sHTML_O_framespacing}, HTML_O_FRAMESPACING}, // IExplorer 3.0 - {{sHTML_O_gutter}, HTML_O_GUTTER}, // Netscape 3.0b5 - {{sHTML_O_indent}, HTML_O_INDENT}, - {{sHTML_O_height}, HTML_O_HEIGHT}, - {{sHTML_O_hspace}, HTML_O_HSPACE}, // Netscape - {{sHTML_O_left}, HTML_O_LEFT}, - {{sHTML_O_leftmargin}, HTML_O_LEFTMARGIN}, // IExplorer 2.0 - {{sHTML_O_loop}, HTML_O_LOOP}, // IExplorer 2.0 - {{sHTML_O_marginheight},HTML_O_MARGINHEIGHT}, // Netscape 2.0 - {{sHTML_O_marginwidth},HTML_O_MARGINWIDTH}, // Netscape 2.0 - {{sHTML_O_max}, HTML_O_MAX}, - {{sHTML_O_maxlength}, HTML_O_MAXLENGTH}, - {{sHTML_O_min}, HTML_O_MIN}, - {{sHTML_O_pagex}, HTML_O_PAGEX}, - {{sHTML_O_pagey}, HTML_O_PAGEY}, - {{sHTML_O_pointsize}, HTML_O_POINTSIZE}, - {{sHTML_O_rowspan}, HTML_O_ROWSPAN}, - {{sHTML_O_scrollamount}, HTML_O_SCROLLAMOUNT}, // IExplorer 2.0 - {{sHTML_O_scrolldelay}, HTML_O_SCROLLDELAY}, // IExplorer 2.0 - {{sHTML_O_seqnum}, HTML_O_SEQNUM}, - {{sHTML_O_skip}, HTML_O_SKIP}, - {{sHTML_O_span}, HTML_O_SPAN}, // HTML 3 Table Model Draft - {{sHTML_O_tabindex}, HTML_O_TABINDEX}, - {{sHTML_O_top}, HTML_O_TOP}, - {{sHTML_O_topmargin}, HTML_O_TOPMARGIN}, // IExplorer 2.0 - {{sHTML_O_vspace}, HTML_O_VSPACE}, // Netscape - {{sHTML_O_weight}, HTML_O_WEIGHT}, - {{sHTML_O_width}, HTML_O_WIDTH}, - {{sHTML_O_x}, HTML_O_X}, - {{sHTML_O_y}, HTML_O_Y}, - {{sHTML_O_zindex}, HTML_O_ZINDEX}, + {{OOO_STRING_SVTOOLS_HTML_O_border}, HTML_O_BORDER}, + {{OOO_STRING_SVTOOLS_HTML_O_cellspacing},HTML_O_CELLSPACING}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_O_cellpadding},HTML_O_CELLPADDING}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_O_charoff}, HTML_O_CHAROFF}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_O_colspan}, HTML_O_COLSPAN}, + {{OOO_STRING_SVTOOLS_HTML_O_framespacing}, HTML_O_FRAMESPACING}, // IExplorer 3.0 + {{OOO_STRING_SVTOOLS_HTML_O_gutter}, HTML_O_GUTTER}, // Netscape 3.0b5 + {{OOO_STRING_SVTOOLS_HTML_O_indent}, HTML_O_INDENT}, + {{OOO_STRING_SVTOOLS_HTML_O_height}, HTML_O_HEIGHT}, + {{OOO_STRING_SVTOOLS_HTML_O_hspace}, HTML_O_HSPACE}, // Netscape + {{OOO_STRING_SVTOOLS_HTML_O_left}, HTML_O_LEFT}, + {{OOO_STRING_SVTOOLS_HTML_O_leftmargin}, HTML_O_LEFTMARGIN}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_loop}, HTML_O_LOOP}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_marginheight},HTML_O_MARGINHEIGHT}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_marginwidth},HTML_O_MARGINWIDTH}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_max}, HTML_O_MAX}, + {{OOO_STRING_SVTOOLS_HTML_O_maxlength}, HTML_O_MAXLENGTH}, + {{OOO_STRING_SVTOOLS_HTML_O_min}, HTML_O_MIN}, + {{OOO_STRING_SVTOOLS_HTML_O_pagex}, HTML_O_PAGEX}, + {{OOO_STRING_SVTOOLS_HTML_O_pagey}, HTML_O_PAGEY}, + {{OOO_STRING_SVTOOLS_HTML_O_pointsize}, HTML_O_POINTSIZE}, + {{OOO_STRING_SVTOOLS_HTML_O_rowspan}, HTML_O_ROWSPAN}, + {{OOO_STRING_SVTOOLS_HTML_O_scrollamount}, HTML_O_SCROLLAMOUNT}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_scrolldelay}, HTML_O_SCROLLDELAY}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_seqnum}, HTML_O_SEQNUM}, + {{OOO_STRING_SVTOOLS_HTML_O_skip}, HTML_O_SKIP}, + {{OOO_STRING_SVTOOLS_HTML_O_span}, HTML_O_SPAN}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_O_tabindex}, HTML_O_TABINDEX}, + {{OOO_STRING_SVTOOLS_HTML_O_top}, HTML_O_TOP}, + {{OOO_STRING_SVTOOLS_HTML_O_topmargin}, HTML_O_TOPMARGIN}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_vspace}, HTML_O_VSPACE}, // Netscape + {{OOO_STRING_SVTOOLS_HTML_O_weight}, HTML_O_WEIGHT}, + {{OOO_STRING_SVTOOLS_HTML_O_width}, HTML_O_WIDTH}, + {{OOO_STRING_SVTOOLS_HTML_O_x}, HTML_O_X}, + {{OOO_STRING_SVTOOLS_HTML_O_y}, HTML_O_Y}, + {{OOO_STRING_SVTOOLS_HTML_O_zindex}, HTML_O_ZINDEX}, // Attribute mit Enum-Werten - {{sHTML_O_bgproperties}, HTML_O_BGPROPERTIES}, // IExplorer 2.0 - {{sHTML_O_behavior}, HTML_O_BEHAVIOR}, // IExplorer 2.0 - {{sHTML_O_clear}, HTML_O_CLEAR}, - {{sHTML_O_dir}, HTML_O_DIR}, // HTML 3 Table Model Draft - {{sHTML_O_direction}, HTML_O_DIRECTION}, // IExplorer 2.0 - {{sHTML_O_format}, HTML_O_FORMAT}, - {{sHTML_O_frame}, HTML_O_FRAME}, // HTML 3 Table Model Draft - {{sHTML_O_lang}, HTML_O_LANG}, - {{sHTML_O_method}, HTML_O_METHOD}, - {{sHTML_O_palette}, HTML_O_PALETTE}, - {{sHTML_O_rel}, HTML_O_REL}, - {{sHTML_O_rev}, HTML_O_REV}, - {{sHTML_O_rules}, HTML_O_RULES}, // HTML 3 Table Model Draft - {{sHTML_O_scrolling}, HTML_O_SCROLLING}, // Netscape 2.0 - {{sHTML_O_sdreadonly}, HTML_O_SDREADONLY}, - {{sHTML_O_subtype}, HTML_O_SUBTYPE}, - {{sHTML_O_type}, HTML_O_TYPE}, - {{sHTML_O_valign}, HTML_O_VALIGN}, - {{sHTML_O_valuetype}, HTML_O_VALUETYPE}, - {{sHTML_O_wrap}, HTML_O_WRAP}, - {{sHTML_O_visibility}, HTML_O_VISIBILITY}, + {{OOO_STRING_SVTOOLS_HTML_O_bgproperties}, HTML_O_BGPROPERTIES}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_behavior}, HTML_O_BEHAVIOR}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_clear}, HTML_O_CLEAR}, + {{OOO_STRING_SVTOOLS_HTML_O_dir}, HTML_O_DIR}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_O_direction}, HTML_O_DIRECTION}, // IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_format}, HTML_O_FORMAT}, + {{OOO_STRING_SVTOOLS_HTML_O_frame}, HTML_O_FRAME}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_O_lang}, HTML_O_LANG}, + {{OOO_STRING_SVTOOLS_HTML_O_method}, HTML_O_METHOD}, + {{OOO_STRING_SVTOOLS_HTML_O_palette}, HTML_O_PALETTE}, + {{OOO_STRING_SVTOOLS_HTML_O_rel}, HTML_O_REL}, + {{OOO_STRING_SVTOOLS_HTML_O_rev}, HTML_O_REV}, + {{OOO_STRING_SVTOOLS_HTML_O_rules}, HTML_O_RULES}, // HTML 3 Table Model Draft + {{OOO_STRING_SVTOOLS_HTML_O_scrolling}, HTML_O_SCROLLING}, // Netscape 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_sdreadonly}, HTML_O_SDREADONLY}, + {{OOO_STRING_SVTOOLS_HTML_O_subtype}, HTML_O_SUBTYPE}, + {{OOO_STRING_SVTOOLS_HTML_O_type}, HTML_O_TYPE}, + {{OOO_STRING_SVTOOLS_HTML_O_valign}, HTML_O_VALIGN}, + {{OOO_STRING_SVTOOLS_HTML_O_valuetype}, HTML_O_VALUETYPE}, + {{OOO_STRING_SVTOOLS_HTML_O_wrap}, HTML_O_WRAP}, + {{OOO_STRING_SVTOOLS_HTML_O_visibility}, HTML_O_VISIBILITY}, // Attribute mit Script-Code als Wert - {{sHTML_O_onblur}, HTML_O_ONBLUR}, // JavaScript - {{sHTML_O_onchange}, HTML_O_ONCHANGE}, // JavaScript - {{sHTML_O_onclick}, HTML_O_ONCLICK}, // JavaScript - {{sHTML_O_onfocus}, HTML_O_ONFOCUS}, // JavaScript - {{sHTML_O_onload}, HTML_O_ONLOAD}, // JavaScript - {{sHTML_O_onmouseover}, HTML_O_ONMOUSEOVER}, // JavaScript - {{sHTML_O_onreset}, HTML_O_ONRESET}, // JavaScript - {{sHTML_O_onselect}, HTML_O_ONSELECT}, // JavaScript - {{sHTML_O_onsubmit}, HTML_O_ONSUBMIT}, // JavaScript - {{sHTML_O_onunload}, HTML_O_ONUNLOAD}, // JavaScript - {{sHTML_O_onabort}, HTML_O_ONABORT}, // JavaScript - {{sHTML_O_onerror}, HTML_O_ONERROR}, // JavaScript - {{sHTML_O_onmouseout}, HTML_O_ONMOUSEOUT}, // JavaScript - - {{sHTML_O_SDonblur}, HTML_O_SDONBLUR}, // StarBasic - {{sHTML_O_SDonchange}, HTML_O_SDONCHANGE}, // StarBasic - {{sHTML_O_SDonclick}, HTML_O_SDONCLICK}, // StarBasic - {{sHTML_O_SDonfocus}, HTML_O_SDONFOCUS}, // StarBasic - {{sHTML_O_SDonload}, HTML_O_SDONLOAD}, // StarBasic - {{sHTML_O_SDonmouseover}, HTML_O_SDONMOUSEOVER}, // StarBasic - {{sHTML_O_SDonreset}, HTML_O_SDONRESET}, // StarBasic - {{sHTML_O_SDonselect}, HTML_O_SDONSELECT}, // StarBasic - {{sHTML_O_SDonsubmit}, HTML_O_SDONSUBMIT}, // StarBasic - {{sHTML_O_SDonunload}, HTML_O_SDONUNLOAD}, // StarBasic - {{sHTML_O_SDonabort}, HTML_O_SDONABORT}, // StarBasic - {{sHTML_O_SDonerror}, HTML_O_SDONERROR}, // StarBasic - {{sHTML_O_SDonmouseout}, HTML_O_SDONMOUSEOUT}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_onblur}, HTML_O_ONBLUR}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onchange}, HTML_O_ONCHANGE}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onclick}, HTML_O_ONCLICK}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onfocus}, HTML_O_ONFOCUS}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onload}, HTML_O_ONLOAD}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onmouseover}, HTML_O_ONMOUSEOVER}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onreset}, HTML_O_ONRESET}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onselect}, HTML_O_ONSELECT}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onsubmit}, HTML_O_ONSUBMIT}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onunload}, HTML_O_ONUNLOAD}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onabort}, HTML_O_ONABORT}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onerror}, HTML_O_ONERROR}, // JavaScript + {{OOO_STRING_SVTOOLS_HTML_O_onmouseout}, HTML_O_ONMOUSEOUT}, // JavaScript + + {{OOO_STRING_SVTOOLS_HTML_O_SDonblur}, HTML_O_SDONBLUR}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonchange}, HTML_O_SDONCHANGE}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonclick}, HTML_O_SDONCLICK}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonfocus}, HTML_O_SDONFOCUS}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonload}, HTML_O_SDONLOAD}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonmouseover}, HTML_O_SDONMOUSEOVER}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonreset}, HTML_O_SDONRESET}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonselect}, HTML_O_SDONSELECT}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonsubmit}, HTML_O_SDONSUBMIT}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonunload}, HTML_O_SDONUNLOAD}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonabort}, HTML_O_SDONABORT}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonerror}, HTML_O_SDONERROR}, // StarBasic + {{OOO_STRING_SVTOOLS_HTML_O_SDonmouseout}, HTML_O_SDONMOUSEOUT}, // StarBasic // Attribute mit Kontext-abhaengigen Werten - {{sHTML_O_align}, HTML_O_ALIGN}, - {{sHTML_O_cols}, HTML_O_COLS}, // Netscape 2.0 vs HTML 2.0 - {{sHTML_O_rows}, HTML_O_ROWS}, // Netscape 2.0 vs HTML 2.0 - {{sHTML_O_size}, HTML_O_SIZE}, - {{sHTML_O_start}, HTML_O_START}, // Netscape 2.0 vs IExplorer 2.0 - {{sHTML_O_units}, HTML_O_UNITS} + {{OOO_STRING_SVTOOLS_HTML_O_align}, HTML_O_ALIGN}, + {{OOO_STRING_SVTOOLS_HTML_O_cols}, HTML_O_COLS}, // Netscape 2.0 vs HTML 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_rows}, HTML_O_ROWS}, // Netscape 2.0 vs HTML 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_size}, HTML_O_SIZE}, + {{OOO_STRING_SVTOOLS_HTML_O_start}, HTML_O_START}, // Netscape 2.0 vs IExplorer 2.0 + {{OOO_STRING_SVTOOLS_HTML_O_units}, HTML_O_UNITS} }; int GetHTMLOption( const String& rName ) @@ -1017,147 +870,152 @@ static int __FAR_DATA bSortColorKeyWords = FALSE; #define HTML_NO_COLOR 0xffffffffUL +// die Farbnamen werden nicht exportiert +// Sie stammen aus "http://www.uio.no/~mnbjerke/colors_w.html" +// und scheinen im Gegensatz zu denen aus +// "http://www.infi.net/wwwimages/colorindex.html" +// zu stimmen static HTML_ColorEntry __FAR_DATA aHTMLColorNameTab[] = { - {{sHTML_COL_aliceblue}, 0x00f0f8ffUL}, - {{sHTML_COL_antiquewhite}, 0x00faebd7UL}, - {{sHTML_COL_aqua}, 0x0000ffffUL}, - {{sHTML_COL_aquamarine}, 0x007fffd4UL}, - {{sHTML_COL_azure}, 0x00f0ffffUL}, - {{sHTML_COL_beige}, 0x00f5f5dcUL}, - {{sHTML_COL_bisque}, 0x00ffe4c4UL}, - {{sHTML_COL_black}, 0x00000000UL}, - {{sHTML_COL_blanchedalmond}, 0x00ffebcdUL}, - {{sHTML_COL_blue}, 0x000000ffUL}, - {{sHTML_COL_blueviolet}, 0x008a2be2UL}, - {{sHTML_COL_brown}, 0x00a52a2aUL}, - {{sHTML_COL_burlywood}, 0x00deb887UL}, - {{sHTML_COL_cadetblue}, 0x005f9ea0UL}, - {{sHTML_COL_chartreuse}, 0x007fff00UL}, - {{sHTML_COL_chocolate}, 0x00d2691eUL}, - {{sHTML_COL_coral}, 0x00ff7f50UL}, - {{sHTML_COL_cornflowerblue}, 0x006495edUL}, - {{sHTML_COL_cornsilk}, 0x00fff8dcUL}, - {{sHTML_COL_crimson}, 0x00dc143cUL}, - {{sHTML_COL_cyan}, 0x0000ffffUL}, - {{sHTML_COL_darkblue}, 0x0000008bUL}, - {{sHTML_COL_darkcyan}, 0x00008b8bUL}, - {{sHTML_COL_darkgoldenrod}, 0x00b8860bUL}, - {{sHTML_COL_darkgray}, 0x00a9a9a9UL}, - {{sHTML_COL_darkgreen}, 0x00006400UL}, - {{sHTML_COL_darkkhaki}, 0x00bdb76bUL}, - {{sHTML_COL_darkmagenta}, 0x008b008bUL}, - {{sHTML_COL_darkolivegreen}, 0x00556b2fUL}, - {{sHTML_COL_darkorange}, 0x00ff8c00UL}, - {{sHTML_COL_darkorchid}, 0x009932ccUL}, - {{sHTML_COL_darkred}, 0x008b0000UL}, - {{sHTML_COL_darksalmon}, 0x00e9967aUL}, - {{sHTML_COL_darkseagreen}, 0x008fbc8fUL}, - {{sHTML_COL_darkslateblue}, 0x00483d8bUL}, - {{sHTML_COL_darkslategray}, 0x002f4f4fUL}, - {{sHTML_COL_darkturquoise}, 0x0000ced1UL}, - {{sHTML_COL_darkviolet}, 0x009400d3UL}, - {{sHTML_COL_deeppink}, 0x00ff1493UL}, - {{sHTML_COL_deepskyblue}, 0x0000bfffUL}, - {{sHTML_COL_dimgray}, 0x00696969UL}, - {{sHTML_COL_dodgerblue}, 0x001e90ffUL}, - {{sHTML_COL_firebrick}, 0x00b22222UL}, - {{sHTML_COL_floralwhite}, 0x00fffaf0UL}, - {{sHTML_COL_forestgreen}, 0x00228b22UL}, - {{sHTML_COL_fuchsia}, 0x00ff00ffUL}, - {{sHTML_COL_gainsboro}, 0x00dcdcdcUL}, - {{sHTML_COL_ghostwhite}, 0x00f8f8ffUL}, - {{sHTML_COL_gold}, 0x00ffd700UL}, - {{sHTML_COL_goldenrod}, 0x00daa520UL}, - {{sHTML_COL_gray}, 0x00808080UL}, - {{sHTML_COL_green}, 0x00008000UL}, - {{sHTML_COL_greenyellow}, 0x00adff2fUL}, - {{sHTML_COL_honeydew}, 0x00f0fff0UL}, - {{sHTML_COL_hotpink}, 0x00ff69b4UL}, - {{sHTML_COL_indianred}, 0x00cd5c5cUL}, - {{sHTML_COL_indigo}, 0x004b0082UL}, - {{sHTML_COL_ivory}, 0x00fffff0UL}, - {{sHTML_COL_khaki}, 0x00f0e68cUL}, - {{sHTML_COL_lavender}, 0x00e6e6faUL}, - {{sHTML_COL_lavenderblush}, 0x00fff0f5UL}, - {{sHTML_COL_lawngreen}, 0x007cfc00UL}, - {{sHTML_COL_lemonchiffon}, 0x00fffacdUL}, - {{sHTML_COL_lightblue}, 0x00add8e6UL}, - {{sHTML_COL_lightcoral}, 0x00f08080UL}, - {{sHTML_COL_lightcyan}, 0x00e0ffffUL}, - {{sHTML_COL_lightgoldenrodyellow}, 0x00fafad2UL}, - {{sHTML_COL_lightgreen}, 0x0090ee90UL}, - {{sHTML_COL_lightgrey}, 0x00d3d3d3UL}, - {{sHTML_COL_lightpink}, 0x00ffb6c1UL}, - {{sHTML_COL_lightsalmon}, 0x00ffa07aUL}, - {{sHTML_COL_lightseagreen}, 0x0020b2aaUL}, - {{sHTML_COL_lightskyblue}, 0x0087cefaUL}, - {{sHTML_COL_lightslategray}, 0x00778899UL}, - {{sHTML_COL_lightsteelblue}, 0x00b0c4deUL}, - {{sHTML_COL_lightyellow}, 0x00ffffe0UL}, - {{sHTML_COL_lime}, 0x0000ff00UL}, - {{sHTML_COL_limegreen}, 0x0032cd32UL}, - {{sHTML_COL_linen}, 0x00faf0e6UL}, - {{sHTML_COL_magenta}, 0x00ff00ffUL}, - {{sHTML_COL_maroon}, 0x00800000UL}, - {{sHTML_COL_mediumaquamarine}, 0x0066cdaaUL}, - {{sHTML_COL_mediumblue}, 0x000000cdUL}, - {{sHTML_COL_mediumorchid}, 0x00ba55d3UL}, - {{sHTML_COL_mediumpurple}, 0x009370dbUL}, - {{sHTML_COL_mediumseagreen}, 0x003cb371UL}, - {{sHTML_COL_mediumslateblue}, 0x007b68eeUL}, - {{sHTML_COL_mediumspringgreen}, 0x0000fa9aUL}, - {{sHTML_COL_mediumturquoise}, 0x0048d1ccUL}, - {{sHTML_COL_mediumvioletred}, 0x00c71585UL}, - {{sHTML_COL_midnightblue}, 0x00191970UL}, - {{sHTML_COL_mintcream}, 0x00f5fffaUL}, - {{sHTML_COL_mistyrose}, 0x00ffe4e1UL}, - {{sHTML_COL_moccasin}, 0x00ffe4b5UL}, - {{sHTML_COL_navajowhite}, 0x00ffdeadUL}, - {{sHTML_COL_navy}, 0x00000080UL}, - {{sHTML_COL_oldlace}, 0x00fdf5e6UL}, - {{sHTML_COL_olive}, 0x00808000UL}, - {{sHTML_COL_olivedrab}, 0x006b8e23UL}, - {{sHTML_COL_orange}, 0x00ffa500UL}, - {{sHTML_COL_orangered}, 0x00ff4500UL}, - {{sHTML_COL_orchid}, 0x00da70d6UL}, - {{sHTML_COL_palegoldenrod}, 0x00eee8aaUL}, - {{sHTML_COL_palegreen}, 0x0098fb98UL}, - {{sHTML_COL_paleturquoise}, 0x00afeeeeUL}, - {{sHTML_COL_palevioletred}, 0x00db7093UL}, - {{sHTML_COL_papayawhip}, 0x00ffefd5UL}, - {{sHTML_COL_peachpuff}, 0x00ffdab9UL}, - {{sHTML_COL_peru}, 0x00cd853fUL}, - {{sHTML_COL_pink}, 0x00ffc0cbUL}, - {{sHTML_COL_plum}, 0x00dda0ddUL}, - {{sHTML_COL_powderblue}, 0x00b0e0e6UL}, - {{sHTML_COL_purple}, 0x00800080UL}, - {{sHTML_COL_red}, 0x00ff0000UL}, - {{sHTML_COL_rosybrown}, 0x00bc8f8fUL}, - {{sHTML_COL_royalblue}, 0x004169e1UL}, - {{sHTML_COL_saddlebrown}, 0x008b4513UL}, - {{sHTML_COL_salmon}, 0x00fa8072UL}, - {{sHTML_COL_sandybrown}, 0x00f4a460UL}, - {{sHTML_COL_seagreen}, 0x002e8b57UL}, - {{sHTML_COL_seashell}, 0x00fff5eeUL}, - {{sHTML_COL_sienna}, 0x00a0522dUL}, - {{sHTML_COL_silver}, 0x00c0c0c0UL}, - {{sHTML_COL_skyblue}, 0x0087ceebUL}, - {{sHTML_COL_slateblue}, 0x006a5acdUL}, - {{sHTML_COL_slategray}, 0x00708090UL}, - {{sHTML_COL_snow}, 0x00fffafaUL}, - {{sHTML_COL_springgreen}, 0x0000ff7fUL}, - {{sHTML_COL_steelblue}, 0x004682b4UL}, - {{sHTML_COL_tan}, 0x00d2b48cUL}, - {{sHTML_COL_teal}, 0x00008080UL}, - {{sHTML_COL_thistle}, 0x00d8bfd8UL}, - {{sHTML_COL_tomato}, 0x00ff6347UL}, - {{sHTML_COL_turquoise}, 0x0040e0d0UL}, - {{sHTML_COL_violet}, 0x00ee82eeUL}, - {{sHTML_COL_wheat}, 0x00f5deb3UL}, - {{sHTML_COL_white}, 0x00ffffffUL}, - {{sHTML_COL_whitesmoke}, 0x00f5f5f5UL}, - {{sHTML_COL_yellow}, 0x00ffff00UL}, - {{sHTML_COL_yellowgreen}, 0x009acd32UL} + { { "ALICEBLUE" }, 0x00f0f8ffUL }, + { { "ANTIQUEWHITE" }, 0x00faebd7UL }, + { { "AQUA" }, 0x0000ffffUL }, + { { "AQUAMARINE" }, 0x007fffd4UL }, + { { "AZURE" }, 0x00f0ffffUL }, + { { "BEIGE" }, 0x00f5f5dcUL }, + { { "BISQUE" }, 0x00ffe4c4UL }, + { { "BLACK" }, 0x00000000UL }, + { { "BLANCHEDALMOND" }, 0x00ffebcdUL }, + { { "BLUE" }, 0x000000ffUL }, + { { "BLUEVIOLET" }, 0x008a2be2UL }, + { { "BROWN" }, 0x00a52a2aUL }, + { { "BURLYWOOD" }, 0x00deb887UL }, + { { "CADETBLUE" }, 0x005f9ea0UL }, + { { "CHARTREUSE" }, 0x007fff00UL }, + { { "CHOCOLATE" }, 0x00d2691eUL }, + { { "CORAL" }, 0x00ff7f50UL }, + { { "CORNFLOWERBLUE" }, 0x006495edUL }, + { { "CORNSILK" }, 0x00fff8dcUL }, + { { "CRIMSON" }, 0x00dc143cUL }, + { { "CYAN" }, 0x0000ffffUL }, + { { "DARKBLUE" }, 0x0000008bUL }, + { { "DARKCYAN" }, 0x00008b8bUL }, + { { "DARKGOLDENROD" }, 0x00b8860bUL }, + { { "DARKGRAY" }, 0x00a9a9a9UL }, + { { "DARKGREEN" }, 0x00006400UL }, + { { "DARKKHAKI" }, 0x00bdb76bUL }, + { { "DARKMAGENTA" }, 0x008b008bUL }, + { { "DARKOLIVEGREEN" }, 0x00556b2fUL }, + { { "DARKORANGE" }, 0x00ff8c00UL }, + { { "DARKORCHID" }, 0x009932ccUL }, + { { "DARKRED" }, 0x008b0000UL }, + { { "DARKSALMON" }, 0x00e9967aUL }, + { { "DARKSEAGREEN" }, 0x008fbc8fUL }, + { { "DARKSLATEBLUE" }, 0x00483d8bUL }, + { { "DARKSLATEGRAY" }, 0x002f4f4fUL }, + { { "DARKTURQUOISE" }, 0x0000ced1UL }, + { { "DARKVIOLET" }, 0x009400d3UL }, + { { "DEEPPINK" }, 0x00ff1493UL }, + { { "DEEPSKYBLUE" }, 0x0000bfffUL }, + { { "DIMGRAY" }, 0x00696969UL }, + { { "DODGERBLUE" }, 0x001e90ffUL }, + { { "FIREBRICK" }, 0x00b22222UL }, + { { "FLORALWHITE" }, 0x00fffaf0UL }, + { { "FORESTGREEN" }, 0x00228b22UL }, + { { "FUCHSIA" }, 0x00ff00ffUL }, + { { "GAINSBORO" }, 0x00dcdcdcUL }, + { { "GHOSTWHITE" }, 0x00f8f8ffUL }, + { { "GOLD" }, 0x00ffd700UL }, + { { "GOLDENROD" }, 0x00daa520UL }, + { { "GRAY" }, 0x00808080UL }, + { { "GREEN" }, 0x00008000UL }, + { { "GREENYELLOW" }, 0x00adff2fUL }, + { { "HONEYDEW" }, 0x00f0fff0UL }, + { { "HOTPINK" }, 0x00ff69b4UL }, + { { "INDIANRED" }, 0x00cd5c5cUL }, + { { "INDIGO" }, 0x004b0082UL }, + { { "IVORY" }, 0x00fffff0UL }, + { { "KHAKI" }, 0x00f0e68cUL }, + { { "LAVENDER" }, 0x00e6e6faUL }, + { { "LAVENDERBLUSH" }, 0x00fff0f5UL }, + { { "LAWNGREEN" }, 0x007cfc00UL }, + { { "LEMONCHIFFON" }, 0x00fffacdUL }, + { { "LIGHTBLUE" }, 0x00add8e6UL }, + { { "LIGHTCORAL" }, 0x00f08080UL }, + { { "LIGHTCYAN" }, 0x00e0ffffUL }, + { { "LIGHTGOLDENRODYELLOW" }, 0x00fafad2UL }, + { { "LIGHTGREEN" }, 0x0090ee90UL }, + { { "LIGHTGREY" }, 0x00d3d3d3UL }, + { { "LIGHTPINK" }, 0x00ffb6c1UL }, + { { "LIGHTSALMON" }, 0x00ffa07aUL }, + { { "LIGHTSEAGREEN" }, 0x0020b2aaUL }, + { { "LIGHTSKYBLUE" }, 0x0087cefaUL }, + { { "LIGHTSLATEGRAY" }, 0x00778899UL }, + { { "LIGHTSTEELBLUE" }, 0x00b0c4deUL }, + { { "LIGHTYELLOW" }, 0x00ffffe0UL }, + { { "LIME" }, 0x0000ff00UL }, + { { "LIMEGREEN" }, 0x0032cd32UL }, + { { "LINEN" }, 0x00faf0e6UL }, + { { "MAGENTA" }, 0x00ff00ffUL }, + { { "MAROON" }, 0x00800000UL }, + { { "MEDIUMAQUAMARINE" }, 0x0066cdaaUL }, + { { "MEDIUMBLUE" }, 0x000000cdUL }, + { { "MEDIUMORCHID" }, 0x00ba55d3UL }, + { { "MEDIUMPURPLE" }, 0x009370dbUL }, + { { "MEDIUMSEAGREEN" }, 0x003cb371UL }, + { { "MEDIUMSLATEBLUE" }, 0x007b68eeUL }, + { { "MEDIUMSPRINGGREEN" }, 0x0000fa9aUL }, + { { "MEDIUMTURQUOISE" }, 0x0048d1ccUL }, + { { "MEDIUMVIOLETRED" }, 0x00c71585UL }, + { { "MIDNIGHTBLUE" }, 0x00191970UL }, + { { "MINTCREAM" }, 0x00f5fffaUL }, + { { "MISTYROSE" }, 0x00ffe4e1UL }, + { { "MOCCASIN" }, 0x00ffe4b5UL }, + { { "NAVAJOWHITE" }, 0x00ffdeadUL }, + { { "NAVY" }, 0x00000080UL }, + { { "OLDLACE" }, 0x00fdf5e6UL }, + { { "OLIVE" }, 0x00808000UL }, + { { "OLIVEDRAB" }, 0x006b8e23UL }, + { { "ORANGE" }, 0x00ffa500UL }, + { { "ORANGERED" }, 0x00ff4500UL }, + { { "ORCHID" }, 0x00da70d6UL }, + { { "PALEGOLDENROD" }, 0x00eee8aaUL }, + { { "PALEGREEN" }, 0x0098fb98UL }, + { { "PALETURQUOISE" }, 0x00afeeeeUL }, + { { "PALEVIOLETRED" }, 0x00db7093UL }, + { { "PAPAYAWHIP" }, 0x00ffefd5UL }, + { { "PEACHPUFF" }, 0x00ffdab9UL }, + { { "PERU" }, 0x00cd853fUL }, + { { "PINK" }, 0x00ffc0cbUL }, + { { "PLUM" }, 0x00dda0ddUL }, + { { "POWDERBLUE" }, 0x00b0e0e6UL }, + { { "PURPLE" }, 0x00800080UL }, + { { "RED" }, 0x00ff0000UL }, + { { "ROSYBROWN" }, 0x00bc8f8fUL }, + { { "ROYALBLUE" }, 0x004169e1UL }, + { { "SADDLEBROWN" }, 0x008b4513UL }, + { { "SALMON" }, 0x00fa8072UL }, + { { "SANDYBROWN" }, 0x00f4a460UL }, + { { "SEAGREEN" }, 0x002e8b57UL }, + { { "SEASHELL" }, 0x00fff5eeUL }, + { { "SIENNA" }, 0x00a0522dUL }, + { { "SILVER" }, 0x00c0c0c0UL }, + { { "SKYBLUE" }, 0x0087ceebUL }, + { { "SLATEBLUE" }, 0x006a5acdUL }, + { { "SLATEGRAY" }, 0x00708090UL }, + { { "SNOW" }, 0x00fffafaUL }, + { { "SPRINGGREEN" }, 0x0000ff7fUL }, + { { "STEELBLUE" }, 0x004682b4UL }, + { { "TAN" }, 0x00d2b48cUL }, + { { "TEAL" }, 0x00008080UL }, + { { "THISTLE" }, 0x00d8bfd8UL }, + { { "TOMATO" }, 0x00ff6347UL }, + { { "TURQUOISE" }, 0x0040e0d0UL }, + { { "VIOLET" }, 0x00ee82eeUL }, + { { "WHEAT" }, 0x00f5deb3UL }, + { { "WHITE" }, 0x00ffffffUL }, + { { "WHITESMOKE" }, 0x00f5f5f5UL }, + { { "YELLOW" }, 0x00ffff00UL }, + { { "YELLOWGREEN" }, 0x009acd32UL } }; extern "C" diff --git a/svtools/source/svhtml/htmlout.cxx b/svtools/source/svhtml/htmlout.cxx index 6b6e0b34a975..5b584a37059d 100644 --- a/svtools/source/svhtml/htmlout.cxx +++ b/svtools/source/svhtml/htmlout.cxx @@ -132,216 +132,216 @@ const sal_Char *lcl_svhtml_GetEntityForChar( sal_Unicode c, switch( c ) { -// case '\x0a': return HTMLOutFuncs::Out_Tag( rStream, sHTML_linebreak ); - - case '<': pStr = sHTML_C_lt; break; - case '>': pStr = sHTML_C_gt; break; - case '&': pStr = sHTML_C_amp; break; - case '"': pStr = sHTML_C_quot; break; - - case 161: pStr = sHTML_S_iexcl; break; - case 162: pStr = sHTML_S_cent; break; - case 163: pStr = sHTML_S_pound; break; - case 164: pStr = sHTML_S_curren; break; - case 165: pStr = sHTML_S_yen; break; - case 166: pStr = sHTML_S_brvbar; break; - case 167: pStr = sHTML_S_sect; break; - case 168: pStr = sHTML_S_uml; break; - case 169: pStr = sHTML_S_copy; break; - case 170: pStr = sHTML_S_ordf; break; - case 171: pStr = sHTML_S_laquo; break; - case 172: pStr = sHTML_S_not; break; - case 174: pStr = sHTML_S_reg; break; - case 175: pStr = sHTML_S_macr; break; - case 176: pStr = sHTML_S_deg; break; - case 177: pStr = sHTML_S_plusmn; break; - case 178: pStr = sHTML_S_sup2; break; - case 179: pStr = sHTML_S_sup3; break; - case 180: pStr = sHTML_S_acute; break; - case 181: pStr = sHTML_S_micro; break; - case 182: pStr = sHTML_S_para; break; - case 183: pStr = sHTML_S_middot; break; - case 184: pStr = sHTML_S_cedil; break; - case 185: pStr = sHTML_S_sup1; break; - case 186: pStr = sHTML_S_ordm; break; - case 187: pStr = sHTML_S_raquo; break; - case 188: pStr = sHTML_S_frac14; break; - case 189: pStr = sHTML_S_frac12; break; - case 190: pStr = sHTML_S_frac34; break; - case 191: pStr = sHTML_S_iquest; break; - - case 192: pStr = sHTML_C_Agrave; break; - case 193: pStr = sHTML_C_Aacute; break; - case 194: pStr = sHTML_C_Acirc; break; - case 195: pStr = sHTML_C_Atilde; break; - case 196: pStr = sHTML_C_Auml; break; - case 197: pStr = sHTML_C_Aring; break; - case 198: pStr = sHTML_C_AElig; break; - case 199: pStr = sHTML_C_Ccedil; break; - case 200: pStr = sHTML_C_Egrave; break; - case 201: pStr = sHTML_C_Eacute; break; - case 202: pStr = sHTML_C_Ecirc; break; - case 203: pStr = sHTML_C_Euml; break; - case 204: pStr = sHTML_C_Igrave; break; - case 205: pStr = sHTML_C_Iacute; break; - case 206: pStr = sHTML_C_Icirc; break; - case 207: pStr = sHTML_C_Iuml; break; - case 208: pStr = sHTML_C_ETH; break; - case 209: pStr = sHTML_C_Ntilde; break; - case 210: pStr = sHTML_C_Ograve; break; - case 211: pStr = sHTML_C_Oacute; break; - case 212: pStr = sHTML_C_Ocirc; break; - case 213: pStr = sHTML_C_Otilde; break; - case 214: pStr = sHTML_C_Ouml; break; - case 215: pStr = sHTML_S_times; break; - case 216: pStr = sHTML_C_Oslash; break; - case 217: pStr = sHTML_C_Ugrave; break; - case 218: pStr = sHTML_C_Uacute; break; - case 219: pStr = sHTML_C_Ucirc; break; - case 220: pStr = sHTML_C_Uuml; break; - case 221: pStr = sHTML_C_Yacute; break; - - case 222: pStr = sHTML_C_THORN; break; - case 223: pStr = sHTML_C_szlig; break; - - case 224: pStr = sHTML_S_agrave; break; - case 225: pStr = sHTML_S_aacute; break; - case 226: pStr = sHTML_S_acirc; break; - case 227: pStr = sHTML_S_atilde; break; - case 228: pStr = sHTML_S_auml; break; - case 229: pStr = sHTML_S_aring; break; - case 230: pStr = sHTML_S_aelig; break; - case 231: pStr = sHTML_S_ccedil; break; - case 232: pStr = sHTML_S_egrave; break; - case 233: pStr = sHTML_S_eacute; break; - case 234: pStr = sHTML_S_ecirc; break; - case 235: pStr = sHTML_S_euml; break; - case 236: pStr = sHTML_S_igrave; break; - case 237: pStr = sHTML_S_iacute; break; - case 238: pStr = sHTML_S_icirc; break; - case 239: pStr = sHTML_S_iuml; break; - case 240: pStr = sHTML_S_eth; break; - case 241: pStr = sHTML_S_ntilde; break; - case 242: pStr = sHTML_S_ograve; break; - case 243: pStr = sHTML_S_oacute; break; - case 244: pStr = sHTML_S_ocirc; break; - case 245: pStr = sHTML_S_otilde; break; - case 246: pStr = sHTML_S_ouml; break; - case 247: pStr = sHTML_S_divide; break; - case 248: pStr = sHTML_S_oslash; break; - case 249: pStr = sHTML_S_ugrave; break; - case 250: pStr = sHTML_S_uacute; break; - case 251: pStr = sHTML_S_ucirc; break; - case 252: pStr = sHTML_S_uuml; break; - case 253: pStr = sHTML_S_yacute; break; - case 254: pStr = sHTML_S_thorn; break; - case 255: pStr = sHTML_S_yuml; break; - - case 338: pStr = sHTML_S_OElig; break; - case 339: pStr = sHTML_S_oelig; break; - case 352: pStr = sHTML_S_Scaron; break; - case 353: pStr = sHTML_S_scaron; break; - case 376: pStr = sHTML_S_Yuml; break; - case 402: pStr = sHTML_S_fnof; break; - case 710: pStr = sHTML_S_circ; break; - case 732: pStr = sHTML_S_tilde; break; +// case '\x0a': return HTMLOutFuncs::Out_Tag( rStream, OOO_STRING_SVTOOLS_HTML_linebreak ); + + case '<': pStr = OOO_STRING_SVTOOLS_HTML_C_lt; break; + case '>': pStr = OOO_STRING_SVTOOLS_HTML_C_gt; break; + case '&': pStr = OOO_STRING_SVTOOLS_HTML_C_amp; break; + case '"': pStr = OOO_STRING_SVTOOLS_HTML_C_quot; break; + + case 161: pStr = OOO_STRING_SVTOOLS_HTML_S_iexcl; break; + case 162: pStr = OOO_STRING_SVTOOLS_HTML_S_cent; break; + case 163: pStr = OOO_STRING_SVTOOLS_HTML_S_pound; break; + case 164: pStr = OOO_STRING_SVTOOLS_HTML_S_curren; break; + case 165: pStr = OOO_STRING_SVTOOLS_HTML_S_yen; break; + case 166: pStr = OOO_STRING_SVTOOLS_HTML_S_brvbar; break; + case 167: pStr = OOO_STRING_SVTOOLS_HTML_S_sect; break; + case 168: pStr = OOO_STRING_SVTOOLS_HTML_S_uml; break; + case 169: pStr = OOO_STRING_SVTOOLS_HTML_S_copy; break; + case 170: pStr = OOO_STRING_SVTOOLS_HTML_S_ordf; break; + case 171: pStr = OOO_STRING_SVTOOLS_HTML_S_laquo; break; + case 172: pStr = OOO_STRING_SVTOOLS_HTML_S_not; break; + case 174: pStr = OOO_STRING_SVTOOLS_HTML_S_reg; break; + case 175: pStr = OOO_STRING_SVTOOLS_HTML_S_macr; break; + case 176: pStr = OOO_STRING_SVTOOLS_HTML_S_deg; break; + case 177: pStr = OOO_STRING_SVTOOLS_HTML_S_plusmn; break; + case 178: pStr = OOO_STRING_SVTOOLS_HTML_S_sup2; break; + case 179: pStr = OOO_STRING_SVTOOLS_HTML_S_sup3; break; + case 180: pStr = OOO_STRING_SVTOOLS_HTML_S_acute; break; + case 181: pStr = OOO_STRING_SVTOOLS_HTML_S_micro; break; + case 182: pStr = OOO_STRING_SVTOOLS_HTML_S_para; break; + case 183: pStr = OOO_STRING_SVTOOLS_HTML_S_middot; break; + case 184: pStr = OOO_STRING_SVTOOLS_HTML_S_cedil; break; + case 185: pStr = OOO_STRING_SVTOOLS_HTML_S_sup1; break; + case 186: pStr = OOO_STRING_SVTOOLS_HTML_S_ordm; break; + case 187: pStr = OOO_STRING_SVTOOLS_HTML_S_raquo; break; + case 188: pStr = OOO_STRING_SVTOOLS_HTML_S_frac14; break; + case 189: pStr = OOO_STRING_SVTOOLS_HTML_S_frac12; break; + case 190: pStr = OOO_STRING_SVTOOLS_HTML_S_frac34; break; + case 191: pStr = OOO_STRING_SVTOOLS_HTML_S_iquest; break; + + case 192: pStr = OOO_STRING_SVTOOLS_HTML_C_Agrave; break; + case 193: pStr = OOO_STRING_SVTOOLS_HTML_C_Aacute; break; + case 194: pStr = OOO_STRING_SVTOOLS_HTML_C_Acirc; break; + case 195: pStr = OOO_STRING_SVTOOLS_HTML_C_Atilde; break; + case 196: pStr = OOO_STRING_SVTOOLS_HTML_C_Auml; break; + case 197: pStr = OOO_STRING_SVTOOLS_HTML_C_Aring; break; + case 198: pStr = OOO_STRING_SVTOOLS_HTML_C_AElig; break; + case 199: pStr = OOO_STRING_SVTOOLS_HTML_C_Ccedil; break; + case 200: pStr = OOO_STRING_SVTOOLS_HTML_C_Egrave; break; + case 201: pStr = OOO_STRING_SVTOOLS_HTML_C_Eacute; break; + case 202: pStr = OOO_STRING_SVTOOLS_HTML_C_Ecirc; break; + case 203: pStr = OOO_STRING_SVTOOLS_HTML_C_Euml; break; + case 204: pStr = OOO_STRING_SVTOOLS_HTML_C_Igrave; break; + case 205: pStr = OOO_STRING_SVTOOLS_HTML_C_Iacute; break; + case 206: pStr = OOO_STRING_SVTOOLS_HTML_C_Icirc; break; + case 207: pStr = OOO_STRING_SVTOOLS_HTML_C_Iuml; break; + case 208: pStr = OOO_STRING_SVTOOLS_HTML_C_ETH; break; + case 209: pStr = OOO_STRING_SVTOOLS_HTML_C_Ntilde; break; + case 210: pStr = OOO_STRING_SVTOOLS_HTML_C_Ograve; break; + case 211: pStr = OOO_STRING_SVTOOLS_HTML_C_Oacute; break; + case 212: pStr = OOO_STRING_SVTOOLS_HTML_C_Ocirc; break; + case 213: pStr = OOO_STRING_SVTOOLS_HTML_C_Otilde; break; + case 214: pStr = OOO_STRING_SVTOOLS_HTML_C_Ouml; break; + case 215: pStr = OOO_STRING_SVTOOLS_HTML_S_times; break; + case 216: pStr = OOO_STRING_SVTOOLS_HTML_C_Oslash; break; + case 217: pStr = OOO_STRING_SVTOOLS_HTML_C_Ugrave; break; + case 218: pStr = OOO_STRING_SVTOOLS_HTML_C_Uacute; break; + case 219: pStr = OOO_STRING_SVTOOLS_HTML_C_Ucirc; break; + case 220: pStr = OOO_STRING_SVTOOLS_HTML_C_Uuml; break; + case 221: pStr = OOO_STRING_SVTOOLS_HTML_C_Yacute; break; + + case 222: pStr = OOO_STRING_SVTOOLS_HTML_C_THORN; break; + case 223: pStr = OOO_STRING_SVTOOLS_HTML_C_szlig; break; + + case 224: pStr = OOO_STRING_SVTOOLS_HTML_S_agrave; break; + case 225: pStr = OOO_STRING_SVTOOLS_HTML_S_aacute; break; + case 226: pStr = OOO_STRING_SVTOOLS_HTML_S_acirc; break; + case 227: pStr = OOO_STRING_SVTOOLS_HTML_S_atilde; break; + case 228: pStr = OOO_STRING_SVTOOLS_HTML_S_auml; break; + case 229: pStr = OOO_STRING_SVTOOLS_HTML_S_aring; break; + case 230: pStr = OOO_STRING_SVTOOLS_HTML_S_aelig; break; + case 231: pStr = OOO_STRING_SVTOOLS_HTML_S_ccedil; break; + case 232: pStr = OOO_STRING_SVTOOLS_HTML_S_egrave; break; + case 233: pStr = OOO_STRING_SVTOOLS_HTML_S_eacute; break; + case 234: pStr = OOO_STRING_SVTOOLS_HTML_S_ecirc; break; + case 235: pStr = OOO_STRING_SVTOOLS_HTML_S_euml; break; + case 236: pStr = OOO_STRING_SVTOOLS_HTML_S_igrave; break; + case 237: pStr = OOO_STRING_SVTOOLS_HTML_S_iacute; break; + case 238: pStr = OOO_STRING_SVTOOLS_HTML_S_icirc; break; + case 239: pStr = OOO_STRING_SVTOOLS_HTML_S_iuml; break; + case 240: pStr = OOO_STRING_SVTOOLS_HTML_S_eth; break; + case 241: pStr = OOO_STRING_SVTOOLS_HTML_S_ntilde; break; + case 242: pStr = OOO_STRING_SVTOOLS_HTML_S_ograve; break; + case 243: pStr = OOO_STRING_SVTOOLS_HTML_S_oacute; break; + case 244: pStr = OOO_STRING_SVTOOLS_HTML_S_ocirc; break; + case 245: pStr = OOO_STRING_SVTOOLS_HTML_S_otilde; break; + case 246: pStr = OOO_STRING_SVTOOLS_HTML_S_ouml; break; + case 247: pStr = OOO_STRING_SVTOOLS_HTML_S_divide; break; + case 248: pStr = OOO_STRING_SVTOOLS_HTML_S_oslash; break; + case 249: pStr = OOO_STRING_SVTOOLS_HTML_S_ugrave; break; + case 250: pStr = OOO_STRING_SVTOOLS_HTML_S_uacute; break; + case 251: pStr = OOO_STRING_SVTOOLS_HTML_S_ucirc; break; + case 252: pStr = OOO_STRING_SVTOOLS_HTML_S_uuml; break; + case 253: pStr = OOO_STRING_SVTOOLS_HTML_S_yacute; break; + case 254: pStr = OOO_STRING_SVTOOLS_HTML_S_thorn; break; + case 255: pStr = OOO_STRING_SVTOOLS_HTML_S_yuml; break; + + case 338: pStr = OOO_STRING_SVTOOLS_HTML_S_OElig; break; + case 339: pStr = OOO_STRING_SVTOOLS_HTML_S_oelig; break; + case 352: pStr = OOO_STRING_SVTOOLS_HTML_S_Scaron; break; + case 353: pStr = OOO_STRING_SVTOOLS_HTML_S_scaron; break; + case 376: pStr = OOO_STRING_SVTOOLS_HTML_S_Yuml; break; + case 402: pStr = OOO_STRING_SVTOOLS_HTML_S_fnof; break; + case 710: pStr = OOO_STRING_SVTOOLS_HTML_S_circ; break; + case 732: pStr = OOO_STRING_SVTOOLS_HTML_S_tilde; break; // Greek chars are handled later, // since they should *not* be transformed to entities // when generating Greek text (== using Greek encoding) - case 8194: pStr = sHTML_S_ensp; break; - case 8195: pStr = sHTML_S_emsp; break; - case 8201: pStr = sHTML_S_thinsp; break; - case 8204: pStr = sHTML_S_zwnj; break; - case 8205: pStr = sHTML_S_zwj; break; - case 8206: pStr = sHTML_S_lrm; break; - case 8207: pStr = sHTML_S_rlm; break; - case 8211: pStr = sHTML_S_ndash; break; - case 8212: pStr = sHTML_S_mdash; break; - case 8216: pStr = sHTML_S_lsquo; break; - case 8217: pStr = sHTML_S_rsquo; break; - case 8218: pStr = sHTML_S_sbquo; break; - case 8220: pStr = sHTML_S_ldquo; break; - case 8221: pStr = sHTML_S_rdquo; break; - case 8222: pStr = sHTML_S_bdquo; break; - case 8224: pStr = sHTML_S_dagger; break; - case 8225: pStr = sHTML_S_Dagger; break; - case 8226: pStr = sHTML_S_bull; break; - case 8230: pStr = sHTML_S_hellip; break; - case 8240: pStr = sHTML_S_permil; break; - case 8242: pStr = sHTML_S_prime; break; - case 8243: pStr = sHTML_S_Prime; break; - case 8249: pStr = sHTML_S_lsaquo; break; - case 8250: pStr = sHTML_S_rsaquo; break; - case 8254: pStr = sHTML_S_oline; break; - case 8260: pStr = sHTML_S_frasl; break; - case 8364: pStr = sHTML_S_euro; break; - case 8465: pStr = sHTML_S_image; break; - case 8472: pStr = sHTML_S_weierp; break; - case 8476: pStr = sHTML_S_real; break; - case 8482: pStr = sHTML_S_trade; break; - case 8501: pStr = sHTML_S_alefsym; break; - case 8592: pStr = sHTML_S_larr; break; - case 8593: pStr = sHTML_S_uarr; break; - case 8594: pStr = sHTML_S_rarr; break; - case 8595: pStr = sHTML_S_darr; break; - case 8596: pStr = sHTML_S_harr; break; - case 8629: pStr = sHTML_S_crarr; break; - case 8656: pStr = sHTML_S_lArr; break; - case 8657: pStr = sHTML_S_uArr; break; - case 8658: pStr = sHTML_S_rArr; break; - case 8659: pStr = sHTML_S_dArr; break; - case 8660: pStr = sHTML_S_hArr; break; - case 8704: pStr = sHTML_S_forall; break; - case 8706: pStr = sHTML_S_part; break; - case 8707: pStr = sHTML_S_exist; break; - case 8709: pStr = sHTML_S_empty; break; - case 8711: pStr = sHTML_S_nabla; break; - case 8712: pStr = sHTML_S_isin; break; - case 8713: pStr = sHTML_S_notin; break; - case 8715: pStr = sHTML_S_ni; break; - case 8719: pStr = sHTML_S_prod; break; - case 8721: pStr = sHTML_S_sum; break; - case 8722: pStr = sHTML_S_minus; break; - case 8727: pStr = sHTML_S_lowast; break; - case 8730: pStr = sHTML_S_radic; break; - case 8733: pStr = sHTML_S_prop; break; - case 8734: pStr = sHTML_S_infin; break; - case 8736: pStr = sHTML_S_ang; break; - case 8743: pStr = sHTML_S_and; break; - case 8744: pStr = sHTML_S_or; break; - case 8745: pStr = sHTML_S_cap; break; - case 8746: pStr = sHTML_S_cup; break; - case 8747: pStr = sHTML_S_int; break; - case 8756: pStr = sHTML_S_there4; break; - case 8764: pStr = sHTML_S_sim; break; - case 8773: pStr = sHTML_S_cong; break; - case 8776: pStr = sHTML_S_asymp; break; - case 8800: pStr = sHTML_S_ne; break; - case 8801: pStr = sHTML_S_equiv; break; - case 8804: pStr = sHTML_S_le; break; - case 8805: pStr = sHTML_S_ge; break; - case 8834: pStr = sHTML_S_sub; break; - case 8835: pStr = sHTML_S_sup; break; - case 8836: pStr = sHTML_S_nsub; break; - case 8838: pStr = sHTML_S_sube; break; - case 8839: pStr = sHTML_S_supe; break; - case 8853: pStr = sHTML_S_oplus; break; - case 8855: pStr = sHTML_S_otimes; break; - case 8869: pStr = sHTML_S_perp; break; - case 8901: pStr = sHTML_S_sdot; break; - case 8968: pStr = sHTML_S_lceil; break; - case 8969: pStr = sHTML_S_rceil; break; - case 8970: pStr = sHTML_S_lfloor; break; - case 8971: pStr = sHTML_S_rfloor; break; - case 9001: pStr = sHTML_S_lang; break; - case 9002: pStr = sHTML_S_rang; break; - case 9674: pStr = sHTML_S_loz; break; - case 9824: pStr = sHTML_S_spades; break; - case 9827: pStr = sHTML_S_clubs; break; - case 9829: pStr = sHTML_S_hearts; break; - case 9830: pStr = sHTML_S_diams; break; + case 8194: pStr = OOO_STRING_SVTOOLS_HTML_S_ensp; break; + case 8195: pStr = OOO_STRING_SVTOOLS_HTML_S_emsp; break; + case 8201: pStr = OOO_STRING_SVTOOLS_HTML_S_thinsp; break; + case 8204: pStr = OOO_STRING_SVTOOLS_HTML_S_zwnj; break; + case 8205: pStr = OOO_STRING_SVTOOLS_HTML_S_zwj; break; + case 8206: pStr = OOO_STRING_SVTOOLS_HTML_S_lrm; break; + case 8207: pStr = OOO_STRING_SVTOOLS_HTML_S_rlm; break; + case 8211: pStr = OOO_STRING_SVTOOLS_HTML_S_ndash; break; + case 8212: pStr = OOO_STRING_SVTOOLS_HTML_S_mdash; break; + case 8216: pStr = OOO_STRING_SVTOOLS_HTML_S_lsquo; break; + case 8217: pStr = OOO_STRING_SVTOOLS_HTML_S_rsquo; break; + case 8218: pStr = OOO_STRING_SVTOOLS_HTML_S_sbquo; break; + case 8220: pStr = OOO_STRING_SVTOOLS_HTML_S_ldquo; break; + case 8221: pStr = OOO_STRING_SVTOOLS_HTML_S_rdquo; break; + case 8222: pStr = OOO_STRING_SVTOOLS_HTML_S_bdquo; break; + case 8224: pStr = OOO_STRING_SVTOOLS_HTML_S_dagger; break; + case 8225: pStr = OOO_STRING_SVTOOLS_HTML_S_Dagger; break; + case 8226: pStr = OOO_STRING_SVTOOLS_HTML_S_bull; break; + case 8230: pStr = OOO_STRING_SVTOOLS_HTML_S_hellip; break; + case 8240: pStr = OOO_STRING_SVTOOLS_HTML_S_permil; break; + case 8242: pStr = OOO_STRING_SVTOOLS_HTML_S_prime; break; + case 8243: pStr = OOO_STRING_SVTOOLS_HTML_S_Prime; break; + case 8249: pStr = OOO_STRING_SVTOOLS_HTML_S_lsaquo; break; + case 8250: pStr = OOO_STRING_SVTOOLS_HTML_S_rsaquo; break; + case 8254: pStr = OOO_STRING_SVTOOLS_HTML_S_oline; break; + case 8260: pStr = OOO_STRING_SVTOOLS_HTML_S_frasl; break; + case 8364: pStr = OOO_STRING_SVTOOLS_HTML_S_euro; break; + case 8465: pStr = OOO_STRING_SVTOOLS_HTML_S_image; break; + case 8472: pStr = OOO_STRING_SVTOOLS_HTML_S_weierp; break; + case 8476: pStr = OOO_STRING_SVTOOLS_HTML_S_real; break; + case 8482: pStr = OOO_STRING_SVTOOLS_HTML_S_trade; break; + case 8501: pStr = OOO_STRING_SVTOOLS_HTML_S_alefsym; break; + case 8592: pStr = OOO_STRING_SVTOOLS_HTML_S_larr; break; + case 8593: pStr = OOO_STRING_SVTOOLS_HTML_S_uarr; break; + case 8594: pStr = OOO_STRING_SVTOOLS_HTML_S_rarr; break; + case 8595: pStr = OOO_STRING_SVTOOLS_HTML_S_darr; break; + case 8596: pStr = OOO_STRING_SVTOOLS_HTML_S_harr; break; + case 8629: pStr = OOO_STRING_SVTOOLS_HTML_S_crarr; break; + case 8656: pStr = OOO_STRING_SVTOOLS_HTML_S_lArr; break; + case 8657: pStr = OOO_STRING_SVTOOLS_HTML_S_uArr; break; + case 8658: pStr = OOO_STRING_SVTOOLS_HTML_S_rArr; break; + case 8659: pStr = OOO_STRING_SVTOOLS_HTML_S_dArr; break; + case 8660: pStr = OOO_STRING_SVTOOLS_HTML_S_hArr; break; + case 8704: pStr = OOO_STRING_SVTOOLS_HTML_S_forall; break; + case 8706: pStr = OOO_STRING_SVTOOLS_HTML_S_part; break; + case 8707: pStr = OOO_STRING_SVTOOLS_HTML_S_exist; break; + case 8709: pStr = OOO_STRING_SVTOOLS_HTML_S_empty; break; + case 8711: pStr = OOO_STRING_SVTOOLS_HTML_S_nabla; break; + case 8712: pStr = OOO_STRING_SVTOOLS_HTML_S_isin; break; + case 8713: pStr = OOO_STRING_SVTOOLS_HTML_S_notin; break; + case 8715: pStr = OOO_STRING_SVTOOLS_HTML_S_ni; break; + case 8719: pStr = OOO_STRING_SVTOOLS_HTML_S_prod; break; + case 8721: pStr = OOO_STRING_SVTOOLS_HTML_S_sum; break; + case 8722: pStr = OOO_STRING_SVTOOLS_HTML_S_minus; break; + case 8727: pStr = OOO_STRING_SVTOOLS_HTML_S_lowast; break; + case 8730: pStr = OOO_STRING_SVTOOLS_HTML_S_radic; break; + case 8733: pStr = OOO_STRING_SVTOOLS_HTML_S_prop; break; + case 8734: pStr = OOO_STRING_SVTOOLS_HTML_S_infin; break; + case 8736: pStr = OOO_STRING_SVTOOLS_HTML_S_ang; break; + case 8743: pStr = OOO_STRING_SVTOOLS_HTML_S_and; break; + case 8744: pStr = OOO_STRING_SVTOOLS_HTML_S_or; break; + case 8745: pStr = OOO_STRING_SVTOOLS_HTML_S_cap; break; + case 8746: pStr = OOO_STRING_SVTOOLS_HTML_S_cup; break; + case 8747: pStr = OOO_STRING_SVTOOLS_HTML_S_int; break; + case 8756: pStr = OOO_STRING_SVTOOLS_HTML_S_there4; break; + case 8764: pStr = OOO_STRING_SVTOOLS_HTML_S_sim; break; + case 8773: pStr = OOO_STRING_SVTOOLS_HTML_S_cong; break; + case 8776: pStr = OOO_STRING_SVTOOLS_HTML_S_asymp; break; + case 8800: pStr = OOO_STRING_SVTOOLS_HTML_S_ne; break; + case 8801: pStr = OOO_STRING_SVTOOLS_HTML_S_equiv; break; + case 8804: pStr = OOO_STRING_SVTOOLS_HTML_S_le; break; + case 8805: pStr = OOO_STRING_SVTOOLS_HTML_S_ge; break; + case 8834: pStr = OOO_STRING_SVTOOLS_HTML_S_sub; break; + case 8835: pStr = OOO_STRING_SVTOOLS_HTML_S_sup; break; + case 8836: pStr = OOO_STRING_SVTOOLS_HTML_S_nsub; break; + case 8838: pStr = OOO_STRING_SVTOOLS_HTML_S_sube; break; + case 8839: pStr = OOO_STRING_SVTOOLS_HTML_S_supe; break; + case 8853: pStr = OOO_STRING_SVTOOLS_HTML_S_oplus; break; + case 8855: pStr = OOO_STRING_SVTOOLS_HTML_S_otimes; break; + case 8869: pStr = OOO_STRING_SVTOOLS_HTML_S_perp; break; + case 8901: pStr = OOO_STRING_SVTOOLS_HTML_S_sdot; break; + case 8968: pStr = OOO_STRING_SVTOOLS_HTML_S_lceil; break; + case 8969: pStr = OOO_STRING_SVTOOLS_HTML_S_rceil; break; + case 8970: pStr = OOO_STRING_SVTOOLS_HTML_S_lfloor; break; + case 8971: pStr = OOO_STRING_SVTOOLS_HTML_S_rfloor; break; + case 9001: pStr = OOO_STRING_SVTOOLS_HTML_S_lang; break; + case 9002: pStr = OOO_STRING_SVTOOLS_HTML_S_rang; break; + case 9674: pStr = OOO_STRING_SVTOOLS_HTML_S_loz; break; + case 9824: pStr = OOO_STRING_SVTOOLS_HTML_S_spades; break; + case 9827: pStr = OOO_STRING_SVTOOLS_HTML_S_clubs; break; + case 9829: pStr = OOO_STRING_SVTOOLS_HTML_S_hearts; break; + case 9830: pStr = OOO_STRING_SVTOOLS_HTML_S_diams; break; } // Greek chars: if we do not produce a Greek encoding, @@ -352,58 +352,58 @@ const sal_Char *lcl_svhtml_GetEntityForChar( sal_Unicode c, { switch( c ) { - case 913: pStr = sHTML_S_Alpha; break; - case 914: pStr = sHTML_S_Beta; break; - case 915: pStr = sHTML_S_Gamma; break; - case 916: pStr = sHTML_S_Delta; break; - case 917: pStr = sHTML_S_Epsilon; break; - case 918: pStr = sHTML_S_Zeta; break; - case 919: pStr = sHTML_S_Eta; break; - case 920: pStr = sHTML_S_Theta; break; - case 921: pStr = sHTML_S_Iota; break; - case 922: pStr = sHTML_S_Kappa; break; - case 923: pStr = sHTML_S_Lambda; break; - case 924: pStr = sHTML_S_Mu; break; - case 925: pStr = sHTML_S_Nu; break; - case 926: pStr = sHTML_S_Xi; break; - case 927: pStr = sHTML_S_Omicron; break; - case 928: pStr = sHTML_S_Pi; break; - case 929: pStr = sHTML_S_Rho; break; - case 931: pStr = sHTML_S_Sigma; break; - case 932: pStr = sHTML_S_Tau; break; - case 933: pStr = sHTML_S_Upsilon; break; - case 934: pStr = sHTML_S_Phi; break; - case 935: pStr = sHTML_S_Chi; break; - case 936: pStr = sHTML_S_Psi; break; - case 937: pStr = sHTML_S_Omega; break; - case 945: pStr = sHTML_S_alpha; break; - case 946: pStr = sHTML_S_beta; break; - case 947: pStr = sHTML_S_gamma; break; - case 948: pStr = sHTML_S_delta; break; - case 949: pStr = sHTML_S_epsilon; break; - case 950: pStr = sHTML_S_zeta; break; - case 951: pStr = sHTML_S_eta; break; - case 952: pStr = sHTML_S_theta; break; - case 953: pStr = sHTML_S_iota; break; - case 954: pStr = sHTML_S_kappa; break; - case 955: pStr = sHTML_S_lambda; break; - case 956: pStr = sHTML_S_mu; break; - case 957: pStr = sHTML_S_nu; break; - case 958: pStr = sHTML_S_xi; break; - case 959: pStr = sHTML_S_omicron; break; - case 960: pStr = sHTML_S_pi; break; - case 961: pStr = sHTML_S_rho; break; - case 962: pStr = sHTML_S_sigmaf; break; - case 963: pStr = sHTML_S_sigma; break; - case 964: pStr = sHTML_S_tau; break; - case 965: pStr = sHTML_S_upsilon; break; - case 966: pStr = sHTML_S_phi; break; - case 967: pStr = sHTML_S_chi; break; - case 968: pStr = sHTML_S_psi; break; - case 969: pStr = sHTML_S_omega; break; - case 977: pStr = sHTML_S_thetasym;break; - case 978: pStr = sHTML_S_upsih; break; - case 982: pStr = sHTML_S_piv; break; + case 913: pStr = OOO_STRING_SVTOOLS_HTML_S_Alpha; break; + case 914: pStr = OOO_STRING_SVTOOLS_HTML_S_Beta; break; + case 915: pStr = OOO_STRING_SVTOOLS_HTML_S_Gamma; break; + case 916: pStr = OOO_STRING_SVTOOLS_HTML_S_Delta; break; + case 917: pStr = OOO_STRING_SVTOOLS_HTML_S_Epsilon; break; + case 918: pStr = OOO_STRING_SVTOOLS_HTML_S_Zeta; break; + case 919: pStr = OOO_STRING_SVTOOLS_HTML_S_Eta; break; + case 920: pStr = OOO_STRING_SVTOOLS_HTML_S_Theta; break; + case 921: pStr = OOO_STRING_SVTOOLS_HTML_S_Iota; break; + case 922: pStr = OOO_STRING_SVTOOLS_HTML_S_Kappa; break; + case 923: pStr = OOO_STRING_SVTOOLS_HTML_S_Lambda; break; + case 924: pStr = OOO_STRING_SVTOOLS_HTML_S_Mu; break; + case 925: pStr = OOO_STRING_SVTOOLS_HTML_S_Nu; break; + case 926: pStr = OOO_STRING_SVTOOLS_HTML_S_Xi; break; + case 927: pStr = OOO_STRING_SVTOOLS_HTML_S_Omicron; break; + case 928: pStr = OOO_STRING_SVTOOLS_HTML_S_Pi; break; + case 929: pStr = OOO_STRING_SVTOOLS_HTML_S_Rho; break; + case 931: pStr = OOO_STRING_SVTOOLS_HTML_S_Sigma; break; + case 932: pStr = OOO_STRING_SVTOOLS_HTML_S_Tau; break; + case 933: pStr = OOO_STRING_SVTOOLS_HTML_S_Upsilon; break; + case 934: pStr = OOO_STRING_SVTOOLS_HTML_S_Phi; break; + case 935: pStr = OOO_STRING_SVTOOLS_HTML_S_Chi; break; + case 936: pStr = OOO_STRING_SVTOOLS_HTML_S_Psi; break; + case 937: pStr = OOO_STRING_SVTOOLS_HTML_S_Omega; break; + case 945: pStr = OOO_STRING_SVTOOLS_HTML_S_alpha; break; + case 946: pStr = OOO_STRING_SVTOOLS_HTML_S_beta; break; + case 947: pStr = OOO_STRING_SVTOOLS_HTML_S_gamma; break; + case 948: pStr = OOO_STRING_SVTOOLS_HTML_S_delta; break; + case 949: pStr = OOO_STRING_SVTOOLS_HTML_S_epsilon; break; + case 950: pStr = OOO_STRING_SVTOOLS_HTML_S_zeta; break; + case 951: pStr = OOO_STRING_SVTOOLS_HTML_S_eta; break; + case 952: pStr = OOO_STRING_SVTOOLS_HTML_S_theta; break; + case 953: pStr = OOO_STRING_SVTOOLS_HTML_S_iota; break; + case 954: pStr = OOO_STRING_SVTOOLS_HTML_S_kappa; break; + case 955: pStr = OOO_STRING_SVTOOLS_HTML_S_lambda; break; + case 956: pStr = OOO_STRING_SVTOOLS_HTML_S_mu; break; + case 957: pStr = OOO_STRING_SVTOOLS_HTML_S_nu; break; + case 958: pStr = OOO_STRING_SVTOOLS_HTML_S_xi; break; + case 959: pStr = OOO_STRING_SVTOOLS_HTML_S_omicron; break; + case 960: pStr = OOO_STRING_SVTOOLS_HTML_S_pi; break; + case 961: pStr = OOO_STRING_SVTOOLS_HTML_S_rho; break; + case 962: pStr = OOO_STRING_SVTOOLS_HTML_S_sigmaf; break; + case 963: pStr = OOO_STRING_SVTOOLS_HTML_S_sigma; break; + case 964: pStr = OOO_STRING_SVTOOLS_HTML_S_tau; break; + case 965: pStr = OOO_STRING_SVTOOLS_HTML_S_upsilon; break; + case 966: pStr = OOO_STRING_SVTOOLS_HTML_S_phi; break; + case 967: pStr = OOO_STRING_SVTOOLS_HTML_S_chi; break; + case 968: pStr = OOO_STRING_SVTOOLS_HTML_S_psi; break; + case 969: pStr = OOO_STRING_SVTOOLS_HTML_S_omega; break; + case 977: pStr = OOO_STRING_SVTOOLS_HTML_S_thetasym;break; + case 978: pStr = OOO_STRING_SVTOOLS_HTML_S_upsih; break; + case 982: pStr = OOO_STRING_SVTOOLS_HTML_S_piv; break; } } @@ -423,10 +423,10 @@ void lcl_ConvertCharToHTML( sal_Unicode c, ByteString& rDest, //!! the TextConverter has a problem with this character - so change it to // a hard space - that's the same as our 5.2 case 0x2011: // is a hard hyphen - pStr = sHTML_S_nbsp; + pStr = OOO_STRING_SVTOOLS_HTML_S_nbsp; break; case 0xAD: // is a soft hyphen - pStr = sHTML_S_shy; + pStr = OOO_STRING_SVTOOLS_HTML_S_shy; break; default: // There may be an entity for the character. @@ -634,9 +634,9 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream, return rStream; ByteString sOut( '<' ); - sOut.Append( RTL_CONSTASCII_STRINGPARAM(sHTML_map ) ); + sOut.Append( RTL_CONSTASCII_STRINGPARAM(OOO_STRING_SVTOOLS_HTML_map ) ); sOut.Append( ' ' ); - sOut.Append( RTL_CONSTASCII_STRINGPARAM(sHTML_O_name) ); + sOut.Append( RTL_CONSTASCII_STRINGPARAM(OOO_STRING_SVTOOLS_HTML_O_name) ); sOut.Append( RTL_CONSTASCII_STRINGPARAM("=\"") ); rStream << sOut.GetBuffer(); sOut.Erase(); @@ -658,7 +658,7 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream, { const IMapRectangleObject* pRectObj = (const IMapRectangleObject *)pObj; - pShape = sHTML_SH_rect; + pShape = OOO_STRING_SVTOOLS_HTML_SH_rect; Rectangle aRect( pRectObj->GetRectangle() ); ((((((aCoords = ByteString::CreateFromInt32(aRect.Left())) += ',') @@ -671,7 +671,7 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream, { const IMapCircleObject* pCirc = (const IMapCircleObject *)pObj; - pShape= sHTML_SH_circ; + pShape= OOO_STRING_SVTOOLS_HTML_SH_circ; Point aCenter( pCirc->GetCenter() ); long nOff = pCirc->GetRadius(); ((((aCoords = @@ -684,7 +684,7 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream, { const IMapPolygonObject* pPolyObj = (const IMapPolygonObject *)pObj; - pShape= sHTML_SH_poly; + pShape= OOO_STRING_SVTOOLS_HTML_SH_poly; Polygon aPoly( pPolyObj->GetPolygon() ); USHORT nCount = aPoly.GetSize(); if( nCount>0 ) @@ -715,9 +715,9 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream, if( pIndentArea ) rStream << pIndentArea; - ((((((((((sOut = '<') += sHTML_area) += ' ') - += sHTML_O_shape) += '=') += pShape) += ' ') - += sHTML_O_coords) += "=\"") += aCoords) += "\" "; + ((((((((((sOut = '<') += OOO_STRING_SVTOOLS_HTML_area) += ' ') + += OOO_STRING_SVTOOLS_HTML_O_shape) += '=') += pShape) += ' ') + += OOO_STRING_SVTOOLS_HTML_O_coords) += "=\"") += aCoords) += "\" "; rStream << sOut.GetBuffer(); String aURL( pObj->GetURL() ); @@ -725,17 +725,17 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream, { aURL = URIHelper::simpleNormalizedMakeRelative( rBaseURL, aURL ); - (sOut = sHTML_O_href) += "=\""; + (sOut = OOO_STRING_SVTOOLS_HTML_O_href) += "=\""; rStream << sOut.GetBuffer(); Out_String( rStream, aURL, eDestEnc, pNonConvertableChars ) << '\"'; } else - rStream << sHTML_O_nohref; + rStream << OOO_STRING_SVTOOLS_HTML_O_nohref; const String& rObjName = pObj->GetName(); if( rObjName.Len() ) { - ((sOut = ' ') += sHTML_O_name) += "=\""; + ((sOut = ' ') += OOO_STRING_SVTOOLS_HTML_O_name) += "=\""; rStream << sOut.GetBuffer(); Out_String( rStream, rObjName, eDestEnc, pNonConvertableChars ) << '\"'; } @@ -743,7 +743,7 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream, const String& rTarget = pObj->GetTarget(); if( rTarget.Len() && pObj->IsActive() ) { - ((sOut = ' ') += sHTML_O_target) += "=\""; + ((sOut = ' ') += OOO_STRING_SVTOOLS_HTML_O_target) += "=\""; rStream << sOut.GetBuffer(); Out_String( rStream, rTarget, eDestEnc, pNonConvertableChars ) << '\"'; } @@ -754,7 +754,7 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream, if( rDesc.Len() ) { - ((sOut = ' ') += sHTML_O_alt) += "=\""; + ((sOut = ' ') += OOO_STRING_SVTOOLS_HTML_O_alt) += "=\""; rStream << sOut.GetBuffer(); Out_String( rStream, rDesc, eDestEnc, pNonConvertableChars ) << '\"'; } @@ -774,7 +774,7 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream, rStream << pDelim; if( pIndentMap ) rStream << pIndentMap; - Out_AsciiTag( rStream, sHTML_map, FALSE ); + Out_AsciiTag( rStream, OOO_STRING_SVTOOLS_HTML_map, FALSE ); return rStream; } @@ -795,12 +795,12 @@ SvStream& HTMLOutFuncs::OutScript( SvStream& rStrm, // Script wird komplett nicht eingerueckt! ByteString sOut( '<' ); - sOut.Append( RTL_CONSTASCII_STRINGPARAM(sHTML_script) ); + sOut.Append( RTL_CONSTASCII_STRINGPARAM(OOO_STRING_SVTOOLS_HTML_script) ); if( rLanguage.Len() ) { sOut.Append( ' ' ); - sOut.Append( RTL_CONSTASCII_STRINGPARAM(sHTML_O_language) ); + sOut.Append( RTL_CONSTASCII_STRINGPARAM(OOO_STRING_SVTOOLS_HTML_O_language) ); sOut.Append( RTL_CONSTASCII_STRINGPARAM("=\"") ); rStrm << sOut.GetBuffer(); Out_String( rStrm, rLanguage, eDestEnc, pNonConvertableChars ); @@ -809,7 +809,7 @@ SvStream& HTMLOutFuncs::OutScript( SvStream& rStrm, if( rSrc.Len() ) { - ((sOut += ' ') += sHTML_O_src) += "=\""; + ((sOut += ' ') += OOO_STRING_SVTOOLS_HTML_O_src) += "=\""; rStrm << sOut.GetBuffer(); Out_String( rStrm, URIHelper::simpleNormalizedMakeRelative(rBaseURL, rSrc), eDestEnc, pNonConvertableChars ); sOut = '\"'; @@ -817,7 +817,7 @@ SvStream& HTMLOutFuncs::OutScript( SvStream& rStrm, if( STARBASIC != eScriptType && pSBLibrary ) { - ((sOut += ' ') += sHTML_O_sdlibrary) += "=\""; + ((sOut += ' ') += OOO_STRING_SVTOOLS_HTML_O_sdlibrary) += "=\""; rStrm << sOut.GetBuffer(); Out_String( rStrm, *pSBLibrary, eDestEnc, pNonConvertableChars ); sOut = '\"'; @@ -825,7 +825,7 @@ SvStream& HTMLOutFuncs::OutScript( SvStream& rStrm, if( STARBASIC != eScriptType && pSBModule ) { - ((sOut += ' ') += sHTML_O_sdmodule) += "=\""; + ((sOut += ' ') += OOO_STRING_SVTOOLS_HTML_O_sdmodule) += "=\""; rStrm << sOut.GetBuffer(); Out_String( rStrm, *pSBModule, eDestEnc, pNonConvertableChars ); sOut = '\"'; @@ -850,7 +850,7 @@ SvStream& HTMLOutFuncs::OutScript( SvStream& rStrm, if( pSBLibrary ) { sOut.Assign( RTL_CONSTASCII_STRINGPARAM("' ") ); - sOut.Append( RTL_CONSTASCII_STRINGPARAM(sHTML_SB_library) ); + sOut.Append( RTL_CONSTASCII_STRINGPARAM(OOO_STRING_SVTOOLS_HTML_SB_library) ); sOut.Append( ' ' ); ByteString sTmp( *pSBLibrary, eDestEnc ); sOut.Append( sTmp ); @@ -860,7 +860,7 @@ SvStream& HTMLOutFuncs::OutScript( SvStream& rStrm, if( pSBModule ) { sOut.Assign( RTL_CONSTASCII_STRINGPARAM("' ") ); - sOut.Append( RTL_CONSTASCII_STRINGPARAM(sHTML_SB_module) ); + sOut.Append( RTL_CONSTASCII_STRINGPARAM(OOO_STRING_SVTOOLS_HTML_SB_module) ); sOut.Append( ' ' ); ByteString sTmp( *pSBModule, eDestEnc ); sOut.Append( sTmp ); @@ -888,7 +888,7 @@ SvStream& HTMLOutFuncs::OutScript( SvStream& rStrm, } } - HTMLOutFuncs::Out_AsciiTag( rStrm, sHTML_script, FALSE ); + HTMLOutFuncs::Out_AsciiTag( rStrm, OOO_STRING_SVTOOLS_HTML_script, FALSE ); return rStrm; } @@ -940,11 +940,11 @@ ByteString& HTMLOutFuncs::CreateTableDataOptionsValNum( ByteString& aStrTD, String aValStr; rFormatter.GetInputLineString( fVal, 0, aValStr ); ByteString sTmp( aValStr, eDestEnc ); - ((((aStrTD += ' ') += sHTML_O_SDval) += "=\"") += sTmp) += '\"'; + ((((aStrTD += ' ') += OOO_STRING_SVTOOLS_HTML_O_SDval) += "=\"") += sTmp) += '\"'; } if ( bValue || nFormat ) { - ((aStrTD += ' ') += sHTML_O_SDnum) += "=\""; + ((aStrTD += ' ') += OOO_STRING_SVTOOLS_HTML_O_SDnum) += "=\""; (aStrTD += ByteString::CreateFromInt32( Application::GetSettings().GetLanguage() )) += ';'; // Language fuer Format 0 @@ -971,7 +971,7 @@ ByteString& HTMLOutFuncs::CreateTableDataOptionsValNum( ByteString& aStrTD, BOOL HTMLOutFuncs::PrivateURLToInternalImg( String& rURL ) { if( rURL.Len() > 14UL && - rURL.CompareToAscii( sHTML_private_image, 14UL ) == COMPARE_EQUAL ) + rURL.CompareToAscii( OOO_STRING_SVTOOLS_HTML_private_image, 14UL ) == COMPARE_EQUAL ) { rURL.Erase( 0UL, 14UL ); return TRUE; diff --git a/svtools/source/svhtml/htmlsupp.cxx b/svtools/source/svhtml/htmlsupp.cxx index 15a041a11306..11f48e7fdf5d 100644 --- a/svtools/source/svhtml/htmlsupp.cxx +++ b/svtools/source/svhtml/htmlsupp.cxx @@ -49,13 +49,13 @@ static HTMLOptionEnum __READONLY_DATA aScriptLangOptEnums[] = { - { sHTML_LG_starbasic, HTML_SL_STARBASIC }, - { sHTML_LG_javascript, HTML_SL_JAVASCRIPT }, - { sHTML_LG_javascript11,HTML_SL_JAVASCRIPT }, - { sHTML_LG_livescript, HTML_SL_JAVASCRIPT }, -// { sHTML_LG_unused_javascript, HTML_SL_UNUSEDJS }, -// { sHTML_LG_vbscript, HTML_SL_VBSCRIPT }, -// { sHTML_LG_starone, HTML_SL_STARONE }, + { OOO_STRING_SVTOOLS_HTML_LG_starbasic, HTML_SL_STARBASIC }, + { OOO_STRING_SVTOOLS_HTML_LG_javascript, HTML_SL_JAVASCRIPT }, + { OOO_STRING_SVTOOLS_HTML_LG_javascript11,HTML_SL_JAVASCRIPT }, + { OOO_STRING_SVTOOLS_HTML_LG_livescript, HTML_SL_JAVASCRIPT }, +// { OOO_STRING_SVTOOLS_HTML_LG_unused_javascript, HTML_SL_UNUSEDJS }, +// { OOO_STRING_SVTOOLS_HTML_LG_vbscript, HTML_SL_VBSCRIPT }, +// { OOO_STRING_SVTOOLS_HTML_LG_starone, HTML_SL_STARONE }, { 0, 0 } }; diff --git a/svtools/source/svhtml/makefile.mk b/svtools/source/svhtml/makefile.mk index e7dc1f2cd1ac..b597763ac390 100644 --- a/svtools/source/svhtml/makefile.mk +++ b/svtools/source/svhtml/makefile.mk @@ -34,6 +34,8 @@ PRJ=..$/.. PRJNAME=svtools TARGET=svhtml +ENABLE_EXCEPTIONS=TRUE + # --- Settings ----------------------------------------------------- .INCLUDE : settings.mk @@ -42,7 +44,6 @@ TARGET=svhtml # --- Files -------------------------------------------------------- SLOFILES=\ - $(SLO)$/htmlkey2.obj \ $(SLO)$/htmlkywd.obj \ $(SLO)$/htmlsupp.obj \ $(SLO)$/htmlout.obj \ diff --git a/svtools/source/svhtml/parhtml.cxx b/svtools/source/svhtml/parhtml.cxx index 53151514e4d5..215133c8efb4 100644 --- a/svtools/source/svhtml/parhtml.cxx +++ b/svtools/source/svhtml/parhtml.cxx @@ -43,10 +43,21 @@ #include <svtools/svstdarr.hxx> #endif +#include <tools/tenccvt.hxx> +#include <tools/datetime.hxx> +#include <svtools/inettype.hxx> +#include <comphelper/string.hxx> +#include <com/sun/star/beans/PropertyAttribute.hpp> +#include <com/sun/star/document/XDocumentProperties.hpp> + #include <svtools/parhtml.hxx> #include "htmltokn.h" #include "htmlkywd.hxx" + +using namespace ::com::sun::star; + + const sal_Int32 MAX_LEN( 1024L ); //static sal_Unicode sTmpBuffer[ MAX_LEN+1 ]; const sal_Int32 MAX_MACRO_LEN( 1024 ); @@ -60,44 +71,44 @@ const sal_Int32 MAX_ENTITY_LEN( 8L ); // <INPUT TYPE=xxx> static HTMLOptionEnum __READONLY_DATA aInputTypeOptEnums[] = { - { sHTML_IT_text, HTML_IT_TEXT }, - { sHTML_IT_password, HTML_IT_PASSWORD }, - { sHTML_IT_checkbox, HTML_IT_CHECKBOX }, - { sHTML_IT_radio, HTML_IT_RADIO }, - { sHTML_IT_range, HTML_IT_RANGE }, - { sHTML_IT_scribble, HTML_IT_SCRIBBLE }, - { sHTML_IT_file, HTML_IT_FILE }, - { sHTML_IT_hidden, HTML_IT_HIDDEN }, - { sHTML_IT_submit, HTML_IT_SUBMIT }, - { sHTML_IT_image, HTML_IT_IMAGE }, - { sHTML_IT_reset, HTML_IT_RESET }, - { sHTML_IT_button, HTML_IT_BUTTON }, + { OOO_STRING_SVTOOLS_HTML_IT_text, HTML_IT_TEXT }, + { OOO_STRING_SVTOOLS_HTML_IT_password, HTML_IT_PASSWORD }, + { OOO_STRING_SVTOOLS_HTML_IT_checkbox, HTML_IT_CHECKBOX }, + { OOO_STRING_SVTOOLS_HTML_IT_radio, HTML_IT_RADIO }, + { OOO_STRING_SVTOOLS_HTML_IT_range, HTML_IT_RANGE }, + { OOO_STRING_SVTOOLS_HTML_IT_scribble, HTML_IT_SCRIBBLE }, + { OOO_STRING_SVTOOLS_HTML_IT_file, HTML_IT_FILE }, + { OOO_STRING_SVTOOLS_HTML_IT_hidden, HTML_IT_HIDDEN }, + { OOO_STRING_SVTOOLS_HTML_IT_submit, HTML_IT_SUBMIT }, + { OOO_STRING_SVTOOLS_HTML_IT_image, HTML_IT_IMAGE }, + { OOO_STRING_SVTOOLS_HTML_IT_reset, HTML_IT_RESET }, + { OOO_STRING_SVTOOLS_HTML_IT_button, HTML_IT_BUTTON }, { 0, 0 } }; // <TABLE FRAME=xxx> static HTMLOptionEnum __READONLY_DATA aTableFrameOptEnums[] = { - { sHTML_TF_void, HTML_TF_VOID }, - { sHTML_TF_above, HTML_TF_ABOVE }, - { sHTML_TF_below, HTML_TF_BELOW }, - { sHTML_TF_hsides, HTML_TF_HSIDES }, - { sHTML_TF_lhs, HTML_TF_LHS }, - { sHTML_TF_rhs, HTML_TF_RHS }, - { sHTML_TF_vsides, HTML_TF_VSIDES }, - { sHTML_TF_box, HTML_TF_BOX }, - { sHTML_TF_border, HTML_TF_BOX }, + { OOO_STRING_SVTOOLS_HTML_TF_void, HTML_TF_VOID }, + { OOO_STRING_SVTOOLS_HTML_TF_above, HTML_TF_ABOVE }, + { OOO_STRING_SVTOOLS_HTML_TF_below, HTML_TF_BELOW }, + { OOO_STRING_SVTOOLS_HTML_TF_hsides, HTML_TF_HSIDES }, + { OOO_STRING_SVTOOLS_HTML_TF_lhs, HTML_TF_LHS }, + { OOO_STRING_SVTOOLS_HTML_TF_rhs, HTML_TF_RHS }, + { OOO_STRING_SVTOOLS_HTML_TF_vsides, HTML_TF_VSIDES }, + { OOO_STRING_SVTOOLS_HTML_TF_box, HTML_TF_BOX }, + { OOO_STRING_SVTOOLS_HTML_TF_border, HTML_TF_BOX }, { 0, 0 } }; // <TABLE RULES=xxx> static HTMLOptionEnum __READONLY_DATA aTableRulesOptEnums[] = { - { sHTML_TR_none, HTML_TR_NONE }, - { sHTML_TR_groups, HTML_TR_GROUPS }, - { sHTML_TR_rows, HTML_TR_ROWS }, - { sHTML_TR_cols, HTML_TR_COLS }, - { sHTML_TR_all, HTML_TR_ALL }, + { OOO_STRING_SVTOOLS_HTML_TR_none, HTML_TR_NONE }, + { OOO_STRING_SVTOOLS_HTML_TR_groups, HTML_TR_GROUPS }, + { OOO_STRING_SVTOOLS_HTML_TR_rows, HTML_TR_ROWS }, + { OOO_STRING_SVTOOLS_HTML_TR_cols, HTML_TR_COLS }, + { OOO_STRING_SVTOOLS_HTML_TR_all, HTML_TR_ALL }, { 0, 0 } }; @@ -930,7 +941,7 @@ int HTMLParser::_GetNextRawToken() { if( !bReadComment ) { - if( aTok.CompareToAscii( sHTML_comment, 3 ) + if( aTok.CompareToAscii( OOO_STRING_SVTOOLS_HTML_comment, 3 ) == COMPARE_EQUAL ) { bReadComment = TRUE; @@ -942,7 +953,7 @@ int HTMLParser::_GetNextRawToken() // erstmal nicht so genau nehmen bDone = bOffState && // '>'==nNextCh && COMPARE_EQUAL == ( bReadScript - ? aTok.CompareToAscii(sHTML_script) + ? aTok.CompareToAscii(OOO_STRING_SVTOOLS_HTML_script) : aTok.CompareTo(aEndToken) ); } } @@ -958,13 +969,13 @@ int HTMLParser::_GetNextRawToken() // ein Style-Sheet kann mit </STYLE>, </HEAD> oder // <BODY> aughoehren if( bOffState ) - bDone = aTok.CompareToAscii(sHTML_style) + bDone = aTok.CompareToAscii(OOO_STRING_SVTOOLS_HTML_style) == COMPARE_EQUAL || - aTok.CompareToAscii(sHTML_head) + aTok.CompareToAscii(OOO_STRING_SVTOOLS_HTML_head) == COMPARE_EQUAL; else bDone = - aTok.CompareToAscii(sHTML_body) == COMPARE_EQUAL; + aTok.CompareToAscii(OOO_STRING_SVTOOLS_HTML_body) == COMPARE_EQUAL; } if( bDone ) @@ -2002,7 +2013,7 @@ FASTBOOL HTMLParser::IsHTMLFormat( const sal_Char* pHeader, return TRUE; // oder wir finden irgendwo ein <HTML> in den ersten 80 Zeichen - nStart = sCmp.Search( sHTML_html ); + nStart = sCmp.Search( OOO_STRING_SVTOOLS_HTML_html ); if( nStart!=STRING_NOTFOUND && nStart>0 && '<'==sCmp.GetChar(nStart-1) && nStart+4 < sCmp.Len() && '>'==sCmp.GetChar(nStart+4) ) @@ -2015,72 +2026,71 @@ FASTBOOL HTMLParser::IsHTMLFormat( const sal_Char* pHeader, BOOL HTMLParser::InternalImgToPrivateURL( String& rURL ) { if( rURL.Len() < 19 || 'i' != rURL.GetChar(0) || - rURL.CompareToAscii( sHTML_internal_gopher, 9 ) != COMPARE_EQUAL ) + rURL.CompareToAscii( OOO_STRING_SVTOOLS_HTML_internal_gopher, 9 ) != COMPARE_EQUAL ) return FALSE; BOOL bFound = FALSE; - if( rURL.CompareToAscii( sHTML_internal_gopher,16) == COMPARE_EQUAL ) + if( rURL.CompareToAscii( OOO_STRING_SVTOOLS_HTML_internal_gopher,16) == COMPARE_EQUAL ) { String aName( rURL.Copy(16) ); switch( aName.GetChar(0) ) { case 'b': - bFound = aName.EqualsAscii( sHTML_INT_GOPHER_binary ); + bFound = aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_GOPHER_binary ); break; case 'i': - bFound = aName.EqualsAscii( sHTML_INT_GOPHER_image ) || - aName.EqualsAscii( sHTML_INT_GOPHER_index ); + bFound = aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_GOPHER_image ) || + aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_GOPHER_index ); break; case 'm': - bFound = aName.EqualsAscii( sHTML_INT_GOPHER_menu ) || - aName.EqualsAscii( sHTML_INT_GOPHER_movie ); + bFound = aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_GOPHER_menu ) || + aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_GOPHER_movie ); break; case 's': - bFound = aName.EqualsAscii( sHTML_INT_GOPHER_sound ); + bFound = aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_GOPHER_sound ); break; case 't': - bFound = aName.EqualsAscii( sHTML_INT_GOPHER_telnet ) || - aName.EqualsAscii( sHTML_INT_GOPHER_text ); + bFound = aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_GOPHER_telnet ) || + aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_GOPHER_text ); break; case 'u': - bFound = aName.EqualsAscii( sHTML_INT_GOPHER_unknown ); + bFound = aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_GOPHER_unknown ); break; } } - else if( rURL.CompareToAscii( sHTML_internal_icon,14) == COMPARE_EQUAL ) + else if( rURL.CompareToAscii( OOO_STRING_SVTOOLS_HTML_internal_icon,14) == COMPARE_EQUAL ) { String aName( rURL.Copy(14) ); switch( aName.GetChar(0) ) { case 'b': - bFound = aName.EqualsAscii( sHTML_INT_ICON_baddata ); + bFound = aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_ICON_baddata ); break; case 'd': - bFound = aName.EqualsAscii( sHTML_INT_ICON_delayed ); + bFound = aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_ICON_delayed ); break; case 'e': - bFound = aName.EqualsAscii( sHTML_INT_ICON_embed ); + bFound = aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_ICON_embed ); break; case 'i': - bFound = aName.EqualsAscii( sHTML_INT_ICON_insecure ); + bFound = aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_ICON_insecure ); break; case 'n': - bFound = aName.EqualsAscii( sHTML_INT_ICON_notfound ); + bFound = aName.EqualsAscii( OOO_STRING_SVTOOLS_HTML_INT_ICON_notfound ); break; } } if( bFound ) { String sTmp ( rURL ); - rURL.AssignAscii( sHTML_private_image ); + rURL.AssignAscii( OOO_STRING_SVTOOLS_HTML_private_image ); rURL.Append( sTmp ); } return bFound; } - #ifdef USED void HTMLParser::SaveState( int nToken ) { @@ -2093,3 +2103,241 @@ void HTMLParser::RestoreState() } #endif + +enum eHtmlMetas { + HTML_META_NONE = 0, + HTML_META_AUTHOR, + HTML_META_DESCRIPTION, + HTML_META_KEYWORDS, + HTML_META_REFRESH, + HTML_META_CLASSIFICATION, + HTML_META_CREATED, + HTML_META_CHANGEDBY, + HTML_META_CHANGED, + HTML_META_GENERATOR, + HTML_META_SDFOOTNOTE, + HTML_META_SDENDNOTE, + HTML_META_CONTENT_TYPE +}; + +// <META NAME=xxx> +#ifdef __MINGW32__ // for runtime pseudo reloc +static HTMLOptionEnum aHTMLMetaNameTable[] = +#else +static HTMLOptionEnum __READONLY_DATA aHTMLMetaNameTable[] = +#endif +{ + { OOO_STRING_SVTOOLS_HTML_META_author, HTML_META_AUTHOR }, + { OOO_STRING_SVTOOLS_HTML_META_changed, HTML_META_CHANGED }, + { OOO_STRING_SVTOOLS_HTML_META_changedby, HTML_META_CHANGEDBY }, + { OOO_STRING_SVTOOLS_HTML_META_classification,HTML_META_CLASSIFICATION}, + { OOO_STRING_SVTOOLS_HTML_META_content_type, HTML_META_CONTENT_TYPE }, + { OOO_STRING_SVTOOLS_HTML_META_created, HTML_META_CREATED }, + { OOO_STRING_SVTOOLS_HTML_META_description, HTML_META_DESCRIPTION }, + { OOO_STRING_SVTOOLS_HTML_META_keywords, HTML_META_KEYWORDS }, + { OOO_STRING_SVTOOLS_HTML_META_generator, HTML_META_GENERATOR }, + { OOO_STRING_SVTOOLS_HTML_META_refresh, HTML_META_REFRESH }, + { OOO_STRING_SVTOOLS_HTML_META_sdendnote, HTML_META_SDENDNOTE }, + { OOO_STRING_SVTOOLS_HTML_META_sdfootnote, HTML_META_SDFOOTNOTE }, + { 0, 0 } +}; + + +void HTMLParser::AddMetaUserDefined( ::rtl::OUString const & ) +{ +} + +bool HTMLParser::ParseMetaOptionsImpl( + const uno::Reference<document::XDocumentProperties> & i_xDocProps, + SvKeyValueIterator *i_pHTTPHeader, + const HTMLOptions *i_pOptions, + rtl_TextEncoding& o_rEnc ) +{ + String aName, aContent; + USHORT nAction = HTML_META_NONE; + bool bHTTPEquiv = false, bChanged = false; + + for ( USHORT i = i_pOptions->Count(); i; ) + { + const HTMLOption *pOption = (*i_pOptions)[ --i ]; + switch ( pOption->GetToken() ) + { + case HTML_O_NAME: + aName = pOption->GetString(); + if ( HTML_META_NONE==nAction ) + { + pOption->GetEnum( nAction, aHTMLMetaNameTable ); + } + break; + case HTML_O_HTTPEQUIV: + aName = pOption->GetString(); + pOption->GetEnum( nAction, aHTMLMetaNameTable ); + bHTTPEquiv = true; + break; + case HTML_O_CONTENT: + aContent = pOption->GetString(); + break; + } + } + + if ( bHTTPEquiv || HTML_META_DESCRIPTION != nAction ) + { + // if it is not a Description, remove CRs and LFs from CONTENT + aContent.EraseAllChars( _CR ); + aContent.EraseAllChars( _LF ); + } + else + { + // convert line endings for Description + aContent.ConvertLineEnd(); + } + + + if ( bHTTPEquiv && i_pHTTPHeader ) + { + // #57232#: Netscape seems to just ignore a closing ", so we do too + if ( aContent.Len() && '"' == aContent.GetChar( aContent.Len()-1 ) ) + { + aContent.Erase( aContent.Len() - 1 ); + } + SvKeyValue aKeyValue( aName, aContent ); + i_pHTTPHeader->Append( aKeyValue ); + } + + switch ( nAction ) + { + case HTML_META_AUTHOR: + if (i_xDocProps.is()) { + i_xDocProps->setAuthor( aContent ); + bChanged = true; + } + break; + case HTML_META_DESCRIPTION: + if (i_xDocProps.is()) { + i_xDocProps->setDescription( aContent ); + bChanged = true; + } + break; + case HTML_META_KEYWORDS: + if (i_xDocProps.is()) { + i_xDocProps->setKeywords( + ::comphelper::string::convertCommaSeparated(aContent)); + bChanged = true; + } + break; + case HTML_META_CLASSIFICATION: + if (i_xDocProps.is()) { + i_xDocProps->setSubject( aContent ); + bChanged = true; + } + break; + + case HTML_META_CHANGEDBY: + if (i_xDocProps.is()) { + i_xDocProps->setModifiedBy( aContent ); + } + break; + + case HTML_META_CREATED: + case HTML_META_CHANGED: + if ( i_xDocProps.is() && aContent.Len() && + aContent.GetTokenCount() == 2 ) + { + Date aDate( (ULONG)aContent.GetToken(0).ToInt32() ); + Time aTime( (ULONG)aContent.GetToken(1).ToInt32() ); + DateTime aDateTime( aDate, aTime ); + ::util::DateTime uDT(aDateTime.Get100Sec(), + aDateTime.GetSec(), aDateTime.GetMin(), + aDateTime.GetHour(), aDateTime.GetDay(), + aDateTime.GetMonth(), aDateTime.GetYear()); + if ( HTML_META_CREATED==nAction ) + i_xDocProps->setCreationDate( uDT ); + else + i_xDocProps->setModificationDate( uDT ); + bChanged = true; + } + break; + + case HTML_META_REFRESH: + DBG_ASSERT( !bHTTPEquiv || i_pHTTPHeader, + "Reload-URL aufgrund unterlassener MUSS-Aenderung verlorengegangen" ); + break; + + case HTML_META_CONTENT_TYPE: + if ( aContent.Len() ) + { + o_rEnc = GetEncodingByMIME( aContent ); + } + break; + + case HTML_META_NONE: + if ( !bHTTPEquiv ) + { + if (i_xDocProps.is()) + { + uno::Reference<beans::XPropertyContainer> xUDProps + = i_xDocProps->getUserDefinedProperties(); + try { + xUDProps->addProperty(aName, + beans::PropertyAttribute::REMOVEABLE, + uno::makeAny(::rtl::OUString(aContent))); + AddMetaUserDefined(aName); + bChanged = true; + } catch (uno::Exception &) { + // ignore + } + } + } + break; + default: + break; + } + + return bChanged; +} + +bool HTMLParser::ParseMetaOptions( + const uno::Reference<document::XDocumentProperties> & i_xDocProps, + SvKeyValueIterator *i_pHeader ) +{ + USHORT nContentOption = HTML_O_CONTENT; + rtl_TextEncoding eEnc = RTL_TEXTENCODING_DONTKNOW; + + bool bRet = ParseMetaOptionsImpl( i_xDocProps, i_pHeader, + GetOptions(&nContentOption), + eEnc ); + + // If the encoding is set by a META tag, it may only overwrite the + // current encoding if both, the current and the new encoding, are 1-BYTE + // encodings. Everything else cannot lead to reasonable results. + if (RTL_TEXTENCODING_DONTKNOW != eEnc && + rtl_isOctetTextEncoding( eEnc ) && + rtl_isOctetTextEncoding( GetSrcEncoding() ) ) + { + eEnc = GetExtendedCompatibilityTextEncoding( eEnc ); // #89973# + SetSrcEncoding( eEnc ); + } + + return bRet; +} + +rtl_TextEncoding HTMLParser::GetEncodingByMIME( const String& rMime ) +{ + ByteString sType; + ByteString sSubType; + INetContentTypeParameterList aParameters; + ByteString sMime( rMime, RTL_TEXTENCODING_ASCII_US ); + if (INetContentTypes::parse(sMime, sType, sSubType, &aParameters)) + { + const INetContentTypeParameter * pCharset + = aParameters.find("charset"); + if (pCharset != 0) + { + ByteString sValue( pCharset->m_sValue, RTL_TEXTENCODING_ASCII_US ); + return GetExtendedCompatibilityTextEncoding( + rtl_getTextEncodingFromMimeCharset( sValue.GetBuffer() ) ); + } + } + return RTL_TEXTENCODING_DONTKNOW; +} + diff --git a/svtools/source/svrtf/makefile.mk b/svtools/source/svrtf/makefile.mk index 311b9a48c34c..549b67897ecb 100644 --- a/svtools/source/svrtf/makefile.mk +++ b/svtools/source/svrtf/makefile.mk @@ -45,8 +45,7 @@ SLOFILES = \ $(SLO)$/svparser.obj \ $(SLO)$/parrtf.obj \ $(SLO)$/rtfout.obj \ - $(SLO)$/rtfkeywd.obj \ - $(SLO)$/rtfkey2.obj + $(SLO)$/rtfkeywd.obj # ========================================================================== diff --git a/svtools/source/svrtf/rtfkeywd.cxx b/svtools/source/svrtf/rtfkeywd.cxx index 0762ea1b9c81..0dc90d0da8ab 100644 --- a/svtools/source/svrtf/rtfkeywd.cxx +++ b/svtools/source/svrtf/rtfkeywd.cxx @@ -55,1135 +55,1135 @@ struct RTF_TokenEntry static int __FAR_DATA bSortKeyWords = FALSE; static RTF_TokenEntry __FAR_DATA aRTFTokenTab[] = { -{{sRTF_IGNORE}, RTF_IGNOREFLAG}, -{{sRTF_RTF}, RTF_RTF}, -{{sRTF_ANSI}, RTF_ANSITYPE}, -{{sRTF_MAC}, RTF_MACTYPE}, -{{sRTF_PC}, RTF_PCTYPE}, -{{sRTF_PCA}, RTF_PCATYPE}, -{{sRTF_NEXTCSET}, RTF_NEXTTYPE}, -{{sRTF_STYLESHEET}, RTF_STYLESHEET}, -{{sRTF_SBASEDON}, RTF_SBASEDON}, -{{sRTF_SNEXT}, RTF_SNEXT}, -{{sRTF_FONTTBL}, RTF_FONTTBL}, -{{sRTF_DEFF}, RTF_DEFF}, -{{sRTF_FNIL}, RTF_FNIL}, -{{sRTF_FROMAN}, RTF_FROMAN}, -{{sRTF_FSWISS}, RTF_FSWISS}, -{{sRTF_FMODERN}, RTF_FMODERN}, -{{sRTF_FSCRIPT}, RTF_FSCRIPT}, -{{sRTF_FDECOR}, RTF_FDECOR}, -{{sRTF_FTECH}, RTF_FTECH}, -{{sRTF_FCHARSET}, RTF_FCHARSET}, -{{sRTF_FALT}, RTF_FALT}, -{{sRTF_FPRQ}, RTF_FPRQ}, -{{sRTF_COLORTBL}, RTF_COLORTBL}, -{{sRTF_RED}, RTF_RED}, -{{sRTF_GREEN}, RTF_GREEN}, -{{sRTF_BLUE}, RTF_BLUE}, -{{sRTF_CF}, RTF_CF}, -{{sRTF_CB}, RTF_CB}, -{{sRTF_INFO}, RTF_INFO}, -{{sRTF_TITLE}, RTF_TITLE}, -{{sRTF_SUBJECT}, RTF_SUBJECT}, -{{sRTF_AUTHOR}, RTF_AUTHOR}, -{{sRTF_OPERATOR}, RTF_OPERATOR}, -{{sRTF_KEYWORDS}, RTF_KEYWORDS}, -{{sRTF_COMMENT}, RTF_COMMENT}, -{{sRTF_VERSION}, RTF_VERSION}, -{{sRTF_DOCCOMM}, RTF_DOCCOMM}, -{{sRTF_VERN}, RTF_VERN}, -{{sRTF_CREATIM}, RTF_CREATIM}, -{{sRTF_REVTIM}, RTF_REVTIM}, -{{sRTF_PRINTIM}, RTF_PRINTIM}, -{{sRTF_BUPTIM}, RTF_BUPTIM}, -{{sRTF_EDMINS}, RTF_EDMINS}, -{{sRTF_NOFPAGES}, RTF_NOFPAGES}, -{{sRTF_NOFWORDS}, RTF_NOFWORDS}, -{{sRTF_NOFCHARS}, RTF_NOFCHARS}, -{{sRTF_ID}, RTF_ID}, -{{sRTF_YR}, RTF_YR}, -{{sRTF_MO}, RTF_MO}, -{{sRTF_DY}, RTF_DY}, -{{sRTF_HR}, RTF_HR}, -{{sRTF_MIN}, RTF_MIN}, -{{sRTF_ANNOTATION}, RTF_ANNOTATION}, -{{sRTF_ATNID}, RTF_ATNID}, -{{sRTF_FOOTNOTE}, RTF_FOOTNOTE}, -{{sRTF_FOOTER}, RTF_FOOTER}, -{{sRTF_FOOTERL}, RTF_FOOTERL}, -{{sRTF_FOOTERR}, RTF_FOOTERR}, -{{sRTF_FOOTERF}, RTF_FOOTERF}, -{{sRTF_HEADER}, RTF_HEADER}, -{{sRTF_HEADERL}, RTF_HEADERL}, -{{sRTF_HEADERR}, RTF_HEADERR}, -{{sRTF_HEADERF}, RTF_HEADERF}, -{{sRTF_XE}, RTF_XE}, -{{sRTF_BXE}, RTF_BXE}, -{{sRTF_IXE}, RTF_IXE}, -{{sRTF_RXE}, RTF_RXE}, -{{sRTF_TXE}, RTF_TXE}, -{{sRTF_TC}, RTF_TC}, -{{sRTF_TCF}, RTF_TCF}, -{{sRTF_TCL}, RTF_TCL}, -{{sRTF_BKMKSTART}, RTF_BKMKSTART}, -{{sRTF_BKMKEND}, RTF_BKMKEND}, -{{sRTF_PICT}, RTF_PICT}, -{{sRTF_PICW}, RTF_PICW}, -{{sRTF_PICH}, RTF_PICH}, -{{sRTF_WBMBITSPIXEL}, RTF_WBMBITSPIXEL}, -{{sRTF_WBMPLANES}, RTF_WBMPLANES}, -{{sRTF_WBMWIDTHBYTES}, RTF_WBMWIDTHBYTES}, -{{sRTF_PICWGOAL}, RTF_PICWGOAL}, -{{sRTF_PICHGOAL}, RTF_PICHGOAL}, -{{sRTF_BIN}, RTF_BIN}, -{{sRTF_PICSCALEX}, RTF_PICSCALEX}, -{{sRTF_PICSCALEY}, RTF_PICSCALEY}, -{{sRTF_PICSCALED}, RTF_PICSCALED}, -{{sRTF_WBITMAP}, RTF_WBITMAP}, -{{sRTF_WMETAFILE}, RTF_WMETAFILE}, -{{sRTF_MACPICT}, RTF_MACPICT}, -{{sRTF_PICCROPT}, RTF_PICCROPT}, -{{sRTF_PICCROPB}, RTF_PICCROPB}, -{{sRTF_PICCROPL}, RTF_PICCROPL}, -{{sRTF_PICCROPR}, RTF_PICCROPR}, -{{sRTF_FIELD}, RTF_FIELD}, -{{sRTF_FLDDIRTY}, RTF_FLDDIRTY}, -{{sRTF_FLDEDIT}, RTF_FLDEDIT}, -{{sRTF_FLDLOCK}, RTF_FLDLOCK}, -{{sRTF_FLDPRIV}, RTF_FLDPRIV}, -{{sRTF_FLDINST}, RTF_FLDINST}, -{{sRTF_FLDRSLT}, RTF_FLDRSLT}, -{{sRTF_PAPERW}, RTF_PAPERW}, -{{sRTF_PAPERH}, RTF_PAPERH}, -{{sRTF_MARGL}, RTF_MARGL}, -{{sRTF_MARGR}, RTF_MARGR}, -{{sRTF_MARGT}, RTF_MARGT}, -{{sRTF_MARGB}, RTF_MARGB}, -{{sRTF_FACINGP}, RTF_FACINGP}, -{{sRTF_GUTTER}, RTF_GUTTER}, -{{sRTF_DEFTAB}, RTF_DEFTAB}, -{{sRTF_WIDOWCTRL}, RTF_WIDOWCTRL}, -{{sRTF_HYPHHOTZ}, RTF_HYPHHOTZ}, -{{sRTF_FTNSEP}, RTF_FTNSEP}, -{{sRTF_FTNSEPC}, RTF_FTNSEPC}, -{{sRTF_FTNCN}, RTF_FTNCN}, -{{sRTF_ENDNOTES}, RTF_ENDNOTES}, -{{sRTF_ENDDOC}, RTF_ENDDOC}, -{{sRTF_FTNTJ}, RTF_FTNTJ}, -{{sRTF_FTNBJ}, RTF_FTNBJ}, -{{sRTF_FTNSTART}, RTF_FTNSTART}, -{{sRTF_FTNRESTART}, RTF_FTNRESTART}, -{{sRTF_PGNSTART}, RTF_PGNSTART}, -{{sRTF_LINESTART}, RTF_LINESTART}, -{{sRTF_LANDSCAPE}, RTF_LANDSCAPE}, -{{sRTF_FRACWIDTH}, RTF_FRACWIDTH}, -{{sRTF_NEXTFILE}, RTF_NEXTFILE}, -{{sRTF_TEMPLATE}, RTF_TEMPLATE}, -{{sRTF_MAKEBACKUP}, RTF_MAKEBACKUP}, -{{sRTF_DEFFORMAT}, RTF_DEFFORMAT}, -{{sRTF_REVISIONS}, RTF_REVISIONS}, -{{sRTF_MARGMIRROR}, RTF_MARGMIRROR}, -{{sRTF_REVPROP}, RTF_REVPROP}, -{{sRTF_REVBAR}, RTF_REVBAR}, -{{sRTF_SECTD}, RTF_SECTD}, -{{sRTF_SBKNONE}, RTF_SBKNONE}, -{{sRTF_SBKCOL}, RTF_SBKCOL}, -{{sRTF_SBKPAGE}, RTF_SBKPAGE}, -{{sRTF_SBKEVEN}, RTF_SBKEVEN}, -{{sRTF_SBKODD}, RTF_SBKODD}, -{{sRTF_PGNSTARTS}, RTF_PGNSTARTS}, -{{sRTF_PGNCONT}, RTF_PGNCONT}, -{{sRTF_PGNRESTART}, RTF_PGNRESTART}, -{{sRTF_PGNDEC}, RTF_PGNDEC}, -{{sRTF_PGNUCRM}, RTF_PGNUCRM}, -{{sRTF_PGNLCRM}, RTF_PGNLCRM}, -{{sRTF_PGNUCLTR}, RTF_PGNUCLTR}, -{{sRTF_PGNLCLTR}, RTF_PGNLCLTR}, -{{sRTF_PGNX}, RTF_PGNX}, -{{sRTF_PGNY}, RTF_PGNY}, -{{sRTF_HEADERY}, RTF_HEADERY}, -{{sRTF_FOOTERY}, RTF_FOOTERY}, -{{sRTF_LINEMOD}, RTF_LINEMOD}, -{{sRTF_LINEX}, RTF_LINEX}, -{{sRTF_LINESTARTS}, RTF_LINESTARTS}, -{{sRTF_LINERESTART}, RTF_LINERESTART}, -{{sRTF_LINEPPAGE}, RTF_LINEPAGE}, -{{sRTF_LINECONT}, RTF_LINECONT}, -{{sRTF_VERTALT}, RTF_VERTALT}, -{{sRTF_VERTALB}, RTF_VERTALB}, -{{sRTF_VERTALC}, RTF_VERTALC}, -{{sRTF_VERTALJ}, RTF_VERTALJ}, -{{sRTF_COLS}, RTF_COLS}, -{{sRTF_COLSX}, RTF_COLSX}, -{{sRTF_COLNO}, RTF_COLNO}, -{{sRTF_COLSR}, RTF_COLSR}, -{{sRTF_COLW}, RTF_COLW}, -{{sRTF_LINEBETCOL}, RTF_LINEBETCOL}, -{{sRTF_ENDNHERE}, RTF_ENDNHERE}, -{{sRTF_TITLEPG}, RTF_TITLEPG}, -{{sRTF_PARD}, RTF_PARD}, -{{sRTF_S}, RTF_S}, -{{sRTF_QL}, RTF_QL}, -{{sRTF_QR}, RTF_QR}, -{{sRTF_QJ}, RTF_QJ}, -{{sRTF_QC}, RTF_QC}, -{{sRTF_FI}, RTF_FI}, -{{sRTF_LI}, RTF_LI}, -{{sRTF_LIN}, RTF_LIN}, -{{sRTF_RI}, RTF_RI}, -{{sRTF_RIN}, RTF_RIN}, -{{sRTF_SB}, RTF_SB}, -{{sRTF_SA}, RTF_SA}, -{{sRTF_SL}, RTF_SL}, -{{sRTF_INTBL}, RTF_INTBL}, -{{sRTF_KEEP}, RTF_KEEP}, -{{sRTF_KEEPN}, RTF_KEEPN}, -{{sRTF_LEVEL}, RTF_LEVEL}, -{{sRTF_SBYS}, RTF_SBYS}, -{{sRTF_PAGEBB}, RTF_PAGEBB}, -{{sRTF_NOLINE}, RTF_NOLINE}, -{{sRTF_TX}, RTF_TX}, -{{sRTF_TQL}, RTF_TQL}, -{{sRTF_TQR}, RTF_TQR}, -{{sRTF_TQC}, RTF_TQC}, -{{sRTF_TQDEC}, RTF_TQDEC}, -{{sRTF_TB}, RTF_TB}, -{{sRTF_BRDRT}, RTF_BRDRT}, -{{sRTF_BRDRB}, RTF_BRDRB}, -{{sRTF_BRDRL}, RTF_BRDRL}, -{{sRTF_BRDRR}, RTF_BRDRR}, -{{sRTF_BOX}, RTF_BOX}, -{{sRTF_BRDRS}, RTF_BRDRS}, -{{sRTF_BRDRTH}, RTF_BRDRTH}, -{{sRTF_BRDRSH}, RTF_BRDRSH}, -{{sRTF_BRDRDB}, RTF_BRDRDB}, -{{sRTF_BRDRDOT}, RTF_BRDRDOT}, -{{sRTF_BRDRHAIR}, RTF_BRDRHAIR}, -{{sRTF_BRSP}, RTF_BRSP}, -{{sRTF_TLDOT}, RTF_TLDOT}, -{{sRTF_TLHYPH}, RTF_TLHYPH}, -{{sRTF_TLUL}, RTF_TLUL}, -{{sRTF_TLTH}, RTF_TLTH}, -{{sRTF_POSX}, RTF_POSX}, -{{sRTF_POSXC}, RTF_POSXC}, -{{sRTF_POSXI}, RTF_POSXI}, -{{sRTF_POSXL}, RTF_POSXL}, -{{sRTF_POSXO}, RTF_POSXO}, -{{sRTF_POSXR}, RTF_POSXR}, -{{sRTF_POSY}, RTF_POSY}, -{{sRTF_POSYIL}, RTF_POSYIL}, -{{sRTF_POSYT}, RTF_POSYT}, -{{sRTF_POSYC}, RTF_POSYC}, -{{sRTF_POSYB}, RTF_POSYB}, -{{sRTF_ABSW}, RTF_ABSW}, -{{sRTF_DXFRTEXT}, RTF_DXFRTEXT}, -{{sRTF_PVMRG}, RTF_PVMRG}, -{{sRTF_PVPG}, RTF_PVPG}, -{{sRTF_PHMRG}, RTF_PHMRG}, -{{sRTF_PHPG}, RTF_PHPG}, -{{sRTF_PHCOL}, RTF_PHCOL}, -{{sRTF_CLBRDRB}, RTF_CLBRDRB}, -{{sRTF_CLBRDRT}, RTF_CLBRDRT}, -{{sRTF_CLBRDRL}, RTF_CLBRDRL}, -{{sRTF_CLBRDRR}, RTF_CLBRDRR}, -{{sRTF_CLPADL}, RTF_CLPADL}, -{{sRTF_CLPADT}, RTF_CLPADT}, -{{sRTF_CLPADB}, RTF_CLPADB}, -{{sRTF_CLPADR}, RTF_CLPADR}, -{{sRTF_CLPADFL}, RTF_CLPADFL}, -{{sRTF_CLPADFT}, RTF_CLPADFT}, -{{sRTF_CLPADFB}, RTF_CLPADFB}, -{{sRTF_CLPADFR}, RTF_CLPADFR}, -{{sRTF_TROWD}, RTF_TROWD}, -{{sRTF_TRQL}, RTF_TRQL}, -{{sRTF_TRQR}, RTF_TRQR}, -{{sRTF_TRQC}, RTF_TRQC}, -{{sRTF_TRGAPH}, RTF_TRGAPH}, -{{sRTF_TRRH}, RTF_TRRH}, -{{sRTF_TRLEFT}, RTF_TRLEFT}, -{{sRTF_CELLX}, RTF_CELLX}, -{{sRTF_CLMGF}, RTF_CLMGF}, -{{sRTF_CLMRG}, RTF_CLMRG}, -{{sRTF_PLAIN}, RTF_PLAIN}, -{{sRTF_B}, RTF_B}, -{{sRTF_I}, RTF_I}, -{{sRTF_STRIKE}, RTF_STRIKE}, -{{sRTF_OUTL}, RTF_OUTL}, -{{sRTF_SHAD}, RTF_SHAD}, -{{sRTF_SCAPS}, RTF_SCAPS}, -{{sRTF_CAPS}, RTF_CAPS}, -{{sRTF_V}, RTF_V}, -{{sRTF_F}, RTF_F}, -{{sRTF_FS}, RTF_FS}, -{{sRTF_EXPND}, RTF_EXPND}, -{{sRTF_EXPNDTW}, RTF_EXPNDTW}, -{{sRTF_KERNING}, RTF_KERNING}, -{{sRTF_UL}, RTF_UL}, -{{sRTF_ULW}, RTF_ULW}, -{{sRTF_ULD}, RTF_ULD}, -{{sRTF_ULDB}, RTF_ULDB}, -{{sRTF_ULNONE}, RTF_ULNONE}, -{{sRTF_UP}, RTF_UP}, -{{sRTF_DN}, RTF_DN}, -{{sRTF_REVISED}, RTF_REVISED}, -{{sRTF_SUB}, RTF_SUB}, -{{sRTF_NOSUPERSUB}, RTF_NOSUPERSUB}, -{{sRTF_SUPER}, RTF_SUPER}, -{{sRTF_CHDATE}, RTF_CHDATE}, -{{sRTF_CHTIME}, RTF_CHTIME}, -{{sRTF_CHPGN}, RTF_CHPGN}, -{{sRTF_CHFTN}, RTF_CHFTN}, -{{sRTF_CHATN}, RTF_CHATN}, -{{sRTF_CHFTNSEP}, RTF_CHFTNSEP}, -{{sRTF_CHFTNSEPC}, RTF_CHFTNSEPC}, -{{sRTF_FORMULA}, RTF_FORMULA}, -{{sRTF_NOBREAK}, RTF_NONBREAKINGSPACE}, -{{sRTF_OPTHYPH}, RTF_OPTIONALHYPHEN}, -{{sRTF_NOBRKHYPH}, RTF_NONBREAKINGHYPHEN}, -{{sRTF_HEXCHAR}, RTF_HEX}, -{{sRTF_CELL}, RTF_CELL}, -{{sRTF_ROW}, RTF_ROW}, -{{sRTF_PAR}, RTF_PAR}, -{{sRTF_SECT}, RTF_SECT}, -{{sRTF_PAGE}, RTF_PAGE}, -{{sRTF_COLUMN}, RTF_COLUM}, -{{sRTF_LINE}, RTF_LINE}, -{{sRTF_TAB}, RTF_TAB}, -{{sRTF_SUBENTRY}, RTF_SUBENTRYINDEX}, +{{OOO_STRING_SVTOOLS_RTF_IGNORE}, RTF_IGNOREFLAG}, +{{OOO_STRING_SVTOOLS_RTF_RTF}, RTF_RTF}, +{{OOO_STRING_SVTOOLS_RTF_ANSI}, RTF_ANSITYPE}, +{{OOO_STRING_SVTOOLS_RTF_MAC}, RTF_MACTYPE}, +{{OOO_STRING_SVTOOLS_RTF_PC}, RTF_PCTYPE}, +{{OOO_STRING_SVTOOLS_RTF_PCA}, RTF_PCATYPE}, +{{OOO_STRING_SVTOOLS_RTF_NEXTCSET}, RTF_NEXTTYPE}, +{{OOO_STRING_SVTOOLS_RTF_STYLESHEET}, RTF_STYLESHEET}, +{{OOO_STRING_SVTOOLS_RTF_SBASEDON}, RTF_SBASEDON}, +{{OOO_STRING_SVTOOLS_RTF_SNEXT}, RTF_SNEXT}, +{{OOO_STRING_SVTOOLS_RTF_FONTTBL}, RTF_FONTTBL}, +{{OOO_STRING_SVTOOLS_RTF_DEFF}, RTF_DEFF}, +{{OOO_STRING_SVTOOLS_RTF_FNIL}, RTF_FNIL}, +{{OOO_STRING_SVTOOLS_RTF_FROMAN}, RTF_FROMAN}, +{{OOO_STRING_SVTOOLS_RTF_FSWISS}, RTF_FSWISS}, +{{OOO_STRING_SVTOOLS_RTF_FMODERN}, RTF_FMODERN}, +{{OOO_STRING_SVTOOLS_RTF_FSCRIPT}, RTF_FSCRIPT}, +{{OOO_STRING_SVTOOLS_RTF_FDECOR}, RTF_FDECOR}, +{{OOO_STRING_SVTOOLS_RTF_FTECH}, RTF_FTECH}, +{{OOO_STRING_SVTOOLS_RTF_FCHARSET}, RTF_FCHARSET}, +{{OOO_STRING_SVTOOLS_RTF_FALT}, RTF_FALT}, +{{OOO_STRING_SVTOOLS_RTF_FPRQ}, RTF_FPRQ}, +{{OOO_STRING_SVTOOLS_RTF_COLORTBL}, RTF_COLORTBL}, +{{OOO_STRING_SVTOOLS_RTF_RED}, RTF_RED}, +{{OOO_STRING_SVTOOLS_RTF_GREEN}, RTF_GREEN}, +{{OOO_STRING_SVTOOLS_RTF_BLUE}, RTF_BLUE}, +{{OOO_STRING_SVTOOLS_RTF_CF}, RTF_CF}, +{{OOO_STRING_SVTOOLS_RTF_CB}, RTF_CB}, +{{OOO_STRING_SVTOOLS_RTF_INFO}, RTF_INFO}, +{{OOO_STRING_SVTOOLS_RTF_TITLE}, RTF_TITLE}, +{{OOO_STRING_SVTOOLS_RTF_SUBJECT}, RTF_SUBJECT}, +{{OOO_STRING_SVTOOLS_RTF_AUTHOR}, RTF_AUTHOR}, +{{OOO_STRING_SVTOOLS_RTF_OPERATOR}, RTF_OPERATOR}, +{{OOO_STRING_SVTOOLS_RTF_KEYWORDS}, RTF_KEYWORDS}, +{{OOO_STRING_SVTOOLS_RTF_COMMENT}, RTF_COMMENT}, +{{OOO_STRING_SVTOOLS_RTF_VERSION}, RTF_VERSION}, +{{OOO_STRING_SVTOOLS_RTF_DOCCOMM}, RTF_DOCCOMM}, +{{OOO_STRING_SVTOOLS_RTF_VERN}, RTF_VERN}, +{{OOO_STRING_SVTOOLS_RTF_CREATIM}, RTF_CREATIM}, +{{OOO_STRING_SVTOOLS_RTF_REVTIM}, RTF_REVTIM}, +{{OOO_STRING_SVTOOLS_RTF_PRINTIM}, RTF_PRINTIM}, +{{OOO_STRING_SVTOOLS_RTF_BUPTIM}, RTF_BUPTIM}, +{{OOO_STRING_SVTOOLS_RTF_EDMINS}, RTF_EDMINS}, +{{OOO_STRING_SVTOOLS_RTF_NOFPAGES}, RTF_NOFPAGES}, +{{OOO_STRING_SVTOOLS_RTF_NOFWORDS}, RTF_NOFWORDS}, +{{OOO_STRING_SVTOOLS_RTF_NOFCHARS}, RTF_NOFCHARS}, +{{OOO_STRING_SVTOOLS_RTF_ID}, RTF_ID}, +{{OOO_STRING_SVTOOLS_RTF_YR}, RTF_YR}, +{{OOO_STRING_SVTOOLS_RTF_MO}, RTF_MO}, +{{OOO_STRING_SVTOOLS_RTF_DY}, RTF_DY}, +{{OOO_STRING_SVTOOLS_RTF_HR}, RTF_HR}, +{{OOO_STRING_SVTOOLS_RTF_MIN}, RTF_MIN}, +{{OOO_STRING_SVTOOLS_RTF_ANNOTATION}, RTF_ANNOTATION}, +{{OOO_STRING_SVTOOLS_RTF_ATNID}, RTF_ATNID}, +{{OOO_STRING_SVTOOLS_RTF_FOOTNOTE}, RTF_FOOTNOTE}, +{{OOO_STRING_SVTOOLS_RTF_FOOTER}, RTF_FOOTER}, +{{OOO_STRING_SVTOOLS_RTF_FOOTERL}, RTF_FOOTERL}, +{{OOO_STRING_SVTOOLS_RTF_FOOTERR}, RTF_FOOTERR}, +{{OOO_STRING_SVTOOLS_RTF_FOOTERF}, RTF_FOOTERF}, +{{OOO_STRING_SVTOOLS_RTF_HEADER}, RTF_HEADER}, +{{OOO_STRING_SVTOOLS_RTF_HEADERL}, RTF_HEADERL}, +{{OOO_STRING_SVTOOLS_RTF_HEADERR}, RTF_HEADERR}, +{{OOO_STRING_SVTOOLS_RTF_HEADERF}, RTF_HEADERF}, +{{OOO_STRING_SVTOOLS_RTF_XE}, RTF_XE}, +{{OOO_STRING_SVTOOLS_RTF_BXE}, RTF_BXE}, +{{OOO_STRING_SVTOOLS_RTF_IXE}, RTF_IXE}, +{{OOO_STRING_SVTOOLS_RTF_RXE}, RTF_RXE}, +{{OOO_STRING_SVTOOLS_RTF_TXE}, RTF_TXE}, +{{OOO_STRING_SVTOOLS_RTF_TC}, RTF_TC}, +{{OOO_STRING_SVTOOLS_RTF_TCF}, RTF_TCF}, +{{OOO_STRING_SVTOOLS_RTF_TCL}, RTF_TCL}, +{{OOO_STRING_SVTOOLS_RTF_BKMKSTART}, RTF_BKMKSTART}, +{{OOO_STRING_SVTOOLS_RTF_BKMKEND}, RTF_BKMKEND}, +{{OOO_STRING_SVTOOLS_RTF_PICT}, RTF_PICT}, +{{OOO_STRING_SVTOOLS_RTF_PICW}, RTF_PICW}, +{{OOO_STRING_SVTOOLS_RTF_PICH}, RTF_PICH}, +{{OOO_STRING_SVTOOLS_RTF_WBMBITSPIXEL}, RTF_WBMBITSPIXEL}, +{{OOO_STRING_SVTOOLS_RTF_WBMPLANES}, RTF_WBMPLANES}, +{{OOO_STRING_SVTOOLS_RTF_WBMWIDTHBYTES}, RTF_WBMWIDTHBYTES}, +{{OOO_STRING_SVTOOLS_RTF_PICWGOAL}, RTF_PICWGOAL}, +{{OOO_STRING_SVTOOLS_RTF_PICHGOAL}, RTF_PICHGOAL}, +{{OOO_STRING_SVTOOLS_RTF_BIN}, RTF_BIN}, +{{OOO_STRING_SVTOOLS_RTF_PICSCALEX}, RTF_PICSCALEX}, +{{OOO_STRING_SVTOOLS_RTF_PICSCALEY}, RTF_PICSCALEY}, +{{OOO_STRING_SVTOOLS_RTF_PICSCALED}, RTF_PICSCALED}, +{{OOO_STRING_SVTOOLS_RTF_WBITMAP}, RTF_WBITMAP}, +{{OOO_STRING_SVTOOLS_RTF_WMETAFILE}, RTF_WMETAFILE}, +{{OOO_STRING_SVTOOLS_RTF_MACPICT}, RTF_MACPICT}, +{{OOO_STRING_SVTOOLS_RTF_PICCROPT}, RTF_PICCROPT}, +{{OOO_STRING_SVTOOLS_RTF_PICCROPB}, RTF_PICCROPB}, +{{OOO_STRING_SVTOOLS_RTF_PICCROPL}, RTF_PICCROPL}, +{{OOO_STRING_SVTOOLS_RTF_PICCROPR}, RTF_PICCROPR}, +{{OOO_STRING_SVTOOLS_RTF_FIELD}, RTF_FIELD}, +{{OOO_STRING_SVTOOLS_RTF_FLDDIRTY}, RTF_FLDDIRTY}, +{{OOO_STRING_SVTOOLS_RTF_FLDEDIT}, RTF_FLDEDIT}, +{{OOO_STRING_SVTOOLS_RTF_FLDLOCK}, RTF_FLDLOCK}, +{{OOO_STRING_SVTOOLS_RTF_FLDPRIV}, RTF_FLDPRIV}, +{{OOO_STRING_SVTOOLS_RTF_FLDINST}, RTF_FLDINST}, +{{OOO_STRING_SVTOOLS_RTF_FLDRSLT}, RTF_FLDRSLT}, +{{OOO_STRING_SVTOOLS_RTF_PAPERW}, RTF_PAPERW}, +{{OOO_STRING_SVTOOLS_RTF_PAPERH}, RTF_PAPERH}, +{{OOO_STRING_SVTOOLS_RTF_MARGL}, RTF_MARGL}, +{{OOO_STRING_SVTOOLS_RTF_MARGR}, RTF_MARGR}, +{{OOO_STRING_SVTOOLS_RTF_MARGT}, RTF_MARGT}, +{{OOO_STRING_SVTOOLS_RTF_MARGB}, RTF_MARGB}, +{{OOO_STRING_SVTOOLS_RTF_FACINGP}, RTF_FACINGP}, +{{OOO_STRING_SVTOOLS_RTF_GUTTER}, RTF_GUTTER}, +{{OOO_STRING_SVTOOLS_RTF_DEFTAB}, RTF_DEFTAB}, +{{OOO_STRING_SVTOOLS_RTF_WIDOWCTRL}, RTF_WIDOWCTRL}, +{{OOO_STRING_SVTOOLS_RTF_HYPHHOTZ}, RTF_HYPHHOTZ}, +{{OOO_STRING_SVTOOLS_RTF_FTNSEP}, RTF_FTNSEP}, +{{OOO_STRING_SVTOOLS_RTF_FTNSEPC}, RTF_FTNSEPC}, +{{OOO_STRING_SVTOOLS_RTF_FTNCN}, RTF_FTNCN}, +{{OOO_STRING_SVTOOLS_RTF_ENDNOTES}, RTF_ENDNOTES}, +{{OOO_STRING_SVTOOLS_RTF_ENDDOC}, RTF_ENDDOC}, +{{OOO_STRING_SVTOOLS_RTF_FTNTJ}, RTF_FTNTJ}, +{{OOO_STRING_SVTOOLS_RTF_FTNBJ}, RTF_FTNBJ}, +{{OOO_STRING_SVTOOLS_RTF_FTNSTART}, RTF_FTNSTART}, +{{OOO_STRING_SVTOOLS_RTF_FTNRESTART}, RTF_FTNRESTART}, +{{OOO_STRING_SVTOOLS_RTF_PGNSTART}, RTF_PGNSTART}, +{{OOO_STRING_SVTOOLS_RTF_LINESTART}, RTF_LINESTART}, +{{OOO_STRING_SVTOOLS_RTF_LANDSCAPE}, RTF_LANDSCAPE}, +{{OOO_STRING_SVTOOLS_RTF_FRACWIDTH}, RTF_FRACWIDTH}, +{{OOO_STRING_SVTOOLS_RTF_NEXTFILE}, RTF_NEXTFILE}, +{{OOO_STRING_SVTOOLS_RTF_TEMPLATE}, RTF_TEMPLATE}, +{{OOO_STRING_SVTOOLS_RTF_MAKEBACKUP}, RTF_MAKEBACKUP}, +{{OOO_STRING_SVTOOLS_RTF_DEFFORMAT}, RTF_DEFFORMAT}, +{{OOO_STRING_SVTOOLS_RTF_REVISIONS}, RTF_REVISIONS}, +{{OOO_STRING_SVTOOLS_RTF_MARGMIRROR}, RTF_MARGMIRROR}, +{{OOO_STRING_SVTOOLS_RTF_REVPROP}, RTF_REVPROP}, +{{OOO_STRING_SVTOOLS_RTF_REVBAR}, RTF_REVBAR}, +{{OOO_STRING_SVTOOLS_RTF_SECTD}, RTF_SECTD}, +{{OOO_STRING_SVTOOLS_RTF_SBKNONE}, RTF_SBKNONE}, +{{OOO_STRING_SVTOOLS_RTF_SBKCOL}, RTF_SBKCOL}, +{{OOO_STRING_SVTOOLS_RTF_SBKPAGE}, RTF_SBKPAGE}, +{{OOO_STRING_SVTOOLS_RTF_SBKEVEN}, RTF_SBKEVEN}, +{{OOO_STRING_SVTOOLS_RTF_SBKODD}, RTF_SBKODD}, +{{OOO_STRING_SVTOOLS_RTF_PGNSTARTS}, RTF_PGNSTARTS}, +{{OOO_STRING_SVTOOLS_RTF_PGNCONT}, RTF_PGNCONT}, +{{OOO_STRING_SVTOOLS_RTF_PGNRESTART}, RTF_PGNRESTART}, +{{OOO_STRING_SVTOOLS_RTF_PGNDEC}, RTF_PGNDEC}, +{{OOO_STRING_SVTOOLS_RTF_PGNUCRM}, RTF_PGNUCRM}, +{{OOO_STRING_SVTOOLS_RTF_PGNLCRM}, RTF_PGNLCRM}, +{{OOO_STRING_SVTOOLS_RTF_PGNUCLTR}, RTF_PGNUCLTR}, +{{OOO_STRING_SVTOOLS_RTF_PGNLCLTR}, RTF_PGNLCLTR}, +{{OOO_STRING_SVTOOLS_RTF_PGNX}, RTF_PGNX}, +{{OOO_STRING_SVTOOLS_RTF_PGNY}, RTF_PGNY}, +{{OOO_STRING_SVTOOLS_RTF_HEADERY}, RTF_HEADERY}, +{{OOO_STRING_SVTOOLS_RTF_FOOTERY}, RTF_FOOTERY}, +{{OOO_STRING_SVTOOLS_RTF_LINEMOD}, RTF_LINEMOD}, +{{OOO_STRING_SVTOOLS_RTF_LINEX}, RTF_LINEX}, +{{OOO_STRING_SVTOOLS_RTF_LINESTARTS}, RTF_LINESTARTS}, +{{OOO_STRING_SVTOOLS_RTF_LINERESTART}, RTF_LINERESTART}, +{{OOO_STRING_SVTOOLS_RTF_LINEPPAGE}, RTF_LINEPAGE}, +{{OOO_STRING_SVTOOLS_RTF_LINECONT}, RTF_LINECONT}, +{{OOO_STRING_SVTOOLS_RTF_VERTALT}, RTF_VERTALT}, +{{OOO_STRING_SVTOOLS_RTF_VERTALB}, RTF_VERTALB}, +{{OOO_STRING_SVTOOLS_RTF_VERTALC}, RTF_VERTALC}, +{{OOO_STRING_SVTOOLS_RTF_VERTALJ}, RTF_VERTALJ}, +{{OOO_STRING_SVTOOLS_RTF_COLS}, RTF_COLS}, +{{OOO_STRING_SVTOOLS_RTF_COLSX}, RTF_COLSX}, +{{OOO_STRING_SVTOOLS_RTF_COLNO}, RTF_COLNO}, +{{OOO_STRING_SVTOOLS_RTF_COLSR}, RTF_COLSR}, +{{OOO_STRING_SVTOOLS_RTF_COLW}, RTF_COLW}, +{{OOO_STRING_SVTOOLS_RTF_LINEBETCOL}, RTF_LINEBETCOL}, +{{OOO_STRING_SVTOOLS_RTF_ENDNHERE}, RTF_ENDNHERE}, +{{OOO_STRING_SVTOOLS_RTF_TITLEPG}, RTF_TITLEPG}, +{{OOO_STRING_SVTOOLS_RTF_PARD}, RTF_PARD}, +{{OOO_STRING_SVTOOLS_RTF_S}, RTF_S}, +{{OOO_STRING_SVTOOLS_RTF_QL}, RTF_QL}, +{{OOO_STRING_SVTOOLS_RTF_QR}, RTF_QR}, +{{OOO_STRING_SVTOOLS_RTF_QJ}, RTF_QJ}, +{{OOO_STRING_SVTOOLS_RTF_QC}, RTF_QC}, +{{OOO_STRING_SVTOOLS_RTF_FI}, RTF_FI}, +{{OOO_STRING_SVTOOLS_RTF_LI}, RTF_LI}, +{{OOO_STRING_SVTOOLS_RTF_LIN}, RTF_LIN}, +{{OOO_STRING_SVTOOLS_RTF_RI}, RTF_RI}, +{{OOO_STRING_SVTOOLS_RTF_RIN}, RTF_RIN}, +{{OOO_STRING_SVTOOLS_RTF_SB}, RTF_SB}, +{{OOO_STRING_SVTOOLS_RTF_SA}, RTF_SA}, +{{OOO_STRING_SVTOOLS_RTF_SL}, RTF_SL}, +{{OOO_STRING_SVTOOLS_RTF_INTBL}, RTF_INTBL}, +{{OOO_STRING_SVTOOLS_RTF_KEEP}, RTF_KEEP}, +{{OOO_STRING_SVTOOLS_RTF_KEEPN}, RTF_KEEPN}, +{{OOO_STRING_SVTOOLS_RTF_LEVEL}, RTF_LEVEL}, +{{OOO_STRING_SVTOOLS_RTF_SBYS}, RTF_SBYS}, +{{OOO_STRING_SVTOOLS_RTF_PAGEBB}, RTF_PAGEBB}, +{{OOO_STRING_SVTOOLS_RTF_NOLINE}, RTF_NOLINE}, +{{OOO_STRING_SVTOOLS_RTF_TX}, RTF_TX}, +{{OOO_STRING_SVTOOLS_RTF_TQL}, RTF_TQL}, +{{OOO_STRING_SVTOOLS_RTF_TQR}, RTF_TQR}, +{{OOO_STRING_SVTOOLS_RTF_TQC}, RTF_TQC}, +{{OOO_STRING_SVTOOLS_RTF_TQDEC}, RTF_TQDEC}, +{{OOO_STRING_SVTOOLS_RTF_TB}, RTF_TB}, +{{OOO_STRING_SVTOOLS_RTF_BRDRT}, RTF_BRDRT}, +{{OOO_STRING_SVTOOLS_RTF_BRDRB}, RTF_BRDRB}, +{{OOO_STRING_SVTOOLS_RTF_BRDRL}, RTF_BRDRL}, +{{OOO_STRING_SVTOOLS_RTF_BRDRR}, RTF_BRDRR}, +{{OOO_STRING_SVTOOLS_RTF_BOX}, RTF_BOX}, +{{OOO_STRING_SVTOOLS_RTF_BRDRS}, RTF_BRDRS}, +{{OOO_STRING_SVTOOLS_RTF_BRDRTH}, RTF_BRDRTH}, +{{OOO_STRING_SVTOOLS_RTF_BRDRSH}, RTF_BRDRSH}, +{{OOO_STRING_SVTOOLS_RTF_BRDRDB}, RTF_BRDRDB}, +{{OOO_STRING_SVTOOLS_RTF_BRDRDOT}, RTF_BRDRDOT}, +{{OOO_STRING_SVTOOLS_RTF_BRDRHAIR}, RTF_BRDRHAIR}, +{{OOO_STRING_SVTOOLS_RTF_BRSP}, RTF_BRSP}, +{{OOO_STRING_SVTOOLS_RTF_TLDOT}, RTF_TLDOT}, +{{OOO_STRING_SVTOOLS_RTF_TLHYPH}, RTF_TLHYPH}, +{{OOO_STRING_SVTOOLS_RTF_TLUL}, RTF_TLUL}, +{{OOO_STRING_SVTOOLS_RTF_TLTH}, RTF_TLTH}, +{{OOO_STRING_SVTOOLS_RTF_POSX}, RTF_POSX}, +{{OOO_STRING_SVTOOLS_RTF_POSXC}, RTF_POSXC}, +{{OOO_STRING_SVTOOLS_RTF_POSXI}, RTF_POSXI}, +{{OOO_STRING_SVTOOLS_RTF_POSXL}, RTF_POSXL}, +{{OOO_STRING_SVTOOLS_RTF_POSXO}, RTF_POSXO}, +{{OOO_STRING_SVTOOLS_RTF_POSXR}, RTF_POSXR}, +{{OOO_STRING_SVTOOLS_RTF_POSY}, RTF_POSY}, +{{OOO_STRING_SVTOOLS_RTF_POSYIL}, RTF_POSYIL}, +{{OOO_STRING_SVTOOLS_RTF_POSYT}, RTF_POSYT}, +{{OOO_STRING_SVTOOLS_RTF_POSYC}, RTF_POSYC}, +{{OOO_STRING_SVTOOLS_RTF_POSYB}, RTF_POSYB}, +{{OOO_STRING_SVTOOLS_RTF_ABSW}, RTF_ABSW}, +{{OOO_STRING_SVTOOLS_RTF_DXFRTEXT}, RTF_DXFRTEXT}, +{{OOO_STRING_SVTOOLS_RTF_PVMRG}, RTF_PVMRG}, +{{OOO_STRING_SVTOOLS_RTF_PVPG}, RTF_PVPG}, +{{OOO_STRING_SVTOOLS_RTF_PHMRG}, RTF_PHMRG}, +{{OOO_STRING_SVTOOLS_RTF_PHPG}, RTF_PHPG}, +{{OOO_STRING_SVTOOLS_RTF_PHCOL}, RTF_PHCOL}, +{{OOO_STRING_SVTOOLS_RTF_CLBRDRB}, RTF_CLBRDRB}, +{{OOO_STRING_SVTOOLS_RTF_CLBRDRT}, RTF_CLBRDRT}, +{{OOO_STRING_SVTOOLS_RTF_CLBRDRL}, RTF_CLBRDRL}, +{{OOO_STRING_SVTOOLS_RTF_CLBRDRR}, RTF_CLBRDRR}, +{{OOO_STRING_SVTOOLS_RTF_CLPADL}, RTF_CLPADL}, +{{OOO_STRING_SVTOOLS_RTF_CLPADT}, RTF_CLPADT}, +{{OOO_STRING_SVTOOLS_RTF_CLPADB}, RTF_CLPADB}, +{{OOO_STRING_SVTOOLS_RTF_CLPADR}, RTF_CLPADR}, +{{OOO_STRING_SVTOOLS_RTF_CLPADFL}, RTF_CLPADFL}, +{{OOO_STRING_SVTOOLS_RTF_CLPADFT}, RTF_CLPADFT}, +{{OOO_STRING_SVTOOLS_RTF_CLPADFB}, RTF_CLPADFB}, +{{OOO_STRING_SVTOOLS_RTF_CLPADFR}, RTF_CLPADFR}, +{{OOO_STRING_SVTOOLS_RTF_TROWD}, RTF_TROWD}, +{{OOO_STRING_SVTOOLS_RTF_TRQL}, RTF_TRQL}, +{{OOO_STRING_SVTOOLS_RTF_TRQR}, RTF_TRQR}, +{{OOO_STRING_SVTOOLS_RTF_TRQC}, RTF_TRQC}, +{{OOO_STRING_SVTOOLS_RTF_TRGAPH}, RTF_TRGAPH}, +{{OOO_STRING_SVTOOLS_RTF_TRRH}, RTF_TRRH}, +{{OOO_STRING_SVTOOLS_RTF_TRLEFT}, RTF_TRLEFT}, +{{OOO_STRING_SVTOOLS_RTF_CELLX}, RTF_CELLX}, +{{OOO_STRING_SVTOOLS_RTF_CLMGF}, RTF_CLMGF}, +{{OOO_STRING_SVTOOLS_RTF_CLMRG}, RTF_CLMRG}, +{{OOO_STRING_SVTOOLS_RTF_PLAIN}, RTF_PLAIN}, +{{OOO_STRING_SVTOOLS_RTF_B}, RTF_B}, +{{OOO_STRING_SVTOOLS_RTF_I}, RTF_I}, +{{OOO_STRING_SVTOOLS_RTF_STRIKE}, RTF_STRIKE}, +{{OOO_STRING_SVTOOLS_RTF_OUTL}, RTF_OUTL}, +{{OOO_STRING_SVTOOLS_RTF_SHAD}, RTF_SHAD}, +{{OOO_STRING_SVTOOLS_RTF_SCAPS}, RTF_SCAPS}, +{{OOO_STRING_SVTOOLS_RTF_CAPS}, RTF_CAPS}, +{{OOO_STRING_SVTOOLS_RTF_V}, RTF_V}, +{{OOO_STRING_SVTOOLS_RTF_F}, RTF_F}, +{{OOO_STRING_SVTOOLS_RTF_FS}, RTF_FS}, +{{OOO_STRING_SVTOOLS_RTF_EXPND}, RTF_EXPND}, +{{OOO_STRING_SVTOOLS_RTF_EXPNDTW}, RTF_EXPNDTW}, +{{OOO_STRING_SVTOOLS_RTF_KERNING}, RTF_KERNING}, +{{OOO_STRING_SVTOOLS_RTF_UL}, RTF_UL}, +{{OOO_STRING_SVTOOLS_RTF_ULW}, RTF_ULW}, +{{OOO_STRING_SVTOOLS_RTF_ULD}, RTF_ULD}, +{{OOO_STRING_SVTOOLS_RTF_ULDB}, RTF_ULDB}, +{{OOO_STRING_SVTOOLS_RTF_ULNONE}, RTF_ULNONE}, +{{OOO_STRING_SVTOOLS_RTF_UP}, RTF_UP}, +{{OOO_STRING_SVTOOLS_RTF_DN}, RTF_DN}, +{{OOO_STRING_SVTOOLS_RTF_REVISED}, RTF_REVISED}, +{{OOO_STRING_SVTOOLS_RTF_SUB}, RTF_SUB}, +{{OOO_STRING_SVTOOLS_RTF_NOSUPERSUB}, RTF_NOSUPERSUB}, +{{OOO_STRING_SVTOOLS_RTF_SUPER}, RTF_SUPER}, +{{OOO_STRING_SVTOOLS_RTF_CHDATE}, RTF_CHDATE}, +{{OOO_STRING_SVTOOLS_RTF_CHTIME}, RTF_CHTIME}, +{{OOO_STRING_SVTOOLS_RTF_CHPGN}, RTF_CHPGN}, +{{OOO_STRING_SVTOOLS_RTF_CHFTN}, RTF_CHFTN}, +{{OOO_STRING_SVTOOLS_RTF_CHATN}, RTF_CHATN}, +{{OOO_STRING_SVTOOLS_RTF_CHFTNSEP}, RTF_CHFTNSEP}, +{{OOO_STRING_SVTOOLS_RTF_CHFTNSEPC}, RTF_CHFTNSEPC}, +{{OOO_STRING_SVTOOLS_RTF_FORMULA}, RTF_FORMULA}, +{{OOO_STRING_SVTOOLS_RTF_NOBREAK}, RTF_NONBREAKINGSPACE}, +{{OOO_STRING_SVTOOLS_RTF_OPTHYPH}, RTF_OPTIONALHYPHEN}, +{{OOO_STRING_SVTOOLS_RTF_NOBRKHYPH}, RTF_NONBREAKINGHYPHEN}, +{{OOO_STRING_SVTOOLS_RTF_HEXCHAR}, RTF_HEX}, +{{OOO_STRING_SVTOOLS_RTF_CELL}, RTF_CELL}, +{{OOO_STRING_SVTOOLS_RTF_ROW}, RTF_ROW}, +{{OOO_STRING_SVTOOLS_RTF_PAR}, RTF_PAR}, +{{OOO_STRING_SVTOOLS_RTF_SECT}, RTF_SECT}, +{{OOO_STRING_SVTOOLS_RTF_PAGE}, RTF_PAGE}, +{{OOO_STRING_SVTOOLS_RTF_COLUMN}, RTF_COLUM}, +{{OOO_STRING_SVTOOLS_RTF_LINE}, RTF_LINE}, +{{OOO_STRING_SVTOOLS_RTF_TAB}, RTF_TAB}, +{{OOO_STRING_SVTOOLS_RTF_SUBENTRY}, RTF_SUBENTRYINDEX}, -{{sRTF_DEFLANG}, RTF_DEFLANG}, -{{sRTF_LANG}, RTF_LANG}, -{{sRTF_PMMETAFILE}, RTF_OSMETAFILE}, -{{sRTF_DIBITMAP}, RTF_DIBITMAP}, -{{sRTF_KEYCODE}, RTF_KEYCODE}, -{{sRTF_FN}, RTF_FNKEY}, -{{sRTF_ALT}, RTF_ALTKEY}, -{{sRTF_SHIFT}, RTF_SHIFTKEY}, -{{sRTF_CTRL}, RTF_CTRLKEY}, -{{sRTF_CHDPL}, RTF_CHDATEL}, -{{sRTF_CHDPA}, RTF_CHDATEA}, -{{sRTF_EMDASH}, RTF_EMDASH}, -{{sRTF_ENDASH}, RTF_ENDASH}, -{{sRTF_BULLET}, RTF_BULLET}, -{{sRTF_LQUOTE}, RTF_LQUOTE}, -{{sRTF_RQUOTE}, RTF_RQUOTE}, -{{sRTF_LDBLQUOTE}, RTF_LDBLQUOTE}, -{{sRTF_RDBLQUOTE}, RTF_RDBLQUOTE}, +{{OOO_STRING_SVTOOLS_RTF_DEFLANG}, RTF_DEFLANG}, +{{OOO_STRING_SVTOOLS_RTF_LANG}, RTF_LANG}, +{{OOO_STRING_SVTOOLS_RTF_PMMETAFILE}, RTF_OSMETAFILE}, +{{OOO_STRING_SVTOOLS_RTF_DIBITMAP}, RTF_DIBITMAP}, +{{OOO_STRING_SVTOOLS_RTF_KEYCODE}, RTF_KEYCODE}, +{{OOO_STRING_SVTOOLS_RTF_FN}, RTF_FNKEY}, +{{OOO_STRING_SVTOOLS_RTF_ALT}, RTF_ALTKEY}, +{{OOO_STRING_SVTOOLS_RTF_SHIFT}, RTF_SHIFTKEY}, +{{OOO_STRING_SVTOOLS_RTF_CTRL}, RTF_CTRLKEY}, +{{OOO_STRING_SVTOOLS_RTF_CHDPL}, RTF_CHDATEL}, +{{OOO_STRING_SVTOOLS_RTF_CHDPA}, RTF_CHDATEA}, +{{OOO_STRING_SVTOOLS_RTF_EMDASH}, RTF_EMDASH}, +{{OOO_STRING_SVTOOLS_RTF_ENDASH}, RTF_ENDASH}, +{{OOO_STRING_SVTOOLS_RTF_BULLET}, RTF_BULLET}, +{{OOO_STRING_SVTOOLS_RTF_LQUOTE}, RTF_LQUOTE}, +{{OOO_STRING_SVTOOLS_RTF_RQUOTE}, RTF_RQUOTE}, +{{OOO_STRING_SVTOOLS_RTF_LDBLQUOTE}, RTF_LDBLQUOTE}, +{{OOO_STRING_SVTOOLS_RTF_RDBLQUOTE}, RTF_RDBLQUOTE}, -{{sRTF_BKMKCOLF}, RTF_BKMKCOLF}, -{{sRTF_BKMKCOLL}, RTF_BKMKCOLL}, -{{sRTF_PSOVER}, RTF_PSOVER}, -{{sRTF_DOCTEMP}, RTF_DOCTEMP}, -{{sRTF_BINFSXN}, RTF_BINFSXN}, -{{sRTF_BINSXN}, RTF_BINSXN}, -{{sRTF_PGWSXN}, RTF_PGWSXN}, -{{sRTF_PGHSXN}, RTF_PGHSXN}, -{{sRTF_MARGLSXN}, RTF_MARGLSXN}, -{{sRTF_MARGRSXN}, RTF_MARGRSXN}, -{{sRTF_MARGTSXN}, RTF_MARGTSXN}, -{{sRTF_MARGBSXN}, RTF_MARGBSXN}, -{{sRTF_GUTTERSXN}, RTF_GUTTERSXN}, -{{sRTF_LNDSCPSXN}, RTF_LNDSCPSXN}, -{{sRTF_FACPGSXN}, RTF_FACPGSXN}, -{{sRTF_TLEQ}, RTF_TLEQ}, -{{sRTF_BRDRBTW}, RTF_BRDRBTW}, -{{sRTF_BRDRBAR}, RTF_BRDRBAR}, -{{sRTF_BRDRW}, RTF_BRDRW}, -{{sRTF_BRDRCF}, RTF_BRDRCF}, -{{sRTF_ABSH}, RTF_ABSH}, -{{sRTF_PVPARA}, RTF_PVPARA}, -{{sRTF_NOWRAP}, RTF_NOWRAP}, -{{sRTF_DFRMTXTX}, RTF_DFRMTXTX}, -{{sRTF_DFRMTXTY}, RTF_DFRMTXTY}, -{{sRTF_DROPCAPLI}, RTF_DROPCAPLI}, -{{sRTF_DROPCAPT}, RTF_DROPCAPT}, -{{sRTF_ABSNOOVRLP}, RTF_ABSNOOVRLP}, -{{sRTF_POSNEGX}, RTF_POSNEGX}, -{{sRTF_POSNEGY}, RTF_POSNEGY}, -{{sRTF_DELETED}, RTF_DELETED}, +{{OOO_STRING_SVTOOLS_RTF_BKMKCOLF}, RTF_BKMKCOLF}, +{{OOO_STRING_SVTOOLS_RTF_BKMKCOLL}, RTF_BKMKCOLL}, +{{OOO_STRING_SVTOOLS_RTF_PSOVER}, RTF_PSOVER}, +{{OOO_STRING_SVTOOLS_RTF_DOCTEMP}, RTF_DOCTEMP}, +{{OOO_STRING_SVTOOLS_RTF_BINFSXN}, RTF_BINFSXN}, +{{OOO_STRING_SVTOOLS_RTF_BINSXN}, RTF_BINSXN}, +{{OOO_STRING_SVTOOLS_RTF_PGWSXN}, RTF_PGWSXN}, +{{OOO_STRING_SVTOOLS_RTF_PGHSXN}, RTF_PGHSXN}, +{{OOO_STRING_SVTOOLS_RTF_MARGLSXN}, RTF_MARGLSXN}, +{{OOO_STRING_SVTOOLS_RTF_MARGRSXN}, RTF_MARGRSXN}, +{{OOO_STRING_SVTOOLS_RTF_MARGTSXN}, RTF_MARGTSXN}, +{{OOO_STRING_SVTOOLS_RTF_MARGBSXN}, RTF_MARGBSXN}, +{{OOO_STRING_SVTOOLS_RTF_GUTTERSXN}, RTF_GUTTERSXN}, +{{OOO_STRING_SVTOOLS_RTF_LNDSCPSXN}, RTF_LNDSCPSXN}, +{{OOO_STRING_SVTOOLS_RTF_FACPGSXN}, RTF_FACPGSXN}, +{{OOO_STRING_SVTOOLS_RTF_TLEQ}, RTF_TLEQ}, +{{OOO_STRING_SVTOOLS_RTF_BRDRBTW}, RTF_BRDRBTW}, +{{OOO_STRING_SVTOOLS_RTF_BRDRBAR}, RTF_BRDRBAR}, +{{OOO_STRING_SVTOOLS_RTF_BRDRW}, RTF_BRDRW}, +{{OOO_STRING_SVTOOLS_RTF_BRDRCF}, RTF_BRDRCF}, +{{OOO_STRING_SVTOOLS_RTF_ABSH}, RTF_ABSH}, +{{OOO_STRING_SVTOOLS_RTF_PVPARA}, RTF_PVPARA}, +{{OOO_STRING_SVTOOLS_RTF_NOWRAP}, RTF_NOWRAP}, +{{OOO_STRING_SVTOOLS_RTF_DFRMTXTX}, RTF_DFRMTXTX}, +{{OOO_STRING_SVTOOLS_RTF_DFRMTXTY}, RTF_DFRMTXTY}, +{{OOO_STRING_SVTOOLS_RTF_DROPCAPLI}, RTF_DROPCAPLI}, +{{OOO_STRING_SVTOOLS_RTF_DROPCAPT}, RTF_DROPCAPT}, +{{OOO_STRING_SVTOOLS_RTF_ABSNOOVRLP}, RTF_ABSNOOVRLP}, +{{OOO_STRING_SVTOOLS_RTF_POSNEGX}, RTF_POSNEGX}, +{{OOO_STRING_SVTOOLS_RTF_POSNEGY}, RTF_POSNEGY}, +{{OOO_STRING_SVTOOLS_RTF_DELETED}, RTF_DELETED}, -{{sRTF_SHADING}, RTF_SHADING}, -{{sRTF_BGHORIZ}, RTF_BGHORIZ}, -{{sRTF_BGVERT}, RTF_BGVERT}, -{{sRTF_BGFDIAG}, RTF_BGFDIAG}, -{{sRTF_BGBDIAG}, RTF_BGBDIAG}, -{{sRTF_BGCROSS}, RTF_BGCROSS}, -{{sRTF_BGDCROSS}, RTF_BGDCROSS}, -{{sRTF_BGDKHORIZ}, RTF_BGDKHORIZ}, -{{sRTF_BGDKVERT}, RTF_BGDKVERT}, -{{sRTF_BGDKFDIAG}, RTF_BGDKFDIAG}, -{{sRTF_BGDKBDIAG}, RTF_BGDKBDIAG}, -{{sRTF_BGDKCROSS}, RTF_BGDKCROSS}, -{{sRTF_BGDKDCROSS}, RTF_BGDKDCROSS}, -{{sRTF_CFPAT}, RTF_CFPAT}, -{{sRTF_CBPAT}, RTF_CBPAT}, +{{OOO_STRING_SVTOOLS_RTF_SHADING}, RTF_SHADING}, +{{OOO_STRING_SVTOOLS_RTF_BGHORIZ}, RTF_BGHORIZ}, +{{OOO_STRING_SVTOOLS_RTF_BGVERT}, RTF_BGVERT}, +{{OOO_STRING_SVTOOLS_RTF_BGFDIAG}, RTF_BGFDIAG}, +{{OOO_STRING_SVTOOLS_RTF_BGBDIAG}, RTF_BGBDIAG}, +{{OOO_STRING_SVTOOLS_RTF_BGCROSS}, RTF_BGCROSS}, +{{OOO_STRING_SVTOOLS_RTF_BGDCROSS}, RTF_BGDCROSS}, +{{OOO_STRING_SVTOOLS_RTF_BGDKHORIZ}, RTF_BGDKHORIZ}, +{{OOO_STRING_SVTOOLS_RTF_BGDKVERT}, RTF_BGDKVERT}, +{{OOO_STRING_SVTOOLS_RTF_BGDKFDIAG}, RTF_BGDKFDIAG}, +{{OOO_STRING_SVTOOLS_RTF_BGDKBDIAG}, RTF_BGDKBDIAG}, +{{OOO_STRING_SVTOOLS_RTF_BGDKCROSS}, RTF_BGDKCROSS}, +{{OOO_STRING_SVTOOLS_RTF_BGDKDCROSS}, RTF_BGDKDCROSS}, +{{OOO_STRING_SVTOOLS_RTF_CFPAT}, RTF_CFPAT}, +{{OOO_STRING_SVTOOLS_RTF_CBPAT}, RTF_CBPAT}, -{{sRTF_CLSHDNG}, RTF_CLSHDNG}, -{{sRTF_CLBGHORIZ}, RTF_CLBGHORIZ}, -{{sRTF_CLBGVERT}, RTF_CLBGVERT}, -{{sRTF_CLBGFDIAG}, RTF_CLBGFDIAG}, -{{sRTF_CLBGBDIAG}, RTF_CLBGBDIAG}, -{{sRTF_CLBGCROSS}, RTF_CLBGCROSS}, -{{sRTF_CLBGDCROSS}, RTF_CLBGDCROSS}, -{{sRTF_CLBGDKHOR}, RTF_CLBGDKHOR}, -{{sRTF_CLBGDKVERT}, RTF_CLBGDKVERT}, -{{sRTF_CLBGDKFDIAG}, RTF_CLBGDKFDIAG}, -{{sRTF_CLBGDKBDIAG}, RTF_CLBGDKBDIAG}, -{{sRTF_CLBGDKCROSS}, RTF_CLBGDKCROSS}, -{{sRTF_CLBGDKDCROSS}, RTF_CLBGDKDCROSS}, -{{sRTF_CLCFPAT}, RTF_CLCFPAT}, -{{sRTF_CLCBPAT}, RTF_CLCBPAT}, +{{OOO_STRING_SVTOOLS_RTF_CLSHDNG}, RTF_CLSHDNG}, +{{OOO_STRING_SVTOOLS_RTF_CLBGHORIZ}, RTF_CLBGHORIZ}, +{{OOO_STRING_SVTOOLS_RTF_CLBGVERT}, RTF_CLBGVERT}, +{{OOO_STRING_SVTOOLS_RTF_CLBGFDIAG}, RTF_CLBGFDIAG}, +{{OOO_STRING_SVTOOLS_RTF_CLBGBDIAG}, RTF_CLBGBDIAG}, +{{OOO_STRING_SVTOOLS_RTF_CLBGCROSS}, RTF_CLBGCROSS}, +{{OOO_STRING_SVTOOLS_RTF_CLBGDCROSS}, RTF_CLBGDCROSS}, +{{OOO_STRING_SVTOOLS_RTF_CLBGDKHOR}, RTF_CLBGDKHOR}, +{{OOO_STRING_SVTOOLS_RTF_CLBGDKVERT}, RTF_CLBGDKVERT}, +{{OOO_STRING_SVTOOLS_RTF_CLBGDKFDIAG}, RTF_CLBGDKFDIAG}, +{{OOO_STRING_SVTOOLS_RTF_CLBGDKBDIAG}, RTF_CLBGDKBDIAG}, +{{OOO_STRING_SVTOOLS_RTF_CLBGDKCROSS}, RTF_CLBGDKCROSS}, +{{OOO_STRING_SVTOOLS_RTF_CLBGDKDCROSS}, RTF_CLBGDKDCROSS}, +{{OOO_STRING_SVTOOLS_RTF_CLCFPAT}, RTF_CLCFPAT}, +{{OOO_STRING_SVTOOLS_RTF_CLCBPAT}, RTF_CLCBPAT}, -{{sRTF_AB}, RTF_AB}, -{{sRTF_ACAPS}, RTF_ACAPS}, -{{sRTF_ACF}, RTF_ACF}, -{{sRTF_ADDITIVE}, RTF_ADDITIVE}, -{{sRTF_ADN}, RTF_ADN}, -{{sRTF_AENDDOC}, RTF_AENDDOC}, -{{sRTF_AENDNOTES}, RTF_AENDNOTES}, -{{sRTF_AEXPND}, RTF_AEXPND}, -{{sRTF_AF}, RTF_AF}, -{{sRTF_AFS}, RTF_AFS}, -{{sRTF_AFTNBJ}, RTF_AFTNBJ}, -{{sRTF_AFTNCN}, RTF_AFTNCN}, -{{sRTF_AFTNNALC}, RTF_AFTNNALC}, -{{sRTF_AFTNNAR}, RTF_AFTNNAR}, -{{sRTF_AFTNNAUC}, RTF_AFTNNAUC}, -{{sRTF_AFTNNCHI}, RTF_AFTNNCHI}, -{{sRTF_AFTNNRLC}, RTF_AFTNNRLC}, -{{sRTF_AFTNNRUC}, RTF_AFTNNRUC}, -{{sRTF_AFTNRESTART}, RTF_AFTNRESTART}, -{{sRTF_AFTNRSTCONT}, RTF_AFTNRSTCONT}, -{{sRTF_AFTNSEP}, RTF_AFTNSEP}, -{{sRTF_AFTNSEPC}, RTF_AFTNSEPC}, -{{sRTF_AFTNSTART}, RTF_AFTNSTART}, -{{sRTF_AFTNTJ}, RTF_AFTNTJ}, -{{sRTF_AI}, RTF_AI}, -{{sRTF_ALANG}, RTF_ALANG}, -{{sRTF_ALLPROT}, RTF_ALLPROT}, -{{sRTF_ANNOTPROT}, RTF_ANNOTPROT}, -{{sRTF_AOUTL}, RTF_AOUTL}, -{{sRTF_ASCAPS}, RTF_ASCAPS}, -{{sRTF_ASHAD}, RTF_ASHAD}, -{{sRTF_ASTRIKE}, RTF_ASTRIKE}, -{{sRTF_ATNAUTHOR}, RTF_ATNAUTHOR}, -{{sRTF_ATNICN}, RTF_ATNICN}, -{{sRTF_ATNREF}, RTF_ATNREF}, -{{sRTF_ATNTIME}, RTF_ATNTIME}, -{{sRTF_ATRFEND}, RTF_ATRFEND}, -{{sRTF_ATRFSTART}, RTF_ATRFSTART}, -{{sRTF_AUL}, RTF_AUL}, -{{sRTF_AULD}, RTF_AULD}, -{{sRTF_AULDB}, RTF_AULDB}, -{{sRTF_AULNONE}, RTF_AULNONE}, -{{sRTF_AULW}, RTF_AULW}, -{{sRTF_AUP}, RTF_AUP}, -{{sRTF_BKMKPUB}, RTF_BKMKPUB}, -{{sRTF_BRDRDASH}, RTF_BRDRDASH}, -{{sRTF_BRKFRM}, RTF_BRKFRM}, -{{sRTF_CCHS}, RTF_CCHS}, -{{sRTF_CPG}, RTF_CPG}, -{{sRTF_CS}, RTF_CS}, -{{sRTF_CVMME}, RTF_CVMME}, -{{sRTF_DATAFIELD}, RTF_DATAFIELD}, -{{sRTF_DO}, RTF_DO}, -{{sRTF_DOBXCOLUMN}, RTF_DOBXCOLUMN}, -{{sRTF_DOBXMARGIN}, RTF_DOBXMARGIN}, -{{sRTF_DOBXPAGE}, RTF_DOBXPAGE}, -{{sRTF_DOBYMARGIN}, RTF_DOBYMARGIN}, -{{sRTF_DOBYPAGE}, RTF_DOBYPAGE}, -{{sRTF_DOBYPARA}, RTF_DOBYPARA}, -{{sRTF_DODHGT}, RTF_DODHGT}, -{{sRTF_DOLOCK}, RTF_DOLOCK}, -{{sRTF_DPAENDHOL}, RTF_DPAENDHOL}, -{{sRTF_DPAENDL}, RTF_DPAENDL}, -{{sRTF_DPAENDSOL}, RTF_DPAENDSOL}, -{{sRTF_DPAENDW}, RTF_DPAENDW}, -{{sRTF_DPARC}, RTF_DPARC}, -{{sRTF_DPARCFLIPX}, RTF_DPARCFLIPX}, -{{sRTF_DPARCFLIPY}, RTF_DPARCFLIPY}, -{{sRTF_DPASTARTHOL}, RTF_DPASTARTHOL}, -{{sRTF_DPASTARTL}, RTF_DPASTARTL}, -{{sRTF_DPASTARTSOL}, RTF_DPASTARTSOL}, -{{sRTF_DPASTARTW}, RTF_DPASTARTW}, -{{sRTF_DPCALLOUT}, RTF_DPCALLOUT}, -{{sRTF_DPCOA}, RTF_DPCOA}, -{{sRTF_DPCOACCENT}, RTF_DPCOACCENT}, -{{sRTF_DPCOBESTFIT}, RTF_DPCOBESTFIT}, -{{sRTF_DPCOBORDER}, RTF_DPCOBORDER}, -{{sRTF_DPCODABS}, RTF_DPCODABS}, -{{sRTF_DPCODBOTTOM}, RTF_DPCODBOTTOM}, -{{sRTF_DPCODCENTER}, RTF_DPCODCENTER}, -{{sRTF_DPCODTOP}, RTF_DPCODTOP}, -{{sRTF_DPCOLENGTH}, RTF_DPCOLENGTH}, -{{sRTF_DPCOMINUSX}, RTF_DPCOMINUSX}, -{{sRTF_DPCOMINUSY}, RTF_DPCOMINUSY}, -{{sRTF_DPCOOFFSET}, RTF_DPCOOFFSET}, -{{sRTF_DPCOSMARTA}, RTF_DPCOSMARTA}, -{{sRTF_DPCOTDOUBLE}, RTF_DPCOTDOUBLE}, -{{sRTF_DPCOTRIGHT}, RTF_DPCOTRIGHT}, -{{sRTF_DPCOTSINGLE}, RTF_DPCOTSINGLE}, -{{sRTF_DPCOTTRIPLE}, RTF_DPCOTTRIPLE}, -{{sRTF_DPCOUNT}, RTF_DPCOUNT}, -{{sRTF_DPELLIPSE}, RTF_DPELLIPSE}, -{{sRTF_DPENDGROUP}, RTF_DPENDGROUP}, -{{sRTF_DPFILLBGCB}, RTF_DPFILLBGCB}, -{{sRTF_DPFILLBGCG}, RTF_DPFILLBGCG}, -{{sRTF_DPFILLBGCR}, RTF_DPFILLBGCR}, -{{sRTF_DPFILLBGGRAY}, RTF_DPFILLBGGRAY}, -{{sRTF_DPFILLBGPAL}, RTF_DPFILLBGPAL}, -{{sRTF_DPFILLFGCB}, RTF_DPFILLFGCB}, -{{sRTF_DPFILLFGCG}, RTF_DPFILLFGCG}, -{{sRTF_DPFILLFGCR}, RTF_DPFILLFGCR}, -{{sRTF_DPFILLFGGRAY}, RTF_DPFILLFGGRAY}, -{{sRTF_DPFILLFGPAL}, RTF_DPFILLFGPAL}, -{{sRTF_DPFILLPAT}, RTF_DPFILLPAT}, -{{sRTF_DPGROUP}, RTF_DPGROUP}, -{{sRTF_DPLINE}, RTF_DPLINE}, -{{sRTF_DPLINECOB}, RTF_DPLINECOB}, -{{sRTF_DPLINECOG}, RTF_DPLINECOG}, -{{sRTF_DPLINECOR}, RTF_DPLINECOR}, -{{sRTF_DPLINEDADO}, RTF_DPLINEDADO}, -{{sRTF_DPLINEDADODO}, RTF_DPLINEDADODO}, -{{sRTF_DPLINEDASH}, RTF_DPLINEDASH}, -{{sRTF_DPLINEDOT}, RTF_DPLINEDOT}, -{{sRTF_DPLINEGRAY}, RTF_DPLINEGRAY}, -{{sRTF_DPLINEHOLLOW}, RTF_DPLINEHOLLOW}, -{{sRTF_DPLINEPAL}, RTF_DPLINEPAL}, -{{sRTF_DPLINESOLID}, RTF_DPLINESOLID}, -{{sRTF_DPLINEW}, RTF_DPLINEW}, -{{sRTF_DPPOLYCOUNT}, RTF_DPPOLYCOUNT}, -{{sRTF_DPPOLYGON}, RTF_DPPOLYGON}, -{{sRTF_DPPOLYLINE}, RTF_DPPOLYLINE}, -{{sRTF_DPPTX}, RTF_DPPTX}, -{{sRTF_DPPTY}, RTF_DPPTY}, -{{sRTF_DPRECT}, RTF_DPRECT}, -{{sRTF_DPROUNDR}, RTF_DPROUNDR}, -{{sRTF_DPSHADOW}, RTF_DPSHADOW}, -{{sRTF_DPSHADX}, RTF_DPSHADX}, -{{sRTF_DPSHADY}, RTF_DPSHADY}, -{{sRTF_DPTXBX}, RTF_DPTXBX}, -{{sRTF_DPTXBXMAR}, RTF_DPTXBXMAR}, -{{sRTF_DPTXBXTEXT}, RTF_DPTXBXTEXT}, -{{sRTF_DPX}, RTF_DPX}, -{{sRTF_DPXSIZE}, RTF_DPXSIZE}, -{{sRTF_DPY}, RTF_DPY}, -{{sRTF_DPYSIZE}, RTF_DPYSIZE}, -{{sRTF_DS}, RTF_DS}, -{{sRTF_EMSPACE}, RTF_EMSPACE}, -{{sRTF_ENSPACE}, RTF_ENSPACE}, -{{sRTF_FBIDI}, RTF_FBIDI}, -{{sRTF_FET}, RTF_FET}, -{{sRTF_FID}, RTF_FID}, -{{sRTF_FILE}, RTF_FILE}, -{{sRTF_FILETBL}, RTF_FILETBL}, -{{sRTF_FLDALT}, RTF_FLDALT}, -{{sRTF_FNETWORK}, RTF_FNETWORK}, -{{sRTF_FONTEMB}, RTF_FONTEMB}, -{{sRTF_FONTFILE}, RTF_FONTFILE}, -{{sRTF_FORMDISP}, RTF_FORMDISP}, -{{sRTF_FORMPROT}, RTF_FORMPROT}, -{{sRTF_FORMSHADE}, RTF_FORMSHADE}, -{{sRTF_FOSNUM}, RTF_FOSNUM}, -{{sRTF_FRELATIVE}, RTF_FRELATIVE}, -{{sRTF_FTNALT}, RTF_FTNALT}, -{{sRTF_FTNIL}, RTF_FTNIL}, -{{sRTF_FTNNALC}, RTF_FTNNALC}, -{{sRTF_FTNNAR}, RTF_FTNNAR}, -{{sRTF_FTNNAUC}, RTF_FTNNAUC}, -{{sRTF_FTNNCHI}, RTF_FTNNCHI}, -{{sRTF_FTNNRLC}, RTF_FTNNRLC}, -{{sRTF_FTNNRUC}, RTF_FTNNRUC}, -{{sRTF_FTNRSTCONT}, RTF_FTNRSTCONT}, -{{sRTF_FTNRSTPG}, RTF_FTNRSTPG}, -{{sRTF_FTTRUETYPE}, RTF_FTTRUETYPE}, -{{sRTF_FVALIDDOS}, RTF_FVALIDDOS}, -{{sRTF_FVALIDHPFS}, RTF_FVALIDHPFS}, -{{sRTF_FVALIDMAC}, RTF_FVALIDMAC}, -{{sRTF_FVALIDNTFS}, RTF_FVALIDNTFS}, -{{sRTF_HYPHAUTO}, RTF_HYPHAUTO}, -{{sRTF_HYPHCAPS}, RTF_HYPHCAPS}, -{{sRTF_HYPHCONSEC}, RTF_HYPHCONSEC}, -{{sRTF_HYPHPAR}, RTF_HYPHPAR}, -{{sRTF_LINKSELF}, RTF_LINKSELF}, -{{sRTF_LINKSTYLES}, RTF_LINKSTYLES}, -{{sRTF_LTRCH}, RTF_LTRCH}, -{{sRTF_LTRDOC}, RTF_LTRDOC}, -{{sRTF_LTRMARK}, RTF_LTRMARK}, -{{sRTF_LTRPAR}, RTF_LTRPAR}, -{{sRTF_LTRROW}, RTF_LTRROW}, -{{sRTF_LTRSECT}, RTF_LTRSECT}, -{{sRTF_NOCOLBAL}, RTF_NOCOLBAL}, -{{sRTF_NOEXTRASPRL}, RTF_NOEXTRASPRL}, -{{sRTF_NOTABIND}, RTF_NOTABIND}, -{{sRTF_NOWIDCTLPAR}, RTF_NOWIDCTLPAR}, -{{sRTF_OBJALIAS}, RTF_OBJALIAS}, -{{sRTF_OBJALIGN}, RTF_OBJALIGN}, -{{sRTF_OBJAUTLINK}, RTF_OBJAUTLINK}, -{{sRTF_OBJCLASS}, RTF_OBJCLASS}, -{{sRTF_OBJCROPB}, RTF_OBJCROPB}, -{{sRTF_OBJCROPL}, RTF_OBJCROPL}, -{{sRTF_OBJCROPR}, RTF_OBJCROPR}, -{{sRTF_OBJCROPT}, RTF_OBJCROPT}, -{{sRTF_OBJDATA}, RTF_OBJDATA}, -{{sRTF_OBJECT}, RTF_OBJECT}, -{{sRTF_OBJEMB}, RTF_OBJEMB}, -{{sRTF_OBJH}, RTF_OBJH}, -{{sRTF_OBJICEMB}, RTF_OBJICEMB}, -{{sRTF_OBJLINK}, RTF_OBJLINK}, -{{sRTF_OBJLOCK}, RTF_OBJLOCK}, -{{sRTF_OBJNAME}, RTF_OBJNAME}, -{{sRTF_OBJPUB}, RTF_OBJPUB}, -{{sRTF_OBJSCALEX}, RTF_OBJSCALEX}, -{{sRTF_OBJSCALEY}, RTF_OBJSCALEY}, -{{sRTF_OBJSECT}, RTF_OBJSECT}, -{{sRTF_OBJSETSIZE}, RTF_OBJSETSIZE}, -{{sRTF_OBJSUB}, RTF_OBJSUB}, -{{sRTF_OBJTIME}, RTF_OBJTIME}, -{{sRTF_OBJTRANSY}, RTF_OBJTRANSY}, -{{sRTF_OBJUPDATE}, RTF_OBJUPDATE}, -{{sRTF_OBJW}, RTF_OBJW}, -{{sRTF_OTBLRUL}, RTF_OTBLRUL}, -{{sRTF_PGNHN}, RTF_PGNHN}, -{{sRTF_PGNHNSC}, RTF_PGNHNSC}, -{{sRTF_PGNHNSH}, RTF_PGNHNSH}, -{{sRTF_PGNHNSM}, RTF_PGNHNSM}, -{{sRTF_PGNHNSN}, RTF_PGNHNSN}, -{{sRTF_PGNHNSP}, RTF_PGNHNSP}, -{{sRTF_PICBMP}, RTF_PICBMP}, -{{sRTF_PICBPP}, RTF_PICBPP}, -{{sRTF_PN}, RTF_PN}, -{{sRTF_PNACROSS}, RTF_PNACROSS}, -{{sRTF_PNB}, RTF_PNB}, -{{sRTF_PNCAPS}, RTF_PNCAPS}, -{{sRTF_PNCARD}, RTF_PNCARD}, -{{sRTF_PNCF}, RTF_PNCF}, -{{sRTF_PNDEC}, RTF_PNDEC}, -{{sRTF_PNF}, RTF_PNF}, -{{sRTF_PNFS}, RTF_PNFS}, -{{sRTF_PNHANG}, RTF_PNHANG}, -{{sRTF_PNI}, RTF_PNI}, -{{sRTF_PNINDENT}, RTF_PNINDENT}, -{{sRTF_PNLCLTR}, RTF_PNLCLTR}, -{{sRTF_PNLCRM}, RTF_PNLCRM}, -{{sRTF_PNLVL}, RTF_PNLVL}, -{{sRTF_PNLVLBLT}, RTF_PNLVLBLT}, -{{sRTF_PNLVLBODY}, RTF_PNLVLBODY}, -{{sRTF_PNLVLCONT}, RTF_PNLVLCONT}, -{{sRTF_PNNUMONCE}, RTF_PNNUMONCE}, -{{sRTF_PNORD}, RTF_PNORD}, -{{sRTF_PNORDT}, RTF_PNORDT}, -{{sRTF_PNPREV}, RTF_PNPREV}, -{{sRTF_PNQC}, RTF_PNQC}, -{{sRTF_PNQL}, RTF_PNQL}, -{{sRTF_PNQR}, RTF_PNQR}, -{{sRTF_PNRESTART}, RTF_PNRESTART}, -{{sRTF_PNSCAPS}, RTF_PNSCAPS}, -{{sRTF_PNSECLVL}, RTF_PNSECLVL}, -{{sRTF_PNSP}, RTF_PNSP}, -{{sRTF_PNSTART}, RTF_PNSTART}, -{{sRTF_PNSTRIKE}, RTF_PNSTRIKE}, -{{sRTF_PNTEXT}, RTF_PNTEXT}, -{{sRTF_PNTXTA}, RTF_PNTXTA}, -{{sRTF_PNTXTB}, RTF_PNTXTB}, -{{sRTF_PNUCLTR}, RTF_PNUCLTR}, -{{sRTF_PNUCRM}, RTF_PNUCRM}, -{{sRTF_PNUL}, RTF_PNUL}, -{{sRTF_PNULD}, RTF_PNULD}, -{{sRTF_PNULDB}, RTF_PNULDB}, -{{sRTF_PNULNONE}, RTF_PNULNONE}, -{{sRTF_PNULW}, RTF_PNULW}, -{{sRTF_PRCOLBL}, RTF_PRCOLBL}, -{{sRTF_PRINTDATA}, RTF_PRINTDATA}, -{{sRTF_PSZ}, RTF_PSZ}, -{{sRTF_PUBAUTO}, RTF_PUBAUTO}, -{{sRTF_RESULT}, RTF_RESULT}, -{{sRTF_REVAUTH}, RTF_REVAUTH}, -{{sRTF_REVDTTM}, RTF_REVDTTM}, -{{sRTF_REVPROT}, RTF_REVPROT}, -{{sRTF_REVTBL}, RTF_REVTBL}, -{{sRTF_RSLTBMP}, RTF_RSLTBMP}, -{{sRTF_RSLTMERGE}, RTF_RSLTMERGE}, -{{sRTF_RSLTPICT}, RTF_RSLTPICT}, -{{sRTF_RSLTRTF}, RTF_RSLTRTF}, -{{sRTF_RSLTTXT}, RTF_RSLTTXT}, -{{sRTF_RTLCH}, RTF_RTLCH}, -{{sRTF_RTLDOC}, RTF_RTLDOC}, -{{sRTF_RTLMARK}, RTF_RTLMARK}, -{{sRTF_RTLPAR}, RTF_RTLPAR}, -{{sRTF_RTLROW}, RTF_RTLROW}, -{{sRTF_RTLSECT}, RTF_RTLSECT}, -{{sRTF_SEC}, RTF_SEC}, -{{sRTF_SECTNUM}, RTF_SECTNUM}, -{{sRTF_SECTUNLOCKED}, RTF_SECTUNLOCKED}, -{{sRTF_SLMULT}, RTF_SLMULT}, -{{sRTF_SOFTCOL}, RTF_SOFTCOL}, -{{sRTF_SOFTLHEIGHT}, RTF_SOFTLHEIGHT}, -{{sRTF_SOFTLINE}, RTF_SOFTLINE}, -{{sRTF_SOFTPAGE}, RTF_SOFTPAGE}, -{{sRTF_SPRSSPBF}, RTF_SPRSSPBF}, -{{sRTF_SPRSTSP}, RTF_SPRSTSP}, -{{sRTF_SUBDOCUMENT}, RTF_SUBDOCUMENT}, -{{sRTF_SWPBDR}, RTF_SWPBDR}, -{{sRTF_TCN}, RTF_TCN}, -{{sRTF_TRANSMF}, RTF_TRANSMF}, -{{sRTF_TRBRDRB}, RTF_TRBRDRB}, -{{sRTF_TRBRDRH}, RTF_TRBRDRH}, -{{sRTF_TRBRDRL}, RTF_TRBRDRL}, -{{sRTF_TRBRDRR}, RTF_TRBRDRR}, -{{sRTF_TRBRDRT}, RTF_TRBRDRT}, -{{sRTF_TRBRDRV}, RTF_TRBRDRV}, -{{sRTF_TRHDR}, RTF_TRHDR}, -{{sRTF_TRKEEP}, RTF_TRKEEP}, -{{sRTF_TRPADDB}, RTF_TRPADDB}, -{{sRTF_TRPADDL}, RTF_TRPADDL}, -{{sRTF_TRPADDR}, RTF_TRPADDR}, -{{sRTF_TRPADDT}, RTF_TRPADDT}, -{{sRTF_TRPADDFB}, RTF_TRPADDFB}, -{{sRTF_TRPADDFL}, RTF_TRPADDFL}, -{{sRTF_TRPADDFR}, RTF_TRPADDFR}, -{{sRTF_TRPADDFT}, RTF_TRPADDFT}, +{{OOO_STRING_SVTOOLS_RTF_AB}, RTF_AB}, +{{OOO_STRING_SVTOOLS_RTF_ACAPS}, RTF_ACAPS}, +{{OOO_STRING_SVTOOLS_RTF_ACF}, RTF_ACF}, +{{OOO_STRING_SVTOOLS_RTF_ADDITIVE}, RTF_ADDITIVE}, +{{OOO_STRING_SVTOOLS_RTF_ADN}, RTF_ADN}, +{{OOO_STRING_SVTOOLS_RTF_AENDDOC}, RTF_AENDDOC}, +{{OOO_STRING_SVTOOLS_RTF_AENDNOTES}, RTF_AENDNOTES}, +{{OOO_STRING_SVTOOLS_RTF_AEXPND}, RTF_AEXPND}, +{{OOO_STRING_SVTOOLS_RTF_AF}, RTF_AF}, +{{OOO_STRING_SVTOOLS_RTF_AFS}, RTF_AFS}, +{{OOO_STRING_SVTOOLS_RTF_AFTNBJ}, RTF_AFTNBJ}, +{{OOO_STRING_SVTOOLS_RTF_AFTNCN}, RTF_AFTNCN}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNALC}, RTF_AFTNNALC}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNAR}, RTF_AFTNNAR}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNAUC}, RTF_AFTNNAUC}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNCHI}, RTF_AFTNNCHI}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNRLC}, RTF_AFTNNRLC}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNRUC}, RTF_AFTNNRUC}, +{{OOO_STRING_SVTOOLS_RTF_AFTNRESTART}, RTF_AFTNRESTART}, +{{OOO_STRING_SVTOOLS_RTF_AFTNRSTCONT}, RTF_AFTNRSTCONT}, +{{OOO_STRING_SVTOOLS_RTF_AFTNSEP}, RTF_AFTNSEP}, +{{OOO_STRING_SVTOOLS_RTF_AFTNSEPC}, RTF_AFTNSEPC}, +{{OOO_STRING_SVTOOLS_RTF_AFTNSTART}, RTF_AFTNSTART}, +{{OOO_STRING_SVTOOLS_RTF_AFTNTJ}, RTF_AFTNTJ}, +{{OOO_STRING_SVTOOLS_RTF_AI}, RTF_AI}, +{{OOO_STRING_SVTOOLS_RTF_ALANG}, RTF_ALANG}, +{{OOO_STRING_SVTOOLS_RTF_ALLPROT}, RTF_ALLPROT}, +{{OOO_STRING_SVTOOLS_RTF_ANNOTPROT}, RTF_ANNOTPROT}, +{{OOO_STRING_SVTOOLS_RTF_AOUTL}, RTF_AOUTL}, +{{OOO_STRING_SVTOOLS_RTF_ASCAPS}, RTF_ASCAPS}, +{{OOO_STRING_SVTOOLS_RTF_ASHAD}, RTF_ASHAD}, +{{OOO_STRING_SVTOOLS_RTF_ASTRIKE}, RTF_ASTRIKE}, +{{OOO_STRING_SVTOOLS_RTF_ATNAUTHOR}, RTF_ATNAUTHOR}, +{{OOO_STRING_SVTOOLS_RTF_ATNICN}, RTF_ATNICN}, +{{OOO_STRING_SVTOOLS_RTF_ATNREF}, RTF_ATNREF}, +{{OOO_STRING_SVTOOLS_RTF_ATNTIME}, RTF_ATNTIME}, +{{OOO_STRING_SVTOOLS_RTF_ATRFEND}, RTF_ATRFEND}, +{{OOO_STRING_SVTOOLS_RTF_ATRFSTART}, RTF_ATRFSTART}, +{{OOO_STRING_SVTOOLS_RTF_AUL}, RTF_AUL}, +{{OOO_STRING_SVTOOLS_RTF_AULD}, RTF_AULD}, +{{OOO_STRING_SVTOOLS_RTF_AULDB}, RTF_AULDB}, +{{OOO_STRING_SVTOOLS_RTF_AULNONE}, RTF_AULNONE}, +{{OOO_STRING_SVTOOLS_RTF_AULW}, RTF_AULW}, +{{OOO_STRING_SVTOOLS_RTF_AUP}, RTF_AUP}, +{{OOO_STRING_SVTOOLS_RTF_BKMKPUB}, RTF_BKMKPUB}, +{{OOO_STRING_SVTOOLS_RTF_BRDRDASH}, RTF_BRDRDASH}, +{{OOO_STRING_SVTOOLS_RTF_BRKFRM}, RTF_BRKFRM}, +{{OOO_STRING_SVTOOLS_RTF_CCHS}, RTF_CCHS}, +{{OOO_STRING_SVTOOLS_RTF_CPG}, RTF_CPG}, +{{OOO_STRING_SVTOOLS_RTF_CS}, RTF_CS}, +{{OOO_STRING_SVTOOLS_RTF_CVMME}, RTF_CVMME}, +{{OOO_STRING_SVTOOLS_RTF_DATAFIELD}, RTF_DATAFIELD}, +{{OOO_STRING_SVTOOLS_RTF_DO}, RTF_DO}, +{{OOO_STRING_SVTOOLS_RTF_DOBXCOLUMN}, RTF_DOBXCOLUMN}, +{{OOO_STRING_SVTOOLS_RTF_DOBXMARGIN}, RTF_DOBXMARGIN}, +{{OOO_STRING_SVTOOLS_RTF_DOBXPAGE}, RTF_DOBXPAGE}, +{{OOO_STRING_SVTOOLS_RTF_DOBYMARGIN}, RTF_DOBYMARGIN}, +{{OOO_STRING_SVTOOLS_RTF_DOBYPAGE}, RTF_DOBYPAGE}, +{{OOO_STRING_SVTOOLS_RTF_DOBYPARA}, RTF_DOBYPARA}, +{{OOO_STRING_SVTOOLS_RTF_DODHGT}, RTF_DODHGT}, +{{OOO_STRING_SVTOOLS_RTF_DOLOCK}, RTF_DOLOCK}, +{{OOO_STRING_SVTOOLS_RTF_DPAENDHOL}, RTF_DPAENDHOL}, +{{OOO_STRING_SVTOOLS_RTF_DPAENDL}, RTF_DPAENDL}, +{{OOO_STRING_SVTOOLS_RTF_DPAENDSOL}, RTF_DPAENDSOL}, +{{OOO_STRING_SVTOOLS_RTF_DPAENDW}, RTF_DPAENDW}, +{{OOO_STRING_SVTOOLS_RTF_DPARC}, RTF_DPARC}, +{{OOO_STRING_SVTOOLS_RTF_DPARCFLIPX}, RTF_DPARCFLIPX}, +{{OOO_STRING_SVTOOLS_RTF_DPARCFLIPY}, RTF_DPARCFLIPY}, +{{OOO_STRING_SVTOOLS_RTF_DPASTARTHOL}, RTF_DPASTARTHOL}, +{{OOO_STRING_SVTOOLS_RTF_DPASTARTL}, RTF_DPASTARTL}, +{{OOO_STRING_SVTOOLS_RTF_DPASTARTSOL}, RTF_DPASTARTSOL}, +{{OOO_STRING_SVTOOLS_RTF_DPASTARTW}, RTF_DPASTARTW}, +{{OOO_STRING_SVTOOLS_RTF_DPCALLOUT}, RTF_DPCALLOUT}, +{{OOO_STRING_SVTOOLS_RTF_DPCOA}, RTF_DPCOA}, +{{OOO_STRING_SVTOOLS_RTF_DPCOACCENT}, RTF_DPCOACCENT}, +{{OOO_STRING_SVTOOLS_RTF_DPCOBESTFIT}, RTF_DPCOBESTFIT}, +{{OOO_STRING_SVTOOLS_RTF_DPCOBORDER}, RTF_DPCOBORDER}, +{{OOO_STRING_SVTOOLS_RTF_DPCODABS}, RTF_DPCODABS}, +{{OOO_STRING_SVTOOLS_RTF_DPCODBOTTOM}, RTF_DPCODBOTTOM}, +{{OOO_STRING_SVTOOLS_RTF_DPCODCENTER}, RTF_DPCODCENTER}, +{{OOO_STRING_SVTOOLS_RTF_DPCODTOP}, RTF_DPCODTOP}, +{{OOO_STRING_SVTOOLS_RTF_DPCOLENGTH}, RTF_DPCOLENGTH}, +{{OOO_STRING_SVTOOLS_RTF_DPCOMINUSX}, RTF_DPCOMINUSX}, +{{OOO_STRING_SVTOOLS_RTF_DPCOMINUSY}, RTF_DPCOMINUSY}, +{{OOO_STRING_SVTOOLS_RTF_DPCOOFFSET}, RTF_DPCOOFFSET}, +{{OOO_STRING_SVTOOLS_RTF_DPCOSMARTA}, RTF_DPCOSMARTA}, +{{OOO_STRING_SVTOOLS_RTF_DPCOTDOUBLE}, RTF_DPCOTDOUBLE}, +{{OOO_STRING_SVTOOLS_RTF_DPCOTRIGHT}, RTF_DPCOTRIGHT}, +{{OOO_STRING_SVTOOLS_RTF_DPCOTSINGLE}, RTF_DPCOTSINGLE}, +{{OOO_STRING_SVTOOLS_RTF_DPCOTTRIPLE}, RTF_DPCOTTRIPLE}, +{{OOO_STRING_SVTOOLS_RTF_DPCOUNT}, RTF_DPCOUNT}, +{{OOO_STRING_SVTOOLS_RTF_DPELLIPSE}, RTF_DPELLIPSE}, +{{OOO_STRING_SVTOOLS_RTF_DPENDGROUP}, RTF_DPENDGROUP}, +{{OOO_STRING_SVTOOLS_RTF_DPFILLBGCB}, RTF_DPFILLBGCB}, +{{OOO_STRING_SVTOOLS_RTF_DPFILLBGCG}, RTF_DPFILLBGCG}, +{{OOO_STRING_SVTOOLS_RTF_DPFILLBGCR}, RTF_DPFILLBGCR}, +{{OOO_STRING_SVTOOLS_RTF_DPFILLBGGRAY}, RTF_DPFILLBGGRAY}, +{{OOO_STRING_SVTOOLS_RTF_DPFILLBGPAL}, RTF_DPFILLBGPAL}, +{{OOO_STRING_SVTOOLS_RTF_DPFILLFGCB}, RTF_DPFILLFGCB}, +{{OOO_STRING_SVTOOLS_RTF_DPFILLFGCG}, RTF_DPFILLFGCG}, +{{OOO_STRING_SVTOOLS_RTF_DPFILLFGCR}, RTF_DPFILLFGCR}, +{{OOO_STRING_SVTOOLS_RTF_DPFILLFGGRAY}, RTF_DPFILLFGGRAY}, +{{OOO_STRING_SVTOOLS_RTF_DPFILLFGPAL}, RTF_DPFILLFGPAL}, +{{OOO_STRING_SVTOOLS_RTF_DPFILLPAT}, RTF_DPFILLPAT}, +{{OOO_STRING_SVTOOLS_RTF_DPGROUP}, RTF_DPGROUP}, +{{OOO_STRING_SVTOOLS_RTF_DPLINE}, RTF_DPLINE}, +{{OOO_STRING_SVTOOLS_RTF_DPLINECOB}, RTF_DPLINECOB}, +{{OOO_STRING_SVTOOLS_RTF_DPLINECOG}, RTF_DPLINECOG}, +{{OOO_STRING_SVTOOLS_RTF_DPLINECOR}, RTF_DPLINECOR}, +{{OOO_STRING_SVTOOLS_RTF_DPLINEDADO}, RTF_DPLINEDADO}, +{{OOO_STRING_SVTOOLS_RTF_DPLINEDADODO}, RTF_DPLINEDADODO}, +{{OOO_STRING_SVTOOLS_RTF_DPLINEDASH}, RTF_DPLINEDASH}, +{{OOO_STRING_SVTOOLS_RTF_DPLINEDOT}, RTF_DPLINEDOT}, +{{OOO_STRING_SVTOOLS_RTF_DPLINEGRAY}, RTF_DPLINEGRAY}, +{{OOO_STRING_SVTOOLS_RTF_DPLINEHOLLOW}, RTF_DPLINEHOLLOW}, +{{OOO_STRING_SVTOOLS_RTF_DPLINEPAL}, RTF_DPLINEPAL}, +{{OOO_STRING_SVTOOLS_RTF_DPLINESOLID}, RTF_DPLINESOLID}, +{{OOO_STRING_SVTOOLS_RTF_DPLINEW}, RTF_DPLINEW}, +{{OOO_STRING_SVTOOLS_RTF_DPPOLYCOUNT}, RTF_DPPOLYCOUNT}, +{{OOO_STRING_SVTOOLS_RTF_DPPOLYGON}, RTF_DPPOLYGON}, +{{OOO_STRING_SVTOOLS_RTF_DPPOLYLINE}, RTF_DPPOLYLINE}, +{{OOO_STRING_SVTOOLS_RTF_DPPTX}, RTF_DPPTX}, +{{OOO_STRING_SVTOOLS_RTF_DPPTY}, RTF_DPPTY}, +{{OOO_STRING_SVTOOLS_RTF_DPRECT}, RTF_DPRECT}, +{{OOO_STRING_SVTOOLS_RTF_DPROUNDR}, RTF_DPROUNDR}, +{{OOO_STRING_SVTOOLS_RTF_DPSHADOW}, RTF_DPSHADOW}, +{{OOO_STRING_SVTOOLS_RTF_DPSHADX}, RTF_DPSHADX}, +{{OOO_STRING_SVTOOLS_RTF_DPSHADY}, RTF_DPSHADY}, +{{OOO_STRING_SVTOOLS_RTF_DPTXBX}, RTF_DPTXBX}, +{{OOO_STRING_SVTOOLS_RTF_DPTXBXMAR}, RTF_DPTXBXMAR}, +{{OOO_STRING_SVTOOLS_RTF_DPTXBXTEXT}, RTF_DPTXBXTEXT}, +{{OOO_STRING_SVTOOLS_RTF_DPX}, RTF_DPX}, +{{OOO_STRING_SVTOOLS_RTF_DPXSIZE}, RTF_DPXSIZE}, +{{OOO_STRING_SVTOOLS_RTF_DPY}, RTF_DPY}, +{{OOO_STRING_SVTOOLS_RTF_DPYSIZE}, RTF_DPYSIZE}, +{{OOO_STRING_SVTOOLS_RTF_DS}, RTF_DS}, +{{OOO_STRING_SVTOOLS_RTF_EMSPACE}, RTF_EMSPACE}, +{{OOO_STRING_SVTOOLS_RTF_ENSPACE}, RTF_ENSPACE}, +{{OOO_STRING_SVTOOLS_RTF_FBIDI}, RTF_FBIDI}, +{{OOO_STRING_SVTOOLS_RTF_FET}, RTF_FET}, +{{OOO_STRING_SVTOOLS_RTF_FID}, RTF_FID}, +{{OOO_STRING_SVTOOLS_RTF_FILE}, RTF_FILE}, +{{OOO_STRING_SVTOOLS_RTF_FILETBL}, RTF_FILETBL}, +{{OOO_STRING_SVTOOLS_RTF_FLDALT}, RTF_FLDALT}, +{{OOO_STRING_SVTOOLS_RTF_FNETWORK}, RTF_FNETWORK}, +{{OOO_STRING_SVTOOLS_RTF_FONTEMB}, RTF_FONTEMB}, +{{OOO_STRING_SVTOOLS_RTF_FONTFILE}, RTF_FONTFILE}, +{{OOO_STRING_SVTOOLS_RTF_FORMDISP}, RTF_FORMDISP}, +{{OOO_STRING_SVTOOLS_RTF_FORMPROT}, RTF_FORMPROT}, +{{OOO_STRING_SVTOOLS_RTF_FORMSHADE}, RTF_FORMSHADE}, +{{OOO_STRING_SVTOOLS_RTF_FOSNUM}, RTF_FOSNUM}, +{{OOO_STRING_SVTOOLS_RTF_FRELATIVE}, RTF_FRELATIVE}, +{{OOO_STRING_SVTOOLS_RTF_FTNALT}, RTF_FTNALT}, +{{OOO_STRING_SVTOOLS_RTF_FTNIL}, RTF_FTNIL}, +{{OOO_STRING_SVTOOLS_RTF_FTNNALC}, RTF_FTNNALC}, +{{OOO_STRING_SVTOOLS_RTF_FTNNAR}, RTF_FTNNAR}, +{{OOO_STRING_SVTOOLS_RTF_FTNNAUC}, RTF_FTNNAUC}, +{{OOO_STRING_SVTOOLS_RTF_FTNNCHI}, RTF_FTNNCHI}, +{{OOO_STRING_SVTOOLS_RTF_FTNNRLC}, RTF_FTNNRLC}, +{{OOO_STRING_SVTOOLS_RTF_FTNNRUC}, RTF_FTNNRUC}, +{{OOO_STRING_SVTOOLS_RTF_FTNRSTCONT}, RTF_FTNRSTCONT}, +{{OOO_STRING_SVTOOLS_RTF_FTNRSTPG}, RTF_FTNRSTPG}, +{{OOO_STRING_SVTOOLS_RTF_FTTRUETYPE}, RTF_FTTRUETYPE}, +{{OOO_STRING_SVTOOLS_RTF_FVALIDDOS}, RTF_FVALIDDOS}, +{{OOO_STRING_SVTOOLS_RTF_FVALIDHPFS}, RTF_FVALIDHPFS}, +{{OOO_STRING_SVTOOLS_RTF_FVALIDMAC}, RTF_FVALIDMAC}, +{{OOO_STRING_SVTOOLS_RTF_FVALIDNTFS}, RTF_FVALIDNTFS}, +{{OOO_STRING_SVTOOLS_RTF_HYPHAUTO}, RTF_HYPHAUTO}, +{{OOO_STRING_SVTOOLS_RTF_HYPHCAPS}, RTF_HYPHCAPS}, +{{OOO_STRING_SVTOOLS_RTF_HYPHCONSEC}, RTF_HYPHCONSEC}, +{{OOO_STRING_SVTOOLS_RTF_HYPHPAR}, RTF_HYPHPAR}, +{{OOO_STRING_SVTOOLS_RTF_LINKSELF}, RTF_LINKSELF}, +{{OOO_STRING_SVTOOLS_RTF_LINKSTYLES}, RTF_LINKSTYLES}, +{{OOO_STRING_SVTOOLS_RTF_LTRCH}, RTF_LTRCH}, +{{OOO_STRING_SVTOOLS_RTF_LTRDOC}, RTF_LTRDOC}, +{{OOO_STRING_SVTOOLS_RTF_LTRMARK}, RTF_LTRMARK}, +{{OOO_STRING_SVTOOLS_RTF_LTRPAR}, RTF_LTRPAR}, +{{OOO_STRING_SVTOOLS_RTF_LTRROW}, RTF_LTRROW}, +{{OOO_STRING_SVTOOLS_RTF_LTRSECT}, RTF_LTRSECT}, +{{OOO_STRING_SVTOOLS_RTF_NOCOLBAL}, RTF_NOCOLBAL}, +{{OOO_STRING_SVTOOLS_RTF_NOEXTRASPRL}, RTF_NOEXTRASPRL}, +{{OOO_STRING_SVTOOLS_RTF_NOTABIND}, RTF_NOTABIND}, +{{OOO_STRING_SVTOOLS_RTF_NOWIDCTLPAR}, RTF_NOWIDCTLPAR}, +{{OOO_STRING_SVTOOLS_RTF_OBJALIAS}, RTF_OBJALIAS}, +{{OOO_STRING_SVTOOLS_RTF_OBJALIGN}, RTF_OBJALIGN}, +{{OOO_STRING_SVTOOLS_RTF_OBJAUTLINK}, RTF_OBJAUTLINK}, +{{OOO_STRING_SVTOOLS_RTF_OBJCLASS}, RTF_OBJCLASS}, +{{OOO_STRING_SVTOOLS_RTF_OBJCROPB}, RTF_OBJCROPB}, +{{OOO_STRING_SVTOOLS_RTF_OBJCROPL}, RTF_OBJCROPL}, +{{OOO_STRING_SVTOOLS_RTF_OBJCROPR}, RTF_OBJCROPR}, +{{OOO_STRING_SVTOOLS_RTF_OBJCROPT}, RTF_OBJCROPT}, +{{OOO_STRING_SVTOOLS_RTF_OBJDATA}, RTF_OBJDATA}, +{{OOO_STRING_SVTOOLS_RTF_OBJECT}, RTF_OBJECT}, +{{OOO_STRING_SVTOOLS_RTF_OBJEMB}, RTF_OBJEMB}, +{{OOO_STRING_SVTOOLS_RTF_OBJH}, RTF_OBJH}, +{{OOO_STRING_SVTOOLS_RTF_OBJICEMB}, RTF_OBJICEMB}, +{{OOO_STRING_SVTOOLS_RTF_OBJLINK}, RTF_OBJLINK}, +{{OOO_STRING_SVTOOLS_RTF_OBJLOCK}, RTF_OBJLOCK}, +{{OOO_STRING_SVTOOLS_RTF_OBJNAME}, RTF_OBJNAME}, +{{OOO_STRING_SVTOOLS_RTF_OBJPUB}, RTF_OBJPUB}, +{{OOO_STRING_SVTOOLS_RTF_OBJSCALEX}, RTF_OBJSCALEX}, +{{OOO_STRING_SVTOOLS_RTF_OBJSCALEY}, RTF_OBJSCALEY}, +{{OOO_STRING_SVTOOLS_RTF_OBJSECT}, RTF_OBJSECT}, +{{OOO_STRING_SVTOOLS_RTF_OBJSETSIZE}, RTF_OBJSETSIZE}, +{{OOO_STRING_SVTOOLS_RTF_OBJSUB}, RTF_OBJSUB}, +{{OOO_STRING_SVTOOLS_RTF_OBJTIME}, RTF_OBJTIME}, +{{OOO_STRING_SVTOOLS_RTF_OBJTRANSY}, RTF_OBJTRANSY}, +{{OOO_STRING_SVTOOLS_RTF_OBJUPDATE}, RTF_OBJUPDATE}, +{{OOO_STRING_SVTOOLS_RTF_OBJW}, RTF_OBJW}, +{{OOO_STRING_SVTOOLS_RTF_OTBLRUL}, RTF_OTBLRUL}, +{{OOO_STRING_SVTOOLS_RTF_PGNHN}, RTF_PGNHN}, +{{OOO_STRING_SVTOOLS_RTF_PGNHNSC}, RTF_PGNHNSC}, +{{OOO_STRING_SVTOOLS_RTF_PGNHNSH}, RTF_PGNHNSH}, +{{OOO_STRING_SVTOOLS_RTF_PGNHNSM}, RTF_PGNHNSM}, +{{OOO_STRING_SVTOOLS_RTF_PGNHNSN}, RTF_PGNHNSN}, +{{OOO_STRING_SVTOOLS_RTF_PGNHNSP}, RTF_PGNHNSP}, +{{OOO_STRING_SVTOOLS_RTF_PICBMP}, RTF_PICBMP}, +{{OOO_STRING_SVTOOLS_RTF_PICBPP}, RTF_PICBPP}, +{{OOO_STRING_SVTOOLS_RTF_PN}, RTF_PN}, +{{OOO_STRING_SVTOOLS_RTF_PNACROSS}, RTF_PNACROSS}, +{{OOO_STRING_SVTOOLS_RTF_PNB}, RTF_PNB}, +{{OOO_STRING_SVTOOLS_RTF_PNCAPS}, RTF_PNCAPS}, +{{OOO_STRING_SVTOOLS_RTF_PNCARD}, RTF_PNCARD}, +{{OOO_STRING_SVTOOLS_RTF_PNCF}, RTF_PNCF}, +{{OOO_STRING_SVTOOLS_RTF_PNDEC}, RTF_PNDEC}, +{{OOO_STRING_SVTOOLS_RTF_PNF}, RTF_PNF}, +{{OOO_STRING_SVTOOLS_RTF_PNFS}, RTF_PNFS}, +{{OOO_STRING_SVTOOLS_RTF_PNHANG}, RTF_PNHANG}, +{{OOO_STRING_SVTOOLS_RTF_PNI}, RTF_PNI}, +{{OOO_STRING_SVTOOLS_RTF_PNINDENT}, RTF_PNINDENT}, +{{OOO_STRING_SVTOOLS_RTF_PNLCLTR}, RTF_PNLCLTR}, +{{OOO_STRING_SVTOOLS_RTF_PNLCRM}, RTF_PNLCRM}, +{{OOO_STRING_SVTOOLS_RTF_PNLVL}, RTF_PNLVL}, +{{OOO_STRING_SVTOOLS_RTF_PNLVLBLT}, RTF_PNLVLBLT}, +{{OOO_STRING_SVTOOLS_RTF_PNLVLBODY}, RTF_PNLVLBODY}, +{{OOO_STRING_SVTOOLS_RTF_PNLVLCONT}, RTF_PNLVLCONT}, +{{OOO_STRING_SVTOOLS_RTF_PNNUMONCE}, RTF_PNNUMONCE}, +{{OOO_STRING_SVTOOLS_RTF_PNORD}, RTF_PNORD}, +{{OOO_STRING_SVTOOLS_RTF_PNORDT}, RTF_PNORDT}, +{{OOO_STRING_SVTOOLS_RTF_PNPREV}, RTF_PNPREV}, +{{OOO_STRING_SVTOOLS_RTF_PNQC}, RTF_PNQC}, +{{OOO_STRING_SVTOOLS_RTF_PNQL}, RTF_PNQL}, +{{OOO_STRING_SVTOOLS_RTF_PNQR}, RTF_PNQR}, +{{OOO_STRING_SVTOOLS_RTF_PNRESTART}, RTF_PNRESTART}, +{{OOO_STRING_SVTOOLS_RTF_PNSCAPS}, RTF_PNSCAPS}, +{{OOO_STRING_SVTOOLS_RTF_PNSECLVL}, RTF_PNSECLVL}, +{{OOO_STRING_SVTOOLS_RTF_PNSP}, RTF_PNSP}, +{{OOO_STRING_SVTOOLS_RTF_PNSTART}, RTF_PNSTART}, +{{OOO_STRING_SVTOOLS_RTF_PNSTRIKE}, RTF_PNSTRIKE}, +{{OOO_STRING_SVTOOLS_RTF_PNTEXT}, RTF_PNTEXT}, +{{OOO_STRING_SVTOOLS_RTF_PNTXTA}, RTF_PNTXTA}, +{{OOO_STRING_SVTOOLS_RTF_PNTXTB}, RTF_PNTXTB}, +{{OOO_STRING_SVTOOLS_RTF_PNUCLTR}, RTF_PNUCLTR}, +{{OOO_STRING_SVTOOLS_RTF_PNUCRM}, RTF_PNUCRM}, +{{OOO_STRING_SVTOOLS_RTF_PNUL}, RTF_PNUL}, +{{OOO_STRING_SVTOOLS_RTF_PNULD}, RTF_PNULD}, +{{OOO_STRING_SVTOOLS_RTF_PNULDB}, RTF_PNULDB}, +{{OOO_STRING_SVTOOLS_RTF_PNULNONE}, RTF_PNULNONE}, +{{OOO_STRING_SVTOOLS_RTF_PNULW}, RTF_PNULW}, +{{OOO_STRING_SVTOOLS_RTF_PRCOLBL}, RTF_PRCOLBL}, +{{OOO_STRING_SVTOOLS_RTF_PRINTDATA}, RTF_PRINTDATA}, +{{OOO_STRING_SVTOOLS_RTF_PSZ}, RTF_PSZ}, +{{OOO_STRING_SVTOOLS_RTF_PUBAUTO}, RTF_PUBAUTO}, +{{OOO_STRING_SVTOOLS_RTF_RESULT}, RTF_RESULT}, +{{OOO_STRING_SVTOOLS_RTF_REVAUTH}, RTF_REVAUTH}, +{{OOO_STRING_SVTOOLS_RTF_REVDTTM}, RTF_REVDTTM}, +{{OOO_STRING_SVTOOLS_RTF_REVPROT}, RTF_REVPROT}, +{{OOO_STRING_SVTOOLS_RTF_REVTBL}, RTF_REVTBL}, +{{OOO_STRING_SVTOOLS_RTF_RSLTBMP}, RTF_RSLTBMP}, +{{OOO_STRING_SVTOOLS_RTF_RSLTMERGE}, RTF_RSLTMERGE}, +{{OOO_STRING_SVTOOLS_RTF_RSLTPICT}, RTF_RSLTPICT}, +{{OOO_STRING_SVTOOLS_RTF_RSLTRTF}, RTF_RSLTRTF}, +{{OOO_STRING_SVTOOLS_RTF_RSLTTXT}, RTF_RSLTTXT}, +{{OOO_STRING_SVTOOLS_RTF_RTLCH}, RTF_RTLCH}, +{{OOO_STRING_SVTOOLS_RTF_RTLDOC}, RTF_RTLDOC}, +{{OOO_STRING_SVTOOLS_RTF_RTLMARK}, RTF_RTLMARK}, +{{OOO_STRING_SVTOOLS_RTF_RTLPAR}, RTF_RTLPAR}, +{{OOO_STRING_SVTOOLS_RTF_RTLROW}, RTF_RTLROW}, +{{OOO_STRING_SVTOOLS_RTF_RTLSECT}, RTF_RTLSECT}, +{{OOO_STRING_SVTOOLS_RTF_SEC}, RTF_SEC}, +{{OOO_STRING_SVTOOLS_RTF_SECTNUM}, RTF_SECTNUM}, +{{OOO_STRING_SVTOOLS_RTF_SECTUNLOCKED}, RTF_SECTUNLOCKED}, +{{OOO_STRING_SVTOOLS_RTF_SLMULT}, RTF_SLMULT}, +{{OOO_STRING_SVTOOLS_RTF_SOFTCOL}, RTF_SOFTCOL}, +{{OOO_STRING_SVTOOLS_RTF_SOFTLHEIGHT}, RTF_SOFTLHEIGHT}, +{{OOO_STRING_SVTOOLS_RTF_SOFTLINE}, RTF_SOFTLINE}, +{{OOO_STRING_SVTOOLS_RTF_SOFTPAGE}, RTF_SOFTPAGE}, +{{OOO_STRING_SVTOOLS_RTF_SPRSSPBF}, RTF_SPRSSPBF}, +{{OOO_STRING_SVTOOLS_RTF_SPRSTSP}, RTF_SPRSTSP}, +{{OOO_STRING_SVTOOLS_RTF_SUBDOCUMENT}, RTF_SUBDOCUMENT}, +{{OOO_STRING_SVTOOLS_RTF_SWPBDR}, RTF_SWPBDR}, +{{OOO_STRING_SVTOOLS_RTF_TCN}, RTF_TCN}, +{{OOO_STRING_SVTOOLS_RTF_TRANSMF}, RTF_TRANSMF}, +{{OOO_STRING_SVTOOLS_RTF_TRBRDRB}, RTF_TRBRDRB}, +{{OOO_STRING_SVTOOLS_RTF_TRBRDRH}, RTF_TRBRDRH}, +{{OOO_STRING_SVTOOLS_RTF_TRBRDRL}, RTF_TRBRDRL}, +{{OOO_STRING_SVTOOLS_RTF_TRBRDRR}, RTF_TRBRDRR}, +{{OOO_STRING_SVTOOLS_RTF_TRBRDRT}, RTF_TRBRDRT}, +{{OOO_STRING_SVTOOLS_RTF_TRBRDRV}, RTF_TRBRDRV}, +{{OOO_STRING_SVTOOLS_RTF_TRHDR}, RTF_TRHDR}, +{{OOO_STRING_SVTOOLS_RTF_TRKEEP}, RTF_TRKEEP}, +{{OOO_STRING_SVTOOLS_RTF_TRPADDB}, RTF_TRPADDB}, +{{OOO_STRING_SVTOOLS_RTF_TRPADDL}, RTF_TRPADDL}, +{{OOO_STRING_SVTOOLS_RTF_TRPADDR}, RTF_TRPADDR}, +{{OOO_STRING_SVTOOLS_RTF_TRPADDT}, RTF_TRPADDT}, +{{OOO_STRING_SVTOOLS_RTF_TRPADDFB}, RTF_TRPADDFB}, +{{OOO_STRING_SVTOOLS_RTF_TRPADDFL}, RTF_TRPADDFL}, +{{OOO_STRING_SVTOOLS_RTF_TRPADDFR}, RTF_TRPADDFR}, +{{OOO_STRING_SVTOOLS_RTF_TRPADDFT}, RTF_TRPADDFT}, -{{sRTF_WRAPTRSP}, RTF_WRAPTRSP}, -{{sRTF_XEF}, RTF_XEF}, -{{sRTF_ZWJ}, RTF_ZWJ}, -{{sRTF_ZWNJ}, RTF_ZWNJ}, +{{OOO_STRING_SVTOOLS_RTF_WRAPTRSP}, RTF_WRAPTRSP}, +{{OOO_STRING_SVTOOLS_RTF_XEF}, RTF_XEF}, +{{OOO_STRING_SVTOOLS_RTF_ZWJ}, RTF_ZWJ}, +{{OOO_STRING_SVTOOLS_RTF_ZWNJ}, RTF_ZWNJ}, -{{sRTF_ABSLOCK}, RTF_ABSLOCK}, -{{sRTF_ADJUSTRIGHT}, RTF_ADJUSTRIGHT}, -{{sRTF_AFTNNCHOSUNG}, RTF_AFTNNCHOSUNG}, -{{sRTF_AFTNNCNUM}, RTF_AFTNNCNUM}, -{{sRTF_AFTNNDBAR}, RTF_AFTNNDBAR}, -{{sRTF_AFTNNDBNUM}, RTF_AFTNNDBNUM}, -{{sRTF_AFTNNDBNUMD}, RTF_AFTNNDBNUMD}, -{{sRTF_AFTNNDBNUMK}, RTF_AFTNNDBNUMK}, -{{sRTF_AFTNNDBNUMT}, RTF_AFTNNDBNUMT}, -{{sRTF_AFTNNGANADA}, RTF_AFTNNGANADA}, -{{sRTF_AFTNNGBNUM}, RTF_AFTNNGBNUM}, -{{sRTF_AFTNNGBNUMD}, RTF_AFTNNGBNUMD}, -{{sRTF_AFTNNGBNUMK}, RTF_AFTNNGBNUMK}, -{{sRTF_AFTNNGBNUML}, RTF_AFTNNGBNUML}, -{{sRTF_AFTNNZODIAC}, RTF_AFTNNZODIAC}, -{{sRTF_AFTNNZODIACD}, RTF_AFTNNZODIACD}, -{{sRTF_AFTNNZODIACL}, RTF_AFTNNZODIACL}, -{{sRTF_ANIMTEXT}, RTF_ANIMTEXT}, -{{sRTF_ANSICPG}, RTF_ANSICPG}, -{{sRTF_BACKGROUND}, RTF_BACKGROUND}, -{{sRTF_BDBFHDR}, RTF_BDBFHDR}, -{{sRTF_BLIPTAG}, RTF_BLIPTAG}, -{{sRTF_BLIPUID}, RTF_BLIPUID}, -{{sRTF_BLIPUPI}, RTF_BLIPUPI}, -{{sRTF_BRDRART}, RTF_BRDRART}, -{{sRTF_BRDRDASHD}, RTF_BRDRDASHD}, -{{sRTF_BRDRDASHDD}, RTF_BRDRDASHDD}, -{{sRTF_BRDRDASHDOTSTR},RTF_BRDRDASHDOTSTR}, -{{sRTF_BRDRDASHSM}, RTF_BRDRDASHSM}, -{{sRTF_BRDREMBOSS}, RTF_BRDREMBOSS}, -{{sRTF_BRDRENGRAVE}, RTF_BRDRENGRAVE}, -{{sRTF_BRDRFRAME}, RTF_BRDRFRAME}, -{{sRTF_BRDRTHTNLG}, RTF_BRDRTHTNLG}, -{{sRTF_BRDRTHTNMG}, RTF_BRDRTHTNMG}, -{{sRTF_BRDRTHTNSG}, RTF_BRDRTHTNSG}, -{{sRTF_BRDRTNTHLG}, RTF_BRDRTNTHLG}, -{{sRTF_BRDRTNTHMG}, RTF_BRDRTNTHMG}, -{{sRTF_BRDRTNTHSG}, RTF_BRDRTNTHSG}, -{{sRTF_BRDRTNTHTNLG}, RTF_BRDRTNTHTNLG}, -{{sRTF_BRDRTNTHTNMG}, RTF_BRDRTNTHTNMG}, -{{sRTF_BRDRTNTHTNSG}, RTF_BRDRTNTHTNSG}, -{{sRTF_BRDRTRIPLE}, RTF_BRDRTRIPLE}, -{{sRTF_BRDRWAVY}, RTF_BRDRWAVY}, -{{sRTF_BRDRWAVYDB}, RTF_BRDRWAVYDB}, -{{sRTF_CATEGORY}, RTF_CATEGORY}, -{{sRTF_CGRID}, RTF_CGRID}, -{{sRTF_CHARSCALEX}, RTF_CHARSCALEX}, -{{sRTF_CHBGBDIAG}, RTF_CHBGBDIAG}, -{{sRTF_CHBGCROSS}, RTF_CHBGCROSS}, -{{sRTF_CHBGDCROSS}, RTF_CHBGDCROSS}, -{{sRTF_CHBGDKBDIAG}, RTF_CHBGDKBDIAG}, -{{sRTF_CHBGDKCROSS}, RTF_CHBGDKCROSS}, -{{sRTF_CHBGDKDCROSS}, RTF_CHBGDKDCROSS}, -{{sRTF_CHBGDKFDIAG}, RTF_CHBGDKFDIAG}, -{{sRTF_CHBGDKHORIZ}, RTF_CHBGDKHORIZ}, -{{sRTF_CHBGDKVERT}, RTF_CHBGDKVERT}, -{{sRTF_CHBGFDIAG}, RTF_CHBGFDIAG}, -{{sRTF_CHBGHORIZ}, RTF_CHBGHORIZ}, -{{sRTF_CHBGVERT}, RTF_CHBGVERT}, -{{sRTF_CHBRDR}, RTF_CHBRDR}, -{{sRTF_CHCBPAT}, RTF_CHCBPAT}, -{{sRTF_CHCFPAT}, RTF_CHCFPAT}, -{{sRTF_CHSHDNG}, RTF_CHSHDNG}, -{{sRTF_CLTXLRTB}, RTF_CLTXLRTB}, -{{sRTF_CLTXTBRL}, RTF_CLTXTBRL}, -{{sRTF_CLVERTALB}, RTF_CLVERTALB}, -{{sRTF_CLVERTALC}, RTF_CLVERTALC}, -{{sRTF_CLVERTALT}, RTF_CLVERTALT}, -{{sRTF_CLVMGF}, RTF_CLVMGF}, -{{sRTF_CLVMRG}, RTF_CLVMRG}, -{{sRTF_CLTXTBRLV}, RTF_CLTXTBRLV}, -{{sRTF_CLTXBTLR}, RTF_CLTXBTLR}, -{{sRTF_CLTXLRTBV}, RTF_CLTXLRTBV}, -{{sRTF_COMPANY}, RTF_COMPANY}, -{{sRTF_CRAUTH}, RTF_CRAUTH}, -{{sRTF_CRDATE}, RTF_CRDATE}, -{{sRTF_DATE}, RTF_DATE}, -{{sRTF_DEFLANGFE}, RTF_DEFLANGFE}, -{{sRTF_DFRAUTH}, RTF_DFRAUTH}, -{{sRTF_DFRDATE}, RTF_DFRDATE}, -{{sRTF_DFRSTART}, RTF_DFRSTART}, -{{sRTF_DFRSTOP}, RTF_DFRSTOP}, -{{sRTF_DFRXST}, RTF_DFRXST}, -{{sRTF_DGMARGIN}, RTF_DGMARGIN}, -{{sRTF_DNTBLNSBDB}, RTF_DNTBLNSBDB}, -{{sRTF_DOCTYPE}, RTF_DOCTYPE}, -{{sRTF_DOCVAR}, RTF_DOCVAR}, -{{sRTF_DPCODESCENT}, RTF_DPCODESCENT}, -{{sRTF_EMBO}, RTF_EMBO}, -{{sRTF_EMFBLIP}, RTF_EMFBLIP}, -{{sRTF_EXPSHRTN}, RTF_EXPSHRTN}, -{{sRTF_FAAUTO}, RTF_FAAUTO}, -{{sRTF_FBIAS}, RTF_FBIAS}, -{{sRTF_FFDEFRES}, RTF_FFDEFRES}, -{{sRTF_FFDEFTEXT}, RTF_FFDEFTEXT}, -{{sRTF_FFENTRYMCR}, RTF_FFENTRYMCR}, -{{sRTF_FFEXITMCR}, RTF_FFEXITMCR}, -{{sRTF_FFFORMAT}, RTF_FFFORMAT}, -{{sRTF_FFHASLISTBOX}, RTF_FFHASLISTBOX}, -{{sRTF_FFHELPTEXT}, RTF_FFHELPTEXT}, -{{sRTF_FFHPS}, RTF_FFHPS}, -{{sRTF_FFL}, RTF_FFL}, -{{sRTF_FFMAXLEN}, RTF_FFMAXLEN}, -{{sRTF_FFNAME}, RTF_FFNAME}, -{{sRTF_FFOWNHELP}, RTF_FFOWNHELP}, -{{sRTF_FFOWNSTAT}, RTF_FFOWNSTAT}, -{{sRTF_FFPROT}, RTF_FFPROT}, -{{sRTF_FFRECALC}, RTF_FFRECALC}, -{{sRTF_FFRES}, RTF_FFRES}, -{{sRTF_FFSIZE}, RTF_FFSIZE}, -{{sRTF_FFSTATTEXT}, RTF_FFSTATTEXT}, -{{sRTF_FFTYPE}, RTF_FFTYPE}, -{{sRTF_FFTYPETXT}, RTF_FFTYPETXT}, -{{sRTF_FLDTYPE}, RTF_FLDTYPE}, -{{sRTF_FNAME}, RTF_FNAME}, -{{sRTF_FORMFIELD}, RTF_FORMFIELD}, -{{sRTF_FROMTEXT}, RTF_FROMTEXT}, -{{sRTF_FTNNCHOSUNG}, RTF_FTNNCHOSUNG}, -{{sRTF_FTNNCNUM}, RTF_FTNNCNUM}, -{{sRTF_FTNNDBAR}, RTF_FTNNDBAR}, -{{sRTF_FTNNDBNUM}, RTF_FTNNDBNUM}, -{{sRTF_FTNNDBNUMD}, RTF_FTNNDBNUMD}, -{{sRTF_FTNNDBNUMK}, RTF_FTNNDBNUMK}, -{{sRTF_FTNNDBNUMT}, RTF_FTNNDBNUMT}, -{{sRTF_FTNNGANADA}, RTF_FTNNGANADA}, -{{sRTF_FTNNGBNUM}, RTF_FTNNGBNUM}, -{{sRTF_FTNNGBNUMD}, RTF_FTNNGBNUMD}, -{{sRTF_FTNNGBNUMK}, RTF_FTNNGBNUMK}, -{{sRTF_FTNNGBNUML}, RTF_FTNNGBNUML}, -{{sRTF_FTNNZODIAC}, RTF_FTNNZODIAC}, -{{sRTF_FTNNZODIACD}, RTF_FTNNZODIACD}, -{{sRTF_FTNNZODIACL}, RTF_FTNNZODIACL}, -{{sRTF_G}, RTF_G}, -{{sRTF_GCW}, RTF_GCW}, -{{sRTF_GRIDTBL}, RTF_GRIDTBL}, -{{sRTF_HIGHLIGHT}, RTF_HIGHLIGHT}, -{{sRTF_HLFR}, RTF_HLFR}, -{{sRTF_HLINKBASE}, RTF_HLINKBASE}, -{{sRTF_HLLOC}, RTF_HLLOC}, -{{sRTF_HLSRC}, RTF_HLSRC}, -{{sRTF_ILVL}, RTF_ILVL}, -{{sRTF_IMPR}, RTF_IMPR}, -{{sRTF_JPEGBLIP}, RTF_JPEGBLIP}, -{{sRTF_LEVELFOLLOW}, RTF_LEVELFOLLOW}, -{{sRTF_LEVELINDENT}, RTF_LEVELINDENT}, -{{sRTF_LEVELJC}, RTF_LEVELJC}, -{{sRTF_LEVELLEGAL}, RTF_LEVELLEGAL}, -{{sRTF_LEVELNFC}, RTF_LEVELNFC}, -{{sRTF_LEVELNORESTART},RTF_LEVELNORESTART}, -{{sRTF_LEVELNUMBERS}, RTF_LEVELNUMBERS}, -{{sRTF_LEVELOLD}, RTF_LEVELOLD}, -{{sRTF_LEVELPREV}, RTF_LEVELPREV}, -{{sRTF_LEVELPREVSPACE},RTF_LEVELPREVSPACE}, -{{sRTF_LEVELSPACE}, RTF_LEVELSPACE}, -{{sRTF_LEVELSTARTAT}, RTF_LEVELSTARTAT}, -{{sRTF_LEVELTEXT}, RTF_LEVELTEXT}, -{{sRTF_LINKVAL}, RTF_LINKVAL}, -{{sRTF_LIST}, RTF_LIST}, -{{sRTF_LISTID}, RTF_LISTID}, -{{sRTF_LISTLEVEL}, RTF_LISTLEVEL}, -{{sRTF_LISTNAME}, RTF_LISTNAME}, -{{sRTF_LISTOVERRIDE}, RTF_LISTOVERRIDE}, -{{sRTF_LISTOVERRIDECOUNT}, RTF_LISTOVERRIDECOUNT}, -{{sRTF_LISTOVERRIDEFORMAT}, RTF_LISTOVERRIDEFORMAT}, -{{sRTF_LISTOVERRIDESTART}, RTF_LISTOVERRIDESTART}, -{{sRTF_LISTOVERRIDETABLE}, RTF_LISTOVERRIDETABLE}, -{{sRTF_LISTRESTARTHDN},RTF_LISTRESTARTHDN}, -{{sRTF_LISTSIMPLE}, RTF_LISTSIMPLE}, -{{sRTF_LISTTABLE}, RTF_LISTTABLE}, -{{sRTF_LISTTEMPLATEID},RTF_LISTTEMPLATEID}, -{{sRTF_LISTTEXT}, RTF_LISTTEXT}, -{{sRTF_LS}, RTF_LS}, -{{sRTF_LYTEXCTTP}, RTF_LYTEXCTTP}, -{{sRTF_LYTPRTMET}, RTF_LYTPRTMET}, -{{sRTF_MANAGER}, RTF_MANAGER}, -{{sRTF_MSMCAP}, RTF_MSMCAP}, -{{sRTF_NOFCHARSWS}, RTF_NOFCHARSWS}, -{{sRTF_NOLEAD}, RTF_NOLEAD}, -{{sRTF_NONSHPPICT}, RTF_NONSHPPICT}, -{{sRTF_NOSECTEXPAND}, RTF_NOSECTEXPAND}, -{{sRTF_NOSNAPLINEGRID},RTF_NOSNAPLINEGRID}, -{{sRTF_NOSPACEFORUL}, RTF_NOSPACEFORUL}, -{{sRTF_NOULTRLSPC}, RTF_NOULTRLSPC}, -{{sRTF_NOXLATTOYEN}, RTF_NOXLATTOYEN}, -{{sRTF_OBJATTPH}, RTF_OBJATTPH}, -{{sRTF_OBJHTML}, RTF_OBJHTML}, -{{sRTF_OBJOCX}, RTF_OBJOCX}, -{{sRTF_OLDLINEWRAP}, RTF_OLDLINEWRAP}, -{{sRTF_OUTLINELEVEL}, RTF_OUTLINELEVEL}, -{{sRTF_OVERLAY}, RTF_OVERLAY}, -{{sRTF_PANOSE}, RTF_PANOSE}, -{{sRTF_PGBRDRB}, RTF_PGBRDRB}, -{{sRTF_PGBRDRFOOT}, RTF_PGBRDRFOOT}, -{{sRTF_PGBRDRHEAD}, RTF_PGBRDRHEAD}, -{{sRTF_PGBRDRL}, RTF_PGBRDRL}, -{{sRTF_PGBRDROPT}, RTF_PGBRDROPT}, -{{sRTF_PGBRDRR}, RTF_PGBRDRR}, -{{sRTF_PGBRDRSNAP}, RTF_PGBRDRSNAP}, -{{sRTF_PGBRDRT}, RTF_PGBRDRT}, -{{sRTF_PGNCHOSUNG}, RTF_PGNCHOSUNG}, -{{sRTF_PGNCNUM}, RTF_PGNCNUM}, -{{sRTF_PGNDBNUMK}, RTF_PGNDBNUMK}, -{{sRTF_PGNDBNUMT}, RTF_PGNDBNUMT}, -{{sRTF_PGNGANADA}, RTF_PGNGANADA}, -{{sRTF_PGNGBNUM}, RTF_PGNGBNUM}, -{{sRTF_PGNGBNUMD}, RTF_PGNGBNUMD}, -{{sRTF_PGNGBNUMK}, RTF_PGNGBNUMK}, -{{sRTF_PGNGBNUML}, RTF_PGNGBNUML}, -{{sRTF_PGNZODIAC}, RTF_PGNZODIAC}, -{{sRTF_PGNZODIACD}, RTF_PGNZODIACD}, -{{sRTF_PGNZODIACL}, RTF_PGNZODIACL}, -{{sRTF_PICPROP}, RTF_PICPROP}, -{{sRTF_PNAIUEO}, RTF_PNAIUEO}, -{{sRTF_PNAIUEOD}, RTF_PNAIUEOD}, -{{sRTF_PNCHOSUNG}, RTF_PNCHOSUNG}, -{{sRTF_PNDBNUMD}, RTF_PNDBNUMD}, -{{sRTF_PNDBNUMK}, RTF_PNDBNUMK}, -{{sRTF_PNDBNUML}, RTF_PNDBNUML}, -{{sRTF_PNDBNUMT}, RTF_PNDBNUMT}, -{{sRTF_PNGANADA}, RTF_PNGANADA}, -{{sRTF_PNGBLIP}, RTF_PNGBLIP}, -{{sRTF_PNGBNUM}, RTF_PNGBNUM}, -{{sRTF_PNGBNUMD}, RTF_PNGBNUMD}, -{{sRTF_PNGBNUMK}, RTF_PNGBNUMK}, -{{sRTF_PNGBNUML}, RTF_PNGBNUML}, -{{sRTF_PNRAUTH}, RTF_PNRAUTH}, -{{sRTF_PNRDATE}, RTF_PNRDATE}, -{{sRTF_PNRNFC}, RTF_PNRNFC}, -{{sRTF_PNRNOT}, RTF_PNRNOT}, -{{sRTF_PNRPNBR}, RTF_PNRPNBR}, -{{sRTF_PNRRGB}, RTF_PNRRGB}, -{{sRTF_PNRSTART}, RTF_PNRSTART}, -{{sRTF_PNRSTOP}, RTF_PNRSTOP}, -{{sRTF_PNRXST}, RTF_PNRXST}, -{{sRTF_PNZODIAC}, RTF_PNZODIAC}, -{{sRTF_PNZODIACD}, RTF_PNZODIACD}, -{{sRTF_PNZODIACL}, RTF_PNZODIACL}, -{{sRTF_LFOLEVEL}, RTF_LFOLEVEL}, -{{sRTF_POSYIN}, RTF_POSYIN}, -{{sRTF_POSYOUT}, RTF_POSYOUT}, -{{sRTF_PRIVATE}, RTF_PRIVATE}, -{{sRTF_PROPNAME}, RTF_PROPNAME}, -{{sRTF_PROPTYPE}, RTF_PROPTYPE}, -{{sRTF_REVAUTHDEL}, RTF_REVAUTHDEL}, -{{sRTF_REVDTTMDEL}, RTF_REVDTTMDEL}, -{{sRTF_SAUTOUPD}, RTF_SAUTOUPD}, -{{sRTF_SECTDEFAULTCL}, RTF_SECTDEFAULTCL}, -{{sRTF_SECTEXPAND}, RTF_SECTEXPAND}, -{{sRTF_SECTLINEGRID}, RTF_SECTLINEGRID}, -{{sRTF_SECTSPECIFYCL}, RTF_SECTSPECIFYCL}, -{{sRTF_SECTSPECIFYL}, RTF_SECTSPECIFYL}, -{{sRTF_SHIDDEN}, RTF_SHIDDEN}, -{{sRTF_SHPBOTTOM}, RTF_SHPBOTTOM}, -{{sRTF_SHPBXCOLUMN}, RTF_SHPBXCOLUMN}, -{{sRTF_SHPBXMARGIN}, RTF_SHPBXMARGIN}, -{{sRTF_SHPBXPAGE}, RTF_SHPBXPAGE}, -{{sRTF_SHPBYMARGIN}, RTF_SHPBYMARGIN}, -{{sRTF_SHPBYPAGE}, RTF_SHPBYPAGE}, -{{sRTF_SHPBYPARA}, RTF_SHPBYPARA}, -{{sRTF_SHPFBLWTXT}, RTF_SHPFBLWTXT}, -{{sRTF_SHPFHDR}, RTF_SHPFHDR}, -{{sRTF_SHPGRP}, RTF_SHPGRP}, -{{sRTF_SHPLEFT}, RTF_SHPLEFT}, -{{sRTF_SHPLID}, RTF_SHPLID}, -{{sRTF_SHPLOCKANCHOR}, RTF_SHPLOCKANCHOR}, -{{sRTF_SHPPICT}, RTF_SHPPICT}, -{{sRTF_SHPRIGHT}, RTF_SHPRIGHT}, -{{sRTF_SHPRSLT}, RTF_SHPRSLT}, -{{sRTF_SHPTOP}, RTF_SHPTOP}, -{{sRTF_SHPTXT}, RTF_SHPTXT}, -{{sRTF_SHPWRK}, RTF_SHPWRK}, -{{sRTF_SHPWR}, RTF_SHPWR}, -{{sRTF_SHPZ}, RTF_SHPZ}, -{{sRTF_SPRSBSP}, RTF_SPRSBSP}, -{{sRTF_SPRSLNSP}, RTF_SPRSLNSP}, -{{sRTF_SPRSTSM}, RTF_SPRSTSM}, -{{sRTF_STATICVAL}, RTF_STATICVAL}, -{{sRTF_STEXTFLOW}, RTF_STEXTFLOW}, -{{sRTF_STRIKED}, RTF_STRIKED}, -{{sRTF_SUBFONTBYSIZE}, RTF_SUBFONTBYSIZE}, -{{sRTF_TCELLD}, RTF_TCELLD}, -{{sRTF_TIME}, RTF_TIME}, -{{sRTF_TRUNCATEFONTHEIGHT}, RTF_TRUNCATEFONTHEIGHT}, -{{sRTF_UC}, RTF_UC}, -{{sRTF_UD}, RTF_UD}, -{{sRTF_ULDASH}, RTF_ULDASH}, -{{sRTF_ULDASHD}, RTF_ULDASHD}, -{{sRTF_ULDASHDD}, RTF_ULDASHDD}, -{{sRTF_ULTH}, RTF_ULTH}, -{{sRTF_ULWAVE}, RTF_ULWAVE}, -{{sRTF_ULC}, RTF_ULC}, -{{sRTF_U}, RTF_U}, -{{sRTF_UPR}, RTF_UPR}, -{{sRTF_USERPROPS}, RTF_USERPROPS}, -{{sRTF_VIEWKIND}, RTF_VIEWKIND}, -{{sRTF_VIEWSCALE}, RTF_VIEWSCALE}, -{{sRTF_VIEWZK}, RTF_VIEWZK}, -{{sRTF_WIDCTLPAR}, RTF_WIDCTLPAR}, -{{sRTF_WINDOWCAPTION}, RTF_WINDOWCAPTION}, -{{sRTF_WPEQN}, RTF_WPEQN}, -{{sRTF_WPJST}, RTF_WPJST}, -{{sRTF_WPSP}, RTF_WPSP}, -{{sRTF_YXE}, RTF_YXE}, -{{sRTF_FRMTXLRTB}, RTF_FRMTXLRTB}, -{{sRTF_FRMTXTBRL}, RTF_FRMTXTBRL}, -{{sRTF_FRMTXBTLR}, RTF_FRMTXBTLR}, -{{sRTF_FRMTXLRTBV}, RTF_FRMTXLRTBV}, -{{sRTF_FRMTXTBRLV}, RTF_FRMTXTBRLV}, +{{OOO_STRING_SVTOOLS_RTF_ABSLOCK}, RTF_ABSLOCK}, +{{OOO_STRING_SVTOOLS_RTF_ADJUSTRIGHT}, RTF_ADJUSTRIGHT}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNCHOSUNG}, RTF_AFTNNCHOSUNG}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNCNUM}, RTF_AFTNNCNUM}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNDBAR}, RTF_AFTNNDBAR}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNDBNUM}, RTF_AFTNNDBNUM}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNDBNUMD}, RTF_AFTNNDBNUMD}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNDBNUMK}, RTF_AFTNNDBNUMK}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNDBNUMT}, RTF_AFTNNDBNUMT}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNGANADA}, RTF_AFTNNGANADA}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNGBNUM}, RTF_AFTNNGBNUM}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNGBNUMD}, RTF_AFTNNGBNUMD}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNGBNUMK}, RTF_AFTNNGBNUMK}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNGBNUML}, RTF_AFTNNGBNUML}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNZODIAC}, RTF_AFTNNZODIAC}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNZODIACD}, RTF_AFTNNZODIACD}, +{{OOO_STRING_SVTOOLS_RTF_AFTNNZODIACL}, RTF_AFTNNZODIACL}, +{{OOO_STRING_SVTOOLS_RTF_ANIMTEXT}, RTF_ANIMTEXT}, +{{OOO_STRING_SVTOOLS_RTF_ANSICPG}, RTF_ANSICPG}, +{{OOO_STRING_SVTOOLS_RTF_BACKGROUND}, RTF_BACKGROUND}, +{{OOO_STRING_SVTOOLS_RTF_BDBFHDR}, RTF_BDBFHDR}, +{{OOO_STRING_SVTOOLS_RTF_BLIPTAG}, RTF_BLIPTAG}, +{{OOO_STRING_SVTOOLS_RTF_BLIPUID}, RTF_BLIPUID}, +{{OOO_STRING_SVTOOLS_RTF_BLIPUPI}, RTF_BLIPUPI}, +{{OOO_STRING_SVTOOLS_RTF_BRDRART}, RTF_BRDRART}, +{{OOO_STRING_SVTOOLS_RTF_BRDRDASHD}, RTF_BRDRDASHD}, +{{OOO_STRING_SVTOOLS_RTF_BRDRDASHDD}, RTF_BRDRDASHDD}, +{{OOO_STRING_SVTOOLS_RTF_BRDRDASHDOTSTR},RTF_BRDRDASHDOTSTR}, +{{OOO_STRING_SVTOOLS_RTF_BRDRDASHSM}, RTF_BRDRDASHSM}, +{{OOO_STRING_SVTOOLS_RTF_BRDREMBOSS}, RTF_BRDREMBOSS}, +{{OOO_STRING_SVTOOLS_RTF_BRDRENGRAVE}, RTF_BRDRENGRAVE}, +{{OOO_STRING_SVTOOLS_RTF_BRDRFRAME}, RTF_BRDRFRAME}, +{{OOO_STRING_SVTOOLS_RTF_BRDRTHTNLG}, RTF_BRDRTHTNLG}, +{{OOO_STRING_SVTOOLS_RTF_BRDRTHTNMG}, RTF_BRDRTHTNMG}, +{{OOO_STRING_SVTOOLS_RTF_BRDRTHTNSG}, RTF_BRDRTHTNSG}, +{{OOO_STRING_SVTOOLS_RTF_BRDRTNTHLG}, RTF_BRDRTNTHLG}, +{{OOO_STRING_SVTOOLS_RTF_BRDRTNTHMG}, RTF_BRDRTNTHMG}, +{{OOO_STRING_SVTOOLS_RTF_BRDRTNTHSG}, RTF_BRDRTNTHSG}, +{{OOO_STRING_SVTOOLS_RTF_BRDRTNTHTNLG}, RTF_BRDRTNTHTNLG}, +{{OOO_STRING_SVTOOLS_RTF_BRDRTNTHTNMG}, RTF_BRDRTNTHTNMG}, +{{OOO_STRING_SVTOOLS_RTF_BRDRTNTHTNSG}, RTF_BRDRTNTHTNSG}, +{{OOO_STRING_SVTOOLS_RTF_BRDRTRIPLE}, RTF_BRDRTRIPLE}, +{{OOO_STRING_SVTOOLS_RTF_BRDRWAVY}, RTF_BRDRWAVY}, +{{OOO_STRING_SVTOOLS_RTF_BRDRWAVYDB}, RTF_BRDRWAVYDB}, +{{OOO_STRING_SVTOOLS_RTF_CATEGORY}, RTF_CATEGORY}, +{{OOO_STRING_SVTOOLS_RTF_CGRID}, RTF_CGRID}, +{{OOO_STRING_SVTOOLS_RTF_CHARSCALEX}, RTF_CHARSCALEX}, +{{OOO_STRING_SVTOOLS_RTF_CHBGBDIAG}, RTF_CHBGBDIAG}, +{{OOO_STRING_SVTOOLS_RTF_CHBGCROSS}, RTF_CHBGCROSS}, +{{OOO_STRING_SVTOOLS_RTF_CHBGDCROSS}, RTF_CHBGDCROSS}, +{{OOO_STRING_SVTOOLS_RTF_CHBGDKBDIAG}, RTF_CHBGDKBDIAG}, +{{OOO_STRING_SVTOOLS_RTF_CHBGDKCROSS}, RTF_CHBGDKCROSS}, +{{OOO_STRING_SVTOOLS_RTF_CHBGDKDCROSS}, RTF_CHBGDKDCROSS}, +{{OOO_STRING_SVTOOLS_RTF_CHBGDKFDIAG}, RTF_CHBGDKFDIAG}, +{{OOO_STRING_SVTOOLS_RTF_CHBGDKHORIZ}, RTF_CHBGDKHORIZ}, +{{OOO_STRING_SVTOOLS_RTF_CHBGDKVERT}, RTF_CHBGDKVERT}, +{{OOO_STRING_SVTOOLS_RTF_CHBGFDIAG}, RTF_CHBGFDIAG}, +{{OOO_STRING_SVTOOLS_RTF_CHBGHORIZ}, RTF_CHBGHORIZ}, +{{OOO_STRING_SVTOOLS_RTF_CHBGVERT}, RTF_CHBGVERT}, +{{OOO_STRING_SVTOOLS_RTF_CHBRDR}, RTF_CHBRDR}, +{{OOO_STRING_SVTOOLS_RTF_CHCBPAT}, RTF_CHCBPAT}, +{{OOO_STRING_SVTOOLS_RTF_CHCFPAT}, RTF_CHCFPAT}, +{{OOO_STRING_SVTOOLS_RTF_CHSHDNG}, RTF_CHSHDNG}, +{{OOO_STRING_SVTOOLS_RTF_CLTXLRTB}, RTF_CLTXLRTB}, +{{OOO_STRING_SVTOOLS_RTF_CLTXTBRL}, RTF_CLTXTBRL}, +{{OOO_STRING_SVTOOLS_RTF_CLVERTALB}, RTF_CLVERTALB}, +{{OOO_STRING_SVTOOLS_RTF_CLVERTALC}, RTF_CLVERTALC}, +{{OOO_STRING_SVTOOLS_RTF_CLVERTALT}, RTF_CLVERTALT}, +{{OOO_STRING_SVTOOLS_RTF_CLVMGF}, RTF_CLVMGF}, +{{OOO_STRING_SVTOOLS_RTF_CLVMRG}, RTF_CLVMRG}, +{{OOO_STRING_SVTOOLS_RTF_CLTXTBRLV}, RTF_CLTXTBRLV}, +{{OOO_STRING_SVTOOLS_RTF_CLTXBTLR}, RTF_CLTXBTLR}, +{{OOO_STRING_SVTOOLS_RTF_CLTXLRTBV}, RTF_CLTXLRTBV}, +{{OOO_STRING_SVTOOLS_RTF_COMPANY}, RTF_COMPANY}, +{{OOO_STRING_SVTOOLS_RTF_CRAUTH}, RTF_CRAUTH}, +{{OOO_STRING_SVTOOLS_RTF_CRDATE}, RTF_CRDATE}, +{{OOO_STRING_SVTOOLS_RTF_DATE}, RTF_DATE}, +{{OOO_STRING_SVTOOLS_RTF_DEFLANGFE}, RTF_DEFLANGFE}, +{{OOO_STRING_SVTOOLS_RTF_DFRAUTH}, RTF_DFRAUTH}, +{{OOO_STRING_SVTOOLS_RTF_DFRDATE}, RTF_DFRDATE}, +{{OOO_STRING_SVTOOLS_RTF_DFRSTART}, RTF_DFRSTART}, +{{OOO_STRING_SVTOOLS_RTF_DFRSTOP}, RTF_DFRSTOP}, +{{OOO_STRING_SVTOOLS_RTF_DFRXST}, RTF_DFRXST}, +{{OOO_STRING_SVTOOLS_RTF_DGMARGIN}, RTF_DGMARGIN}, +{{OOO_STRING_SVTOOLS_RTF_DNTBLNSBDB}, RTF_DNTBLNSBDB}, +{{OOO_STRING_SVTOOLS_RTF_DOCTYPE}, RTF_DOCTYPE}, +{{OOO_STRING_SVTOOLS_RTF_DOCVAR}, RTF_DOCVAR}, +{{OOO_STRING_SVTOOLS_RTF_DPCODESCENT}, RTF_DPCODESCENT}, +{{OOO_STRING_SVTOOLS_RTF_EMBO}, RTF_EMBO}, +{{OOO_STRING_SVTOOLS_RTF_EMFBLIP}, RTF_EMFBLIP}, +{{OOO_STRING_SVTOOLS_RTF_EXPSHRTN}, RTF_EXPSHRTN}, +{{OOO_STRING_SVTOOLS_RTF_FAAUTO}, RTF_FAAUTO}, +{{OOO_STRING_SVTOOLS_RTF_FBIAS}, RTF_FBIAS}, +{{OOO_STRING_SVTOOLS_RTF_FFDEFRES}, RTF_FFDEFRES}, +{{OOO_STRING_SVTOOLS_RTF_FFDEFTEXT}, RTF_FFDEFTEXT}, +{{OOO_STRING_SVTOOLS_RTF_FFENTRYMCR}, RTF_FFENTRYMCR}, +{{OOO_STRING_SVTOOLS_RTF_FFEXITMCR}, RTF_FFEXITMCR}, +{{OOO_STRING_SVTOOLS_RTF_FFFORMAT}, RTF_FFFORMAT}, +{{OOO_STRING_SVTOOLS_RTF_FFHASLISTBOX}, RTF_FFHASLISTBOX}, +{{OOO_STRING_SVTOOLS_RTF_FFHELPTEXT}, RTF_FFHELPTEXT}, +{{OOO_STRING_SVTOOLS_RTF_FFHPS}, RTF_FFHPS}, +{{OOO_STRING_SVTOOLS_RTF_FFL}, RTF_FFL}, +{{OOO_STRING_SVTOOLS_RTF_FFMAXLEN}, RTF_FFMAXLEN}, +{{OOO_STRING_SVTOOLS_RTF_FFNAME}, RTF_FFNAME}, +{{OOO_STRING_SVTOOLS_RTF_FFOWNHELP}, RTF_FFOWNHELP}, +{{OOO_STRING_SVTOOLS_RTF_FFOWNSTAT}, RTF_FFOWNSTAT}, +{{OOO_STRING_SVTOOLS_RTF_FFPROT}, RTF_FFPROT}, +{{OOO_STRING_SVTOOLS_RTF_FFRECALC}, RTF_FFRECALC}, +{{OOO_STRING_SVTOOLS_RTF_FFRES}, RTF_FFRES}, +{{OOO_STRING_SVTOOLS_RTF_FFSIZE}, RTF_FFSIZE}, +{{OOO_STRING_SVTOOLS_RTF_FFSTATTEXT}, RTF_FFSTATTEXT}, +{{OOO_STRING_SVTOOLS_RTF_FFTYPE}, RTF_FFTYPE}, +{{OOO_STRING_SVTOOLS_RTF_FFTYPETXT}, RTF_FFTYPETXT}, +{{OOO_STRING_SVTOOLS_RTF_FLDTYPE}, RTF_FLDTYPE}, +{{OOO_STRING_SVTOOLS_RTF_FNAME}, RTF_FNAME}, +{{OOO_STRING_SVTOOLS_RTF_FORMFIELD}, RTF_FORMFIELD}, +{{OOO_STRING_SVTOOLS_RTF_FROMTEXT}, RTF_FROMTEXT}, +{{OOO_STRING_SVTOOLS_RTF_FTNNCHOSUNG}, RTF_FTNNCHOSUNG}, +{{OOO_STRING_SVTOOLS_RTF_FTNNCNUM}, RTF_FTNNCNUM}, +{{OOO_STRING_SVTOOLS_RTF_FTNNDBAR}, RTF_FTNNDBAR}, +{{OOO_STRING_SVTOOLS_RTF_FTNNDBNUM}, RTF_FTNNDBNUM}, +{{OOO_STRING_SVTOOLS_RTF_FTNNDBNUMD}, RTF_FTNNDBNUMD}, +{{OOO_STRING_SVTOOLS_RTF_FTNNDBNUMK}, RTF_FTNNDBNUMK}, +{{OOO_STRING_SVTOOLS_RTF_FTNNDBNUMT}, RTF_FTNNDBNUMT}, +{{OOO_STRING_SVTOOLS_RTF_FTNNGANADA}, RTF_FTNNGANADA}, +{{OOO_STRING_SVTOOLS_RTF_FTNNGBNUM}, RTF_FTNNGBNUM}, +{{OOO_STRING_SVTOOLS_RTF_FTNNGBNUMD}, RTF_FTNNGBNUMD}, +{{OOO_STRING_SVTOOLS_RTF_FTNNGBNUMK}, RTF_FTNNGBNUMK}, +{{OOO_STRING_SVTOOLS_RTF_FTNNGBNUML}, RTF_FTNNGBNUML}, +{{OOO_STRING_SVTOOLS_RTF_FTNNZODIAC}, RTF_FTNNZODIAC}, +{{OOO_STRING_SVTOOLS_RTF_FTNNZODIACD}, RTF_FTNNZODIACD}, +{{OOO_STRING_SVTOOLS_RTF_FTNNZODIACL}, RTF_FTNNZODIACL}, +{{OOO_STRING_SVTOOLS_RTF_G}, RTF_G}, +{{OOO_STRING_SVTOOLS_RTF_GCW}, RTF_GCW}, +{{OOO_STRING_SVTOOLS_RTF_GRIDTBL}, RTF_GRIDTBL}, +{{OOO_STRING_SVTOOLS_RTF_HIGHLIGHT}, RTF_HIGHLIGHT}, +{{OOO_STRING_SVTOOLS_RTF_HLFR}, RTF_HLFR}, +{{OOO_STRING_SVTOOLS_RTF_HLINKBASE}, RTF_HLINKBASE}, +{{OOO_STRING_SVTOOLS_RTF_HLLOC}, RTF_HLLOC}, +{{OOO_STRING_SVTOOLS_RTF_HLSRC}, RTF_HLSRC}, +{{OOO_STRING_SVTOOLS_RTF_ILVL}, RTF_ILVL}, +{{OOO_STRING_SVTOOLS_RTF_IMPR}, RTF_IMPR}, +{{OOO_STRING_SVTOOLS_RTF_JPEGBLIP}, RTF_JPEGBLIP}, +{{OOO_STRING_SVTOOLS_RTF_LEVELFOLLOW}, RTF_LEVELFOLLOW}, +{{OOO_STRING_SVTOOLS_RTF_LEVELINDENT}, RTF_LEVELINDENT}, +{{OOO_STRING_SVTOOLS_RTF_LEVELJC}, RTF_LEVELJC}, +{{OOO_STRING_SVTOOLS_RTF_LEVELLEGAL}, RTF_LEVELLEGAL}, +{{OOO_STRING_SVTOOLS_RTF_LEVELNFC}, RTF_LEVELNFC}, +{{OOO_STRING_SVTOOLS_RTF_LEVELNORESTART},RTF_LEVELNORESTART}, +{{OOO_STRING_SVTOOLS_RTF_LEVELNUMBERS}, RTF_LEVELNUMBERS}, +{{OOO_STRING_SVTOOLS_RTF_LEVELOLD}, RTF_LEVELOLD}, +{{OOO_STRING_SVTOOLS_RTF_LEVELPREV}, RTF_LEVELPREV}, +{{OOO_STRING_SVTOOLS_RTF_LEVELPREVSPACE},RTF_LEVELPREVSPACE}, +{{OOO_STRING_SVTOOLS_RTF_LEVELSPACE}, RTF_LEVELSPACE}, +{{OOO_STRING_SVTOOLS_RTF_LEVELSTARTAT}, RTF_LEVELSTARTAT}, +{{OOO_STRING_SVTOOLS_RTF_LEVELTEXT}, RTF_LEVELTEXT}, +{{OOO_STRING_SVTOOLS_RTF_LINKVAL}, RTF_LINKVAL}, +{{OOO_STRING_SVTOOLS_RTF_LIST}, RTF_LIST}, +{{OOO_STRING_SVTOOLS_RTF_LISTID}, RTF_LISTID}, +{{OOO_STRING_SVTOOLS_RTF_LISTLEVEL}, RTF_LISTLEVEL}, +{{OOO_STRING_SVTOOLS_RTF_LISTNAME}, RTF_LISTNAME}, +{{OOO_STRING_SVTOOLS_RTF_LISTOVERRIDE}, RTF_LISTOVERRIDE}, +{{OOO_STRING_SVTOOLS_RTF_LISTOVERRIDECOUNT}, RTF_LISTOVERRIDECOUNT}, +{{OOO_STRING_SVTOOLS_RTF_LISTOVERRIDEFORMAT}, RTF_LISTOVERRIDEFORMAT}, +{{OOO_STRING_SVTOOLS_RTF_LISTOVERRIDESTART}, RTF_LISTOVERRIDESTART}, +{{OOO_STRING_SVTOOLS_RTF_LISTOVERRIDETABLE}, RTF_LISTOVERRIDETABLE}, +{{OOO_STRING_SVTOOLS_RTF_LISTRESTARTHDN},RTF_LISTRESTARTHDN}, +{{OOO_STRING_SVTOOLS_RTF_LISTSIMPLE}, RTF_LISTSIMPLE}, +{{OOO_STRING_SVTOOLS_RTF_LISTTABLE}, RTF_LISTTABLE}, +{{OOO_STRING_SVTOOLS_RTF_LISTTEMPLATEID},RTF_LISTTEMPLATEID}, +{{OOO_STRING_SVTOOLS_RTF_LISTTEXT}, RTF_LISTTEXT}, +{{OOO_STRING_SVTOOLS_RTF_LS}, RTF_LS}, +{{OOO_STRING_SVTOOLS_RTF_LYTEXCTTP}, RTF_LYTEXCTTP}, +{{OOO_STRING_SVTOOLS_RTF_LYTPRTMET}, RTF_LYTPRTMET}, +{{OOO_STRING_SVTOOLS_RTF_MANAGER}, RTF_MANAGER}, +{{OOO_STRING_SVTOOLS_RTF_MSMCAP}, RTF_MSMCAP}, +{{OOO_STRING_SVTOOLS_RTF_NOFCHARSWS}, RTF_NOFCHARSWS}, +{{OOO_STRING_SVTOOLS_RTF_NOLEAD}, RTF_NOLEAD}, +{{OOO_STRING_SVTOOLS_RTF_NONSHPPICT}, RTF_NONSHPPICT}, +{{OOO_STRING_SVTOOLS_RTF_NOSECTEXPAND}, RTF_NOSECTEXPAND}, +{{OOO_STRING_SVTOOLS_RTF_NOSNAPLINEGRID},RTF_NOSNAPLINEGRID}, +{{OOO_STRING_SVTOOLS_RTF_NOSPACEFORUL}, RTF_NOSPACEFORUL}, +{{OOO_STRING_SVTOOLS_RTF_NOULTRLSPC}, RTF_NOULTRLSPC}, +{{OOO_STRING_SVTOOLS_RTF_NOXLATTOYEN}, RTF_NOXLATTOYEN}, +{{OOO_STRING_SVTOOLS_RTF_OBJATTPH}, RTF_OBJATTPH}, +{{OOO_STRING_SVTOOLS_RTF_OBJHTML}, RTF_OBJHTML}, +{{OOO_STRING_SVTOOLS_RTF_OBJOCX}, RTF_OBJOCX}, +{{OOO_STRING_SVTOOLS_RTF_OLDLINEWRAP}, RTF_OLDLINEWRAP}, +{{OOO_STRING_SVTOOLS_RTF_OUTLINELEVEL}, RTF_OUTLINELEVEL}, +{{OOO_STRING_SVTOOLS_RTF_OVERLAY}, RTF_OVERLAY}, +{{OOO_STRING_SVTOOLS_RTF_PANOSE}, RTF_PANOSE}, +{{OOO_STRING_SVTOOLS_RTF_PGBRDRB}, RTF_PGBRDRB}, +{{OOO_STRING_SVTOOLS_RTF_PGBRDRFOOT}, RTF_PGBRDRFOOT}, +{{OOO_STRING_SVTOOLS_RTF_PGBRDRHEAD}, RTF_PGBRDRHEAD}, +{{OOO_STRING_SVTOOLS_RTF_PGBRDRL}, RTF_PGBRDRL}, +{{OOO_STRING_SVTOOLS_RTF_PGBRDROPT}, RTF_PGBRDROPT}, +{{OOO_STRING_SVTOOLS_RTF_PGBRDRR}, RTF_PGBRDRR}, +{{OOO_STRING_SVTOOLS_RTF_PGBRDRSNAP}, RTF_PGBRDRSNAP}, +{{OOO_STRING_SVTOOLS_RTF_PGBRDRT}, RTF_PGBRDRT}, +{{OOO_STRING_SVTOOLS_RTF_PGNCHOSUNG}, RTF_PGNCHOSUNG}, +{{OOO_STRING_SVTOOLS_RTF_PGNCNUM}, RTF_PGNCNUM}, +{{OOO_STRING_SVTOOLS_RTF_PGNDBNUMK}, RTF_PGNDBNUMK}, +{{OOO_STRING_SVTOOLS_RTF_PGNDBNUMT}, RTF_PGNDBNUMT}, +{{OOO_STRING_SVTOOLS_RTF_PGNGANADA}, RTF_PGNGANADA}, +{{OOO_STRING_SVTOOLS_RTF_PGNGBNUM}, RTF_PGNGBNUM}, +{{OOO_STRING_SVTOOLS_RTF_PGNGBNUMD}, RTF_PGNGBNUMD}, +{{OOO_STRING_SVTOOLS_RTF_PGNGBNUMK}, RTF_PGNGBNUMK}, +{{OOO_STRING_SVTOOLS_RTF_PGNGBNUML}, RTF_PGNGBNUML}, +{{OOO_STRING_SVTOOLS_RTF_PGNZODIAC}, RTF_PGNZODIAC}, +{{OOO_STRING_SVTOOLS_RTF_PGNZODIACD}, RTF_PGNZODIACD}, +{{OOO_STRING_SVTOOLS_RTF_PGNZODIACL}, RTF_PGNZODIACL}, +{{OOO_STRING_SVTOOLS_RTF_PICPROP}, RTF_PICPROP}, +{{OOO_STRING_SVTOOLS_RTF_PNAIUEO}, RTF_PNAIUEO}, +{{OOO_STRING_SVTOOLS_RTF_PNAIUEOD}, RTF_PNAIUEOD}, +{{OOO_STRING_SVTOOLS_RTF_PNCHOSUNG}, RTF_PNCHOSUNG}, +{{OOO_STRING_SVTOOLS_RTF_PNDBNUMD}, RTF_PNDBNUMD}, +{{OOO_STRING_SVTOOLS_RTF_PNDBNUMK}, RTF_PNDBNUMK}, +{{OOO_STRING_SVTOOLS_RTF_PNDBNUML}, RTF_PNDBNUML}, +{{OOO_STRING_SVTOOLS_RTF_PNDBNUMT}, RTF_PNDBNUMT}, +{{OOO_STRING_SVTOOLS_RTF_PNGANADA}, RTF_PNGANADA}, +{{OOO_STRING_SVTOOLS_RTF_PNGBLIP}, RTF_PNGBLIP}, +{{OOO_STRING_SVTOOLS_RTF_PNGBNUM}, RTF_PNGBNUM}, +{{OOO_STRING_SVTOOLS_RTF_PNGBNUMD}, RTF_PNGBNUMD}, +{{OOO_STRING_SVTOOLS_RTF_PNGBNUMK}, RTF_PNGBNUMK}, +{{OOO_STRING_SVTOOLS_RTF_PNGBNUML}, RTF_PNGBNUML}, +{{OOO_STRING_SVTOOLS_RTF_PNRAUTH}, RTF_PNRAUTH}, +{{OOO_STRING_SVTOOLS_RTF_PNRDATE}, RTF_PNRDATE}, +{{OOO_STRING_SVTOOLS_RTF_PNRNFC}, RTF_PNRNFC}, +{{OOO_STRING_SVTOOLS_RTF_PNRNOT}, RTF_PNRNOT}, +{{OOO_STRING_SVTOOLS_RTF_PNRPNBR}, RTF_PNRPNBR}, +{{OOO_STRING_SVTOOLS_RTF_PNRRGB}, RTF_PNRRGB}, +{{OOO_STRING_SVTOOLS_RTF_PNRSTART}, RTF_PNRSTART}, +{{OOO_STRING_SVTOOLS_RTF_PNRSTOP}, RTF_PNRSTOP}, +{{OOO_STRING_SVTOOLS_RTF_PNRXST}, RTF_PNRXST}, +{{OOO_STRING_SVTOOLS_RTF_PNZODIAC}, RTF_PNZODIAC}, +{{OOO_STRING_SVTOOLS_RTF_PNZODIACD}, RTF_PNZODIACD}, +{{OOO_STRING_SVTOOLS_RTF_PNZODIACL}, RTF_PNZODIACL}, +{{OOO_STRING_SVTOOLS_RTF_LFOLEVEL}, RTF_LFOLEVEL}, +{{OOO_STRING_SVTOOLS_RTF_POSYIN}, RTF_POSYIN}, +{{OOO_STRING_SVTOOLS_RTF_POSYOUT}, RTF_POSYOUT}, +{{OOO_STRING_SVTOOLS_RTF_PRIVATE}, RTF_PRIVATE}, +{{OOO_STRING_SVTOOLS_RTF_PROPNAME}, RTF_PROPNAME}, +{{OOO_STRING_SVTOOLS_RTF_PROPTYPE}, RTF_PROPTYPE}, +{{OOO_STRING_SVTOOLS_RTF_REVAUTHDEL}, RTF_REVAUTHDEL}, +{{OOO_STRING_SVTOOLS_RTF_REVDTTMDEL}, RTF_REVDTTMDEL}, +{{OOO_STRING_SVTOOLS_RTF_SAUTOUPD}, RTF_SAUTOUPD}, +{{OOO_STRING_SVTOOLS_RTF_SECTDEFAULTCL}, RTF_SECTDEFAULTCL}, +{{OOO_STRING_SVTOOLS_RTF_SECTEXPAND}, RTF_SECTEXPAND}, +{{OOO_STRING_SVTOOLS_RTF_SECTLINEGRID}, RTF_SECTLINEGRID}, +{{OOO_STRING_SVTOOLS_RTF_SECTSPECIFYCL}, RTF_SECTSPECIFYCL}, +{{OOO_STRING_SVTOOLS_RTF_SECTSPECIFYL}, RTF_SECTSPECIFYL}, +{{OOO_STRING_SVTOOLS_RTF_SHIDDEN}, RTF_SHIDDEN}, +{{OOO_STRING_SVTOOLS_RTF_SHPBOTTOM}, RTF_SHPBOTTOM}, +{{OOO_STRING_SVTOOLS_RTF_SHPBXCOLUMN}, RTF_SHPBXCOLUMN}, +{{OOO_STRING_SVTOOLS_RTF_SHPBXMARGIN}, RTF_SHPBXMARGIN}, +{{OOO_STRING_SVTOOLS_RTF_SHPBXPAGE}, RTF_SHPBXPAGE}, +{{OOO_STRING_SVTOOLS_RTF_SHPBYMARGIN}, RTF_SHPBYMARGIN}, +{{OOO_STRING_SVTOOLS_RTF_SHPBYPAGE}, RTF_SHPBYPAGE}, +{{OOO_STRING_SVTOOLS_RTF_SHPBYPARA}, RTF_SHPBYPARA}, +{{OOO_STRING_SVTOOLS_RTF_SHPFBLWTXT}, RTF_SHPFBLWTXT}, +{{OOO_STRING_SVTOOLS_RTF_SHPFHDR}, RTF_SHPFHDR}, +{{OOO_STRING_SVTOOLS_RTF_SHPGRP}, RTF_SHPGRP}, +{{OOO_STRING_SVTOOLS_RTF_SHPLEFT}, RTF_SHPLEFT}, +{{OOO_STRING_SVTOOLS_RTF_SHPLID}, RTF_SHPLID}, +{{OOO_STRING_SVTOOLS_RTF_SHPLOCKANCHOR}, RTF_SHPLOCKANCHOR}, +{{OOO_STRING_SVTOOLS_RTF_SHPPICT}, RTF_SHPPICT}, +{{OOO_STRING_SVTOOLS_RTF_SHPRIGHT}, RTF_SHPRIGHT}, +{{OOO_STRING_SVTOOLS_RTF_SHPRSLT}, RTF_SHPRSLT}, +{{OOO_STRING_SVTOOLS_RTF_SHPTOP}, RTF_SHPTOP}, +{{OOO_STRING_SVTOOLS_RTF_SHPTXT}, RTF_SHPTXT}, +{{OOO_STRING_SVTOOLS_RTF_SHPWRK}, RTF_SHPWRK}, +{{OOO_STRING_SVTOOLS_RTF_SHPWR}, RTF_SHPWR}, +{{OOO_STRING_SVTOOLS_RTF_SHPZ}, RTF_SHPZ}, +{{OOO_STRING_SVTOOLS_RTF_SPRSBSP}, RTF_SPRSBSP}, +{{OOO_STRING_SVTOOLS_RTF_SPRSLNSP}, RTF_SPRSLNSP}, +{{OOO_STRING_SVTOOLS_RTF_SPRSTSM}, RTF_SPRSTSM}, +{{OOO_STRING_SVTOOLS_RTF_STATICVAL}, RTF_STATICVAL}, +{{OOO_STRING_SVTOOLS_RTF_STEXTFLOW}, RTF_STEXTFLOW}, +{{OOO_STRING_SVTOOLS_RTF_STRIKED}, RTF_STRIKED}, +{{OOO_STRING_SVTOOLS_RTF_SUBFONTBYSIZE}, RTF_SUBFONTBYSIZE}, +{{OOO_STRING_SVTOOLS_RTF_TCELLD}, RTF_TCELLD}, +{{OOO_STRING_SVTOOLS_RTF_TIME}, RTF_TIME}, +{{OOO_STRING_SVTOOLS_RTF_TRUNCATEFONTHEIGHT}, RTF_TRUNCATEFONTHEIGHT}, +{{OOO_STRING_SVTOOLS_RTF_UC}, RTF_UC}, +{{OOO_STRING_SVTOOLS_RTF_UD}, RTF_UD}, +{{OOO_STRING_SVTOOLS_RTF_ULDASH}, RTF_ULDASH}, +{{OOO_STRING_SVTOOLS_RTF_ULDASHD}, RTF_ULDASHD}, +{{OOO_STRING_SVTOOLS_RTF_ULDASHDD}, RTF_ULDASHDD}, +{{OOO_STRING_SVTOOLS_RTF_ULTH}, RTF_ULTH}, +{{OOO_STRING_SVTOOLS_RTF_ULWAVE}, RTF_ULWAVE}, +{{OOO_STRING_SVTOOLS_RTF_ULC}, RTF_ULC}, +{{OOO_STRING_SVTOOLS_RTF_U}, RTF_U}, +{{OOO_STRING_SVTOOLS_RTF_UPR}, RTF_UPR}, +{{OOO_STRING_SVTOOLS_RTF_USERPROPS}, RTF_USERPROPS}, +{{OOO_STRING_SVTOOLS_RTF_VIEWKIND}, RTF_VIEWKIND}, +{{OOO_STRING_SVTOOLS_RTF_VIEWSCALE}, RTF_VIEWSCALE}, +{{OOO_STRING_SVTOOLS_RTF_VIEWZK}, RTF_VIEWZK}, +{{OOO_STRING_SVTOOLS_RTF_WIDCTLPAR}, RTF_WIDCTLPAR}, +{{OOO_STRING_SVTOOLS_RTF_WINDOWCAPTION}, RTF_WINDOWCAPTION}, +{{OOO_STRING_SVTOOLS_RTF_WPEQN}, RTF_WPEQN}, +{{OOO_STRING_SVTOOLS_RTF_WPJST}, RTF_WPJST}, +{{OOO_STRING_SVTOOLS_RTF_WPSP}, RTF_WPSP}, +{{OOO_STRING_SVTOOLS_RTF_YXE}, RTF_YXE}, +{{OOO_STRING_SVTOOLS_RTF_FRMTXLRTB}, RTF_FRMTXLRTB}, +{{OOO_STRING_SVTOOLS_RTF_FRMTXTBRL}, RTF_FRMTXTBRL}, +{{OOO_STRING_SVTOOLS_RTF_FRMTXBTLR}, RTF_FRMTXBTLR}, +{{OOO_STRING_SVTOOLS_RTF_FRMTXLRTBV}, RTF_FRMTXLRTBV}, +{{OOO_STRING_SVTOOLS_RTF_FRMTXTBRLV}, RTF_FRMTXTBRLV}, // MS-2000 Tokens - {{sRTF_ULTHD}, RTF_ULTHD}, - {{sRTF_ULTHDASH}, RTF_ULTHDASH}, - {{sRTF_ULLDASH}, RTF_ULLDASH}, - {{sRTF_ULTHLDASH}, RTF_ULTHLDASH}, - {{sRTF_ULTHDASHD}, RTF_ULTHDASHD}, - {{sRTF_ULTHDASHDD}, RTF_ULTHDASHDD}, - {{sRTF_ULHWAVE}, RTF_ULHWAVE}, - {{sRTF_ULULDBWAVE}, RTF_ULULDBWAVE}, + {{OOO_STRING_SVTOOLS_RTF_ULTHD}, RTF_ULTHD}, + {{OOO_STRING_SVTOOLS_RTF_ULTHDASH}, RTF_ULTHDASH}, + {{OOO_STRING_SVTOOLS_RTF_ULLDASH}, RTF_ULLDASH}, + {{OOO_STRING_SVTOOLS_RTF_ULTHLDASH}, RTF_ULTHLDASH}, + {{OOO_STRING_SVTOOLS_RTF_ULTHDASHD}, RTF_ULTHDASHD}, + {{OOO_STRING_SVTOOLS_RTF_ULTHDASHDD}, RTF_ULTHDASHDD}, + {{OOO_STRING_SVTOOLS_RTF_ULHWAVE}, RTF_ULHWAVE}, + {{OOO_STRING_SVTOOLS_RTF_ULULDBWAVE}, RTF_ULULDBWAVE}, - {{sRTF_LOCH}, RTF_LOCH}, - {{sRTF_HICH}, RTF_HICH}, - {{sRTF_DBCH}, RTF_DBCH}, - {{sRTF_LANGFE}, RTF_LANGFE}, - {{sRTF_ADEFLANG}, RTF_ADEFLANG}, - {{sRTF_ADEFF}, RTF_ADEFF}, - {{sRTF_ACCNONE}, RTF_ACCNONE}, - {{sRTF_ACCDOT}, RTF_ACCDOT}, - {{sRTF_ACCCOMMA}, RTF_ACCCOMMA}, - {{sRTF_TWOINONE}, RTF_TWOINONE}, - {{sRTF_HORZVERT}, RTF_HORZVERT}, - {{sRTF_FAHANG}, RTF_FAHANG}, - {{sRTF_FAVAR}, RTF_FAVAR}, - {{sRTF_FACENTER}, RTF_FACENTER}, - {{sRTF_FAROMAN}, RTF_FAROMAN}, - {{sRTF_FAFIXED}, RTF_FAFIXED}, - {{sRTF_NOCWRAP}, RTF_NOCWRAP}, - {{sRTF_NOOVERFLOW}, RTF_NOOVERFLOW}, - {{sRTF_ASPALPHA}, RTF_ASPALPHA}, + {{OOO_STRING_SVTOOLS_RTF_LOCH}, RTF_LOCH}, + {{OOO_STRING_SVTOOLS_RTF_HICH}, RTF_HICH}, + {{OOO_STRING_SVTOOLS_RTF_DBCH}, RTF_DBCH}, + {{OOO_STRING_SVTOOLS_RTF_LANGFE}, RTF_LANGFE}, + {{OOO_STRING_SVTOOLS_RTF_ADEFLANG}, RTF_ADEFLANG}, + {{OOO_STRING_SVTOOLS_RTF_ADEFF}, RTF_ADEFF}, + {{OOO_STRING_SVTOOLS_RTF_ACCNONE}, RTF_ACCNONE}, + {{OOO_STRING_SVTOOLS_RTF_ACCDOT}, RTF_ACCDOT}, + {{OOO_STRING_SVTOOLS_RTF_ACCCOMMA}, RTF_ACCCOMMA}, + {{OOO_STRING_SVTOOLS_RTF_TWOINONE}, RTF_TWOINONE}, + {{OOO_STRING_SVTOOLS_RTF_HORZVERT}, RTF_HORZVERT}, + {{OOO_STRING_SVTOOLS_RTF_FAHANG}, RTF_FAHANG}, + {{OOO_STRING_SVTOOLS_RTF_FAVAR}, RTF_FAVAR}, + {{OOO_STRING_SVTOOLS_RTF_FACENTER}, RTF_FACENTER}, + {{OOO_STRING_SVTOOLS_RTF_FAROMAN}, RTF_FAROMAN}, + {{OOO_STRING_SVTOOLS_RTF_FAFIXED}, RTF_FAFIXED}, + {{OOO_STRING_SVTOOLS_RTF_NOCWRAP}, RTF_NOCWRAP}, + {{OOO_STRING_SVTOOLS_RTF_NOOVERFLOW}, RTF_NOOVERFLOW}, + {{OOO_STRING_SVTOOLS_RTF_ASPALPHA}, RTF_ASPALPHA}, // SWG spezifische Attribute - {{sRTF_GRFALIGNV}, RTF_GRF_ALIGNV}, - {{sRTF_GRFALIGNH}, RTF_GRF_ALIGNH}, - {{sRTF_GRFMIRROR}, RTF_GRF_MIRROR}, - {{sRTF_HEADERYB}, RTF_HEADER_YB}, - {{sRTF_HEADERXL}, RTF_HEADER_XL}, - {{sRTF_HEADERXR}, RTF_HEADER_XR}, - {{sRTF_FOOTERYT}, RTF_FOOTER_YT}, - {{sRTF_FOOTERXL}, RTF_FOOTER_XL}, - {{sRTF_FOOTERXR}, RTF_FOOTER_XR}, - {{sRTF_HEADERYH}, RTF_HEADER_YH}, - {{sRTF_FOOTERYH}, RTF_FOOTER_YH}, - {{sRTF_BALANCEDCOLUMN},RTF_BALANCED_COLUMN}, - {{sRTF_UPDNPROP}, RTF_SWG_ESCPROP}, - {{sRTF_PRTDATA}, RTF_SWG_PRTDATA}, - {{sRTF_BKMKKEY}, RTF_BKMK_KEY}, + {{OOO_STRING_SVTOOLS_RTF_GRFALIGNV}, RTF_GRF_ALIGNV}, + {{OOO_STRING_SVTOOLS_RTF_GRFALIGNH}, RTF_GRF_ALIGNH}, + {{OOO_STRING_SVTOOLS_RTF_GRFMIRROR}, RTF_GRF_MIRROR}, + {{OOO_STRING_SVTOOLS_RTF_HEADERYB}, RTF_HEADER_YB}, + {{OOO_STRING_SVTOOLS_RTF_HEADERXL}, RTF_HEADER_XL}, + {{OOO_STRING_SVTOOLS_RTF_HEADERXR}, RTF_HEADER_XR}, + {{OOO_STRING_SVTOOLS_RTF_FOOTERYT}, RTF_FOOTER_YT}, + {{OOO_STRING_SVTOOLS_RTF_FOOTERXL}, RTF_FOOTER_XL}, + {{OOO_STRING_SVTOOLS_RTF_FOOTERXR}, RTF_FOOTER_XR}, + {{OOO_STRING_SVTOOLS_RTF_HEADERYH}, RTF_HEADER_YH}, + {{OOO_STRING_SVTOOLS_RTF_FOOTERYH}, RTF_FOOTER_YH}, + {{OOO_STRING_SVTOOLS_RTF_BALANCEDCOLUMN},RTF_BALANCED_COLUMN}, + {{OOO_STRING_SVTOOLS_RTF_UPDNPROP}, RTF_SWG_ESCPROP}, + {{OOO_STRING_SVTOOLS_RTF_PRTDATA}, RTF_SWG_PRTDATA}, + {{OOO_STRING_SVTOOLS_RTF_BKMKKEY}, RTF_BKMK_KEY}, // Attribute fuer die freifliegenden Rahmen - {{sRTF_FLYPRINT}, RTF_FLYPRINT}, - {{sRTF_FLYOPAQUE}, RTF_FLYOPAQUE}, - {{sRTF_FLYPRTCTD}, RTF_FLYPRTCTD}, - {{sRTF_FLYMAINCNT}, RTF_FLYMAINCNT}, - {{sRTF_FLYVERT}, RTF_FLYVERT}, - {{sRTF_FLYHORZ}, RTF_FLYHORZ}, - {{sRTF_DFRMTXTL}, RTF_FLYOUTLEFT}, - {{sRTF_DFRMTXTR}, RTF_FLYOUTRIGHT}, - {{sRTF_DFRMTXTU}, RTF_FLYOUTUPPER}, - {{sRTF_DFRMTXTW}, RTF_FLYOUTLOWER}, - {{sRTF_FLYANCHOR}, RTF_FLYANCHOR}, - {{sRTF_FLYCNTNT}, RTF_FLY_CNTNT}, - {{sRTF_FLYCOLUMN}, RTF_FLY_COLUMN}, - {{sRTF_FLYPAGE}, RTF_FLY_PAGE}, + {{OOO_STRING_SVTOOLS_RTF_FLYPRINT}, RTF_FLYPRINT}, + {{OOO_STRING_SVTOOLS_RTF_FLYOPAQUE}, RTF_FLYOPAQUE}, + {{OOO_STRING_SVTOOLS_RTF_FLYPRTCTD}, RTF_FLYPRTCTD}, + {{OOO_STRING_SVTOOLS_RTF_FLYMAINCNT}, RTF_FLYMAINCNT}, + {{OOO_STRING_SVTOOLS_RTF_FLYVERT}, RTF_FLYVERT}, + {{OOO_STRING_SVTOOLS_RTF_FLYHORZ}, RTF_FLYHORZ}, + {{OOO_STRING_SVTOOLS_RTF_DFRMTXTL}, RTF_FLYOUTLEFT}, + {{OOO_STRING_SVTOOLS_RTF_DFRMTXTR}, RTF_FLYOUTRIGHT}, + {{OOO_STRING_SVTOOLS_RTF_DFRMTXTU}, RTF_FLYOUTUPPER}, + {{OOO_STRING_SVTOOLS_RTF_DFRMTXTW}, RTF_FLYOUTLOWER}, + {{OOO_STRING_SVTOOLS_RTF_FLYANCHOR}, RTF_FLYANCHOR}, + {{OOO_STRING_SVTOOLS_RTF_FLYCNTNT}, RTF_FLY_CNTNT}, + {{OOO_STRING_SVTOOLS_RTF_FLYCOLUMN}, RTF_FLY_COLUMN}, + {{OOO_STRING_SVTOOLS_RTF_FLYPAGE}, RTF_FLY_PAGE}, - {{sRTF_BRDBOX}, RTF_BRDBOX}, - {{sRTF_BRDLNCOL}, RTF_BRDLINE_COL}, - {{sRTF_BRDLNIN}, RTF_BRDLINE_IN}, - {{sRTF_BRDLNOUT}, RTF_BRDLINE_OUT}, - {{sRTF_BRDLNDIST}, RTF_BRDLINE_DIST}, + {{OOO_STRING_SVTOOLS_RTF_BRDBOX}, RTF_BRDBOX}, + {{OOO_STRING_SVTOOLS_RTF_BRDLNCOL}, RTF_BRDLINE_COL}, + {{OOO_STRING_SVTOOLS_RTF_BRDLNIN}, RTF_BRDLINE_IN}, + {{OOO_STRING_SVTOOLS_RTF_BRDLNOUT}, RTF_BRDLINE_OUT}, + {{OOO_STRING_SVTOOLS_RTF_BRDLNDIST}, RTF_BRDLINE_DIST}, - {{sRTF_SHADOW}, RTF_SHADOW}, - {{sRTF_SHDWDIST}, RTF_SHDW_DIST}, - {{sRTF_SHDWSTYLE}, RTF_SHDW_STYLE}, - {{sRTF_SHDWCOL}, RTF_SHDW_COL}, - {{sRTF_SHDWFCOL}, RTF_SHDW_FCOL}, + {{OOO_STRING_SVTOOLS_RTF_SHADOW}, RTF_SHADOW}, + {{OOO_STRING_SVTOOLS_RTF_SHDWDIST}, RTF_SHDW_DIST}, + {{OOO_STRING_SVTOOLS_RTF_SHDWSTYLE}, RTF_SHDW_STYLE}, + {{OOO_STRING_SVTOOLS_RTF_SHDWCOL}, RTF_SHDW_COL}, + {{OOO_STRING_SVTOOLS_RTF_SHDWFCOL}, RTF_SHDW_FCOL}, - {{sRTF_FLYINPARA}, RTF_FLY_INPARA}, + {{OOO_STRING_SVTOOLS_RTF_FLYINPARA}, RTF_FLY_INPARA}, - {{sRTF_PGDSCTBL}, RTF_PGDSCTBL}, - {{sRTF_PGDSC}, RTF_PGDSC}, - {{sRTF_PGDSCUSE}, RTF_PGDSCUSE}, - {{sRTF_PGDSCNXT}, RTF_PGDSCNXT}, + {{OOO_STRING_SVTOOLS_RTF_PGDSCTBL}, RTF_PGDSCTBL}, + {{OOO_STRING_SVTOOLS_RTF_PGDSC}, RTF_PGDSC}, + {{OOO_STRING_SVTOOLS_RTF_PGDSCUSE}, RTF_PGDSCUSE}, + {{OOO_STRING_SVTOOLS_RTF_PGDSCNXT}, RTF_PGDSCNXT}, - {{sRTF_HYPHEN}, RTF_HYPHEN}, - {{sRTF_HYPHLEAD}, RTF_HYPHLEAD}, - {{sRTF_HYPHTRAIL}, RTF_HYPHTRAIL}, - {{sRTF_HYPHMAX}, RTF_HYPHMAX}, + {{OOO_STRING_SVTOOLS_RTF_HYPHEN}, RTF_HYPHEN}, + {{OOO_STRING_SVTOOLS_RTF_HYPHLEAD}, RTF_HYPHLEAD}, + {{OOO_STRING_SVTOOLS_RTF_HYPHTRAIL}, RTF_HYPHTRAIL}, + {{OOO_STRING_SVTOOLS_RTF_HYPHMAX}, RTF_HYPHMAX}, - {{sRTF_TLSWG}, RTF_TLSWG}, - {{sRTF_PGBRK}, RTF_PGBRK}, + {{OOO_STRING_SVTOOLS_RTF_TLSWG}, RTF_TLSWG}, + {{OOO_STRING_SVTOOLS_RTF_PGBRK}, RTF_PGBRK}, - {{sRTF_PGDSCNO}, RTF_PGDSCNO}, - {{sRTF_SOUTLVL}, RTF_SOUTLVL}, + {{OOO_STRING_SVTOOLS_RTF_PGDSCNO}, RTF_PGDSCNO}, + {{OOO_STRING_SVTOOLS_RTF_SOUTLVL}, RTF_SOUTLVL}, - {{sRTF_SHP}, RTF_SHP}, + {{OOO_STRING_SVTOOLS_RTF_SHP}, RTF_SHP}, /* - {{sRTF_SHPLEFT}, RTF_SHPLEFT} - {{sRTF_SHPTOP}, RTF_SHPTOP} - {{sRTF_SHPBOTTOM}, RTF_SHPBOTTOM} - {{sRTF_SHPRIGHT}, RTF_SHPRIGHT} + {{OOO_STRING_SVTOOLS_RTF_SHPLEFT}, RTF_SHPLEFT} + {{OOO_STRING_SVTOOLS_RTF_SHPTOP}, RTF_SHPTOP} + {{OOO_STRING_SVTOOLS_RTF_SHPBOTTOM}, RTF_SHPBOTTOM} + {{OOO_STRING_SVTOOLS_RTF_SHPRIGHT}, RTF_SHPRIGHT} */ - {{sRTF_SN}, RTF_SN}, - {{sRTF_SV}, RTF_SV}, + {{OOO_STRING_SVTOOLS_RTF_SN}, RTF_SN}, + {{OOO_STRING_SVTOOLS_RTF_SV}, RTF_SV}, // Support for overline attributes - {{sRTF_OL}, RTF_OL}, - {{sRTF_OLW}, RTF_OLW}, - {{sRTF_OLD}, RTF_OLD}, - {{sRTF_OLDB}, RTF_OLDB}, - {{sRTF_OLNONE}, RTF_OLNONE}, - {{sRTF_OLDASH}, RTF_OLDASH}, - {{sRTF_OLDASHD}, RTF_OLDASHD}, - {{sRTF_OLDASHDD}, RTF_OLDASHDD}, - {{sRTF_OLTH}, RTF_OLTH}, - {{sRTF_OLWAVE}, RTF_OLWAVE}, - {{sRTF_OLC}, RTF_OLC}, - {{sRTF_OLTHD}, RTF_OLTHD}, - {{sRTF_OLTHDASH}, RTF_OLTHDASH}, - {{sRTF_OLLDASH}, RTF_OLLDASH}, - {{sRTF_OLTHLDASH}, RTF_OLTHLDASH}, - {{sRTF_OLTHDASHD}, RTF_OLTHDASHD}, - {{sRTF_OLTHDASHDD}, RTF_OLTHDASHDD}, - {{sRTF_OLHWAVE}, RTF_OLHWAVE}, - {{sRTF_OLOLDBWAVE}, RTF_OLOLDBWAVE} + {{OOO_STRING_SVTOOLS_RTF_OL}, RTF_OL}, + {{OOO_STRING_SVTOOLS_RTF_OLW}, RTF_OLW}, + {{OOO_STRING_SVTOOLS_RTF_OLD}, RTF_OLD}, + {{OOO_STRING_SVTOOLS_RTF_OLDB}, RTF_OLDB}, + {{OOO_STRING_SVTOOLS_RTF_OLNONE}, RTF_OLNONE}, + {{OOO_STRING_SVTOOLS_RTF_OLDASH}, RTF_OLDASH}, + {{OOO_STRING_SVTOOLS_RTF_OLDASHD}, RTF_OLDASHD}, + {{OOO_STRING_SVTOOLS_RTF_OLDASHDD}, RTF_OLDASHDD}, + {{OOO_STRING_SVTOOLS_RTF_OLTH}, RTF_OLTH}, + {{OOO_STRING_SVTOOLS_RTF_OLWAVE}, RTF_OLWAVE}, + {{OOO_STRING_SVTOOLS_RTF_OLC}, RTF_OLC}, + {{OOO_STRING_SVTOOLS_RTF_OLTHD}, RTF_OLTHD}, + {{OOO_STRING_SVTOOLS_RTF_OLTHDASH}, RTF_OLTHDASH}, + {{OOO_STRING_SVTOOLS_RTF_OLLDASH}, RTF_OLLDASH}, + {{OOO_STRING_SVTOOLS_RTF_OLTHLDASH}, RTF_OLTHLDASH}, + {{OOO_STRING_SVTOOLS_RTF_OLTHDASHD}, RTF_OLTHDASHD}, + {{OOO_STRING_SVTOOLS_RTF_OLTHDASHDD}, RTF_OLTHDASHDD}, + {{OOO_STRING_SVTOOLS_RTF_OLHWAVE}, RTF_OLHWAVE}, + {{OOO_STRING_SVTOOLS_RTF_OLOLDBWAVE}, RTF_OLOLDBWAVE} }; diff --git a/svtools/source/svrtf/rtfkeywd.hxx b/svtools/source/svrtf/rtfkeywd.hxx index e7aa2b9a645b..f76399ffd824 100644 --- a/svtools/source/svrtf/rtfkeywd.hxx +++ b/svtools/source/svrtf/rtfkeywd.hxx @@ -31,1144 +31,1114 @@ #ifndef _RTFKEYWD_HXX #define _RTFKEYWD_HXX -#include "svtools/svtdllapi.h" -#include "sal/types.h" +#include "sal/config.h" -#ifndef SVTOOLS_CONSTASCII_DECL -#define SVTOOLS_CONSTASCII_DECL( n, s ) n[sizeof(s)] -#endif -#ifndef SVTOOLS_CONSTASCII_DEF -#define SVTOOLS_CONSTASCII_DEF( n, s ) n[sizeof(s)] = s -#endif - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HEXCHAR, "\\'" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_IGNORE, "\\*" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OPTHYPH, "\\-" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SUBENTRY, "\\:" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ABSH, "\\absh" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ABSW, "\\absw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ALT, "\\alt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ANNOTATION, "\\annotation" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ANSI, "\\ansi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ATNID, "\\atnid" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AUTHOR, "\\author" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_B, "\\b" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGBDIAG, "\\bgbdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGCROSS, "\\bgcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGDCROSS, "\\bgdcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGDKBDIAG, "\\bgdkbdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGDKCROSS, "\\bgdkcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGDKDCROSS, "\\bgdkdcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGDKFDIAG, "\\bgdkfdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGDKHORIZ, "\\bgdkhoriz" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGDKVERT, "\\bgdkvert" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGFDIAG, "\\bgfdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGHORIZ, "\\bghoriz" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BGVERT, "\\bgvert" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BIN, "\\bin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BINFSXN, "\\binfsxn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BINSXN, "\\binsxn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BKMKCOLF, "\\bkmkcolf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BKMKCOLL, "\\bkmkcoll" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BKMKEND, "\\bkmkend" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BKMKSTART, "\\bkmkstart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BLUE, "\\blue" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BOX, "\\box" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRB, "\\brdrb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRBAR, "\\brdrbar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRBTW, "\\brdrbtw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRCF, "\\brdrcf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRDB, "\\brdrdb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRDOT, "\\brdrdot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRHAIR, "\\brdrhair" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRL, "\\brdrl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRR, "\\brdrr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRS, "\\brdrs" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRSH, "\\brdrsh" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRT, "\\brdrt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRTH, "\\brdrth" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRW, "\\brdrw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRSP, "\\brsp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BULLET, "\\bullet" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BUPTIM, "\\buptim" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BXE, "\\bxe" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CAPS, "\\caps" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CB, "\\cb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CBPAT, "\\cbpat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CELL, "\\cell" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CELLX, "\\cellx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CF, "\\cf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CFPAT, "\\cfpat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHATN, "\\chatn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHDATE, "\\chdate" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHDPA, "\\chdpa" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHDPL, "\\chdpl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHFTN, "\\chftn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHFTNSEP, "\\chftnsep" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHFTNSEPC, "\\chftnsepc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHPGN, "\\chpgn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHTIME, "\\chtime" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGBDIAG, "\\clbgbdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGCROSS, "\\clbgcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGDCROSS, "\\clbgdcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGDKBDIAG, "\\clbgdkbdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGDKCROSS, "\\clbgdkcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGDKDCROSS, "\\clbgdkdcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGDKFDIAG, "\\clbgdkfdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGDKHOR, "\\clbgdkhor" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGDKVERT, "\\clbgdkvert" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGFDIAG, "\\clbgfdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGHORIZ, "\\clbghoriz" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBGVERT, "\\clbgvert" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBRDRB, "\\clbrdrb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBRDRL, "\\clbrdrl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBRDRR, "\\clbrdrr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLBRDRT, "\\clbrdrt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLCBPAT, "\\clcbpat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLCFPAT, "\\clcfpat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLMGF, "\\clmgf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLMRG, "\\clmrg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLSHDNG, "\\clshdng" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_COLNO, "\\colno" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_COLORTBL, "\\colortbl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_COLS, "\\cols" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_COLSR, "\\colsr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_COLSX, "\\colsx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_COLUMN, "\\column" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_COLW, "\\colw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_COMMENT, "\\comment" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CREATIM, "\\creatim" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CTRL, "\\ctrl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DEFF, "\\deff" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DEFFORMAT, "\\defformat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DEFLANG, "\\deflang" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DEFTAB, "\\deftab" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DELETED, "\\deleted" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DFRMTXTX, "\\dfrmtxtx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DFRMTXTY, "\\dfrmtxty" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DIBITMAP, "\\dibitmap" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DN, "\\dn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DOCCOMM, "\\doccomm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DOCTEMP, "\\doctemp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DROPCAPLI, "\\dropcapli" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DROPCAPT, "\\dropcapt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ABSNOOVRLP, "\\absnoovrlp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DXFRTEXT, "\\dxfrtext" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DY, "\\dy" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_EDMINS, "\\edmins" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_EMDASH, "\\emdash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ENDASH, "\\endash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ENDDOC, "\\enddoc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ENDNHERE, "\\endnhere" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ENDNOTES, "\\endnotes" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_EXPND, "\\expnd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_EXPNDTW, "\\expndtw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_F, "\\f" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FACINGP, "\\facingp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FACPGSXN, "\\facpgsxn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FALT, "\\falt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FCHARSET, "\\fcharset" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FDECOR, "\\fdecor" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FI, "\\fi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FIELD, "\\field" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLDDIRTY, "\\flddirty" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLDEDIT, "\\fldedit" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLDINST, "\\fldinst" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLDLOCK, "\\fldlock" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLDPRIV, "\\fldpriv" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLDRSLT, "\\fldrslt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FMODERN, "\\fmodern" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FN, "\\fn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FNIL, "\\fnil" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FONTTBL, "\\fonttbl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FOOTER, "\\footer" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FOOTERF, "\\footerf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FOOTERL, "\\footerl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FOOTERR, "\\footerr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FOOTERY, "\\footery" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FOOTNOTE, "\\footnote" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FPRQ, "\\fprq" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FRACWIDTH, "\\fracwidth" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FROMAN, "\\froman" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FS, "\\fs" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FSCRIPT, "\\fscript" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FSWISS, "\\fswiss" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTECH, "\\ftech" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNBJ, "\\ftnbj" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNCN, "\\ftncn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNRESTART, "\\ftnrestart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNSEP, "\\ftnsep" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNSEPC, "\\ftnsepc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNSTART, "\\ftnstart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNTJ, "\\ftntj" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_GREEN, "\\green" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_GUTTER, "\\gutter" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_GUTTERSXN, "\\guttersxn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HEADER, "\\header" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HEADERF, "\\headerf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HEADERL, "\\headerl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HEADERR, "\\headerr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HEADERY, "\\headery" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HR, "\\hr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HYPHHOTZ, "\\hyphhotz" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_I, "\\i" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ID, "\\id" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_INFO, "\\info" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_INTBL, "\\intbl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_IXE, "\\ixe" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_KEEP, "\\keep" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_KEEPN, "\\keepn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_KERNING, "\\kerning" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_KEYCODE, "\\keycode" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_KEYWORDS, "\\keywords" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LANDSCAPE, "\\landscape" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LANG, "\\lang" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LDBLQUOTE, "\\ldblquote" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVEL, "\\level" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LI, "\\li" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LIN, "\\lin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINE, "\\line" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINEBETCOL, "\\linebetcol" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINECONT, "\\linecont" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINEMOD, "\\linemod" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINEPPAGE, "\\lineppage" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINERESTART, "\\linerestart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINESTART, "\\linestart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINESTARTS, "\\linestarts" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINEX, "\\linex" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LNDSCPSXN, "\\lndscpsxn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LQUOTE, "\\lquote" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MAC, "\\mac" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MACPICT, "\\macpict" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MAKEBACKUP, "\\makebackup" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MARGB, "\\margb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MARGBSXN, "\\margbsxn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MARGL, "\\margl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MARGLSXN, "\\marglsxn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MARGMIRROR, "\\margmirror" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MARGR, "\\margr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MARGRSXN, "\\margrsxn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MARGT, "\\margt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MARGTSXN, "\\margtsxn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MIN, "\\min" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MO, "\\mo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NEXTCSET, "\\nextcset" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NEXTFILE, "\\nextfile" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOFCHARS, "\\nofchars" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOFPAGES, "\\nofpages" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOFWORDS, "\\nofwords" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOLINE, "\\noline" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOSUPERSUB, "\\nosupersub" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOWRAP, "\\nowrap" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OPERATOR, "\\operator" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OUTL, "\\outl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PAGE, "\\page" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PAGEBB, "\\pagebb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PAPERH, "\\paperh" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PAPERW, "\\paperw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PAR, "\\par" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PARD, "\\pard" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PC, "\\pc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PCA, "\\pca" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGHSXN, "\\pghsxn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNCONT, "\\pgncont" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNDEC, "\\pgndec" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNLCLTR, "\\pgnlcltr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNLCRM, "\\pgnlcrm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNRESTART, "\\pgnrestart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNSTART, "\\pgnstart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNSTARTS, "\\pgnstarts" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNUCLTR, "\\pgnucltr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNUCRM, "\\pgnucrm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNX, "\\pgnx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNY, "\\pgny" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGWSXN, "\\pgwsxn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PHCOL, "\\phcol" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PHMRG, "\\phmrg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PHPG, "\\phpg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICCROPB, "\\piccropb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICCROPL, "\\piccropl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICCROPR, "\\piccropr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICCROPT, "\\piccropt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICH, "\\pich" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICHGOAL, "\\pichgoal" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICSCALED, "\\picscaled" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICSCALEX, "\\picscalex" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICSCALEY, "\\picscaley" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICT, "\\pict" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICW, "\\picw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICWGOAL, "\\picwgoal" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PLAIN, "\\plain" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PMMETAFILE, "\\pmmetafile" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSNEGX, "\\posnegx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSNEGY, "\\posnegy" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSX, "\\posx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSXC, "\\posxc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSXI, "\\posxi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSXL, "\\posxl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSXO, "\\posxo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSXR, "\\posxr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSY, "\\posy" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSYB, "\\posyb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSYC, "\\posyc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSYIL, "\\posyil" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSYT, "\\posyt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PRINTIM, "\\printim" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PSOVER, "\\psover" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PVMRG, "\\pvmrg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PVPARA, "\\pvpara" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PVPG, "\\pvpg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_QC, "\\qc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_QJ, "\\qj" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_QL, "\\ql" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_QR, "\\qr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RDBLQUOTE, "\\rdblquote" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RED, "\\red" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_REVBAR, "\\revbar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_REVISED, "\\revised" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_REVISIONS, "\\revisions" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_REVPROP, "\\revprop" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_REVTIM, "\\revtim" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RI, "\\ri" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RIN, "\\rin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ROW, "\\row" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RQUOTE, "\\rquote" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RTF, "\\rtf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RXE, "\\rxe" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_S, "\\s" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SA, "\\sa" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SB, "\\sb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SBASEDON, "\\sbasedon" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SBKCOL, "\\sbkcol" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SBKEVEN, "\\sbkeven" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SBKNONE, "\\sbknone" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SBKODD, "\\sbkodd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SBKPAGE, "\\sbkpage" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SBYS, "\\sbys" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SCAPS, "\\scaps" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SECT, "\\sect" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SECTD, "\\sectd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHAD, "\\shad" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHADING, "\\shading" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHIFT, "\\shift" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SL, "\\sl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SNEXT, "\\snext" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_STRIKE, "\\strike" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_STYLESHEET, "\\stylesheet" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SUB, "\\sub" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SUBJECT, "\\subject" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SUPER, "\\super" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TAB, "\\tab" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TB, "\\tb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TC, "\\tc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TCF, "\\tcf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TCL, "\\tcl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TEMPLATE, "\\template" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TITLE, "\\title" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TITLEPG, "\\titlepg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TLDOT, "\\tldot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TLEQ, "\\tleq" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TLHYPH, "\\tlhyph" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TLTH, "\\tlth" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TLUL, "\\tlul" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TQC, "\\tqc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TQDEC, "\\tqdec" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TQR, "\\tqr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TQL, "\\tql" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRGAPH, "\\trgaph" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRLEFT, "\\trleft" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TROWD, "\\trowd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRQC, "\\trqc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRQL, "\\trql" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRQR, "\\trqr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRRH, "\\trrh" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TX, "\\tx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TXE, "\\txe" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_UL, "\\ul" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULD, "\\uld" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULDB, "\\uldb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULNONE, "\\ulnone" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULW, "\\ulw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_UP, "\\up" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_V, "\\v" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_VERN, "\\vern" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_VERSION, "\\version" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_VERTALB, "\\vertalb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_VERTALC, "\\vertalc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_VERTALJ, "\\vertalj" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_VERTALT, "\\vertalt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WBITMAP, "\\wbitmap" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WBMBITSPIXEL, "\\wbmbitspixel" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WBMPLANES, "\\wbmplanes" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WBMWIDTHBYTES, "\\wbmwidthbytes" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WIDOWCTRL, "\\widowctrl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WMETAFILE, "\\wmetafile" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_XE, "\\xe" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_YR, "\\yr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOBRKHYPH, "\\_" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FORMULA, "\\|" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOBREAK, "\\~" ); - - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AB, "\\ab" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ACAPS, "\\acaps" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ACF, "\\acf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ADDITIVE, "\\additive" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ADN, "\\adn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AENDDOC, "\\aenddoc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AENDNOTES, "\\aendnotes" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AEXPND, "\\aexpnd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AF, "\\af" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFS, "\\afs" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNBJ, "\\aftnbj" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNCN, "\\aftncn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNALC, "\\aftnnalc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNAR, "\\aftnnar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNAUC, "\\aftnnauc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNCHI, "\\aftnnchi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNRLC, "\\aftnnrlc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNRUC, "\\aftnnruc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNRESTART, "\\aftnrestart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNRSTCONT, "\\aftnrstcont" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNSEP, "\\aftnsep" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNSEPC, "\\aftnsepc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNSTART, "\\aftnstart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNTJ, "\\aftntj" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AI, "\\ai" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ALANG, "\\alang" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ALLPROT, "\\allprot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ANNOTPROT, "\\annotprot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AOUTL, "\\aoutl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ASCAPS, "\\ascaps" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ASHAD, "\\ashad" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ASTRIKE, "\\astrike" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ATNAUTHOR, "\\atnauthor" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ATNICN, "\\atnicn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ATNREF, "\\atnref" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ATNTIME, "\\atntime" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ATRFEND, "\\atrfend" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ATRFSTART, "\\atrfstart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AUL, "\\aul" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AULD, "\\auld" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AULDB, "\\auldb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AULNONE, "\\aulnone" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AULW, "\\aulw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AUP, "\\aup" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BKMKPUB, "\\bkmkpub" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRDASH, "\\brdrdash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRKFRM, "\\brkfrm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CCHS, "\\cchs" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CPG, "\\cpg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CS, "\\cs" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CVMME, "\\cvmme" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DATAFIELD, "\\datafield" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DO, "\\do" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DOBXCOLUMN, "\\dobxcolumn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DOBXMARGIN, "\\dobxmargin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DOBXPAGE, "\\dobxpage" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DOBYMARGIN, "\\dobymargin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DOBYPAGE, "\\dobypage" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DOBYPARA, "\\dobypara" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DODHGT, "\\dodhgt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DOLOCK, "\\dolock" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPAENDHOL, "\\dpaendhol" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPAENDL, "\\dpaendl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPAENDSOL, "\\dpaendsol" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPAENDW, "\\dpaendw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPARC, "\\dparc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPARCFLIPX, "\\dparcflipx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPARCFLIPY, "\\dparcflipy" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPASTARTHOL, "\\dpastarthol" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPASTARTL, "\\dpastartl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPASTARTSOL, "\\dpastartsol" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPASTARTW, "\\dpastartw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCALLOUT, "\\dpcallout" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOA, "\\dpcoa" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOACCENT, "\\dpcoaccent" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOBESTFIT, "\\dpcobestfit" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOBORDER, "\\dpcoborder" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCODABS, "\\dpcodabs" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCODBOTTOM, "\\dpcodbottom" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCODCENTER, "\\dpcodcenter" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCODTOP, "\\dpcodtop" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOLENGTH, "\\dpcolength" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOMINUSX, "\\dpcominusx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOMINUSY, "\\dpcominusy" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOOFFSET, "\\dpcooffset" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOSMARTA, "\\dpcosmarta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOTDOUBLE, "\\dpcotdouble" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOTRIGHT, "\\dpcotright" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOTSINGLE, "\\dpcotsingle" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOTTRIPLE, "\\dpcottriple" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCOUNT, "\\dpcount" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPELLIPSE, "\\dpellipse" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPENDGROUP, "\\dpendgroup" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPFILLBGCB, "\\dpfillbgcb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPFILLBGCG, "\\dpfillbgcg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPFILLBGCR, "\\dpfillbgcr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPFILLBGGRAY, "\\dpfillbggray" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPFILLBGPAL, "\\dpfillbgpal" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPFILLFGCB, "\\dpfillfgcb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPFILLFGCG, "\\dpfillfgcg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPFILLFGCR, "\\dpfillfgcr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPFILLFGGRAY, "\\dpfillfggray" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPFILLFGPAL, "\\dpfillfgpal" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPFILLPAT, "\\dpfillpat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPGROUP, "\\dpgroup" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINE, "\\dpline" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINECOB, "\\dplinecob" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINECOG, "\\dplinecog" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINECOR, "\\dplinecor" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINEDADO, "\\dplinedado" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINEDADODO, "\\dplinedadodo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINEDASH, "\\dplinedash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINEDOT, "\\dplinedot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINEGRAY, "\\dplinegray" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINEHOLLOW, "\\dplinehollow" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINEPAL, "\\dplinepal" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINESOLID, "\\dplinesolid" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPLINEW, "\\dplinew" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPPOLYCOUNT, "\\dppolycount" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPPOLYGON, "\\dppolygon" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPPOLYLINE, "\\dppolyline" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPPTX, "\\dpptx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPPTY, "\\dppty" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPRECT, "\\dprect" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPROUNDR, "\\dproundr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPSHADOW, "\\dpshadow" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPSHADX, "\\dpshadx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPSHADY, "\\dpshady" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPTXBX, "\\dptxbx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPTXBXMAR, "\\dptxbxmar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPTXBXTEXT, "\\dptxbxtext" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPX, "\\dpx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPXSIZE, "\\dpxsize" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPY, "\\dpy" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPYSIZE, "\\dpysize" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DS, "\\ds" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_EMSPACE, "\\emspace" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ENSPACE, "\\enspace" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FBIDI, "\\fbidi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FET, "\\fet" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FID, "\\fid" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FILE, "\\file" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FILETBL, "\\filetbl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLDALT, "\\fldalt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FNETWORK, "\\fnetwork" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FONTEMB, "\\fontemb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FONTFILE, "\\fontfile" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FORMDISP, "\\formdisp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FORMPROT, "\\formprot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FORMSHADE, "\\formshade" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FOSNUM, "\\fosnum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FRELATIVE, "\\frelative" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNALT, "\\ftnalt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNIL, "\\ftnil" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNALC, "\\ftnnalc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNAR, "\\ftnnar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNAUC, "\\ftnnauc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNCHI, "\\ftnnchi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNRLC, "\\ftnnrlc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNRUC, "\\ftnnruc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNRSTCONT, "\\ftnrstcont" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNRSTPG, "\\ftnrstpg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTTRUETYPE, "\\fttruetype" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FVALIDDOS, "\\fvaliddos" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FVALIDHPFS, "\\fvalidhpfs" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FVALIDMAC, "\\fvalidmac" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FVALIDNTFS, "\\fvalidntfs" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HYPHAUTO, "\\hyphauto" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HYPHCAPS, "\\hyphcaps" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HYPHCONSEC, "\\hyphconsec" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HYPHPAR, "\\hyphpar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINKSELF, "\\linkself" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINKSTYLES, "\\linkstyles" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LTRCH, "\\ltrch" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LTRDOC, "\\ltrdoc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LTRMARK, "\\ltrmark" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LTRPAR, "\\ltrpar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LTRROW, "\\ltrrow" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LTRSECT, "\\ltrsect" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOCOLBAL, "\\nocolbal" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOEXTRASPRL, "\\noextrasprl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOTABIND, "\\notabind" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOWIDCTLPAR, "\\nowidctlpar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJALIAS, "\\objalias" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJALIGN, "\\objalign" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJAUTLINK, "\\objautlink" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJCLASS, "\\objclass" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJCROPB, "\\objcropb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJCROPL, "\\objcropl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJCROPR, "\\objcropr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJCROPT, "\\objcropt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJDATA, "\\objdata" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJECT, "\\object" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJEMB, "\\objemb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJH, "\\objh" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJICEMB, "\\objicemb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJLINK, "\\objlink" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJLOCK, "\\objlock" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJNAME, "\\objname" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJPUB, "\\objpub" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJSCALEX, "\\objscalex" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJSCALEY, "\\objscaley" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJSECT, "\\objsect" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJSETSIZE, "\\objsetsize" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJSUB, "\\objsub" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJTIME, "\\objtime" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJTRANSY, "\\objtransy" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJUPDATE, "\\objupdate" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJW, "\\objw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OTBLRUL, "\\otblrul" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNHN, "\\pgnhn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNHNSC, "\\pgnhnsc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNHNSH, "\\pgnhnsh" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNHNSM, "\\pgnhnsm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNHNSN, "\\pgnhnsn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNHNSP, "\\pgnhnsp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICBMP, "\\picbmp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICBPP, "\\picbpp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PN, "\\pn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNACROSS, "\\pnacross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNB, "\\pnb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNCAPS, "\\pncaps" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNCARD, "\\pncard" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNCF, "\\pncf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNDEC, "\\pndec" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNF, "\\pnf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNFS, "\\pnfs" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNHANG, "\\pnhang" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNI, "\\pni" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNINDENT, "\\pnindent" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNLCLTR, "\\pnlcltr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNLCRM, "\\pnlcrm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNLVL, "\\pnlvl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNLVLBLT, "\\pnlvlblt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNLVLBODY, "\\pnlvlbody" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNLVLCONT, "\\pnlvlcont" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNNUMONCE, "\\pnnumonce" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNORD, "\\pnord" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNORDT, "\\pnordt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNPREV, "\\pnprev" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNQC, "\\pnqc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNQL, "\\pnql" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNQR, "\\pnqr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNRESTART, "\\pnrestart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNSCAPS, "\\pnscaps" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNSECLVL, "\\pnseclvl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNSP, "\\pnsp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNSTART, "\\pnstart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNSTRIKE, "\\pnstrike" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNTEXT, "\\pntext" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNTXTA, "\\pntxta" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNTXTB, "\\pntxtb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNUCLTR, "\\pnucltr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNUCRM, "\\pnucrm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNUL, "\\pnul" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNULD, "\\pnuld" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNULDB, "\\pnuldb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNULNONE, "\\pnulnone" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNULW, "\\pnulw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PRCOLBL, "\\prcolbl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PRINTDATA, "\\printdata" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PSZ, "\\psz" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PUBAUTO, "\\pubauto" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RESULT, "\\result" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_REVAUTH, "\\revauth" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_REVDTTM, "\\revdttm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_REVPROT, "\\revprot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_REVTBL, "\\revtbl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RSLTBMP, "\\rsltbmp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RSLTMERGE, "\\rsltmerge" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RSLTPICT, "\\rsltpict" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RSLTRTF, "\\rsltrtf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RSLTTXT, "\\rslttxt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RTLCH, "\\rtlch" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RTLDOC, "\\rtldoc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RTLMARK, "\\rtlmark" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RTLPAR, "\\rtlpar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RTLROW, "\\rtlrow" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_RTLSECT, "\\rtlsect" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SEC, "\\sec" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SECTNUM, "\\sectnum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SECTUNLOCKED, "\\sectunlocked" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SLMULT, "\\slmult" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SOFTCOL, "\\softcol" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SOFTLHEIGHT, "\\softlheight" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SOFTLINE, "\\softline" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SOFTPAGE, "\\softpage" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SPRSSPBF, "\\sprsspbf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SPRSTSP, "\\sprstsp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SUBDOCUMENT, "\\subdocument" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SWPBDR, "\\swpbdr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TCN, "\\tcn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRANSMF, "\\transmf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRBRDRB, "\\trbrdrb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRBRDRH, "\\trbrdrh" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRBRDRL, "\\trbrdrl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRBRDRR, "\\trbrdrr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRBRDRT, "\\trbrdrt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRBRDRV, "\\trbrdrv" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRHDR, "\\trhdr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRKEEP, "\\trkeep" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRPADDB, "\\trpaddb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRPADDL, "\\trpaddl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRPADDR, "\\trpaddr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRPADDT, "\\trpaddt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRPADDFB, "\\trpaddfb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRPADDFL, "\\trpaddfl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRPADDFR, "\\trpaddfr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRPADDFT, "\\trpaddft" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WRAPTRSP, "\\wraptrsp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_XEF, "\\xef" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ZWJ, "\\zwj" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ZWNJ, "\\zwnj" ); +#define OOO_STRING_SVTOOLS_RTF_HEXCHAR "\\'" +#define OOO_STRING_SVTOOLS_RTF_IGNORE "\\*" +#define OOO_STRING_SVTOOLS_RTF_OPTHYPH "\\-" +#define OOO_STRING_SVTOOLS_RTF_SUBENTRY "\\:" +#define OOO_STRING_SVTOOLS_RTF_ABSH "\\absh" +#define OOO_STRING_SVTOOLS_RTF_ABSW "\\absw" +#define OOO_STRING_SVTOOLS_RTF_ALT "\\alt" +#define OOO_STRING_SVTOOLS_RTF_ANNOTATION "\\annotation" +#define OOO_STRING_SVTOOLS_RTF_ANSI "\\ansi" +#define OOO_STRING_SVTOOLS_RTF_ATNID "\\atnid" +#define OOO_STRING_SVTOOLS_RTF_AUTHOR "\\author" +#define OOO_STRING_SVTOOLS_RTF_B "\\b" +#define OOO_STRING_SVTOOLS_RTF_BGBDIAG "\\bgbdiag" +#define OOO_STRING_SVTOOLS_RTF_BGCROSS "\\bgcross" +#define OOO_STRING_SVTOOLS_RTF_BGDCROSS "\\bgdcross" +#define OOO_STRING_SVTOOLS_RTF_BGDKBDIAG "\\bgdkbdiag" +#define OOO_STRING_SVTOOLS_RTF_BGDKCROSS "\\bgdkcross" +#define OOO_STRING_SVTOOLS_RTF_BGDKDCROSS "\\bgdkdcross" +#define OOO_STRING_SVTOOLS_RTF_BGDKFDIAG "\\bgdkfdiag" +#define OOO_STRING_SVTOOLS_RTF_BGDKHORIZ "\\bgdkhoriz" +#define OOO_STRING_SVTOOLS_RTF_BGDKVERT "\\bgdkvert" +#define OOO_STRING_SVTOOLS_RTF_BGFDIAG "\\bgfdiag" +#define OOO_STRING_SVTOOLS_RTF_BGHORIZ "\\bghoriz" +#define OOO_STRING_SVTOOLS_RTF_BGVERT "\\bgvert" +#define OOO_STRING_SVTOOLS_RTF_BIN "\\bin" +#define OOO_STRING_SVTOOLS_RTF_BINFSXN "\\binfsxn" +#define OOO_STRING_SVTOOLS_RTF_BINSXN "\\binsxn" +#define OOO_STRING_SVTOOLS_RTF_BKMKCOLF "\\bkmkcolf" +#define OOO_STRING_SVTOOLS_RTF_BKMKCOLL "\\bkmkcoll" +#define OOO_STRING_SVTOOLS_RTF_BKMKEND "\\bkmkend" +#define OOO_STRING_SVTOOLS_RTF_BKMKSTART "\\bkmkstart" +#define OOO_STRING_SVTOOLS_RTF_BLUE "\\blue" +#define OOO_STRING_SVTOOLS_RTF_BOX "\\box" +#define OOO_STRING_SVTOOLS_RTF_BRDRB "\\brdrb" +#define OOO_STRING_SVTOOLS_RTF_BRDRBAR "\\brdrbar" +#define OOO_STRING_SVTOOLS_RTF_BRDRBTW "\\brdrbtw" +#define OOO_STRING_SVTOOLS_RTF_BRDRCF "\\brdrcf" +#define OOO_STRING_SVTOOLS_RTF_BRDRDB "\\brdrdb" +#define OOO_STRING_SVTOOLS_RTF_BRDRDOT "\\brdrdot" +#define OOO_STRING_SVTOOLS_RTF_BRDRHAIR "\\brdrhair" +#define OOO_STRING_SVTOOLS_RTF_BRDRL "\\brdrl" +#define OOO_STRING_SVTOOLS_RTF_BRDRR "\\brdrr" +#define OOO_STRING_SVTOOLS_RTF_BRDRS "\\brdrs" +#define OOO_STRING_SVTOOLS_RTF_BRDRSH "\\brdrsh" +#define OOO_STRING_SVTOOLS_RTF_BRDRT "\\brdrt" +#define OOO_STRING_SVTOOLS_RTF_BRDRTH "\\brdrth" +#define OOO_STRING_SVTOOLS_RTF_BRDRW "\\brdrw" +#define OOO_STRING_SVTOOLS_RTF_BRSP "\\brsp" +#define OOO_STRING_SVTOOLS_RTF_BULLET "\\bullet" +#define OOO_STRING_SVTOOLS_RTF_BUPTIM "\\buptim" +#define OOO_STRING_SVTOOLS_RTF_BXE "\\bxe" +#define OOO_STRING_SVTOOLS_RTF_CAPS "\\caps" +#define OOO_STRING_SVTOOLS_RTF_CB "\\cb" +#define OOO_STRING_SVTOOLS_RTF_CBPAT "\\cbpat" +#define OOO_STRING_SVTOOLS_RTF_CELL "\\cell" +#define OOO_STRING_SVTOOLS_RTF_CELLX "\\cellx" +#define OOO_STRING_SVTOOLS_RTF_CF "\\cf" +#define OOO_STRING_SVTOOLS_RTF_CFPAT "\\cfpat" +#define OOO_STRING_SVTOOLS_RTF_CHATN "\\chatn" +#define OOO_STRING_SVTOOLS_RTF_CHDATE "\\chdate" +#define OOO_STRING_SVTOOLS_RTF_CHDPA "\\chdpa" +#define OOO_STRING_SVTOOLS_RTF_CHDPL "\\chdpl" +#define OOO_STRING_SVTOOLS_RTF_CHFTN "\\chftn" +#define OOO_STRING_SVTOOLS_RTF_CHFTNSEP "\\chftnsep" +#define OOO_STRING_SVTOOLS_RTF_CHFTNSEPC "\\chftnsepc" +#define OOO_STRING_SVTOOLS_RTF_CHPGN "\\chpgn" +#define OOO_STRING_SVTOOLS_RTF_CHTIME "\\chtime" +#define OOO_STRING_SVTOOLS_RTF_CLBGBDIAG "\\clbgbdiag" +#define OOO_STRING_SVTOOLS_RTF_CLBGCROSS "\\clbgcross" +#define OOO_STRING_SVTOOLS_RTF_CLBGDCROSS "\\clbgdcross" +#define OOO_STRING_SVTOOLS_RTF_CLBGDKBDIAG "\\clbgdkbdiag" +#define OOO_STRING_SVTOOLS_RTF_CLBGDKCROSS "\\clbgdkcross" +#define OOO_STRING_SVTOOLS_RTF_CLBGDKDCROSS "\\clbgdkdcross" +#define OOO_STRING_SVTOOLS_RTF_CLBGDKFDIAG "\\clbgdkfdiag" +#define OOO_STRING_SVTOOLS_RTF_CLBGDKHOR "\\clbgdkhor" +#define OOO_STRING_SVTOOLS_RTF_CLBGDKVERT "\\clbgdkvert" +#define OOO_STRING_SVTOOLS_RTF_CLBGFDIAG "\\clbgfdiag" +#define OOO_STRING_SVTOOLS_RTF_CLBGHORIZ "\\clbghoriz" +#define OOO_STRING_SVTOOLS_RTF_CLBGVERT "\\clbgvert" +#define OOO_STRING_SVTOOLS_RTF_CLBRDRB "\\clbrdrb" +#define OOO_STRING_SVTOOLS_RTF_CLBRDRL "\\clbrdrl" +#define OOO_STRING_SVTOOLS_RTF_CLBRDRR "\\clbrdrr" +#define OOO_STRING_SVTOOLS_RTF_CLBRDRT "\\clbrdrt" +#define OOO_STRING_SVTOOLS_RTF_CLCBPAT "\\clcbpat" +#define OOO_STRING_SVTOOLS_RTF_CLCFPAT "\\clcfpat" +#define OOO_STRING_SVTOOLS_RTF_CLMGF "\\clmgf" +#define OOO_STRING_SVTOOLS_RTF_CLMRG "\\clmrg" +#define OOO_STRING_SVTOOLS_RTF_CLSHDNG "\\clshdng" +#define OOO_STRING_SVTOOLS_RTF_COLNO "\\colno" +#define OOO_STRING_SVTOOLS_RTF_COLORTBL "\\colortbl" +#define OOO_STRING_SVTOOLS_RTF_COLS "\\cols" +#define OOO_STRING_SVTOOLS_RTF_COLSR "\\colsr" +#define OOO_STRING_SVTOOLS_RTF_COLSX "\\colsx" +#define OOO_STRING_SVTOOLS_RTF_COLUMN "\\column" +#define OOO_STRING_SVTOOLS_RTF_COLW "\\colw" +#define OOO_STRING_SVTOOLS_RTF_COMMENT "\\comment" +#define OOO_STRING_SVTOOLS_RTF_CREATIM "\\creatim" +#define OOO_STRING_SVTOOLS_RTF_CTRL "\\ctrl" +#define OOO_STRING_SVTOOLS_RTF_DEFF "\\deff" +#define OOO_STRING_SVTOOLS_RTF_DEFFORMAT "\\defformat" +#define OOO_STRING_SVTOOLS_RTF_DEFLANG "\\deflang" +#define OOO_STRING_SVTOOLS_RTF_DEFTAB "\\deftab" +#define OOO_STRING_SVTOOLS_RTF_DELETED "\\deleted" +#define OOO_STRING_SVTOOLS_RTF_DFRMTXTX "\\dfrmtxtx" +#define OOO_STRING_SVTOOLS_RTF_DFRMTXTY "\\dfrmtxty" +#define OOO_STRING_SVTOOLS_RTF_DIBITMAP "\\dibitmap" +#define OOO_STRING_SVTOOLS_RTF_DN "\\dn" +#define OOO_STRING_SVTOOLS_RTF_DOCCOMM "\\doccomm" +#define OOO_STRING_SVTOOLS_RTF_DOCTEMP "\\doctemp" +#define OOO_STRING_SVTOOLS_RTF_DROPCAPLI "\\dropcapli" +#define OOO_STRING_SVTOOLS_RTF_DROPCAPT "\\dropcapt" +#define OOO_STRING_SVTOOLS_RTF_ABSNOOVRLP "\\absnoovrlp" +#define OOO_STRING_SVTOOLS_RTF_DXFRTEXT "\\dxfrtext" +#define OOO_STRING_SVTOOLS_RTF_DY "\\dy" +#define OOO_STRING_SVTOOLS_RTF_EDMINS "\\edmins" +#define OOO_STRING_SVTOOLS_RTF_EMDASH "\\emdash" +#define OOO_STRING_SVTOOLS_RTF_ENDASH "\\endash" +#define OOO_STRING_SVTOOLS_RTF_ENDDOC "\\enddoc" +#define OOO_STRING_SVTOOLS_RTF_ENDNHERE "\\endnhere" +#define OOO_STRING_SVTOOLS_RTF_ENDNOTES "\\endnotes" +#define OOO_STRING_SVTOOLS_RTF_EXPND "\\expnd" +#define OOO_STRING_SVTOOLS_RTF_EXPNDTW "\\expndtw" +#define OOO_STRING_SVTOOLS_RTF_F "\\f" +#define OOO_STRING_SVTOOLS_RTF_FACINGP "\\facingp" +#define OOO_STRING_SVTOOLS_RTF_FACPGSXN "\\facpgsxn" +#define OOO_STRING_SVTOOLS_RTF_FALT "\\falt" +#define OOO_STRING_SVTOOLS_RTF_FCHARSET "\\fcharset" +#define OOO_STRING_SVTOOLS_RTF_FDECOR "\\fdecor" +#define OOO_STRING_SVTOOLS_RTF_FI "\\fi" +#define OOO_STRING_SVTOOLS_RTF_FIELD "\\field" +#define OOO_STRING_SVTOOLS_RTF_FLDDIRTY "\\flddirty" +#define OOO_STRING_SVTOOLS_RTF_FLDEDIT "\\fldedit" +#define OOO_STRING_SVTOOLS_RTF_FLDINST "\\fldinst" +#define OOO_STRING_SVTOOLS_RTF_FLDLOCK "\\fldlock" +#define OOO_STRING_SVTOOLS_RTF_FLDPRIV "\\fldpriv" +#define OOO_STRING_SVTOOLS_RTF_FLDRSLT "\\fldrslt" +#define OOO_STRING_SVTOOLS_RTF_FMODERN "\\fmodern" +#define OOO_STRING_SVTOOLS_RTF_FN "\\fn" +#define OOO_STRING_SVTOOLS_RTF_FNIL "\\fnil" +#define OOO_STRING_SVTOOLS_RTF_FONTTBL "\\fonttbl" +#define OOO_STRING_SVTOOLS_RTF_FOOTER "\\footer" +#define OOO_STRING_SVTOOLS_RTF_FOOTERF "\\footerf" +#define OOO_STRING_SVTOOLS_RTF_FOOTERL "\\footerl" +#define OOO_STRING_SVTOOLS_RTF_FOOTERR "\\footerr" +#define OOO_STRING_SVTOOLS_RTF_FOOTERY "\\footery" +#define OOO_STRING_SVTOOLS_RTF_FOOTNOTE "\\footnote" +#define OOO_STRING_SVTOOLS_RTF_FPRQ "\\fprq" +#define OOO_STRING_SVTOOLS_RTF_FRACWIDTH "\\fracwidth" +#define OOO_STRING_SVTOOLS_RTF_FROMAN "\\froman" +#define OOO_STRING_SVTOOLS_RTF_FS "\\fs" +#define OOO_STRING_SVTOOLS_RTF_FSCRIPT "\\fscript" +#define OOO_STRING_SVTOOLS_RTF_FSWISS "\\fswiss" +#define OOO_STRING_SVTOOLS_RTF_FTECH "\\ftech" +#define OOO_STRING_SVTOOLS_RTF_FTNBJ "\\ftnbj" +#define OOO_STRING_SVTOOLS_RTF_FTNCN "\\ftncn" +#define OOO_STRING_SVTOOLS_RTF_FTNRESTART "\\ftnrestart" +#define OOO_STRING_SVTOOLS_RTF_FTNSEP "\\ftnsep" +#define OOO_STRING_SVTOOLS_RTF_FTNSEPC "\\ftnsepc" +#define OOO_STRING_SVTOOLS_RTF_FTNSTART "\\ftnstart" +#define OOO_STRING_SVTOOLS_RTF_FTNTJ "\\ftntj" +#define OOO_STRING_SVTOOLS_RTF_GREEN "\\green" +#define OOO_STRING_SVTOOLS_RTF_GUTTER "\\gutter" +#define OOO_STRING_SVTOOLS_RTF_GUTTERSXN "\\guttersxn" +#define OOO_STRING_SVTOOLS_RTF_HEADER "\\header" +#define OOO_STRING_SVTOOLS_RTF_HEADERF "\\headerf" +#define OOO_STRING_SVTOOLS_RTF_HEADERL "\\headerl" +#define OOO_STRING_SVTOOLS_RTF_HEADERR "\\headerr" +#define OOO_STRING_SVTOOLS_RTF_HEADERY "\\headery" +#define OOO_STRING_SVTOOLS_RTF_HR "\\hr" +#define OOO_STRING_SVTOOLS_RTF_HYPHHOTZ "\\hyphhotz" +#define OOO_STRING_SVTOOLS_RTF_I "\\i" +#define OOO_STRING_SVTOOLS_RTF_ID "\\id" +#define OOO_STRING_SVTOOLS_RTF_INFO "\\info" +#define OOO_STRING_SVTOOLS_RTF_INTBL "\\intbl" +#define OOO_STRING_SVTOOLS_RTF_IXE "\\ixe" +#define OOO_STRING_SVTOOLS_RTF_KEEP "\\keep" +#define OOO_STRING_SVTOOLS_RTF_KEEPN "\\keepn" +#define OOO_STRING_SVTOOLS_RTF_KERNING "\\kerning" +#define OOO_STRING_SVTOOLS_RTF_KEYCODE "\\keycode" +#define OOO_STRING_SVTOOLS_RTF_KEYWORDS "\\keywords" +#define OOO_STRING_SVTOOLS_RTF_LANDSCAPE "\\landscape" +#define OOO_STRING_SVTOOLS_RTF_LANG "\\lang" +#define OOO_STRING_SVTOOLS_RTF_LDBLQUOTE "\\ldblquote" +#define OOO_STRING_SVTOOLS_RTF_LEVEL "\\level" +#define OOO_STRING_SVTOOLS_RTF_LI "\\li" +#define OOO_STRING_SVTOOLS_RTF_LIN "\\lin" +#define OOO_STRING_SVTOOLS_RTF_LINE "\\line" +#define OOO_STRING_SVTOOLS_RTF_LINEBETCOL "\\linebetcol" +#define OOO_STRING_SVTOOLS_RTF_LINECONT "\\linecont" +#define OOO_STRING_SVTOOLS_RTF_LINEMOD "\\linemod" +#define OOO_STRING_SVTOOLS_RTF_LINEPPAGE "\\lineppage" +#define OOO_STRING_SVTOOLS_RTF_LINERESTART "\\linerestart" +#define OOO_STRING_SVTOOLS_RTF_LINESTART "\\linestart" +#define OOO_STRING_SVTOOLS_RTF_LINESTARTS "\\linestarts" +#define OOO_STRING_SVTOOLS_RTF_LINEX "\\linex" +#define OOO_STRING_SVTOOLS_RTF_LNDSCPSXN "\\lndscpsxn" +#define OOO_STRING_SVTOOLS_RTF_LQUOTE "\\lquote" +#define OOO_STRING_SVTOOLS_RTF_MAC "\\mac" +#define OOO_STRING_SVTOOLS_RTF_MACPICT "\\macpict" +#define OOO_STRING_SVTOOLS_RTF_MAKEBACKUP "\\makebackup" +#define OOO_STRING_SVTOOLS_RTF_MARGB "\\margb" +#define OOO_STRING_SVTOOLS_RTF_MARGBSXN "\\margbsxn" +#define OOO_STRING_SVTOOLS_RTF_MARGL "\\margl" +#define OOO_STRING_SVTOOLS_RTF_MARGLSXN "\\marglsxn" +#define OOO_STRING_SVTOOLS_RTF_MARGMIRROR "\\margmirror" +#define OOO_STRING_SVTOOLS_RTF_MARGR "\\margr" +#define OOO_STRING_SVTOOLS_RTF_MARGRSXN "\\margrsxn" +#define OOO_STRING_SVTOOLS_RTF_MARGT "\\margt" +#define OOO_STRING_SVTOOLS_RTF_MARGTSXN "\\margtsxn" +#define OOO_STRING_SVTOOLS_RTF_MIN "\\min" +#define OOO_STRING_SVTOOLS_RTF_MO "\\mo" +#define OOO_STRING_SVTOOLS_RTF_NEXTCSET "\\nextcset" +#define OOO_STRING_SVTOOLS_RTF_NEXTFILE "\\nextfile" +#define OOO_STRING_SVTOOLS_RTF_NOFCHARS "\\nofchars" +#define OOO_STRING_SVTOOLS_RTF_NOFPAGES "\\nofpages" +#define OOO_STRING_SVTOOLS_RTF_NOFWORDS "\\nofwords" +#define OOO_STRING_SVTOOLS_RTF_NOLINE "\\noline" +#define OOO_STRING_SVTOOLS_RTF_NOSUPERSUB "\\nosupersub" +#define OOO_STRING_SVTOOLS_RTF_NOWRAP "\\nowrap" +#define OOO_STRING_SVTOOLS_RTF_OPERATOR "\\operator" +#define OOO_STRING_SVTOOLS_RTF_OUTL "\\outl" +#define OOO_STRING_SVTOOLS_RTF_PAGE "\\page" +#define OOO_STRING_SVTOOLS_RTF_PAGEBB "\\pagebb" +#define OOO_STRING_SVTOOLS_RTF_PAPERH "\\paperh" +#define OOO_STRING_SVTOOLS_RTF_PAPERW "\\paperw" +#define OOO_STRING_SVTOOLS_RTF_PAR "\\par" +#define OOO_STRING_SVTOOLS_RTF_PARD "\\pard" +#define OOO_STRING_SVTOOLS_RTF_PC "\\pc" +#define OOO_STRING_SVTOOLS_RTF_PCA "\\pca" +#define OOO_STRING_SVTOOLS_RTF_PGHSXN "\\pghsxn" +#define OOO_STRING_SVTOOLS_RTF_PGNCONT "\\pgncont" +#define OOO_STRING_SVTOOLS_RTF_PGNDEC "\\pgndec" +#define OOO_STRING_SVTOOLS_RTF_PGNLCLTR "\\pgnlcltr" +#define OOO_STRING_SVTOOLS_RTF_PGNLCRM "\\pgnlcrm" +#define OOO_STRING_SVTOOLS_RTF_PGNRESTART "\\pgnrestart" +#define OOO_STRING_SVTOOLS_RTF_PGNSTART "\\pgnstart" +#define OOO_STRING_SVTOOLS_RTF_PGNSTARTS "\\pgnstarts" +#define OOO_STRING_SVTOOLS_RTF_PGNUCLTR "\\pgnucltr" +#define OOO_STRING_SVTOOLS_RTF_PGNUCRM "\\pgnucrm" +#define OOO_STRING_SVTOOLS_RTF_PGNX "\\pgnx" +#define OOO_STRING_SVTOOLS_RTF_PGNY "\\pgny" +#define OOO_STRING_SVTOOLS_RTF_PGWSXN "\\pgwsxn" +#define OOO_STRING_SVTOOLS_RTF_PHCOL "\\phcol" +#define OOO_STRING_SVTOOLS_RTF_PHMRG "\\phmrg" +#define OOO_STRING_SVTOOLS_RTF_PHPG "\\phpg" +#define OOO_STRING_SVTOOLS_RTF_PICCROPB "\\piccropb" +#define OOO_STRING_SVTOOLS_RTF_PICCROPL "\\piccropl" +#define OOO_STRING_SVTOOLS_RTF_PICCROPR "\\piccropr" +#define OOO_STRING_SVTOOLS_RTF_PICCROPT "\\piccropt" +#define OOO_STRING_SVTOOLS_RTF_PICH "\\pich" +#define OOO_STRING_SVTOOLS_RTF_PICHGOAL "\\pichgoal" +#define OOO_STRING_SVTOOLS_RTF_PICSCALED "\\picscaled" +#define OOO_STRING_SVTOOLS_RTF_PICSCALEX "\\picscalex" +#define OOO_STRING_SVTOOLS_RTF_PICSCALEY "\\picscaley" +#define OOO_STRING_SVTOOLS_RTF_PICT "\\pict" +#define OOO_STRING_SVTOOLS_RTF_PICW "\\picw" +#define OOO_STRING_SVTOOLS_RTF_PICWGOAL "\\picwgoal" +#define OOO_STRING_SVTOOLS_RTF_PLAIN "\\plain" +#define OOO_STRING_SVTOOLS_RTF_PMMETAFILE "\\pmmetafile" +#define OOO_STRING_SVTOOLS_RTF_POSNEGX "\\posnegx" +#define OOO_STRING_SVTOOLS_RTF_POSNEGY "\\posnegy" +#define OOO_STRING_SVTOOLS_RTF_POSX "\\posx" +#define OOO_STRING_SVTOOLS_RTF_POSXC "\\posxc" +#define OOO_STRING_SVTOOLS_RTF_POSXI "\\posxi" +#define OOO_STRING_SVTOOLS_RTF_POSXL "\\posxl" +#define OOO_STRING_SVTOOLS_RTF_POSXO "\\posxo" +#define OOO_STRING_SVTOOLS_RTF_POSXR "\\posxr" +#define OOO_STRING_SVTOOLS_RTF_POSY "\\posy" +#define OOO_STRING_SVTOOLS_RTF_POSYB "\\posyb" +#define OOO_STRING_SVTOOLS_RTF_POSYC "\\posyc" +#define OOO_STRING_SVTOOLS_RTF_POSYIL "\\posyil" +#define OOO_STRING_SVTOOLS_RTF_POSYT "\\posyt" +#define OOO_STRING_SVTOOLS_RTF_PRINTIM "\\printim" +#define OOO_STRING_SVTOOLS_RTF_PSOVER "\\psover" +#define OOO_STRING_SVTOOLS_RTF_PVMRG "\\pvmrg" +#define OOO_STRING_SVTOOLS_RTF_PVPARA "\\pvpara" +#define OOO_STRING_SVTOOLS_RTF_PVPG "\\pvpg" +#define OOO_STRING_SVTOOLS_RTF_QC "\\qc" +#define OOO_STRING_SVTOOLS_RTF_QJ "\\qj" +#define OOO_STRING_SVTOOLS_RTF_QL "\\ql" +#define OOO_STRING_SVTOOLS_RTF_QR "\\qr" +#define OOO_STRING_SVTOOLS_RTF_RDBLQUOTE "\\rdblquote" +#define OOO_STRING_SVTOOLS_RTF_RED "\\red" +#define OOO_STRING_SVTOOLS_RTF_REVBAR "\\revbar" +#define OOO_STRING_SVTOOLS_RTF_REVISED "\\revised" +#define OOO_STRING_SVTOOLS_RTF_REVISIONS "\\revisions" +#define OOO_STRING_SVTOOLS_RTF_REVPROP "\\revprop" +#define OOO_STRING_SVTOOLS_RTF_REVTIM "\\revtim" +#define OOO_STRING_SVTOOLS_RTF_RI "\\ri" +#define OOO_STRING_SVTOOLS_RTF_RIN "\\rin" +#define OOO_STRING_SVTOOLS_RTF_ROW "\\row" +#define OOO_STRING_SVTOOLS_RTF_RQUOTE "\\rquote" +#define OOO_STRING_SVTOOLS_RTF_RTF "\\rtf" +#define OOO_STRING_SVTOOLS_RTF_RXE "\\rxe" +#define OOO_STRING_SVTOOLS_RTF_S "\\s" +#define OOO_STRING_SVTOOLS_RTF_SA "\\sa" +#define OOO_STRING_SVTOOLS_RTF_SB "\\sb" +#define OOO_STRING_SVTOOLS_RTF_SBASEDON "\\sbasedon" +#define OOO_STRING_SVTOOLS_RTF_SBKCOL "\\sbkcol" +#define OOO_STRING_SVTOOLS_RTF_SBKEVEN "\\sbkeven" +#define OOO_STRING_SVTOOLS_RTF_SBKNONE "\\sbknone" +#define OOO_STRING_SVTOOLS_RTF_SBKODD "\\sbkodd" +#define OOO_STRING_SVTOOLS_RTF_SBKPAGE "\\sbkpage" +#define OOO_STRING_SVTOOLS_RTF_SBYS "\\sbys" +#define OOO_STRING_SVTOOLS_RTF_SCAPS "\\scaps" +#define OOO_STRING_SVTOOLS_RTF_SECT "\\sect" +#define OOO_STRING_SVTOOLS_RTF_SECTD "\\sectd" +#define OOO_STRING_SVTOOLS_RTF_SHAD "\\shad" +#define OOO_STRING_SVTOOLS_RTF_SHADING "\\shading" +#define OOO_STRING_SVTOOLS_RTF_SHIFT "\\shift" +#define OOO_STRING_SVTOOLS_RTF_SL "\\sl" +#define OOO_STRING_SVTOOLS_RTF_SNEXT "\\snext" +#define OOO_STRING_SVTOOLS_RTF_STRIKE "\\strike" +#define OOO_STRING_SVTOOLS_RTF_STYLESHEET "\\stylesheet" +#define OOO_STRING_SVTOOLS_RTF_SUB "\\sub" +#define OOO_STRING_SVTOOLS_RTF_SUBJECT "\\subject" +#define OOO_STRING_SVTOOLS_RTF_SUPER "\\super" +#define OOO_STRING_SVTOOLS_RTF_TAB "\\tab" +#define OOO_STRING_SVTOOLS_RTF_TB "\\tb" +#define OOO_STRING_SVTOOLS_RTF_TC "\\tc" +#define OOO_STRING_SVTOOLS_RTF_TCF "\\tcf" +#define OOO_STRING_SVTOOLS_RTF_TCL "\\tcl" +#define OOO_STRING_SVTOOLS_RTF_TEMPLATE "\\template" +#define OOO_STRING_SVTOOLS_RTF_TITLE "\\title" +#define OOO_STRING_SVTOOLS_RTF_TITLEPG "\\titlepg" +#define OOO_STRING_SVTOOLS_RTF_TLDOT "\\tldot" +#define OOO_STRING_SVTOOLS_RTF_TLEQ "\\tleq" +#define OOO_STRING_SVTOOLS_RTF_TLHYPH "\\tlhyph" +#define OOO_STRING_SVTOOLS_RTF_TLTH "\\tlth" +#define OOO_STRING_SVTOOLS_RTF_TLUL "\\tlul" +#define OOO_STRING_SVTOOLS_RTF_TQC "\\tqc" +#define OOO_STRING_SVTOOLS_RTF_TQDEC "\\tqdec" +#define OOO_STRING_SVTOOLS_RTF_TQR "\\tqr" +#define OOO_STRING_SVTOOLS_RTF_TQL "\\tql" +#define OOO_STRING_SVTOOLS_RTF_TRGAPH "\\trgaph" +#define OOO_STRING_SVTOOLS_RTF_TRLEFT "\\trleft" +#define OOO_STRING_SVTOOLS_RTF_TROWD "\\trowd" +#define OOO_STRING_SVTOOLS_RTF_TRQC "\\trqc" +#define OOO_STRING_SVTOOLS_RTF_TRQL "\\trql" +#define OOO_STRING_SVTOOLS_RTF_TRQR "\\trqr" +#define OOO_STRING_SVTOOLS_RTF_TRRH "\\trrh" +#define OOO_STRING_SVTOOLS_RTF_TX "\\tx" +#define OOO_STRING_SVTOOLS_RTF_TXE "\\txe" +#define OOO_STRING_SVTOOLS_RTF_UL "\\ul" +#define OOO_STRING_SVTOOLS_RTF_ULD "\\uld" +#define OOO_STRING_SVTOOLS_RTF_ULDB "\\uldb" +#define OOO_STRING_SVTOOLS_RTF_ULNONE "\\ulnone" +#define OOO_STRING_SVTOOLS_RTF_ULW "\\ulw" +#define OOO_STRING_SVTOOLS_RTF_UP "\\up" +#define OOO_STRING_SVTOOLS_RTF_V "\\v" +#define OOO_STRING_SVTOOLS_RTF_VERN "\\vern" +#define OOO_STRING_SVTOOLS_RTF_VERSION "\\version" +#define OOO_STRING_SVTOOLS_RTF_VERTALB "\\vertalb" +#define OOO_STRING_SVTOOLS_RTF_VERTALC "\\vertalc" +#define OOO_STRING_SVTOOLS_RTF_VERTALJ "\\vertalj" +#define OOO_STRING_SVTOOLS_RTF_VERTALT "\\vertalt" +#define OOO_STRING_SVTOOLS_RTF_WBITMAP "\\wbitmap" +#define OOO_STRING_SVTOOLS_RTF_WBMBITSPIXEL "\\wbmbitspixel" +#define OOO_STRING_SVTOOLS_RTF_WBMPLANES "\\wbmplanes" +#define OOO_STRING_SVTOOLS_RTF_WBMWIDTHBYTES "\\wbmwidthbytes" +#define OOO_STRING_SVTOOLS_RTF_WIDOWCTRL "\\widowctrl" +#define OOO_STRING_SVTOOLS_RTF_WMETAFILE "\\wmetafile" +#define OOO_STRING_SVTOOLS_RTF_XE "\\xe" +#define OOO_STRING_SVTOOLS_RTF_YR "\\yr" +#define OOO_STRING_SVTOOLS_RTF_NOBRKHYPH "\\_" +#define OOO_STRING_SVTOOLS_RTF_FORMULA "\\|" +#define OOO_STRING_SVTOOLS_RTF_NOBREAK "\\~" +#define OOO_STRING_SVTOOLS_RTF_AB "\\ab" +#define OOO_STRING_SVTOOLS_RTF_ACAPS "\\acaps" +#define OOO_STRING_SVTOOLS_RTF_ACF "\\acf" +#define OOO_STRING_SVTOOLS_RTF_ADDITIVE "\\additive" +#define OOO_STRING_SVTOOLS_RTF_ADN "\\adn" +#define OOO_STRING_SVTOOLS_RTF_AENDDOC "\\aenddoc" +#define OOO_STRING_SVTOOLS_RTF_AENDNOTES "\\aendnotes" +#define OOO_STRING_SVTOOLS_RTF_AEXPND "\\aexpnd" +#define OOO_STRING_SVTOOLS_RTF_AF "\\af" +#define OOO_STRING_SVTOOLS_RTF_AFS "\\afs" +#define OOO_STRING_SVTOOLS_RTF_AFTNBJ "\\aftnbj" +#define OOO_STRING_SVTOOLS_RTF_AFTNCN "\\aftncn" +#define OOO_STRING_SVTOOLS_RTF_AFTNNALC "\\aftnnalc" +#define OOO_STRING_SVTOOLS_RTF_AFTNNAR "\\aftnnar" +#define OOO_STRING_SVTOOLS_RTF_AFTNNAUC "\\aftnnauc" +#define OOO_STRING_SVTOOLS_RTF_AFTNNCHI "\\aftnnchi" +#define OOO_STRING_SVTOOLS_RTF_AFTNNRLC "\\aftnnrlc" +#define OOO_STRING_SVTOOLS_RTF_AFTNNRUC "\\aftnnruc" +#define OOO_STRING_SVTOOLS_RTF_AFTNRESTART "\\aftnrestart" +#define OOO_STRING_SVTOOLS_RTF_AFTNRSTCONT "\\aftnrstcont" +#define OOO_STRING_SVTOOLS_RTF_AFTNSEP "\\aftnsep" +#define OOO_STRING_SVTOOLS_RTF_AFTNSEPC "\\aftnsepc" +#define OOO_STRING_SVTOOLS_RTF_AFTNSTART "\\aftnstart" +#define OOO_STRING_SVTOOLS_RTF_AFTNTJ "\\aftntj" +#define OOO_STRING_SVTOOLS_RTF_AI "\\ai" +#define OOO_STRING_SVTOOLS_RTF_ALANG "\\alang" +#define OOO_STRING_SVTOOLS_RTF_ALLPROT "\\allprot" +#define OOO_STRING_SVTOOLS_RTF_ANNOTPROT "\\annotprot" +#define OOO_STRING_SVTOOLS_RTF_AOUTL "\\aoutl" +#define OOO_STRING_SVTOOLS_RTF_ASCAPS "\\ascaps" +#define OOO_STRING_SVTOOLS_RTF_ASHAD "\\ashad" +#define OOO_STRING_SVTOOLS_RTF_ASTRIKE "\\astrike" +#define OOO_STRING_SVTOOLS_RTF_ATNAUTHOR "\\atnauthor" +#define OOO_STRING_SVTOOLS_RTF_ATNICN "\\atnicn" +#define OOO_STRING_SVTOOLS_RTF_ATNREF "\\atnref" +#define OOO_STRING_SVTOOLS_RTF_ATNTIME "\\atntime" +#define OOO_STRING_SVTOOLS_RTF_ATRFEND "\\atrfend" +#define OOO_STRING_SVTOOLS_RTF_ATRFSTART "\\atrfstart" +#define OOO_STRING_SVTOOLS_RTF_AUL "\\aul" +#define OOO_STRING_SVTOOLS_RTF_AULD "\\auld" +#define OOO_STRING_SVTOOLS_RTF_AULDB "\\auldb" +#define OOO_STRING_SVTOOLS_RTF_AULNONE "\\aulnone" +#define OOO_STRING_SVTOOLS_RTF_AULW "\\aulw" +#define OOO_STRING_SVTOOLS_RTF_AUP "\\aup" +#define OOO_STRING_SVTOOLS_RTF_BKMKPUB "\\bkmkpub" +#define OOO_STRING_SVTOOLS_RTF_BRDRDASH "\\brdrdash" +#define OOO_STRING_SVTOOLS_RTF_BRKFRM "\\brkfrm" +#define OOO_STRING_SVTOOLS_RTF_CCHS "\\cchs" +#define OOO_STRING_SVTOOLS_RTF_CPG "\\cpg" +#define OOO_STRING_SVTOOLS_RTF_CS "\\cs" +#define OOO_STRING_SVTOOLS_RTF_CVMME "\\cvmme" +#define OOO_STRING_SVTOOLS_RTF_DATAFIELD "\\datafield" +#define OOO_STRING_SVTOOLS_RTF_DO "\\do" +#define OOO_STRING_SVTOOLS_RTF_DOBXCOLUMN "\\dobxcolumn" +#define OOO_STRING_SVTOOLS_RTF_DOBXMARGIN "\\dobxmargin" +#define OOO_STRING_SVTOOLS_RTF_DOBXPAGE "\\dobxpage" +#define OOO_STRING_SVTOOLS_RTF_DOBYMARGIN "\\dobymargin" +#define OOO_STRING_SVTOOLS_RTF_DOBYPAGE "\\dobypage" +#define OOO_STRING_SVTOOLS_RTF_DOBYPARA "\\dobypara" +#define OOO_STRING_SVTOOLS_RTF_DODHGT "\\dodhgt" +#define OOO_STRING_SVTOOLS_RTF_DOLOCK "\\dolock" +#define OOO_STRING_SVTOOLS_RTF_DPAENDHOL "\\dpaendhol" +#define OOO_STRING_SVTOOLS_RTF_DPAENDL "\\dpaendl" +#define OOO_STRING_SVTOOLS_RTF_DPAENDSOL "\\dpaendsol" +#define OOO_STRING_SVTOOLS_RTF_DPAENDW "\\dpaendw" +#define OOO_STRING_SVTOOLS_RTF_DPARC "\\dparc" +#define OOO_STRING_SVTOOLS_RTF_DPARCFLIPX "\\dparcflipx" +#define OOO_STRING_SVTOOLS_RTF_DPARCFLIPY "\\dparcflipy" +#define OOO_STRING_SVTOOLS_RTF_DPASTARTHOL "\\dpastarthol" +#define OOO_STRING_SVTOOLS_RTF_DPASTARTL "\\dpastartl" +#define OOO_STRING_SVTOOLS_RTF_DPASTARTSOL "\\dpastartsol" +#define OOO_STRING_SVTOOLS_RTF_DPASTARTW "\\dpastartw" +#define OOO_STRING_SVTOOLS_RTF_DPCALLOUT "\\dpcallout" +#define OOO_STRING_SVTOOLS_RTF_DPCOA "\\dpcoa" +#define OOO_STRING_SVTOOLS_RTF_DPCOACCENT "\\dpcoaccent" +#define OOO_STRING_SVTOOLS_RTF_DPCOBESTFIT "\\dpcobestfit" +#define OOO_STRING_SVTOOLS_RTF_DPCOBORDER "\\dpcoborder" +#define OOO_STRING_SVTOOLS_RTF_DPCODABS "\\dpcodabs" +#define OOO_STRING_SVTOOLS_RTF_DPCODBOTTOM "\\dpcodbottom" +#define OOO_STRING_SVTOOLS_RTF_DPCODCENTER "\\dpcodcenter" +#define OOO_STRING_SVTOOLS_RTF_DPCODTOP "\\dpcodtop" +#define OOO_STRING_SVTOOLS_RTF_DPCOLENGTH "\\dpcolength" +#define OOO_STRING_SVTOOLS_RTF_DPCOMINUSX "\\dpcominusx" +#define OOO_STRING_SVTOOLS_RTF_DPCOMINUSY "\\dpcominusy" +#define OOO_STRING_SVTOOLS_RTF_DPCOOFFSET "\\dpcooffset" +#define OOO_STRING_SVTOOLS_RTF_DPCOSMARTA "\\dpcosmarta" +#define OOO_STRING_SVTOOLS_RTF_DPCOTDOUBLE "\\dpcotdouble" +#define OOO_STRING_SVTOOLS_RTF_DPCOTRIGHT "\\dpcotright" +#define OOO_STRING_SVTOOLS_RTF_DPCOTSINGLE "\\dpcotsingle" +#define OOO_STRING_SVTOOLS_RTF_DPCOTTRIPLE "\\dpcottriple" +#define OOO_STRING_SVTOOLS_RTF_DPCOUNT "\\dpcount" +#define OOO_STRING_SVTOOLS_RTF_DPELLIPSE "\\dpellipse" +#define OOO_STRING_SVTOOLS_RTF_DPENDGROUP "\\dpendgroup" +#define OOO_STRING_SVTOOLS_RTF_DPFILLBGCB "\\dpfillbgcb" +#define OOO_STRING_SVTOOLS_RTF_DPFILLBGCG "\\dpfillbgcg" +#define OOO_STRING_SVTOOLS_RTF_DPFILLBGCR "\\dpfillbgcr" +#define OOO_STRING_SVTOOLS_RTF_DPFILLBGGRAY "\\dpfillbggray" +#define OOO_STRING_SVTOOLS_RTF_DPFILLBGPAL "\\dpfillbgpal" +#define OOO_STRING_SVTOOLS_RTF_DPFILLFGCB "\\dpfillfgcb" +#define OOO_STRING_SVTOOLS_RTF_DPFILLFGCG "\\dpfillfgcg" +#define OOO_STRING_SVTOOLS_RTF_DPFILLFGCR "\\dpfillfgcr" +#define OOO_STRING_SVTOOLS_RTF_DPFILLFGGRAY "\\dpfillfggray" +#define OOO_STRING_SVTOOLS_RTF_DPFILLFGPAL "\\dpfillfgpal" +#define OOO_STRING_SVTOOLS_RTF_DPFILLPAT "\\dpfillpat" +#define OOO_STRING_SVTOOLS_RTF_DPGROUP "\\dpgroup" +#define OOO_STRING_SVTOOLS_RTF_DPLINE "\\dpline" +#define OOO_STRING_SVTOOLS_RTF_DPLINECOB "\\dplinecob" +#define OOO_STRING_SVTOOLS_RTF_DPLINECOG "\\dplinecog" +#define OOO_STRING_SVTOOLS_RTF_DPLINECOR "\\dplinecor" +#define OOO_STRING_SVTOOLS_RTF_DPLINEDADO "\\dplinedado" +#define OOO_STRING_SVTOOLS_RTF_DPLINEDADODO "\\dplinedadodo" +#define OOO_STRING_SVTOOLS_RTF_DPLINEDASH "\\dplinedash" +#define OOO_STRING_SVTOOLS_RTF_DPLINEDOT "\\dplinedot" +#define OOO_STRING_SVTOOLS_RTF_DPLINEGRAY "\\dplinegray" +#define OOO_STRING_SVTOOLS_RTF_DPLINEHOLLOW "\\dplinehollow" +#define OOO_STRING_SVTOOLS_RTF_DPLINEPAL "\\dplinepal" +#define OOO_STRING_SVTOOLS_RTF_DPLINESOLID "\\dplinesolid" +#define OOO_STRING_SVTOOLS_RTF_DPLINEW "\\dplinew" +#define OOO_STRING_SVTOOLS_RTF_DPPOLYCOUNT "\\dppolycount" +#define OOO_STRING_SVTOOLS_RTF_DPPOLYGON "\\dppolygon" +#define OOO_STRING_SVTOOLS_RTF_DPPOLYLINE "\\dppolyline" +#define OOO_STRING_SVTOOLS_RTF_DPPTX "\\dpptx" +#define OOO_STRING_SVTOOLS_RTF_DPPTY "\\dppty" +#define OOO_STRING_SVTOOLS_RTF_DPRECT "\\dprect" +#define OOO_STRING_SVTOOLS_RTF_DPROUNDR "\\dproundr" +#define OOO_STRING_SVTOOLS_RTF_DPSHADOW "\\dpshadow" +#define OOO_STRING_SVTOOLS_RTF_DPSHADX "\\dpshadx" +#define OOO_STRING_SVTOOLS_RTF_DPSHADY "\\dpshady" +#define OOO_STRING_SVTOOLS_RTF_DPTXBX "\\dptxbx" +#define OOO_STRING_SVTOOLS_RTF_DPTXBXMAR "\\dptxbxmar" +#define OOO_STRING_SVTOOLS_RTF_DPTXBXTEXT "\\dptxbxtext" +#define OOO_STRING_SVTOOLS_RTF_DPX "\\dpx" +#define OOO_STRING_SVTOOLS_RTF_DPXSIZE "\\dpxsize" +#define OOO_STRING_SVTOOLS_RTF_DPY "\\dpy" +#define OOO_STRING_SVTOOLS_RTF_DPYSIZE "\\dpysize" +#define OOO_STRING_SVTOOLS_RTF_DS "\\ds" +#define OOO_STRING_SVTOOLS_RTF_EMSPACE "\\emspace" +#define OOO_STRING_SVTOOLS_RTF_ENSPACE "\\enspace" +#define OOO_STRING_SVTOOLS_RTF_FBIDI "\\fbidi" +#define OOO_STRING_SVTOOLS_RTF_FET "\\fet" +#define OOO_STRING_SVTOOLS_RTF_FID "\\fid" +#define OOO_STRING_SVTOOLS_RTF_FILE "\\file" +#define OOO_STRING_SVTOOLS_RTF_FILETBL "\\filetbl" +#define OOO_STRING_SVTOOLS_RTF_FLDALT "\\fldalt" +#define OOO_STRING_SVTOOLS_RTF_FNETWORK "\\fnetwork" +#define OOO_STRING_SVTOOLS_RTF_FONTEMB "\\fontemb" +#define OOO_STRING_SVTOOLS_RTF_FONTFILE "\\fontfile" +#define OOO_STRING_SVTOOLS_RTF_FORMDISP "\\formdisp" +#define OOO_STRING_SVTOOLS_RTF_FORMPROT "\\formprot" +#define OOO_STRING_SVTOOLS_RTF_FORMSHADE "\\formshade" +#define OOO_STRING_SVTOOLS_RTF_FOSNUM "\\fosnum" +#define OOO_STRING_SVTOOLS_RTF_FRELATIVE "\\frelative" +#define OOO_STRING_SVTOOLS_RTF_FTNALT "\\ftnalt" +#define OOO_STRING_SVTOOLS_RTF_FTNIL "\\ftnil" +#define OOO_STRING_SVTOOLS_RTF_FTNNALC "\\ftnnalc" +#define OOO_STRING_SVTOOLS_RTF_FTNNAR "\\ftnnar" +#define OOO_STRING_SVTOOLS_RTF_FTNNAUC "\\ftnnauc" +#define OOO_STRING_SVTOOLS_RTF_FTNNCHI "\\ftnnchi" +#define OOO_STRING_SVTOOLS_RTF_FTNNRLC "\\ftnnrlc" +#define OOO_STRING_SVTOOLS_RTF_FTNNRUC "\\ftnnruc" +#define OOO_STRING_SVTOOLS_RTF_FTNRSTCONT "\\ftnrstcont" +#define OOO_STRING_SVTOOLS_RTF_FTNRSTPG "\\ftnrstpg" +#define OOO_STRING_SVTOOLS_RTF_FTTRUETYPE "\\fttruetype" +#define OOO_STRING_SVTOOLS_RTF_FVALIDDOS "\\fvaliddos" +#define OOO_STRING_SVTOOLS_RTF_FVALIDHPFS "\\fvalidhpfs" +#define OOO_STRING_SVTOOLS_RTF_FVALIDMAC "\\fvalidmac" +#define OOO_STRING_SVTOOLS_RTF_FVALIDNTFS "\\fvalidntfs" +#define OOO_STRING_SVTOOLS_RTF_HYPHAUTO "\\hyphauto" +#define OOO_STRING_SVTOOLS_RTF_HYPHCAPS "\\hyphcaps" +#define OOO_STRING_SVTOOLS_RTF_HYPHCONSEC "\\hyphconsec" +#define OOO_STRING_SVTOOLS_RTF_HYPHPAR "\\hyphpar" +#define OOO_STRING_SVTOOLS_RTF_LINKSELF "\\linkself" +#define OOO_STRING_SVTOOLS_RTF_LINKSTYLES "\\linkstyles" +#define OOO_STRING_SVTOOLS_RTF_LTRCH "\\ltrch" +#define OOO_STRING_SVTOOLS_RTF_LTRDOC "\\ltrdoc" +#define OOO_STRING_SVTOOLS_RTF_LTRMARK "\\ltrmark" +#define OOO_STRING_SVTOOLS_RTF_LTRPAR "\\ltrpar" +#define OOO_STRING_SVTOOLS_RTF_LTRROW "\\ltrrow" +#define OOO_STRING_SVTOOLS_RTF_LTRSECT "\\ltrsect" +#define OOO_STRING_SVTOOLS_RTF_NOCOLBAL "\\nocolbal" +#define OOO_STRING_SVTOOLS_RTF_NOEXTRASPRL "\\noextrasprl" +#define OOO_STRING_SVTOOLS_RTF_NOTABIND "\\notabind" +#define OOO_STRING_SVTOOLS_RTF_NOWIDCTLPAR "\\nowidctlpar" +#define OOO_STRING_SVTOOLS_RTF_OBJALIAS "\\objalias" +#define OOO_STRING_SVTOOLS_RTF_OBJALIGN "\\objalign" +#define OOO_STRING_SVTOOLS_RTF_OBJAUTLINK "\\objautlink" +#define OOO_STRING_SVTOOLS_RTF_OBJCLASS "\\objclass" +#define OOO_STRING_SVTOOLS_RTF_OBJCROPB "\\objcropb" +#define OOO_STRING_SVTOOLS_RTF_OBJCROPL "\\objcropl" +#define OOO_STRING_SVTOOLS_RTF_OBJCROPR "\\objcropr" +#define OOO_STRING_SVTOOLS_RTF_OBJCROPT "\\objcropt" +#define OOO_STRING_SVTOOLS_RTF_OBJDATA "\\objdata" +#define OOO_STRING_SVTOOLS_RTF_OBJECT "\\object" +#define OOO_STRING_SVTOOLS_RTF_OBJEMB "\\objemb" +#define OOO_STRING_SVTOOLS_RTF_OBJH "\\objh" +#define OOO_STRING_SVTOOLS_RTF_OBJICEMB "\\objicemb" +#define OOO_STRING_SVTOOLS_RTF_OBJLINK "\\objlink" +#define OOO_STRING_SVTOOLS_RTF_OBJLOCK "\\objlock" +#define OOO_STRING_SVTOOLS_RTF_OBJNAME "\\objname" +#define OOO_STRING_SVTOOLS_RTF_OBJPUB "\\objpub" +#define OOO_STRING_SVTOOLS_RTF_OBJSCALEX "\\objscalex" +#define OOO_STRING_SVTOOLS_RTF_OBJSCALEY "\\objscaley" +#define OOO_STRING_SVTOOLS_RTF_OBJSECT "\\objsect" +#define OOO_STRING_SVTOOLS_RTF_OBJSETSIZE "\\objsetsize" +#define OOO_STRING_SVTOOLS_RTF_OBJSUB "\\objsub" +#define OOO_STRING_SVTOOLS_RTF_OBJTIME "\\objtime" +#define OOO_STRING_SVTOOLS_RTF_OBJTRANSY "\\objtransy" +#define OOO_STRING_SVTOOLS_RTF_OBJUPDATE "\\objupdate" +#define OOO_STRING_SVTOOLS_RTF_OBJW "\\objw" +#define OOO_STRING_SVTOOLS_RTF_OTBLRUL "\\otblrul" +#define OOO_STRING_SVTOOLS_RTF_PGNHN "\\pgnhn" +#define OOO_STRING_SVTOOLS_RTF_PGNHNSC "\\pgnhnsc" +#define OOO_STRING_SVTOOLS_RTF_PGNHNSH "\\pgnhnsh" +#define OOO_STRING_SVTOOLS_RTF_PGNHNSM "\\pgnhnsm" +#define OOO_STRING_SVTOOLS_RTF_PGNHNSN "\\pgnhnsn" +#define OOO_STRING_SVTOOLS_RTF_PGNHNSP "\\pgnhnsp" +#define OOO_STRING_SVTOOLS_RTF_PICBMP "\\picbmp" +#define OOO_STRING_SVTOOLS_RTF_PICBPP "\\picbpp" +#define OOO_STRING_SVTOOLS_RTF_PN "\\pn" +#define OOO_STRING_SVTOOLS_RTF_PNACROSS "\\pnacross" +#define OOO_STRING_SVTOOLS_RTF_PNB "\\pnb" +#define OOO_STRING_SVTOOLS_RTF_PNCAPS "\\pncaps" +#define OOO_STRING_SVTOOLS_RTF_PNCARD "\\pncard" +#define OOO_STRING_SVTOOLS_RTF_PNCF "\\pncf" +#define OOO_STRING_SVTOOLS_RTF_PNDEC "\\pndec" +#define OOO_STRING_SVTOOLS_RTF_PNF "\\pnf" +#define OOO_STRING_SVTOOLS_RTF_PNFS "\\pnfs" +#define OOO_STRING_SVTOOLS_RTF_PNHANG "\\pnhang" +#define OOO_STRING_SVTOOLS_RTF_PNI "\\pni" +#define OOO_STRING_SVTOOLS_RTF_PNINDENT "\\pnindent" +#define OOO_STRING_SVTOOLS_RTF_PNLCLTR "\\pnlcltr" +#define OOO_STRING_SVTOOLS_RTF_PNLCRM "\\pnlcrm" +#define OOO_STRING_SVTOOLS_RTF_PNLVL "\\pnlvl" +#define OOO_STRING_SVTOOLS_RTF_PNLVLBLT "\\pnlvlblt" +#define OOO_STRING_SVTOOLS_RTF_PNLVLBODY "\\pnlvlbody" +#define OOO_STRING_SVTOOLS_RTF_PNLVLCONT "\\pnlvlcont" +#define OOO_STRING_SVTOOLS_RTF_PNNUMONCE "\\pnnumonce" +#define OOO_STRING_SVTOOLS_RTF_PNORD "\\pnord" +#define OOO_STRING_SVTOOLS_RTF_PNORDT "\\pnordt" +#define OOO_STRING_SVTOOLS_RTF_PNPREV "\\pnprev" +#define OOO_STRING_SVTOOLS_RTF_PNQC "\\pnqc" +#define OOO_STRING_SVTOOLS_RTF_PNQL "\\pnql" +#define OOO_STRING_SVTOOLS_RTF_PNQR "\\pnqr" +#define OOO_STRING_SVTOOLS_RTF_PNRESTART "\\pnrestart" +#define OOO_STRING_SVTOOLS_RTF_PNSCAPS "\\pnscaps" +#define OOO_STRING_SVTOOLS_RTF_PNSECLVL "\\pnseclvl" +#define OOO_STRING_SVTOOLS_RTF_PNSP "\\pnsp" +#define OOO_STRING_SVTOOLS_RTF_PNSTART "\\pnstart" +#define OOO_STRING_SVTOOLS_RTF_PNSTRIKE "\\pnstrike" +#define OOO_STRING_SVTOOLS_RTF_PNTEXT "\\pntext" +#define OOO_STRING_SVTOOLS_RTF_PNTXTA "\\pntxta" +#define OOO_STRING_SVTOOLS_RTF_PNTXTB "\\pntxtb" +#define OOO_STRING_SVTOOLS_RTF_PNUCLTR "\\pnucltr" +#define OOO_STRING_SVTOOLS_RTF_PNUCRM "\\pnucrm" +#define OOO_STRING_SVTOOLS_RTF_PNUL "\\pnul" +#define OOO_STRING_SVTOOLS_RTF_PNULD "\\pnuld" +#define OOO_STRING_SVTOOLS_RTF_PNULDB "\\pnuldb" +#define OOO_STRING_SVTOOLS_RTF_PNULNONE "\\pnulnone" +#define OOO_STRING_SVTOOLS_RTF_PNULW "\\pnulw" +#define OOO_STRING_SVTOOLS_RTF_PRCOLBL "\\prcolbl" +#define OOO_STRING_SVTOOLS_RTF_PRINTDATA "\\printdata" +#define OOO_STRING_SVTOOLS_RTF_PSZ "\\psz" +#define OOO_STRING_SVTOOLS_RTF_PUBAUTO "\\pubauto" +#define OOO_STRING_SVTOOLS_RTF_RESULT "\\result" +#define OOO_STRING_SVTOOLS_RTF_REVAUTH "\\revauth" +#define OOO_STRING_SVTOOLS_RTF_REVDTTM "\\revdttm" +#define OOO_STRING_SVTOOLS_RTF_REVPROT "\\revprot" +#define OOO_STRING_SVTOOLS_RTF_REVTBL "\\revtbl" +#define OOO_STRING_SVTOOLS_RTF_RSLTBMP "\\rsltbmp" +#define OOO_STRING_SVTOOLS_RTF_RSLTMERGE "\\rsltmerge" +#define OOO_STRING_SVTOOLS_RTF_RSLTPICT "\\rsltpict" +#define OOO_STRING_SVTOOLS_RTF_RSLTRTF "\\rsltrtf" +#define OOO_STRING_SVTOOLS_RTF_RSLTTXT "\\rslttxt" +#define OOO_STRING_SVTOOLS_RTF_RTLCH "\\rtlch" +#define OOO_STRING_SVTOOLS_RTF_RTLDOC "\\rtldoc" +#define OOO_STRING_SVTOOLS_RTF_RTLMARK "\\rtlmark" +#define OOO_STRING_SVTOOLS_RTF_RTLPAR "\\rtlpar" +#define OOO_STRING_SVTOOLS_RTF_RTLROW "\\rtlrow" +#define OOO_STRING_SVTOOLS_RTF_RTLSECT "\\rtlsect" +#define OOO_STRING_SVTOOLS_RTF_SEC "\\sec" +#define OOO_STRING_SVTOOLS_RTF_SECTNUM "\\sectnum" +#define OOO_STRING_SVTOOLS_RTF_SECTUNLOCKED "\\sectunlocked" +#define OOO_STRING_SVTOOLS_RTF_SLMULT "\\slmult" +#define OOO_STRING_SVTOOLS_RTF_SOFTCOL "\\softcol" +#define OOO_STRING_SVTOOLS_RTF_SOFTLHEIGHT "\\softlheight" +#define OOO_STRING_SVTOOLS_RTF_SOFTLINE "\\softline" +#define OOO_STRING_SVTOOLS_RTF_SOFTPAGE "\\softpage" +#define OOO_STRING_SVTOOLS_RTF_SPRSSPBF "\\sprsspbf" +#define OOO_STRING_SVTOOLS_RTF_SPRSTSP "\\sprstsp" +#define OOO_STRING_SVTOOLS_RTF_SUBDOCUMENT "\\subdocument" +#define OOO_STRING_SVTOOLS_RTF_SWPBDR "\\swpbdr" +#define OOO_STRING_SVTOOLS_RTF_TCN "\\tcn" +#define OOO_STRING_SVTOOLS_RTF_TRANSMF "\\transmf" +#define OOO_STRING_SVTOOLS_RTF_TRBRDRB "\\trbrdrb" +#define OOO_STRING_SVTOOLS_RTF_TRBRDRH "\\trbrdrh" +#define OOO_STRING_SVTOOLS_RTF_TRBRDRL "\\trbrdrl" +#define OOO_STRING_SVTOOLS_RTF_TRBRDRR "\\trbrdrr" +#define OOO_STRING_SVTOOLS_RTF_TRBRDRT "\\trbrdrt" +#define OOO_STRING_SVTOOLS_RTF_TRBRDRV "\\trbrdrv" +#define OOO_STRING_SVTOOLS_RTF_TRHDR "\\trhdr" +#define OOO_STRING_SVTOOLS_RTF_TRKEEP "\\trkeep" +#define OOO_STRING_SVTOOLS_RTF_TRPADDB "\\trpaddb" +#define OOO_STRING_SVTOOLS_RTF_TRPADDL "\\trpaddl" +#define OOO_STRING_SVTOOLS_RTF_TRPADDR "\\trpaddr" +#define OOO_STRING_SVTOOLS_RTF_TRPADDT "\\trpaddt" +#define OOO_STRING_SVTOOLS_RTF_TRPADDFB "\\trpaddfb" +#define OOO_STRING_SVTOOLS_RTF_TRPADDFL "\\trpaddfl" +#define OOO_STRING_SVTOOLS_RTF_TRPADDFR "\\trpaddfr" +#define OOO_STRING_SVTOOLS_RTF_TRPADDFT "\\trpaddft" +#define OOO_STRING_SVTOOLS_RTF_WRAPTRSP "\\wraptrsp" +#define OOO_STRING_SVTOOLS_RTF_XEF "\\xef" +#define OOO_STRING_SVTOOLS_RTF_ZWJ "\\zwj" +#define OOO_STRING_SVTOOLS_RTF_ZWNJ "\\zwnj" // neue Tokens zur 1.5 -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ABSLOCK, "\\abslock" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ADJUSTRIGHT, "\\adjustright" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNCHOSUNG, "\\aftnnchosung" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNCNUM, "\\aftnncnum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNDBAR, "\\aftnndbar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNDBNUM, "\\aftnndbnum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNDBNUMD, "\\aftnndbnumd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNDBNUMK, "\\aftnndbnumk" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNDBNUMT, "\\aftnndbnumt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNGANADA, "\\aftnnganada" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNGBNUM, "\\aftnngbnum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNGBNUMD, "\\aftnngbnumd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNGBNUMK, "\\aftnngbnumk" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNGBNUML, "\\aftnngbnuml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNZODIAC, "\\aftnnzodiac" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNZODIACD, "\\aftnnzodiacd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_AFTNNZODIACL, "\\aftnnzodiacl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ANIMTEXT, "\\animtext" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ANSICPG, "\\ansicpg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BACKGROUND, "\\background" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BDBFHDR, "\\bdbfhdr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BLIPTAG, "\\bliptag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BLIPUID, "\\blipuid" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BLIPUPI, "\\blipupi" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRART, "\\brdrart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRDASHD, "\\brdrdashd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRDASHDD, "\\brdrdashdd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRDASHDOTSTR, "\\brdrdashdotstr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRDASHSM, "\\brdrdashsm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDREMBOSS, "\\brdremboss" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRENGRAVE, "\\brdrengrave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRFRAME, "\\brdrframe" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRTHTNLG, "\\brdrthtnlg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRTHTNMG, "\\brdrthtnmg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRTHTNSG, "\\brdrthtnsg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRTNTHLG, "\\brdrtnthlg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRTNTHMG, "\\brdrtnthmg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRTNTHSG, "\\brdrtnthsg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRTNTHTNLG, "\\brdrtnthtnlg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRTNTHTNMG, "\\brdrtnthtnmg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRTNTHTNSG, "\\brdrtnthtnsg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRTRIPLE, "\\brdrtriple" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRWAVY, "\\brdrwavy" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDRWAVYDB, "\\brdrwavydb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CATEGORY, "\\category" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CGRID, "\\cgrid" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHARSCALEX, "\\charscalex" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGBDIAG, "\\chbgbdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGCROSS, "\\chbgcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGDCROSS, "\\chbgdcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGDKBDIAG, "\\chbgdkbdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGDKCROSS, "\\chbgdkcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGDKDCROSS, "\\chbgdkdcross" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGDKFDIAG, "\\chbgdkfdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGDKHORIZ, "\\chbgdkhoriz" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGDKVERT, "\\chbgdkvert" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGFDIAG, "\\chbgfdiag" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGHORIZ, "\\chbghoriz" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBGVERT, "\\chbgvert" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHBRDR, "\\chbrdr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHCBPAT, "\\chcbpat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHCFPAT, "\\chcfpat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CHSHDNG, "\\chshdng" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLPADL, "\\clpadl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLPADT, "\\clpadt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLPADB, "\\clpadb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLPADR, "\\clpadr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLPADFL, "\\clpadfl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLPADFT, "\\clpadft" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLPADFB, "\\clpadfb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLPADFR, "\\clpadfr" ); - - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLTXLRTB, "\\cltxlrtb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLTXTBRL, "\\cltxtbrl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLVERTALB, "\\clvertalb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLVERTALC, "\\clvertalc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLVERTALT, "\\clvertalt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLVMGF, "\\clvmgf" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLVMRG, "\\clvmrg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLTXTBRLV, "\\cltxtbrlv" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLTXBTLR, "\\cltxbtlr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CLTXLRTBV, "\\cltxlrtbv" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_COMPANY, "\\company" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CRAUTH, "\\crauth" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_CRDATE, "\\crdate" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DATE, "\\date" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DEFLANGFE, "\\deflangfe" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DFRAUTH, "\\dfrauth" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DFRDATE, "\\dfrdate" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DFRSTART, "\\dfrstart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DFRSTOP, "\\dfrstop" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DFRXST, "\\dfrxst" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DGMARGIN, "\\dgmargin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DNTBLNSBDB, "\\dntblnsbdb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DOCTYPE, "\\doctype" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DOCVAR, "\\docvar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DPCODESCENT, "\\dpcodescent" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_EMBO, "\\embo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_EMFBLIP, "\\emfblip" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_EXPSHRTN, "\\expshrtn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FAAUTO, "\\faauto" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FBIAS, "\\fbias" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFDEFRES, "\\ffdefres" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFDEFTEXT, "\\ffdeftext" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFENTRYMCR, "\\ffentrymcr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFEXITMCR, "\\ffexitmcr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFFORMAT, "\\ffformat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFHASLISTBOX, "\\ffhaslistbox" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFHELPTEXT, "\\ffhelptext" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFHPS, "\\ffhps" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFL, "\\ffl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFMAXLEN, "\\ffmaxlen" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFNAME, "\\ffname" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFOWNHELP, "\\ffownhelp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFOWNSTAT, "\\ffownstat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFPROT, "\\ffprot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFRECALC, "\\ffrecalc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFRES, "\\ffres" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFSIZE, "\\ffsize" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFSTATTEXT, "\\ffstattext" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFTYPE, "\\fftype" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FFTYPETXT, "\\fftypetxt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLDTYPE, "\\fldtype" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FNAME, "\\fname" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FORMFIELD, "\\formfield" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FROMTEXT, "\\fromtext" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNCHOSUNG, "\\ftnnchosung" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNCNUM, "\\ftnncnum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNDBAR, "\\ftnndbar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNDBNUM, "\\ftnndbnum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNDBNUMD, "\\ftnndbnumd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNDBNUMK, "\\ftnndbnumk" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNDBNUMT, "\\ftnndbnumt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNGANADA, "\\ftnnganada" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNGBNUM, "\\ftnngbnum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNGBNUMD, "\\ftnngbnumd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNGBNUMK, "\\ftnngbnumk" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNGBNUML, "\\ftnngbnuml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNZODIAC, "\\ftnnzodiac" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNZODIACD, "\\ftnnzodiacd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FTNNZODIACL, "\\ftnnzodiacl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_G, "\\g" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_GCW, "\\gcw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_GRIDTBL, "\\gridtbl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HIGHLIGHT, "\\highlight" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HLFR, "\\hlfr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HLINKBASE, "\\hlinkbase" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HLLOC, "\\hlloc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HLSRC, "\\hlsrc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ILVL, "\\ilvl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_IMPR, "\\impr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_JPEGBLIP, "\\jpegblip" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELFOLLOW, "\\levelfollow" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELINDENT, "\\levelindent" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELJC, "\\leveljc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELLEGAL, "\\levellegal" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELNFC, "\\levelnfc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELNORESTART, "\\levelnorestart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELNUMBERS, "\\levelnumbers" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELOLD, "\\levelold" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELPREV, "\\levelprev" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELPREVSPACE, "\\levelprevspace" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELSPACE, "\\levelspace" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELSTARTAT, "\\levelstartat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LEVELTEXT, "\\leveltext" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LINKVAL, "\\linkval" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LIST, "\\list" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTID, "\\listid" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTLEVEL, "\\listlevel" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTNAME, "\\listname" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTOVERRIDE, "\\listoverride" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTOVERRIDECOUNT, "\\listoverridecount" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTOVERRIDEFORMAT, "\\listoverrideformat" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTOVERRIDESTART, "\\listoverridestart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTOVERRIDETABLE, "\\listoverridetable" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTRESTARTHDN, "\\listrestarthdn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTSIMPLE, "\\listsimple" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTTABLE, "\\listtable" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTTEMPLATEID, "\\listtemplateid" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LISTTEXT, "\\listtext" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LS, "\\ls" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LYTEXCTTP, "\\lytexcttp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LYTPRTMET, "\\lytprtmet" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MANAGER, "\\manager" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_MSMCAP, "\\msmcap" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOFCHARSWS, "\\nofcharsws" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOLEAD, "\\nolead" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NONSHPPICT, "\\nonshppict" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOSECTEXPAND, "\\nosectexpand" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOSNAPLINEGRID, "\\nosnaplinegrid" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOSPACEFORUL, "\\nospaceforul" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOULTRLSPC, "\\noultrlspc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOXLATTOYEN, "\\noxlattoyen" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJATTPH, "\\objattph" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJHTML, "\\objhtml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OBJOCX, "\\objocx" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLDLINEWRAP, "\\oldlinewrap" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OUTLINELEVEL, "\\outlinelevel" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OVERLAY, "\\overlay" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PANOSE, "\\panose" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGBRDRB, "\\pgbrdrb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGBRDRFOOT, "\\pgbrdrfoot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGBRDRHEAD, "\\pgbrdrhead" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGBRDRL, "\\pgbrdrl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGBRDROPT, "\\pgbrdropt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGBRDRR, "\\pgbrdrr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGBRDRSNAP, "\\pgbrdrsnap" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGBRDRT, "\\pgbrdrt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNCHOSUNG, "\\pgnchosung" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNCNUM, "\\pgncnum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNDBNUMK, "\\pgndbnumk" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNDBNUMT, "\\pgndbnumt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNGANADA, "\\pgnganada" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNGBNUM, "\\pgngbnum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNGBNUMD, "\\pgngbnumd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNGBNUMK, "\\pgngbnumk" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNGBNUML, "\\pgngbnuml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNZODIAC, "\\pgnzodiac" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNZODIACD, "\\pgnzodiacd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGNZODIACL, "\\pgnzodiacl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PICPROP, "\\picprop" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNAIUEO, "\\pnaiueo" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNAIUEOD, "\\pnaiueod" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNCHOSUNG, "\\pnchosung" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNDBNUMD, "\\pndbnumd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNDBNUMK, "\\pndbnumk" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNDBNUML, "\\pndbnuml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNDBNUMT, "\\pndbnumt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNGANADA, "\\pnganada" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNGBLIP, "\\pngblip" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNGBNUM, "\\pngbnum" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNGBNUMD, "\\pngbnumd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNGBNUMK, "\\pngbnumk" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNGBNUML, "\\pngbnuml" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNRAUTH, "\\pnrauth" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNRDATE, "\\pnrdate" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNRNFC, "\\pnrnfc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNRNOT, "\\pnrnot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNRPNBR, "\\pnrpnbr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNRRGB, "\\pnrrgb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNRSTART, "\\pnrstart" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNRSTOP, "\\pnrstop" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNRXST, "\\pnrxst" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNZODIAC, "\\pnzodiac" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNZODIACD, "\\pnzodiacd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PNZODIACL, "\\pnzodiacl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LFOLEVEL, "\\lfolevel" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSYIN, "\\posyin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_POSYOUT, "\\posyout" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PRIVATE, "\\private" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PROPNAME, "\\propname" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PROPTYPE, "\\proptype" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_REVAUTHDEL, "\\revauthdel" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_REVDTTMDEL, "\\revdttmdel" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SAUTOUPD, "\\sautoupd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SECTDEFAULTCL, "\\sectdefaultcl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SECTEXPAND, "\\sectexpand" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SECTLINEGRID, "\\sectlinegrid" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SECTSPECIFYCL, "\\sectspecifycl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SECTSPECIFYL, "\\sectspecifyl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHIDDEN, "\\shidden" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPBOTTOM, "\\shpbottom" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPBXCOLUMN, "\\shpbxcolumn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPBXMARGIN, "\\shpbxmargin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPBXPAGE, "\\shpbxpage" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPBYMARGIN, "\\shpbymargin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPBYPAGE, "\\shpbypage" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPBYPARA, "\\shpbypara" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPFBLWTXT, "\\shpfblwtxt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPFHDR, "\\shpfhdr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPGRP, "\\shpgrp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPLEFT, "\\shpleft" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPLID, "\\shplid" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPLOCKANCHOR, "\\shplockanchor" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPPICT, "\\shppict" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPRIGHT, "\\shpright" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPRSLT, "\\shprslt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPTOP, "\\shptop" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPTXT, "\\shptxt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPWRK, "\\shpwrk" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPWR, "\\shpwr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPZ, "\\shpz" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SPRSBSP, "\\sprsbsp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SPRSLNSP, "\\sprslnsp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SPRSTSM, "\\sprstsm" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_STATICVAL, "\\staticval" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_STEXTFLOW, "\\stextflow" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_STRIKED, "\\striked" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SUBFONTBYSIZE, "\\subfontbysize" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TCELLD, "\\tcelld" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TIME, "\\time" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TRUNCATEFONTHEIGHT, "\\truncatefontheight" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_UC, "\\uc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_UD, "\\ud" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULDASH, "\\uldash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULDASHD, "\\uldashd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULDASHDD, "\\uldashdd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULTH, "\\ulth" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULWAVE, "\\ulwave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULC, "\\ulc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_U, "\\u" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_UPR, "\\upr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_USERPROPS, "\\userprops" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_VIEWKIND, "\\viewkind" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_VIEWSCALE, "\\viewscale" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_VIEWZK, "\\viewzk" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WIDCTLPAR, "\\widctlpar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WINDOWCAPTION, "\\windowcaption" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WPEQN, "\\wpeqn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WPJST, "\\wpjst" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_WPSP, "\\wpsp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_YXE, "\\yxe" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FRMTXLRTB, "\\frmtxlrtb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FRMTXTBRL, "\\frmtxtbrl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FRMTXBTLR, "\\frmtxbtlr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FRMTXLRTBV, "\\frmtxlrtbv" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FRMTXTBRLV, "\\frmtxtbrlv" ); - +#define OOO_STRING_SVTOOLS_RTF_ABSLOCK "\\abslock" +#define OOO_STRING_SVTOOLS_RTF_ADJUSTRIGHT "\\adjustright" +#define OOO_STRING_SVTOOLS_RTF_AFTNNCHOSUNG "\\aftnnchosung" +#define OOO_STRING_SVTOOLS_RTF_AFTNNCNUM "\\aftnncnum" +#define OOO_STRING_SVTOOLS_RTF_AFTNNDBAR "\\aftnndbar" +#define OOO_STRING_SVTOOLS_RTF_AFTNNDBNUM "\\aftnndbnum" +#define OOO_STRING_SVTOOLS_RTF_AFTNNDBNUMD "\\aftnndbnumd" +#define OOO_STRING_SVTOOLS_RTF_AFTNNDBNUMK "\\aftnndbnumk" +#define OOO_STRING_SVTOOLS_RTF_AFTNNDBNUMT "\\aftnndbnumt" +#define OOO_STRING_SVTOOLS_RTF_AFTNNGANADA "\\aftnnganada" +#define OOO_STRING_SVTOOLS_RTF_AFTNNGBNUM "\\aftnngbnum" +#define OOO_STRING_SVTOOLS_RTF_AFTNNGBNUMD "\\aftnngbnumd" +#define OOO_STRING_SVTOOLS_RTF_AFTNNGBNUMK "\\aftnngbnumk" +#define OOO_STRING_SVTOOLS_RTF_AFTNNGBNUML "\\aftnngbnuml" +#define OOO_STRING_SVTOOLS_RTF_AFTNNZODIAC "\\aftnnzodiac" +#define OOO_STRING_SVTOOLS_RTF_AFTNNZODIACD "\\aftnnzodiacd" +#define OOO_STRING_SVTOOLS_RTF_AFTNNZODIACL "\\aftnnzodiacl" +#define OOO_STRING_SVTOOLS_RTF_ANIMTEXT "\\animtext" +#define OOO_STRING_SVTOOLS_RTF_ANSICPG "\\ansicpg" +#define OOO_STRING_SVTOOLS_RTF_BACKGROUND "\\background" +#define OOO_STRING_SVTOOLS_RTF_BDBFHDR "\\bdbfhdr" +#define OOO_STRING_SVTOOLS_RTF_BLIPTAG "\\bliptag" +#define OOO_STRING_SVTOOLS_RTF_BLIPUID "\\blipuid" +#define OOO_STRING_SVTOOLS_RTF_BLIPUPI "\\blipupi" +#define OOO_STRING_SVTOOLS_RTF_BRDRART "\\brdrart" +#define OOO_STRING_SVTOOLS_RTF_BRDRDASHD "\\brdrdashd" +#define OOO_STRING_SVTOOLS_RTF_BRDRDASHDD "\\brdrdashdd" +#define OOO_STRING_SVTOOLS_RTF_BRDRDASHDOTSTR "\\brdrdashdotstr" +#define OOO_STRING_SVTOOLS_RTF_BRDRDASHSM "\\brdrdashsm" +#define OOO_STRING_SVTOOLS_RTF_BRDREMBOSS "\\brdremboss" +#define OOO_STRING_SVTOOLS_RTF_BRDRENGRAVE "\\brdrengrave" +#define OOO_STRING_SVTOOLS_RTF_BRDRFRAME "\\brdrframe" +#define OOO_STRING_SVTOOLS_RTF_BRDRTHTNLG "\\brdrthtnlg" +#define OOO_STRING_SVTOOLS_RTF_BRDRTHTNMG "\\brdrthtnmg" +#define OOO_STRING_SVTOOLS_RTF_BRDRTHTNSG "\\brdrthtnsg" +#define OOO_STRING_SVTOOLS_RTF_BRDRTNTHLG "\\brdrtnthlg" +#define OOO_STRING_SVTOOLS_RTF_BRDRTNTHMG "\\brdrtnthmg" +#define OOO_STRING_SVTOOLS_RTF_BRDRTNTHSG "\\brdrtnthsg" +#define OOO_STRING_SVTOOLS_RTF_BRDRTNTHTNLG "\\brdrtnthtnlg" +#define OOO_STRING_SVTOOLS_RTF_BRDRTNTHTNMG "\\brdrtnthtnmg" +#define OOO_STRING_SVTOOLS_RTF_BRDRTNTHTNSG "\\brdrtnthtnsg" +#define OOO_STRING_SVTOOLS_RTF_BRDRTRIPLE "\\brdrtriple" +#define OOO_STRING_SVTOOLS_RTF_BRDRWAVY "\\brdrwavy" +#define OOO_STRING_SVTOOLS_RTF_BRDRWAVYDB "\\brdrwavydb" +#define OOO_STRING_SVTOOLS_RTF_CATEGORY "\\category" +#define OOO_STRING_SVTOOLS_RTF_CGRID "\\cgrid" +#define OOO_STRING_SVTOOLS_RTF_CHARSCALEX "\\charscalex" +#define OOO_STRING_SVTOOLS_RTF_CHBGBDIAG "\\chbgbdiag" +#define OOO_STRING_SVTOOLS_RTF_CHBGCROSS "\\chbgcross" +#define OOO_STRING_SVTOOLS_RTF_CHBGDCROSS "\\chbgdcross" +#define OOO_STRING_SVTOOLS_RTF_CHBGDKBDIAG "\\chbgdkbdiag" +#define OOO_STRING_SVTOOLS_RTF_CHBGDKCROSS "\\chbgdkcross" +#define OOO_STRING_SVTOOLS_RTF_CHBGDKDCROSS "\\chbgdkdcross" +#define OOO_STRING_SVTOOLS_RTF_CHBGDKFDIAG "\\chbgdkfdiag" +#define OOO_STRING_SVTOOLS_RTF_CHBGDKHORIZ "\\chbgdkhoriz" +#define OOO_STRING_SVTOOLS_RTF_CHBGDKVERT "\\chbgdkvert" +#define OOO_STRING_SVTOOLS_RTF_CHBGFDIAG "\\chbgfdiag" +#define OOO_STRING_SVTOOLS_RTF_CHBGHORIZ "\\chbghoriz" +#define OOO_STRING_SVTOOLS_RTF_CHBGVERT "\\chbgvert" +#define OOO_STRING_SVTOOLS_RTF_CHBRDR "\\chbrdr" +#define OOO_STRING_SVTOOLS_RTF_CHCBPAT "\\chcbpat" +#define OOO_STRING_SVTOOLS_RTF_CHCFPAT "\\chcfpat" +#define OOO_STRING_SVTOOLS_RTF_CHSHDNG "\\chshdng" +#define OOO_STRING_SVTOOLS_RTF_CLPADL "\\clpadl" +#define OOO_STRING_SVTOOLS_RTF_CLPADT "\\clpadt" +#define OOO_STRING_SVTOOLS_RTF_CLPADB "\\clpadb" +#define OOO_STRING_SVTOOLS_RTF_CLPADR "\\clpadr" +#define OOO_STRING_SVTOOLS_RTF_CLPADFL "\\clpadfl" +#define OOO_STRING_SVTOOLS_RTF_CLPADFT "\\clpadft" +#define OOO_STRING_SVTOOLS_RTF_CLPADFB "\\clpadfb" +#define OOO_STRING_SVTOOLS_RTF_CLPADFR "\\clpadfr" +#define OOO_STRING_SVTOOLS_RTF_CLTXLRTB "\\cltxlrtb" +#define OOO_STRING_SVTOOLS_RTF_CLTXTBRL "\\cltxtbrl" +#define OOO_STRING_SVTOOLS_RTF_CLVERTALB "\\clvertalb" +#define OOO_STRING_SVTOOLS_RTF_CLVERTALC "\\clvertalc" +#define OOO_STRING_SVTOOLS_RTF_CLVERTALT "\\clvertalt" +#define OOO_STRING_SVTOOLS_RTF_CLVMGF "\\clvmgf" +#define OOO_STRING_SVTOOLS_RTF_CLVMRG "\\clvmrg" +#define OOO_STRING_SVTOOLS_RTF_CLTXTBRLV "\\cltxtbrlv" +#define OOO_STRING_SVTOOLS_RTF_CLTXBTLR "\\cltxbtlr" +#define OOO_STRING_SVTOOLS_RTF_CLTXLRTBV "\\cltxlrtbv" +#define OOO_STRING_SVTOOLS_RTF_COMPANY "\\company" +#define OOO_STRING_SVTOOLS_RTF_CRAUTH "\\crauth" +#define OOO_STRING_SVTOOLS_RTF_CRDATE "\\crdate" +#define OOO_STRING_SVTOOLS_RTF_DATE "\\date" +#define OOO_STRING_SVTOOLS_RTF_DEFLANGFE "\\deflangfe" +#define OOO_STRING_SVTOOLS_RTF_DFRAUTH "\\dfrauth" +#define OOO_STRING_SVTOOLS_RTF_DFRDATE "\\dfrdate" +#define OOO_STRING_SVTOOLS_RTF_DFRSTART "\\dfrstart" +#define OOO_STRING_SVTOOLS_RTF_DFRSTOP "\\dfrstop" +#define OOO_STRING_SVTOOLS_RTF_DFRXST "\\dfrxst" +#define OOO_STRING_SVTOOLS_RTF_DGMARGIN "\\dgmargin" +#define OOO_STRING_SVTOOLS_RTF_DNTBLNSBDB "\\dntblnsbdb" +#define OOO_STRING_SVTOOLS_RTF_DOCTYPE "\\doctype" +#define OOO_STRING_SVTOOLS_RTF_DOCVAR "\\docvar" +#define OOO_STRING_SVTOOLS_RTF_DPCODESCENT "\\dpcodescent" +#define OOO_STRING_SVTOOLS_RTF_EMBO "\\embo" +#define OOO_STRING_SVTOOLS_RTF_EMFBLIP "\\emfblip" +#define OOO_STRING_SVTOOLS_RTF_EXPSHRTN "\\expshrtn" +#define OOO_STRING_SVTOOLS_RTF_FAAUTO "\\faauto" +#define OOO_STRING_SVTOOLS_RTF_FBIAS "\\fbias" +#define OOO_STRING_SVTOOLS_RTF_FFDEFRES "\\ffdefres" +#define OOO_STRING_SVTOOLS_RTF_FFDEFTEXT "\\ffdeftext" +#define OOO_STRING_SVTOOLS_RTF_FFENTRYMCR "\\ffentrymcr" +#define OOO_STRING_SVTOOLS_RTF_FFEXITMCR "\\ffexitmcr" +#define OOO_STRING_SVTOOLS_RTF_FFFORMAT "\\ffformat" +#define OOO_STRING_SVTOOLS_RTF_FFHASLISTBOX "\\ffhaslistbox" +#define OOO_STRING_SVTOOLS_RTF_FFHELPTEXT "\\ffhelptext" +#define OOO_STRING_SVTOOLS_RTF_FFHPS "\\ffhps" +#define OOO_STRING_SVTOOLS_RTF_FFL "\\ffl" +#define OOO_STRING_SVTOOLS_RTF_FFMAXLEN "\\ffmaxlen" +#define OOO_STRING_SVTOOLS_RTF_FFNAME "\\ffname" +#define OOO_STRING_SVTOOLS_RTF_FFOWNHELP "\\ffownhelp" +#define OOO_STRING_SVTOOLS_RTF_FFOWNSTAT "\\ffownstat" +#define OOO_STRING_SVTOOLS_RTF_FFPROT "\\ffprot" +#define OOO_STRING_SVTOOLS_RTF_FFRECALC "\\ffrecalc" +#define OOO_STRING_SVTOOLS_RTF_FFRES "\\ffres" +#define OOO_STRING_SVTOOLS_RTF_FFSIZE "\\ffsize" +#define OOO_STRING_SVTOOLS_RTF_FFSTATTEXT "\\ffstattext" +#define OOO_STRING_SVTOOLS_RTF_FFTYPE "\\fftype" +#define OOO_STRING_SVTOOLS_RTF_FFTYPETXT "\\fftypetxt" +#define OOO_STRING_SVTOOLS_RTF_FLDTYPE "\\fldtype" +#define OOO_STRING_SVTOOLS_RTF_FNAME "\\fname" +#define OOO_STRING_SVTOOLS_RTF_FORMFIELD "\\formfield" +#define OOO_STRING_SVTOOLS_RTF_FROMTEXT "\\fromtext" +#define OOO_STRING_SVTOOLS_RTF_FTNNCHOSUNG "\\ftnnchosung" +#define OOO_STRING_SVTOOLS_RTF_FTNNCNUM "\\ftnncnum" +#define OOO_STRING_SVTOOLS_RTF_FTNNDBAR "\\ftnndbar" +#define OOO_STRING_SVTOOLS_RTF_FTNNDBNUM "\\ftnndbnum" +#define OOO_STRING_SVTOOLS_RTF_FTNNDBNUMD "\\ftnndbnumd" +#define OOO_STRING_SVTOOLS_RTF_FTNNDBNUMK "\\ftnndbnumk" +#define OOO_STRING_SVTOOLS_RTF_FTNNDBNUMT "\\ftnndbnumt" +#define OOO_STRING_SVTOOLS_RTF_FTNNGANADA "\\ftnnganada" +#define OOO_STRING_SVTOOLS_RTF_FTNNGBNUM "\\ftnngbnum" +#define OOO_STRING_SVTOOLS_RTF_FTNNGBNUMD "\\ftnngbnumd" +#define OOO_STRING_SVTOOLS_RTF_FTNNGBNUMK "\\ftnngbnumk" +#define OOO_STRING_SVTOOLS_RTF_FTNNGBNUML "\\ftnngbnuml" +#define OOO_STRING_SVTOOLS_RTF_FTNNZODIAC "\\ftnnzodiac" +#define OOO_STRING_SVTOOLS_RTF_FTNNZODIACD "\\ftnnzodiacd" +#define OOO_STRING_SVTOOLS_RTF_FTNNZODIACL "\\ftnnzodiacl" +#define OOO_STRING_SVTOOLS_RTF_G "\\g" +#define OOO_STRING_SVTOOLS_RTF_GCW "\\gcw" +#define OOO_STRING_SVTOOLS_RTF_GRIDTBL "\\gridtbl" +#define OOO_STRING_SVTOOLS_RTF_HIGHLIGHT "\\highlight" +#define OOO_STRING_SVTOOLS_RTF_HLFR "\\hlfr" +#define OOO_STRING_SVTOOLS_RTF_HLINKBASE "\\hlinkbase" +#define OOO_STRING_SVTOOLS_RTF_HLLOC "\\hlloc" +#define OOO_STRING_SVTOOLS_RTF_HLSRC "\\hlsrc" +#define OOO_STRING_SVTOOLS_RTF_ILVL "\\ilvl" +#define OOO_STRING_SVTOOLS_RTF_IMPR "\\impr" +#define OOO_STRING_SVTOOLS_RTF_JPEGBLIP "\\jpegblip" +#define OOO_STRING_SVTOOLS_RTF_LEVELFOLLOW "\\levelfollow" +#define OOO_STRING_SVTOOLS_RTF_LEVELINDENT "\\levelindent" +#define OOO_STRING_SVTOOLS_RTF_LEVELJC "\\leveljc" +#define OOO_STRING_SVTOOLS_RTF_LEVELLEGAL "\\levellegal" +#define OOO_STRING_SVTOOLS_RTF_LEVELNFC "\\levelnfc" +#define OOO_STRING_SVTOOLS_RTF_LEVELNORESTART "\\levelnorestart" +#define OOO_STRING_SVTOOLS_RTF_LEVELNUMBERS "\\levelnumbers" +#define OOO_STRING_SVTOOLS_RTF_LEVELOLD "\\levelold" +#define OOO_STRING_SVTOOLS_RTF_LEVELPREV "\\levelprev" +#define OOO_STRING_SVTOOLS_RTF_LEVELPREVSPACE "\\levelprevspace" +#define OOO_STRING_SVTOOLS_RTF_LEVELSPACE "\\levelspace" +#define OOO_STRING_SVTOOLS_RTF_LEVELSTARTAT "\\levelstartat" +#define OOO_STRING_SVTOOLS_RTF_LEVELTEXT "\\leveltext" +#define OOO_STRING_SVTOOLS_RTF_LINKVAL "\\linkval" +#define OOO_STRING_SVTOOLS_RTF_LIST "\\list" +#define OOO_STRING_SVTOOLS_RTF_LISTID "\\listid" +#define OOO_STRING_SVTOOLS_RTF_LISTLEVEL "\\listlevel" +#define OOO_STRING_SVTOOLS_RTF_LISTNAME "\\listname" +#define OOO_STRING_SVTOOLS_RTF_LISTOVERRIDE "\\listoverride" +#define OOO_STRING_SVTOOLS_RTF_LISTOVERRIDECOUNT "\\listoverridecount" +#define OOO_STRING_SVTOOLS_RTF_LISTOVERRIDEFORMAT "\\listoverrideformat" +#define OOO_STRING_SVTOOLS_RTF_LISTOVERRIDESTART "\\listoverridestart" +#define OOO_STRING_SVTOOLS_RTF_LISTOVERRIDETABLE "\\listoverridetable" +#define OOO_STRING_SVTOOLS_RTF_LISTRESTARTHDN "\\listrestarthdn" +#define OOO_STRING_SVTOOLS_RTF_LISTSIMPLE "\\listsimple" +#define OOO_STRING_SVTOOLS_RTF_LISTTABLE "\\listtable" +#define OOO_STRING_SVTOOLS_RTF_LISTTEMPLATEID "\\listtemplateid" +#define OOO_STRING_SVTOOLS_RTF_LISTTEXT "\\listtext" +#define OOO_STRING_SVTOOLS_RTF_LS "\\ls" +#define OOO_STRING_SVTOOLS_RTF_LYTEXCTTP "\\lytexcttp" +#define OOO_STRING_SVTOOLS_RTF_LYTPRTMET "\\lytprtmet" +#define OOO_STRING_SVTOOLS_RTF_MANAGER "\\manager" +#define OOO_STRING_SVTOOLS_RTF_MSMCAP "\\msmcap" +#define OOO_STRING_SVTOOLS_RTF_NOFCHARSWS "\\nofcharsws" +#define OOO_STRING_SVTOOLS_RTF_NOLEAD "\\nolead" +#define OOO_STRING_SVTOOLS_RTF_NONSHPPICT "\\nonshppict" +#define OOO_STRING_SVTOOLS_RTF_NOSECTEXPAND "\\nosectexpand" +#define OOO_STRING_SVTOOLS_RTF_NOSNAPLINEGRID "\\nosnaplinegrid" +#define OOO_STRING_SVTOOLS_RTF_NOSPACEFORUL "\\nospaceforul" +#define OOO_STRING_SVTOOLS_RTF_NOULTRLSPC "\\noultrlspc" +#define OOO_STRING_SVTOOLS_RTF_NOXLATTOYEN "\\noxlattoyen" +#define OOO_STRING_SVTOOLS_RTF_OBJATTPH "\\objattph" +#define OOO_STRING_SVTOOLS_RTF_OBJHTML "\\objhtml" +#define OOO_STRING_SVTOOLS_RTF_OBJOCX "\\objocx" +#define OOO_STRING_SVTOOLS_RTF_OLDLINEWRAP "\\oldlinewrap" +#define OOO_STRING_SVTOOLS_RTF_OUTLINELEVEL "\\outlinelevel" +#define OOO_STRING_SVTOOLS_RTF_OVERLAY "\\overlay" +#define OOO_STRING_SVTOOLS_RTF_PANOSE "\\panose" +#define OOO_STRING_SVTOOLS_RTF_PGBRDRB "\\pgbrdrb" +#define OOO_STRING_SVTOOLS_RTF_PGBRDRFOOT "\\pgbrdrfoot" +#define OOO_STRING_SVTOOLS_RTF_PGBRDRHEAD "\\pgbrdrhead" +#define OOO_STRING_SVTOOLS_RTF_PGBRDRL "\\pgbrdrl" +#define OOO_STRING_SVTOOLS_RTF_PGBRDROPT "\\pgbrdropt" +#define OOO_STRING_SVTOOLS_RTF_PGBRDRR "\\pgbrdrr" +#define OOO_STRING_SVTOOLS_RTF_PGBRDRSNAP "\\pgbrdrsnap" +#define OOO_STRING_SVTOOLS_RTF_PGBRDRT "\\pgbrdrt" +#define OOO_STRING_SVTOOLS_RTF_PGNCHOSUNG "\\pgnchosung" +#define OOO_STRING_SVTOOLS_RTF_PGNCNUM "\\pgncnum" +#define OOO_STRING_SVTOOLS_RTF_PGNDBNUMK "\\pgndbnumk" +#define OOO_STRING_SVTOOLS_RTF_PGNDBNUMT "\\pgndbnumt" +#define OOO_STRING_SVTOOLS_RTF_PGNGANADA "\\pgnganada" +#define OOO_STRING_SVTOOLS_RTF_PGNGBNUM "\\pgngbnum" +#define OOO_STRING_SVTOOLS_RTF_PGNGBNUMD "\\pgngbnumd" +#define OOO_STRING_SVTOOLS_RTF_PGNGBNUMK "\\pgngbnumk" +#define OOO_STRING_SVTOOLS_RTF_PGNGBNUML "\\pgngbnuml" +#define OOO_STRING_SVTOOLS_RTF_PGNZODIAC "\\pgnzodiac" +#define OOO_STRING_SVTOOLS_RTF_PGNZODIACD "\\pgnzodiacd" +#define OOO_STRING_SVTOOLS_RTF_PGNZODIACL "\\pgnzodiacl" +#define OOO_STRING_SVTOOLS_RTF_PICPROP "\\picprop" +#define OOO_STRING_SVTOOLS_RTF_PNAIUEO "\\pnaiueo" +#define OOO_STRING_SVTOOLS_RTF_PNAIUEOD "\\pnaiueod" +#define OOO_STRING_SVTOOLS_RTF_PNCHOSUNG "\\pnchosung" +#define OOO_STRING_SVTOOLS_RTF_PNDBNUMD "\\pndbnumd" +#define OOO_STRING_SVTOOLS_RTF_PNDBNUMK "\\pndbnumk" +#define OOO_STRING_SVTOOLS_RTF_PNDBNUML "\\pndbnuml" +#define OOO_STRING_SVTOOLS_RTF_PNDBNUMT "\\pndbnumt" +#define OOO_STRING_SVTOOLS_RTF_PNGANADA "\\pnganada" +#define OOO_STRING_SVTOOLS_RTF_PNGBLIP "\\pngblip" +#define OOO_STRING_SVTOOLS_RTF_PNGBNUM "\\pngbnum" +#define OOO_STRING_SVTOOLS_RTF_PNGBNUMD "\\pngbnumd" +#define OOO_STRING_SVTOOLS_RTF_PNGBNUMK "\\pngbnumk" +#define OOO_STRING_SVTOOLS_RTF_PNGBNUML "\\pngbnuml" +#define OOO_STRING_SVTOOLS_RTF_PNRAUTH "\\pnrauth" +#define OOO_STRING_SVTOOLS_RTF_PNRDATE "\\pnrdate" +#define OOO_STRING_SVTOOLS_RTF_PNRNFC "\\pnrnfc" +#define OOO_STRING_SVTOOLS_RTF_PNRNOT "\\pnrnot" +#define OOO_STRING_SVTOOLS_RTF_PNRPNBR "\\pnrpnbr" +#define OOO_STRING_SVTOOLS_RTF_PNRRGB "\\pnrrgb" +#define OOO_STRING_SVTOOLS_RTF_PNRSTART "\\pnrstart" +#define OOO_STRING_SVTOOLS_RTF_PNRSTOP "\\pnrstop" +#define OOO_STRING_SVTOOLS_RTF_PNRXST "\\pnrxst" +#define OOO_STRING_SVTOOLS_RTF_PNZODIAC "\\pnzodiac" +#define OOO_STRING_SVTOOLS_RTF_PNZODIACD "\\pnzodiacd" +#define OOO_STRING_SVTOOLS_RTF_PNZODIACL "\\pnzodiacl" +#define OOO_STRING_SVTOOLS_RTF_LFOLEVEL "\\lfolevel" +#define OOO_STRING_SVTOOLS_RTF_POSYIN "\\posyin" +#define OOO_STRING_SVTOOLS_RTF_POSYOUT "\\posyout" +#define OOO_STRING_SVTOOLS_RTF_PRIVATE "\\private" +#define OOO_STRING_SVTOOLS_RTF_PROPNAME "\\propname" +#define OOO_STRING_SVTOOLS_RTF_PROPTYPE "\\proptype" +#define OOO_STRING_SVTOOLS_RTF_REVAUTHDEL "\\revauthdel" +#define OOO_STRING_SVTOOLS_RTF_REVDTTMDEL "\\revdttmdel" +#define OOO_STRING_SVTOOLS_RTF_SAUTOUPD "\\sautoupd" +#define OOO_STRING_SVTOOLS_RTF_SECTDEFAULTCL "\\sectdefaultcl" +#define OOO_STRING_SVTOOLS_RTF_SECTEXPAND "\\sectexpand" +#define OOO_STRING_SVTOOLS_RTF_SECTLINEGRID "\\sectlinegrid" +#define OOO_STRING_SVTOOLS_RTF_SECTSPECIFYCL "\\sectspecifycl" +#define OOO_STRING_SVTOOLS_RTF_SECTSPECIFYL "\\sectspecifyl" +#define OOO_STRING_SVTOOLS_RTF_SHIDDEN "\\shidden" +#define OOO_STRING_SVTOOLS_RTF_SHPBOTTOM "\\shpbottom" +#define OOO_STRING_SVTOOLS_RTF_SHPBXCOLUMN "\\shpbxcolumn" +#define OOO_STRING_SVTOOLS_RTF_SHPBXMARGIN "\\shpbxmargin" +#define OOO_STRING_SVTOOLS_RTF_SHPBXPAGE "\\shpbxpage" +#define OOO_STRING_SVTOOLS_RTF_SHPBYMARGIN "\\shpbymargin" +#define OOO_STRING_SVTOOLS_RTF_SHPBYPAGE "\\shpbypage" +#define OOO_STRING_SVTOOLS_RTF_SHPBYPARA "\\shpbypara" +#define OOO_STRING_SVTOOLS_RTF_SHPFBLWTXT "\\shpfblwtxt" +#define OOO_STRING_SVTOOLS_RTF_SHPFHDR "\\shpfhdr" +#define OOO_STRING_SVTOOLS_RTF_SHPGRP "\\shpgrp" +#define OOO_STRING_SVTOOLS_RTF_SHPLEFT "\\shpleft" +#define OOO_STRING_SVTOOLS_RTF_SHPLID "\\shplid" +#define OOO_STRING_SVTOOLS_RTF_SHPLOCKANCHOR "\\shplockanchor" +#define OOO_STRING_SVTOOLS_RTF_SHPPICT "\\shppict" +#define OOO_STRING_SVTOOLS_RTF_SHPRIGHT "\\shpright" +#define OOO_STRING_SVTOOLS_RTF_SHPRSLT "\\shprslt" +#define OOO_STRING_SVTOOLS_RTF_SHPTOP "\\shptop" +#define OOO_STRING_SVTOOLS_RTF_SHPTXT "\\shptxt" +#define OOO_STRING_SVTOOLS_RTF_SHPWRK "\\shpwrk" +#define OOO_STRING_SVTOOLS_RTF_SHPWR "\\shpwr" +#define OOO_STRING_SVTOOLS_RTF_SHPZ "\\shpz" +#define OOO_STRING_SVTOOLS_RTF_SPRSBSP "\\sprsbsp" +#define OOO_STRING_SVTOOLS_RTF_SPRSLNSP "\\sprslnsp" +#define OOO_STRING_SVTOOLS_RTF_SPRSTSM "\\sprstsm" +#define OOO_STRING_SVTOOLS_RTF_STATICVAL "\\staticval" +#define OOO_STRING_SVTOOLS_RTF_STEXTFLOW "\\stextflow" +#define OOO_STRING_SVTOOLS_RTF_STRIKED "\\striked" +#define OOO_STRING_SVTOOLS_RTF_SUBFONTBYSIZE "\\subfontbysize" +#define OOO_STRING_SVTOOLS_RTF_TCELLD "\\tcelld" +#define OOO_STRING_SVTOOLS_RTF_TIME "\\time" +#define OOO_STRING_SVTOOLS_RTF_TRUNCATEFONTHEIGHT "\\truncatefontheight" +#define OOO_STRING_SVTOOLS_RTF_UC "\\uc" +#define OOO_STRING_SVTOOLS_RTF_UD "\\ud" +#define OOO_STRING_SVTOOLS_RTF_ULDASH "\\uldash" +#define OOO_STRING_SVTOOLS_RTF_ULDASHD "\\uldashd" +#define OOO_STRING_SVTOOLS_RTF_ULDASHDD "\\uldashdd" +#define OOO_STRING_SVTOOLS_RTF_ULTH "\\ulth" +#define OOO_STRING_SVTOOLS_RTF_ULWAVE "\\ulwave" +#define OOO_STRING_SVTOOLS_RTF_ULC "\\ulc" +#define OOO_STRING_SVTOOLS_RTF_U "\\u" +#define OOO_STRING_SVTOOLS_RTF_UPR "\\upr" +#define OOO_STRING_SVTOOLS_RTF_USERPROPS "\\userprops" +#define OOO_STRING_SVTOOLS_RTF_VIEWKIND "\\viewkind" +#define OOO_STRING_SVTOOLS_RTF_VIEWSCALE "\\viewscale" +#define OOO_STRING_SVTOOLS_RTF_VIEWZK "\\viewzk" +#define OOO_STRING_SVTOOLS_RTF_WIDCTLPAR "\\widctlpar" +#define OOO_STRING_SVTOOLS_RTF_WINDOWCAPTION "\\windowcaption" +#define OOO_STRING_SVTOOLS_RTF_WPEQN "\\wpeqn" +#define OOO_STRING_SVTOOLS_RTF_WPJST "\\wpjst" +#define OOO_STRING_SVTOOLS_RTF_WPSP "\\wpsp" +#define OOO_STRING_SVTOOLS_RTF_YXE "\\yxe" +#define OOO_STRING_SVTOOLS_RTF_FRMTXLRTB "\\frmtxlrtb" +#define OOO_STRING_SVTOOLS_RTF_FRMTXTBRL "\\frmtxtbrl" +#define OOO_STRING_SVTOOLS_RTF_FRMTXBTLR "\\frmtxbtlr" +#define OOO_STRING_SVTOOLS_RTF_FRMTXLRTBV "\\frmtxlrtbv" +#define OOO_STRING_SVTOOLS_RTF_FRMTXTBRLV "\\frmtxtbrlv" // MS-2000 Tokens -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULTHD, "\\ulthd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULTHDASH, "\\ulthdash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULLDASH, "\\ulldash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULTHLDASH, "\\ulthldash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULTHDASHD, "\\ulthdashd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULTHDASHDD, "\\ulthdashdd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULHWAVE, "\\ulhwave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ULULDBWAVE, "\\ululdbwave" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LOCH, "\\loch" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HICH, "\\hich" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DBCH, "\\dbch" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_LANGFE, "\\langfe" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ADEFLANG, "\\adeflang" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ADEFF, "\\adeff" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ACCNONE, "\\accnone" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ACCDOT, "\\accdot" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ACCCOMMA, "\\acccomma" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TWOINONE, "\\twoinone" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HORZVERT, "\\horzvert" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FAHANG, "\\fahang" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FAVAR, "\\favar" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FACENTER, "\\facenter" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FAROMAN, "\\faroman" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FAFIXED, "\\fafixed" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOCWRAP, "\\nocwrap" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_NOOVERFLOW,"\\nooverflow" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_ASPALPHA, "\\aspalpha" ); +#define OOO_STRING_SVTOOLS_RTF_ULTHD "\\ulthd" +#define OOO_STRING_SVTOOLS_RTF_ULTHDASH "\\ulthdash" +#define OOO_STRING_SVTOOLS_RTF_ULLDASH "\\ulldash" +#define OOO_STRING_SVTOOLS_RTF_ULTHLDASH "\\ulthldash" +#define OOO_STRING_SVTOOLS_RTF_ULTHDASHD "\\ulthdashd" +#define OOO_STRING_SVTOOLS_RTF_ULTHDASHDD "\\ulthdashdd" +#define OOO_STRING_SVTOOLS_RTF_ULHWAVE "\\ulhwave" +#define OOO_STRING_SVTOOLS_RTF_ULULDBWAVE "\\ululdbwave" +#define OOO_STRING_SVTOOLS_RTF_LOCH "\\loch" +#define OOO_STRING_SVTOOLS_RTF_HICH "\\hich" +#define OOO_STRING_SVTOOLS_RTF_DBCH "\\dbch" +#define OOO_STRING_SVTOOLS_RTF_LANGFE "\\langfe" +#define OOO_STRING_SVTOOLS_RTF_ADEFLANG "\\adeflang" +#define OOO_STRING_SVTOOLS_RTF_ADEFF "\\adeff" +#define OOO_STRING_SVTOOLS_RTF_ACCNONE "\\accnone" +#define OOO_STRING_SVTOOLS_RTF_ACCDOT "\\accdot" +#define OOO_STRING_SVTOOLS_RTF_ACCCOMMA "\\acccomma" +#define OOO_STRING_SVTOOLS_RTF_TWOINONE "\\twoinone" +#define OOO_STRING_SVTOOLS_RTF_HORZVERT "\\horzvert" +#define OOO_STRING_SVTOOLS_RTF_FAHANG "\\fahang" +#define OOO_STRING_SVTOOLS_RTF_FAVAR "\\favar" +#define OOO_STRING_SVTOOLS_RTF_FACENTER "\\facenter" +#define OOO_STRING_SVTOOLS_RTF_FAROMAN "\\faroman" +#define OOO_STRING_SVTOOLS_RTF_FAFIXED "\\fafixed" +#define OOO_STRING_SVTOOLS_RTF_NOCWRAP "\\nocwrap" +#define OOO_STRING_SVTOOLS_RTF_NOOVERFLOW "\\nooverflow" +#define OOO_STRING_SVTOOLS_RTF_ASPALPHA "\\aspalpha" // SWG spezifische Attribute -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_GRFALIGNV, "\\grfalignv" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_GRFALIGNH, "\\grfalignh" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_GRFMIRROR, "\\grfmirror" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HEADERYB, "\\headeryb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HEADERXL, "\\headerxl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HEADERXR, "\\headerxr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FOOTERYT, "\\footeryt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FOOTERXL, "\\footerxl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FOOTERXR, "\\footerxr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HEADERYH, "\\headeryh" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FOOTERYH, "\\footeryh" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BALANCEDCOLUMN, "\\swcolmnblnc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_UPDNPROP, "\\updnprop" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PRTDATA, "\\prtdata" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BKMKKEY, "\\bkmkkey" ); +#define OOO_STRING_SVTOOLS_RTF_GRFALIGNV "\\grfalignv" +#define OOO_STRING_SVTOOLS_RTF_GRFALIGNH "\\grfalignh" +#define OOO_STRING_SVTOOLS_RTF_GRFMIRROR "\\grfmirror" +#define OOO_STRING_SVTOOLS_RTF_HEADERYB "\\headeryb" +#define OOO_STRING_SVTOOLS_RTF_HEADERXL "\\headerxl" +#define OOO_STRING_SVTOOLS_RTF_HEADERXR "\\headerxr" +#define OOO_STRING_SVTOOLS_RTF_FOOTERYT "\\footeryt" +#define OOO_STRING_SVTOOLS_RTF_FOOTERXL "\\footerxl" +#define OOO_STRING_SVTOOLS_RTF_FOOTERXR "\\footerxr" +#define OOO_STRING_SVTOOLS_RTF_HEADERYH "\\headeryh" +#define OOO_STRING_SVTOOLS_RTF_FOOTERYH "\\footeryh" +#define OOO_STRING_SVTOOLS_RTF_BALANCEDCOLUMN "\\swcolmnblnc" +#define OOO_STRING_SVTOOLS_RTF_UPDNPROP "\\updnprop" +#define OOO_STRING_SVTOOLS_RTF_PRTDATA "\\prtdata" +#define OOO_STRING_SVTOOLS_RTF_BKMKKEY "\\bkmkkey" // Attribute fuer die freifliegenden Rahmen -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLYPRINT, "\\flyprint" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLYOPAQUE, "\\flyopaque" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLYPRTCTD, "\\flyprtctd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLYMAINCNT, "\\flymaincnt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLYVERT, "\\flyvert" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLYHORZ, "\\flyhorz" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DFRMTXTL, "\\dfrmtxtl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DFRMTXTR, "\\dfrmtxtr" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DFRMTXTU, "\\dfrmtxtu" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_DFRMTXTW, "\\dfrmtxtw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLYANCHOR, "\\flyanchor" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLYCNTNT, "\\flycntnt" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLYCOLUMN, "\\flycolumn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLYPAGE, "\\flypage" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_FLYINPARA, "\\flyinpara" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDBOX, "\\brdbox" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDLNCOL, "\\brdlncol" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDLNIN, "\\brdlnin" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDLNOUT, "\\brdlnout" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_BRDLNDIST, "\\brdlndist" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHADOW, "\\shadow" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHDWDIST, "\\shdwdist" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHDWSTYLE, "\\shdwstyle" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHDWCOL, "\\shdwcol" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHDWFCOL, "\\shdwfcol" ); - - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGDSCTBL, "\\pgdsctbl" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGDSC, "\\pgdsc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGDSCUSE, "\\pgdscuse" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGDSCNXT, "\\pgdscnxt" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HYPHEN, "\\hyphen" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HYPHLEAD, "\\hyphlead" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HYPHTRAIL, "\\hyphtrail" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_HYPHMAX, "\\hyphmax" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_TLSWG, "\\tlswg" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGBRK, "\\pgbrk" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_PGDSCNO, "\\pgdscno" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SOUTLVL, "\\soutlvl" ); - -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHP, "\\shp" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SN, "\\sn" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SV, "\\sv" ); -/* -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPLEFT, "\\shpleft" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPTOP, "\\shptop" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPBOTTOM, "\\shpbottom" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_SHPRIGHT, "\\shpright" ); -*/ +#define OOO_STRING_SVTOOLS_RTF_FLYPRINT "\\flyprint" +#define OOO_STRING_SVTOOLS_RTF_FLYOPAQUE "\\flyopaque" +#define OOO_STRING_SVTOOLS_RTF_FLYPRTCTD "\\flyprtctd" +#define OOO_STRING_SVTOOLS_RTF_FLYMAINCNT "\\flymaincnt" +#define OOO_STRING_SVTOOLS_RTF_FLYVERT "\\flyvert" +#define OOO_STRING_SVTOOLS_RTF_FLYHORZ "\\flyhorz" +#define OOO_STRING_SVTOOLS_RTF_DFRMTXTL "\\dfrmtxtl" +#define OOO_STRING_SVTOOLS_RTF_DFRMTXTR "\\dfrmtxtr" +#define OOO_STRING_SVTOOLS_RTF_DFRMTXTU "\\dfrmtxtu" +#define OOO_STRING_SVTOOLS_RTF_DFRMTXTW "\\dfrmtxtw" +#define OOO_STRING_SVTOOLS_RTF_FLYANCHOR "\\flyanchor" +#define OOO_STRING_SVTOOLS_RTF_FLYCNTNT "\\flycntnt" +#define OOO_STRING_SVTOOLS_RTF_FLYCOLUMN "\\flycolumn" +#define OOO_STRING_SVTOOLS_RTF_FLYPAGE "\\flypage" +#define OOO_STRING_SVTOOLS_RTF_FLYINPARA "\\flyinpara" +#define OOO_STRING_SVTOOLS_RTF_BRDBOX "\\brdbox" +#define OOO_STRING_SVTOOLS_RTF_BRDLNCOL "\\brdlncol" +#define OOO_STRING_SVTOOLS_RTF_BRDLNIN "\\brdlnin" +#define OOO_STRING_SVTOOLS_RTF_BRDLNOUT "\\brdlnout" +#define OOO_STRING_SVTOOLS_RTF_BRDLNDIST "\\brdlndist" +#define OOO_STRING_SVTOOLS_RTF_SHADOW "\\shadow" +#define OOO_STRING_SVTOOLS_RTF_SHDWDIST "\\shdwdist" +#define OOO_STRING_SVTOOLS_RTF_SHDWSTYLE "\\shdwstyle" +#define OOO_STRING_SVTOOLS_RTF_SHDWCOL "\\shdwcol" +#define OOO_STRING_SVTOOLS_RTF_SHDWFCOL "\\shdwfcol" +#define OOO_STRING_SVTOOLS_RTF_PGDSCTBL "\\pgdsctbl" +#define OOO_STRING_SVTOOLS_RTF_PGDSC "\\pgdsc" +#define OOO_STRING_SVTOOLS_RTF_PGDSCUSE "\\pgdscuse" +#define OOO_STRING_SVTOOLS_RTF_PGDSCNXT "\\pgdscnxt" +#define OOO_STRING_SVTOOLS_RTF_HYPHEN "\\hyphen" +#define OOO_STRING_SVTOOLS_RTF_HYPHLEAD "\\hyphlead" +#define OOO_STRING_SVTOOLS_RTF_HYPHTRAIL "\\hyphtrail" +#define OOO_STRING_SVTOOLS_RTF_HYPHMAX "\\hyphmax" +#define OOO_STRING_SVTOOLS_RTF_TLSWG "\\tlswg" +#define OOO_STRING_SVTOOLS_RTF_PGBRK "\\pgbrk" +#define OOO_STRING_SVTOOLS_RTF_PGDSCNO "\\pgdscno" +#define OOO_STRING_SVTOOLS_RTF_SOUTLVL "\\soutlvl" +#define OOO_STRING_SVTOOLS_RTF_SHP "\\shp" +#define OOO_STRING_SVTOOLS_RTF_SN "\\sn" +#define OOO_STRING_SVTOOLS_RTF_SV "\\sv" // Support for overline attributes -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OL, "\\ol" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLD, "\\old" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLDB, "\\oldb" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLNONE, "\\olnone" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLW, "\\olw" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLDASH, "\\oldash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLDASHD, "\\oldashd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLDASHDD, "\\oldashdd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLTH, "\\olth" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLWAVE, "\\olwave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLC, "\\olc" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLTHD, "\\olthd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLTHDASH, "\\olthdash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLLDASH, "\\olldash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLTHLDASH, "\\olthldash" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLTHDASHD, "\\olthdashd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLTHDASHDD, "\\olthdashdd" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLHWAVE, "\\olhwave" ); -extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sRTF_OLOLDBWAVE, "\\ololdbwave" ); +#define OOO_STRING_SVTOOLS_RTF_OL "\\ol" +#define OOO_STRING_SVTOOLS_RTF_OLD "\\old" +#define OOO_STRING_SVTOOLS_RTF_OLDB "\\oldb" +#define OOO_STRING_SVTOOLS_RTF_OLNONE "\\olnone" +#define OOO_STRING_SVTOOLS_RTF_OLW "\\olw" +#define OOO_STRING_SVTOOLS_RTF_OLDASH "\\oldash" +#define OOO_STRING_SVTOOLS_RTF_OLDASHD "\\oldashd" +#define OOO_STRING_SVTOOLS_RTF_OLDASHDD "\\oldashdd" +#define OOO_STRING_SVTOOLS_RTF_OLTH "\\olth" +#define OOO_STRING_SVTOOLS_RTF_OLWAVE "\\olwave" +#define OOO_STRING_SVTOOLS_RTF_OLC "\\olc" +#define OOO_STRING_SVTOOLS_RTF_OLTHD "\\olthd" +#define OOO_STRING_SVTOOLS_RTF_OLTHDASH "\\olthdash" +#define OOO_STRING_SVTOOLS_RTF_OLLDASH "\\olldash" +#define OOO_STRING_SVTOOLS_RTF_OLTHLDASH "\\olthldash" +#define OOO_STRING_SVTOOLS_RTF_OLTHDASHD "\\olthdashd" +#define OOO_STRING_SVTOOLS_RTF_OLTHDASHDD "\\olthdashdd" +#define OOO_STRING_SVTOOLS_RTF_OLHWAVE "\\olhwave" +#define OOO_STRING_SVTOOLS_RTF_OLOLDBWAVE "\\ololdbwave" #endif // _RTFKEYWD_HXX diff --git a/svtools/source/svrtf/rtfout.cxx b/svtools/source/svrtf/rtfout.cxx index ea800cc72d78..21dfefb14232 100644 --- a/svtools/source/svrtf/rtfout.cxx +++ b/svtools/source/svrtf/rtfout.cxx @@ -68,10 +68,10 @@ SvStream& RTFOutFuncs::Out_Char(SvStream& rStream, sal_Unicode c, rStream << "\\_"; break; case '\n': - pStr = sRTF_LINE; + pStr = OOO_STRING_SVTOOLS_RTF_LINE; break; case '\t': - pStr = sRTF_TAB; + pStr = OOO_STRING_SVTOOLS_RTF_TAB; break; default: if(!bWriteHelpFile) @@ -79,25 +79,25 @@ SvStream& RTFOutFuncs::Out_Char(SvStream& rStream, sal_Unicode c, switch(c) { case 149: - pStr = sRTF_BULLET; + pStr = OOO_STRING_SVTOOLS_RTF_BULLET; break; case 150: - pStr = sRTF_ENDASH; + pStr = OOO_STRING_SVTOOLS_RTF_ENDASH; break; case 151: - pStr = sRTF_EMDASH; + pStr = OOO_STRING_SVTOOLS_RTF_EMDASH; break; case 145: - pStr = sRTF_LQUOTE; + pStr = OOO_STRING_SVTOOLS_RTF_LQUOTE; break; case 146: - pStr = sRTF_RQUOTE; + pStr = OOO_STRING_SVTOOLS_RTF_RQUOTE; break; case 147: - pStr = sRTF_LDBLQUOTE; + pStr = OOO_STRING_SVTOOLS_RTF_LDBLQUOTE; break; case 148: - pStr = sRTF_RDBLQUOTE; + pStr = OOO_STRING_SVTOOLS_RTF_RDBLQUOTE; break; } diff --git a/svtools/source/svrtf/svparser.cxx b/svtools/source/svrtf/svparser.cxx index f58a5d11a3c6..c7444dd5cbcb 100644 --- a/svtools/source/svrtf/svparser.cxx +++ b/svtools/source/svrtf/svparser.cxx @@ -666,4 +666,64 @@ IMPL_STATIC_LINK( SvParser, NewDataRead, void*, EMPTYARG ) return 0; } +/*======================================================================== + * + * SvKeyValueIterator. + * + *======================================================================*/ +SV_DECL_PTRARR_DEL(SvKeyValueList_Impl, SvKeyValue*, 0, 4) +SV_IMPL_PTRARR(SvKeyValueList_Impl, SvKeyValue*); + +/* + * SvKeyValueIterator. + */ +SvKeyValueIterator::SvKeyValueIterator (void) + : m_pList (new SvKeyValueList_Impl), + m_nPos (0) +{ +} + +/* + * ~SvKeyValueIterator. + */ +SvKeyValueIterator::~SvKeyValueIterator (void) +{ + delete m_pList; +} + +/* + * GetFirst. + */ +BOOL SvKeyValueIterator::GetFirst (SvKeyValue &rKeyVal) +{ + m_nPos = m_pList->Count(); + return GetNext (rKeyVal); +} + +/* + * GetNext. + */ +BOOL SvKeyValueIterator::GetNext (SvKeyValue &rKeyVal) +{ + if (m_nPos > 0) + { + rKeyVal = *m_pList->GetObject(--m_nPos); + return TRUE; + } + else + { + // Nothing to do. + return FALSE; + } +} + +/* + * Append. + */ +void SvKeyValueIterator::Append (const SvKeyValue &rKeyVal) +{ + SvKeyValue *pKeyVal = new SvKeyValue (rKeyVal); + m_pList->C40_INSERT(SvKeyValue, pKeyVal, m_pList->Count()); +} + /* vi:set tabstop=4 shiftwidth=4 expandtab: */ diff --git a/svtools/source/undo/makefile.mk b/svtools/source/undo/makefile.mk index 92a406971de3..b277fa3c906f 100644 --- a/svtools/source/undo/makefile.mk +++ b/svtools/source/undo/makefile.mk @@ -33,6 +33,7 @@ PRJ=..$/.. PRJNAME=svtools TARGET=undo +ENABLE_EXCEPTIONS=TRUE # --- Settings ----------------------------------------------------- diff --git a/svtools/source/undo/undo.cxx b/svtools/source/undo/undo.cxx index 76ed0a0a8e09..2f733d4f03b3 100644 --- a/svtools/source/undo/undo.cxx +++ b/svtools/source/undo/undo.cxx @@ -31,11 +31,14 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_svtools.hxx" +#include <com/sun/star/uno/Exception.hpp> #include <tools/debug.hxx> #include <svtools/undo.hxx> +using ::com::sun::star::uno::Exception; + // STATIC DATA ----------------------------------------------------------- DBG_NAME(SfxUndoAction) @@ -153,6 +156,7 @@ BOOL SfxUndoAction::CanRepeat(SfxRepeatTarget&) const SfxUndoManager::SfxUndoManager( USHORT nMaxUndoActionCount ) : pFatherUndoArray(0) + , mbUndoEnabled( true ) { pUndoArray=new SfxUndoArray(nMaxUndoActionCount); pActUndoArray=pUndoArray; @@ -167,6 +171,12 @@ SfxUndoManager::~SfxUndoManager() delete pUndoArray; } +//------------------------------------------------------------------------ + +void SfxUndoManager::EnableUndo( bool bEnable ) +{ + mbUndoEnabled = bEnable; +} //------------------------------------------------------------------------ @@ -252,41 +262,43 @@ void SfxUndoManager::ClearRedo() void SfxUndoManager::AddUndoAction( SfxUndoAction *pAction, BOOL bTryMerge ) { - // Redo-Actions loeschen - for ( USHORT nPos = pActUndoArray->aUndoActions.Count(); - nPos > pActUndoArray->nCurUndoAction; --nPos ) - delete pActUndoArray->aUndoActions[nPos-1]; - - pActUndoArray->aUndoActions.Remove( - pActUndoArray->nCurUndoAction, - pActUndoArray->aUndoActions.Count() - pActUndoArray->nCurUndoAction ); - - if ( pActUndoArray->nMaxUndoActions ) + if( mbUndoEnabled ) { - SfxUndoAction *pTmpAction = pActUndoArray->nCurUndoAction ? - pActUndoArray->aUndoActions[pActUndoArray->nCurUndoAction-1] : 0; + // Redo-Actions loeschen + for ( USHORT nPos = pActUndoArray->aUndoActions.Count(); + nPos > pActUndoArray->nCurUndoAction; --nPos ) + delete pActUndoArray->aUndoActions[nPos-1]; + + pActUndoArray->aUndoActions.Remove( + pActUndoArray->nCurUndoAction, + pActUndoArray->aUndoActions.Count() - pActUndoArray->nCurUndoAction ); - if ( !bTryMerge || !(pTmpAction && pTmpAction->Merge(pAction)) ) + if ( pActUndoArray->nMaxUndoActions ) { - // auf Max-Anzahl anpassen - if( pActUndoArray == pUndoArray ) - while( pActUndoArray->aUndoActions.Count() >= - pActUndoArray->nMaxUndoActions && - !pActUndoArray->aUndoActions[0]->IsLinked() ) - { - delete pActUndoArray->aUndoActions[0]; - pActUndoArray->aUndoActions.Remove(0); - --pActUndoArray->nCurUndoAction; - } + SfxUndoAction *pTmpAction = pActUndoArray->nCurUndoAction ? + pActUndoArray->aUndoActions[pActUndoArray->nCurUndoAction-1] : 0; - // neue Action anh"angen - const SfxUndoAction* pTemp = pAction; - pActUndoArray->aUndoActions.Insert( - pTemp, pActUndoArray->nCurUndoAction++ ); - return; + if ( !bTryMerge || !(pTmpAction && pTmpAction->Merge(pAction)) ) + { + // auf Max-Anzahl anpassen + if( pActUndoArray == pUndoArray ) + while( pActUndoArray->aUndoActions.Count() >= + pActUndoArray->nMaxUndoActions && + !pActUndoArray->aUndoActions[0]->IsLinked() ) + { + delete pActUndoArray->aUndoActions[0]; + pActUndoArray->aUndoActions.Remove(0); + --pActUndoArray->nCurUndoAction; + } + + // neue Action anh"angen + const SfxUndoAction* pTemp = pAction; + pActUndoArray->aUndoActions.Insert( + pTemp, pActUndoArray->nCurUndoAction++ ); + return; + } } } - delete pAction; } @@ -368,20 +380,46 @@ void SfxUndoManager::RemoveLastUndoAction() BOOL SfxUndoManager::Undo( USHORT ) { - DBG_ASSERT( pActUndoArray == pUndoArray, "svtools::SfxUndoManager::Undo(), LeaveListAction() not yet called!" ); - if ( pActUndoArray->nCurUndoAction ) + bool bUndoWasEnabled = mbUndoEnabled; + mbUndoEnabled = false; + + BOOL bRet = FALSE; + + try { - Undo( *pActUndoArray->aUndoActions[ --pActUndoArray->nCurUndoAction ] ); - return TRUE; + DBG_ASSERT( pActUndoArray == pUndoArray, "svtools::SfxUndoManager::Undo(), LeaveListAction() not yet called!" ); + if ( pActUndoArray->nCurUndoAction ) + { + Undo( *pActUndoArray->aUndoActions[ --pActUndoArray->nCurUndoAction ] ); + bRet = TRUE; + } } - return FALSE; + catch( Exception& e ) + { + mbUndoEnabled = bUndoWasEnabled; + throw e; + } + mbUndoEnabled = bUndoWasEnabled; + return bRet; } //------------------------------------------------------------------------ void SfxUndoManager::Undo( SfxUndoAction &rAction ) { - rAction.Undo(); + bool bUndoWasEnabled = mbUndoEnabled; + mbUndoEnabled = false; + try + { + rAction.Undo(); + } + catch( Exception& e ) + { + mbUndoEnabled = bUndoWasEnabled; + throw e; + } + + mbUndoEnabled = bUndoWasEnabled; } //------------------------------------------------------------------------ @@ -409,20 +447,47 @@ USHORT SfxUndoManager::GetRedoActionId( USHORT nNo ) const BOOL SfxUndoManager::Redo( USHORT ) { - if ( pActUndoArray->aUndoActions.Count() > pActUndoArray->nCurUndoAction ) + bool bUndoWasEnabled = mbUndoEnabled; + mbUndoEnabled = false; + + BOOL bRet = FALSE; + + try { - Redo( *pActUndoArray->aUndoActions[pActUndoArray->nCurUndoAction++] ); - return TRUE; + if ( pActUndoArray->aUndoActions.Count() > pActUndoArray->nCurUndoAction ) + { + Redo( *pActUndoArray->aUndoActions[pActUndoArray->nCurUndoAction++] ); + bRet = TRUE; + } + } + catch( Exception& e ) + { + mbUndoEnabled = bUndoWasEnabled; + throw e; } - return FALSE; + mbUndoEnabled = bUndoWasEnabled; + return bRet; } //------------------------------------------------------------------------ void SfxUndoManager::Redo( SfxUndoAction &rAction ) { - rAction.Redo(); + bool bUndoWasEnabled = mbUndoEnabled; + mbUndoEnabled = false; + + try + { + rAction.Redo(); + } + catch( Exception& e ) + { + mbUndoEnabled = bUndoWasEnabled; + throw e; + } + + mbUndoEnabled = bUndoWasEnabled; } //------------------------------------------------------------------------ @@ -492,6 +557,9 @@ void SfxUndoManager::EnterListAction( */ { + if( !mbUndoEnabled ) + return; + if ( !pUndoArray->nMaxUndoActions ) return; @@ -511,6 +579,9 @@ void SfxUndoManager::LeaveListAction() Verlaesst die aktuelle ListAction und geht eine Ebene nach oben. */ { + if ( !mbUndoEnabled ) + return; + if ( !pUndoArray->nMaxUndoActions ) return; @@ -745,3 +816,4 @@ USHORT SfxLinkUndoAction::GetId() const } + diff --git a/svtools/source/uno/contextmenuhelper.cxx b/svtools/source/uno/contextmenuhelper.cxx index 3c6e8f23e710..be7738adaf14 100644 --- a/svtools/source/uno/contextmenuhelper.cxx +++ b/svtools/source/uno/contextmenuhelper.cxx @@ -610,7 +610,7 @@ ContextMenuHelper::completeMenuProperties( // Retrieve some settings necessary to display complete context // menu correctly. const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); - bool bShowMenuImages( SvtMenuOptions().IsMenuIconsEnabled() ); + bool bShowMenuImages( rSettings.GetUseImagesInMenus() ); bool bIsHiContrast( rSettings.GetMenuColor().IsDark() ); if ( pMenu ) diff --git a/svtools/source/uno/unoevent.cxx b/svtools/source/uno/unoevent.cxx index 14321ecdd84c..19d40c17ce5c 100644 --- a/svtools/source/uno/unoevent.cxx +++ b/svtools/source/uno/unoevent.cxx @@ -492,7 +492,7 @@ SvDetachedEventDescriptor::~SvDetachedEventDescriptor() delete aMacros[i]; } - delete aMacros; + delete [] aMacros; } sal_Int16 SvDetachedEventDescriptor::getIndex(const sal_uInt16 nID) const diff --git a/svtools/source/uno/unoiface.cxx b/svtools/source/uno/unoiface.cxx index 07cae571b2ae..91a6de4c404d 100644 --- a/svtools/source/uno/unoiface.cxx +++ b/svtools/source/uno/unoiface.cxx @@ -83,6 +83,8 @@ SAL_DLLPUBLIC_EXPORT Window* CreateWindow( VCLXWindow** ppNewComp, const ::com:: if ( pParent ) { pWindow = new MultiLineEdit( pParent, nWinBits|WB_IGNORETAB); + static_cast< MultiLineEdit* >( pWindow )->DisableSelectionOnFocus(); + // #i89821# / 2008-12-17 / frank.schoenheit@sun.com *ppNewComp = new VCLXMultiLineEdit; } else diff --git a/svtools/uno/makefile.mk b/svtools/uno/makefile.mk index 8f61c7100508..b572242f1d85 100644 --- a/svtools/uno/makefile.mk +++ b/svtools/uno/makefile.mk @@ -60,13 +60,11 @@ SHL1LIBS= \ SHL1STDLIBS=\ $(SVTOOLLIB) \ - $(TKLIB) \ $(VCLLIB) \ $(SVLLIB) \ $(UNOTOOLSLIB) \ $(TOOLSLIB) \ $(COMPHELPERLIB) \ - $(VOSLIB) \ $(CPPUHELPERLIB) \ $(CPPULIB) \ $(SALLIB) diff --git a/svtools/util/makefile.mk b/svtools/util/makefile.mk index fffd9692e5dd..d40195609115 100644 --- a/svtools/util/makefile.mk +++ b/svtools/util/makefile.mk @@ -235,10 +235,6 @@ APP2STDLIBS+= -lsvl$(DLLPOSTFIX) APP2STDLIBS+= $(VCLLIB) \ $(TOOLSLIB) \ $(VOSLIB) \ - $(TKLIB) $(SOTLIB) $(UNOTOOLSLIB) $(I18NISOLANGLIB) $(I18NUTILLIB) \ - $(UCBHELPERLIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(CPPULIB) $(ICUUCLIB) \ - $(JVMFWKLIB) $(BASEGFXLIB) $(ICUDATALIB) $(JVMACCESSLIB) \ - $(SALHELPERLIB) $(ICULELIB) \ $(SALLIB) # --- Targets ------------------------------------------------------ diff --git a/toolkit/doc/layout/README b/toolkit/doc/layout/README index 1e3737f90a77..d7ced3891273 100644 --- a/toolkit/doc/layout/README +++ b/toolkit/doc/layout/README @@ -2,19 +2,15 @@ Layout engine for OpenOffice.org - Work in Progress Simple dialogs have been ported now: zoom and wordcount. -Code lives in "layout" CWS. +New code lives in "layoutdialogs" CWS or ooo-build trunk. -* Ceckout layout cws. +* Checkout layoutdialogs cws. * Configure using --enable-layout. -* dmake all +* [d]make all -* dmake install DESTDIR=$(pwd)/ooo-layout/ - -* Source refresh in workben/layout, do something like - - cd toolkit/workben/layout && . ./refresh --inst .../ooo-layout/ +* [d]make install DESTDIR=$(pwd)/ooo-layout/ Integration into OOo: @@ -24,3 +20,5 @@ Integration into OOo: ./soffice.bin Start a [Writer] document and choose View/Zoom or Extra/Word count. + +* Also See workben/layout/README.
\ No newline at end of file diff --git a/toolkit/doc/layout/TODO b/toolkit/doc/layout/TODO index df6b04a99790..fdffa7fad5aa 100644 --- a/toolkit/doc/layout/TODO +++ b/toolkit/doc/layout/TODO @@ -4,6 +4,11 @@ ** Move everything & development into new layout-dialogs CWS ** cleanups +*** Add XRadioButton2 and layout::VCLXRadioButton with + {get,set}RadioGroup. Remove import.cxx RadioGroups::RadioGroup, + VCLXRadioButton::getFirstActionListener () and [actionListener + juggling in] layout::RadioButton_impl::SetClickHdl() and + EnableRadioCheck() layout::RadioButton_impl::Check. *** layout/import.hxx: what's this generator stuff? #if 0 // generator @@ -87,7 +92,6 @@ but keep using yes/no on Windows, eg? *** remove -DTEST_LAYOUT=1 from util/makefile.mk? ** fixes -*** mpRadioGroup HACK --> use radiogroup property *** missing properties 'title' -> 'Set Zoom' Missing prop Title @@ -102,12 +106,18 @@ fHorAlign = fVerAlign = 0.5; --> float const [CENTER?] = 0.5; ** include full translations *** zoom -grep zoom.src svx/source/dialog/localize.sdf | awk -F'\t' '{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "layout", "janneke\\vc\\layout-cws\\toolkit\\workben\\layout\\zoom.xml", $3, "layout", $6 "_label", "", "", $8, "0", $10, $11, $12, "", $14, $15}' | sed -e 's/FL_\(ZOOM\)_label/FL_\1_text/' -e 's/\t_label/\tRID_SVXDLG_ZOOM_title/' -**** done, except for View Layout update: no strings in localize.sdf yet, - must redo. +grep zoom.src svx/source/dialog/localize.sdf | awk -F'\t' '{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "layout", "janneke\\vc\\layout-cws\\toolkit\\workben\\layout\\zoom.xml", $3, "layout", $6 "_label", "", "", $8, "0", $10, $11, $12, "", $14, $15}' | sed -e 's/\(\(FL\|STR\)_[^\t]*\)_label/\1_text/' -e 's/\t_label/\tRID_SVXDLG_ZOOM_title/' *** wordcount grep wordcountdialog.src sw/source/ui/dialog/localize.sdf | awk -F'\t' '{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "layout", "janneke\\vc\\layout-cws\\toolkit\\workben\\layout\\workben.xml", $3, "layout", $6 "_label", "", "", $8, "0", $10, $11, $12, "", $14, $15}' | sed -e 's/FL_\([A-Z]*\)_label/FL_\1_text/' -e 's/\t_label/\tDLG_WORDCOUNT_title/'s - +*** sortdlg +grep sortdlg.src ../../../sc/source/ui/src/localize.sdf | awk -F'\t' '{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "layout", "janneke\\vc\\layout-cws\\toolkit\\workben\\layout\\sort-options.xml", $3, "layout", $6 "_label", "", "", $8, "0", $10, $11, $12, "", $14, $15}' | sed -e 's/\(\(FL\|STR\)_[^\t]*\)_label/\1_text/' -e 's/\t_label/\tRID_SCDLG_SORT_title/' | grep -E ' (nl|de|en-US) ' > localize-str.sdf +grep sortdlg.src sc/source/ui/src/localize.sdf | awk -F'\t' '{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "layout", "sc\\uiconfig\\layout\\sort-options.xml", $3, "layout", $6 "_label", "", "", $8, "0", $10, $11, $12, "", $14, $15}' | sed -e 's/\(\(FL\|STR\)_[^\t]*\)_label/\1_text/' -e 's/\t_label/\tRID_SCDLG_SORT_title/' > sc/uiconfig/layout/localize-sort-options.sdf +*** insert-sheet +grep instbdlg.src sc/source/ui/miscdlgs/localize.sdf | awk -F'\t' '{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "layout", "sc\\uiconfig\\layout\\insert-sheet.xml", $3, "layout", $6 "_label", "", "", $8, "0", $10, $11, $12, "", $14, $15}' | sed -e 's/\(\(FL\|STR\)_[^\t]*\)_label/\1_text/' -e 's/\t_label/\tRID_SCDLG_INSERT_TABLE_title/' > sc/uiconfig/layout/localize-insert-sheet.sdf +*** move-copy-sheet +grep -E 'miscdlgs.src.*(FT_DEST|FT_INSERT|STR_NEWDOC|RID_SCDLG_MOVETAB|BTN_COPY)' sc/source/ui/src/localize.sdf | awk -F'\t' '{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "layout", "sc\\uiconfig\\layout\\move-copy-sheet.xml", $3, "layout", $6 "_label", "", "", $8, "0", $10, $11, $12, "", $14, $15}' | sed -e 's/\(\(FL\|STR\)_[^\t]*\)_label/\1_text/' -e 's/\t_label/\tRID_SCDLG_MOVETAB_title/' > sc/uiconfig/layout/localize-move-copy-sheet.sdf +*** find-and-replace +grep srchdlg.src svx/source/dialog/localize.sdf | awk -F'\t' '{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "layout", "svx\\uiconfig\\layout\\find-and-replace.xml", $3, "layout", $6 "_label", "", "", $8, "0", $10, $11, $12, "", $14, $15}' | sed -e 's/\(\(FL\|STR\)_[^\t]*\)_label/\1_text/' -e 's/\t_label/\tRID_SVXDLG_SEARCH_title/' > svx/uiconfig/layout/localize-find-and-replace.sdf * i18n + forget java property files nonsense diff --git a/toolkit/inc/layout/layout-post.hxx b/toolkit/inc/layout/layout-post.hxx index fb1a809a6156..d5597bb0073b 100644 --- a/toolkit/inc/layout/layout-post.hxx +++ b/toolkit/inc/layout/layout-post.hxx @@ -34,39 +34,72 @@ #if ENABLE_LAYOUT +/* Allow re-inclusion for cxx file. */ +#undef _LAYOUT_PRE_HXX + + #undef AdvancedButton +#undef ApplyButton #undef Box #undef Button #undef CancelButton #undef CheckBox +#undef ComboBox #undef Container +#undef Control +#undef Dialog +#undef Edit +#undef ErrorBox #undef FixedImage #undef FixedInfo #undef FixedLine #undef FixedText -#undef HelpButton #undef HBox +#undef HelpButton +#undef IgnoreButton +#undef ImageButton +#undef InfoBox +#undef ListBox +#undef MessBox +#undef MessageBox #undef MetricField +#undef MetricFormatter #undef MoreButton #undef MultiLineEdit +#undef MultiListBox +#undef NoButton +#undef NumericField +#undef NumericFormatter #undef OKButton +#undef Plugin #undef ProgressBar #undef PushButton +#undef QueryBox #undef RadioButton -#undef SfxModalDialog +#undef ResetButton +#undef RetryButton +#undef SfxTabPage +#undef SfxTabDialog +#undef SpinField +#undef TabDialog +#undef TabControl +#undef TabPage #undef Table #undef VBox +#undef WarningBox +#undef YesButton -#undef Window - -#undef SVX_RES -#define SVX_RES(i) ResId(i,DIALOG_MGR()) +#undef SvxFontListBox +#undef SvxLanguageBox -#undef SW_RES -#define SW_RES(i) ResId(i,SWDIALOG_MGR()) +#undef ModalDialog +#undef ModelessDialog +#undef ScExpandedFixedText +#undef SfxDialog +#undef SfxModalDialog +#undef SfxModelessDialog -/* Allow re-inclusion for cxx file. */ -#undef _LAYOUT_PRE_HXX +#undef Window #endif /* ENABLE_LAYOUT */ diff --git a/toolkit/inc/layout/layout-pre.hxx b/toolkit/inc/layout/layout-pre.hxx index 747c8b13db45..d8a1e5d9665c 100644 --- a/toolkit/inc/layout/layout-pre.hxx +++ b/toolkit/inc/layout/layout-pre.hxx @@ -34,83 +34,78 @@ #if ENABLE_LAYOUT -//#if !LAYOUT -//#define LAYOUT 1 -//#endif -//#define LAYOUT_NS layout - -// TWBN, but find that SfxModalDialog and FixedLine are already defined, eg compiling -// dlgfact.cxx -//typedef layout::Dialog SfxModalDialog; -//typedef layout::FixedLine FixedLine; +///* Allow re-inclusion for next hxx file. */ +#undef _LAYOUT_POST_HXX #define AdvancedButton layout::AdvancedButton +#define ApplyButton layout::ApplyButton #define Box layout::Box #define Button layout::Button #define CancelButton layout::CancelButton #define CheckBox layout::CheckBox +#define ComboBox layout::ComboBox #define Container layout::Container +#define Control layout::Control +#define Dialog layout::Dialog +#define Edit layout::Edit +#define ErrorBox layout::ErrorBox #define FixedImage layout::FixedImage #define FixedInfo layout::FixedInfo #define FixedLine layout::FixedLine #define FixedText layout::FixedText #define HBox layout::HBox #define HelpButton layout::HelpButton +#define IgnoreButton layout::IgnoreButton +#define ImageButton layout::ImageButton +#define InfoBox layout::InfoBox +#define LocalizedString layout::LocalizedString +#define ListBox layout::ListBox +#define MessBox layout::MessBox +#define MessageBox layout::MessageBox #define MetricField layout::MetricField +#define MetricFormatter layout::MetricFormatter #define MoreButton layout::MoreButton #define MultiLineEdit layout::MultiLineEdit +#define MultiListBox layout::MultiListBox +#define NoButton layout::NoButton +#define NumericField layout::NumericField +#define NumericFormatter layout::NumericFormatter #define OKButton layout::OKButton +#define Plugin layout::Plugin #define ProgressBar layout::ProgressBar #define PushButton layout::PushButton +#define QueryBox layout::QueryBox #define RadioButton layout::RadioButton -#define SfxModalDialog layout::Dialog +#define ResetButton layout::ResetButton +#define RetryButton layout::RetryButton +#define SfxTabDialog layout::SfxTabDialog +#define SfxTabPage layout::SfxTabPage +#if ENABLE_LAYOUT +#define SvxFontListBox layout::SvxFontListBox +#define SvxLanguageBox layout::SvxLanguageBox +#endif +#define SpinField layout::SpinField +#define TabControl layout::TabControl +#define TabPage layout::TabPage #define Table layout::Table #define VBox layout::VBox +#define WarningBox layout::WarningBox +#define YesButton layout::YesButton -/* FIXME: why are we defaulting to layout::Window? - /home/janneke/vc/ooo-build/build/hack/sw/source/ui/dialog/wordcountdialog.cxx:87: error: no matching function for call to 'layout::Dialog::Dialog(Window*&, const char [14], const char [7])' - ../../../../layout/inc/layout/layout.hxx:304: note: candidates are: layout::Dialog::Dialog(layout::Window*, const char*, const char*, sal_uInt32) - ../../../../layout/inc/layout/layout.hxx:300: note: layout::Dialog::Dialog(const layout::Dialog&) -*/ +#define ModalDialog Dialog +#define ModelessDialog Dialog +#define ScExpandedFixedText FixedText +#define SfxDialog Dialog +#define SfxModalDialog Dialog +#define SfxModelessDialog Dialog +#define TabDialog Dialog #define Window ::Window -#undef SVX_RES -#define SVX_RES(x) #x -#undef SW_RES -#define SW_RES(x) #x - -/* Hmm. This hack makes zoom.cxx, wordcountdialog.cxx diffs smaller - * but is not scalable. */ -#ifdef _LAYOUT_POST_HXX - -#ifdef _SVX_RECOVER_CXX -#undef SfxModalDialog -// 3rd parameter must match ID in <modaldialog> "RID_SVXDLG_RECOVER", localize.sdf -#define SfxModalDialog( pParent, SVX_RES_RID ) layout::Dialog( pParent, "recover.xml", "RID_SVXDLG_RECOVER" ) -//#define _SVX_RECOVER_HRC -#endif /* _SVX_RECOVER_CXX */ - -#ifdef SW_WORDCOUNTDIALOG_HXX -#undef SfxModalDialog -// 3rd parameter must match ID in <modaldialog> "DLG_WORDCOUNT", localize.sdf -#define SfxModalDialog( pParent, SW_RES_RID ) layout::Dialog( pParent, "wordcount.xml", "DLG_WORDCOUNT" ) -#define SW_WORDCOUNTDIALOG_HRC -#endif /* SW_WORDCOUNTDIALOG_HXX */ - -#ifdef _SVX_ZOOM_CXX -#undef SfxModalDialog -// 3rd parameter must match ID in <modaldialog> "RID_SVXDLG_ZOOM", localize.sdf -#define SfxModalDialog( pParent, SVX_RES_RID ) layout::Dialog( pParent, "zoom.xml", "RID_SVXDLG_ZOOM" ) -#define _SVX_ZOOM_HRC -#endif /* _SVX_ZOOM_CXX */ - -#endif /* _LAYOUT_POST_HXX */ - -#else /* !ENABLE_LAYOUT */ +#else -#define LAYOUT_PRE_POST +#define LocalizedString String -#endif /* !ENABLE_LAYOUT */ +#endif /* ENABLE_LAYOUT */ #endif /* _LAYOUT_PRE_HXX */ diff --git a/toolkit/inc/layout/layout.hxx b/toolkit/inc/layout/layout.hxx index 2f3ff0df461f..19179507b294 100644 --- a/toolkit/inc/layout/layout.hxx +++ b/toolkit/inc/layout/layout.hxx @@ -32,21 +32,54 @@ #ifndef _LAYOUT_HXX #define _LAYOUT_HXX -#include <com/sun/star/uno/XInterface.hpp> #include <com/sun/star/awt/XLayoutContainer.hpp> +#include <com/sun/star/uno/XInterface.hpp> #include <com/sun/star/util/Color.hpp> +#include <i18npool/lang.h> +#include <toolkit/dllapi.h> +#include <tools/gen.hxx> #include <tools/link.hxx> #include <tools/string.hxx> - -// FIXME: eventually wrap FieldUnit +#include <vcl/bitmap.hxx> +#include <vcl/combobox.h> #include <vcl/fldunit.hxx> -// FIXME: eventually wrap this too ... +#include <vcl/lstbox.h> +#include <vcl/smartid.hxx> #include <vcl/wintypes.hxx> -#include <toolkit/dllapi.h> - -class Window; +class Button; +class ComboBox; +class Color; +class Control; +class Dialog; +class Edit; +class Font; class Image; +class ListBox; +class MapMode; +class MultiListBox; +class NotifyEvent; +class Pointer; +class PushButton; +class RadioButton; +class ResId; +struct SfxChildWinInfo; +//class SvxFontListBox; +//class SvxLanguageBox; +class TabControl; +class TabPage; +class VCLXRadioButton; +class VCLXWindow; +class Window; + +namespace layoutimpl +{ +class VCLXTabControl; +} + +class VCLXTabControl; + +namespace com { namespace sun { namespace star { namespace awt { class XWindow; } } } } namespace layout { @@ -60,8 +93,8 @@ class TOOLKIT_DLLPUBLIC Context ContextImpl *pImpl; public: Context( char const* pPath ); - ~Context(); - PeerHandle GetPeerHandle( char const* pId, sal_uInt32 nId = 0 ) const; + virtual ~Context(); + PeerHandle GetPeerHandle( char const* id, sal_uInt32 nId = 0 ) const; void setToplevel( PeerHandle xToplevel ); PeerHandle getToplevel(); PeerHandle getRoot(); @@ -74,36 +107,95 @@ public: par( pImpl ) {} \ char const* GetUnoName() const; \ public: \ - t( Context *pCtx, char const* pId, sal_uInt32 nId = 0 ); \ - t( Window *pParent, WinBits nStyle = defaultWinBit ) + t( Context *context, char const* id, sal_uInt32 nId = 0 ); \ + t( Window *parent, WinBits nStyle = defaultWinBit ); \ + t (Window *parent, ResId const &res) #define DECL_GET_IMPL(t) \ inline t##Impl &getImpl() const +#define DECL_GET_WINDOW( cls ) ::cls* Get##cls() const +#define IMPL_GET_WINDOW( cls ) ::cls* cls::Get##cls() const { return dynamic_cast< ::cls*>( GetWindow() ); } + +#define DECL_GET_VCLXWINDOW( cls ) ::VCLX##cls* GetVCLX##cls() const +#define IMPL_GET_VCLXWINDOW( cls ) ::VCLX##cls* cls::Get##VCLX##cls() const { return dynamic_cast< ::VCLX##cls*>( GetVCLXWindow() ); } + +#define DECL_GET_LAYOUT_VCLXWINDOW( cls ) ::layoutimpl::VCLX##cls* GetVCLX##cls() const +#define IMPL_GET_LAYOUT_VCLXWINDOW( cls ) ::layoutimpl::VCLX##cls* cls::Get##VCLX##cls() const { return dynamic_cast< ::layoutimpl::VCLX##cls*>( GetVCLXWindow() ); } + // follows the VCL inheritance hierarchy ... class WindowImpl; class TOOLKIT_DLLPUBLIC Window { protected: + friend class WindowImpl; WindowImpl *mpImpl; - static PeerHandle CreatePeer( Window *pParent, WinBits nStyle, + static PeerHandle CreatePeer( Window *parent, WinBits nStyle, char const* pName); + + virtual void setRes (ResId const& res); + public: - PeerHandle GetPeer(); - Context *getContext(); DECL_GET_IMPL( Window ); explicit Window( WindowImpl *pImpl ); virtual ~Window(); + PeerHandle GetPeer() const; + Context *getContext(); + void Enable( bool bEnable = true ); inline void Disable() { Enable( false ); } - void Show( BOOL bVisible = TRUE ); - inline void Hide() { Show( FALSE ); } + void Show( bool bVisible = true ); + inline void Hide() { Show( false ); } void GrabFocus(); void FreeResource() {} + void SetParent( ::Window *parent ); + virtual void ParentSet (Window *window); + void SetParent( Window *parent ); + + css::uno::Reference<css::awt::XWindow> GetRef() const; + VCLXWindow* GetVCLXWindow() const; + ::Window* GetWindow() const; + ::Window* GetParent() const; + + void SetPointer( Pointer const& pointer ); + Pointer const& GetPointer() const; WinBits GetStyle(); - void SetStyle( WinBits nStyle ); + void SetText( rtl::OUString const& str ); + String GetText() const; + void SetStyle( WinBits style ); + void SetUpdateMode( bool mode ); + void SetHelpId( sal_uIntPtr id ); + sal_uIntPtr GetHelpId() const; + void SetSmartHelpId( SmartId const&, SmartIdUpdateMode mode=SMART_SET_SMART ); + SmartId GetSmartHelpId() const; + void EnterWait (); + void LeaveWait (); + bool IsWait () const; + //void Enable (bool enable=true, bool child=true); + //void Disable (bool child=true); + bool IsEnabled () const; + void EnableInput (bool enable=true, bool child=true); + bool IsInputEnabled () const; + + bool IsVisible () const; + bool HasChildPathFocus (bool systemWindow=false) const; + void SetPosPixel (Point const&); + Point GetPosPixel () const; + void SetSizePixel (Size const&); + Size GetSizePixel () const; + void SetPosSizePixel (Point const&, Size const&); + sal_Int32 GetCtrlTextWidth (rtl::OUString const& str) const; + sal_Int32 GetTextHeight () const; + + Size LogicToPixel( Size const& size ) const; + Size LogicToPixel( Size const& size, MapMode const& mapMode ) const; + + bool HasFocus () const; + Font& GetFont () const; + void SetFont (Font const& font); + virtual void Invalidate (sal_uInt8 flags=0); }; class ControlImpl; @@ -111,34 +203,39 @@ class TOOLKIT_DLLPUBLIC Control : public Window { DECL_GET_IMPL( Control ); DECL_CONSTRUCTORS( Control, Window, 0 ); + public: -// void SetText( String const& rStr ); - can't do this here ... + ~Control (); + void SetGetFocusHdl (Link const& link); + Link& GetGetFocusHdl (); + void SetLoseFocusHdl (Link const& link); + Link& GetLoseFocusHdl (); }; class FixedLineImpl; class TOOLKIT_DLLPUBLIC FixedLine : public Control { - friend class FixedLineImpl; DECL_GET_IMPL( FixedLine ); DECL_CONSTRUCTORS( FixedLine, Control, WB_HORZ ); + public: - bool IsEnabled(); + bool IsEnabled() const; }; class FixedTextImpl; class TOOLKIT_DLLPUBLIC FixedText : public Control { - friend class FixedTextImpl; DECL_GET_IMPL( FixedText ); DECL_CONSTRUCTORS( FixedText, Control, 0 ); + public: - void SetText( String const& rStr ); + ~FixedText (); + void SetText( rtl::OUString const& rStr ); }; class FixedImageImpl; class TOOLKIT_DLLPUBLIC FixedImage : public Control { - friend class FixedImageImpl; DECL_GET_IMPL( FixedImage ); DECL_CONSTRUCTORS( FixedImage, Control, 0 ); public: @@ -148,7 +245,6 @@ public: class FixedInfoImpl; class TOOLKIT_DLLPUBLIC FixedInfo : public FixedText { - friend class FixedInfoImpl; DECL_GET_IMPL( FixedInfo ); DECL_CONSTRUCTORS( FixedInfo, FixedText, 0 ); }; @@ -166,16 +262,21 @@ public: class ButtonImpl; class TOOLKIT_DLLPUBLIC Button : public Control { - friend class ButtonImpl; DECL_GET_IMPL( Button ); DECL_CONSTRUCTORS( Button, Control, 0 ); + DECL_GET_WINDOW (Button); + public: - void SetText( String const& rStr ); - BOOL SetModeImage( const Image& rImage ); + ~Button (); + static String GetStandardText (sal_uInt16 button_type); + void SetText( rtl::OUString const& rStr ); + bool SetModeImage (Image const& image); + bool SetModeImage (::Image const& image, BmpColorMode mode=BMP_COLOR_NORMAL); void SetImageAlign( ImageAlign eAlign ); void SetClickHdl( Link const& rLink ); virtual void Click() /* pure virtual? */; + Link& GetClickHdl (); }; class PushButtonImpl; @@ -183,9 +284,12 @@ class TOOLKIT_DLLPUBLIC PushButton : public Button { DECL_GET_IMPL( PushButton ); DECL_CONSTRUCTORS( PushButton, Button, 0 ); + DECL_GET_WINDOW (PushButton); + public: - void Check( BOOL bCheck = TRUE ); - BOOL IsChecked() const; + ~PushButton (); + void Check( bool bCheck=true ); + bool IsChecked() const; void Toggle(); void SetToggleHdl( Link const& rLink ); @@ -227,6 +331,10 @@ class TOOLKIT_DLLPUBLIC HelpButton : public PushButton { DECL_CONSTRUCTORS( HelpButton, PushButton, 0 ); }; +class TOOLKIT_DLLPUBLIC ImageButton : public PushButton +{ + DECL_CONSTRUCTORS( ImageButton, PushButton, 0 ); +}; class AdvancedButtonImpl; class TOOLKIT_DLLPUBLIC AdvancedButton : public PushButton @@ -238,6 +346,12 @@ class TOOLKIT_DLLPUBLIC AdvancedButton : public PushButton void AddSimple( Window* w ); void RemoveAdvanced( Window* w ); void RemoveSimple( Window* w ); + + void SetAdvancedText (rtl::OUString const& text); + void SetSimpleText (rtl::OUString const& text); + rtl::OUString GetAdvancedText () const; + rtl::OUString GetSimpleText () const; + void SetDelta (int); }; class MoreButtonImpl; @@ -247,6 +361,11 @@ class TOOLKIT_DLLPUBLIC MoreButton : public AdvancedButton DECL_GET_IMPL( MoreButton ); void AddWindow( Window* w ); void RemoveWindow( Window* w ); + + void SetMoreText (rtl::OUString const& text); + void SetLessText (rtl::OUString const& text); + rtl::OUString GetMoreText () const; + rtl::OUString GetLessText () const; }; class RadioButtonImpl; @@ -254,9 +373,12 @@ class TOOLKIT_DLLPUBLIC RadioButton : public Button { DECL_GET_IMPL( RadioButton ); DECL_CONSTRUCTORS( RadioButton, Button, 0 ); + DECL_GET_WINDOW( RadioButton ); + DECL_GET_VCLXWINDOW( RadioButton ); public: - void Check( BOOL bCheck = TRUE ); - BOOL IsChecked() const; + ~RadioButton (); + void Check( bool bCheck=true ); + bool IsChecked() const; void Toggle(); void SetToggleHdl( Link const& rLink ); @@ -267,9 +389,11 @@ class TOOLKIT_DLLPUBLIC CheckBox : public Button { DECL_GET_IMPL( CheckBox ); DECL_CONSTRUCTORS( CheckBox, Button, 0 ); + public: - void Check( BOOL bCheck = TRUE ); - BOOL IsChecked() const; + ~CheckBox (); + void Check( bool bCheck=true ); + bool IsChecked() const; void Toggle(); void SetToggleHdl( Link const& rLink ); @@ -280,10 +404,14 @@ class TOOLKIT_DLLPUBLIC Edit : public Control { DECL_GET_IMPL( Edit ); DECL_CONSTRUCTORS( Edit, Control, WB_BORDER ); + DECL_GET_WINDOW (Edit); + public: - void SetText( XubString const& rStr ) const; - XubString GetText() const; + ~Edit (); + void SetText( rtl::OUString const& rStr ); + String GetText() const; void SetModifyHdl( Link const& rLink ); + void SetSelection( Selection const& rSelection ); }; class MultiLineEditImpl; @@ -305,8 +433,7 @@ class TOOLKIT_DLLPUBLIC FormatterBase { protected: FormatterBaseImpl *mpFormatImpl; - FormatterBase( FormatterBaseImpl *pFormatImpl ) - : mpFormatImpl( pFormatImpl ) {} + FormatterBase( FormatterBaseImpl *pFormatImpl ); }; class NumericFormatterImpl; @@ -331,8 +458,8 @@ class TOOLKIT_DLLPUBLIC NumericField : public SpinField, public NumericFormatter { DECL_GET_IMPL( NumericField ); public: - NumericField( Context *pCtx, char const* pId, sal_uInt32 nId = 0 ); - NumericField( Window *pParent, WinBits nStyle ); + NumericField( Context *context, char const* id, sal_uInt32 nId=0 ); + NumericField( Window *parent, WinBits nStyle ); }; class MetricFormatterImpl; @@ -343,12 +470,12 @@ class TOOLKIT_DLLPUBLIC MetricFormatter : public FormatterBase explicit MetricFormatter( FormatterBaseImpl *pImpl ); MetricFormatterImpl &getFormatImpl() const; public: - void SetMin( sal_Int64 nNewMin, FieldUnit nUnit = FUNIT_NONE ); - void SetMax( sal_Int64 nNewMax, FieldUnit nUnit = FUNIT_NONE ); - void SetFirst( sal_Int64 nNewFirst, FieldUnit nUnit = FUNIT_NONE ); - void SetLast( sal_Int64 nNewLast, FieldUnit nUnit = FUNIT_NONE ); - void SetValue( sal_Int64 nNewValue, FieldUnit nUnit = FUNIT_NONE ); - sal_Int64 GetValue( FieldUnit nUnit = FUNIT_NONE ) const; + void SetMin( sal_Int64 nNewMin, FieldUnit nUnit=FUNIT_NONE ); + void SetMax( sal_Int64 nNewMax, FieldUnit nUnit=FUNIT_NONE ); + void SetFirst( sal_Int64 nNewFirst, FieldUnit nUnit=FUNIT_NONE ); + void SetLast( sal_Int64 nNewLast, FieldUnit nUnit=FUNIT_NONE ); + void SetValue( sal_Int64 nNewValue, FieldUnit nUnit=FUNIT_NONE ); + sal_Int64 GetValue( FieldUnit nUnit=FUNIT_NONE ) const; void SetSpinSize( sal_Int64 nNewSize ); }; @@ -358,73 +485,209 @@ class TOOLKIT_DLLPUBLIC MetricField : public SpinField, public MetricFormatter { DECL_GET_IMPL( MetricField ); public: - MetricField( Context *pCtx, char const* pId, sal_uInt32 nId = 0 ); - MetricField( Window *pParent, WinBits nStyle ); + MetricField( Context *context, char const* id, sal_uInt32 nId=0 ); + MetricField( Window *parent, WinBits nStyle ); }; -#define COMBOBOX_APPEND ((USHORT)0xFFFF) -#define COMBOBOX_ENTRY_NOTFOUND ((USHORT)0xFFFF) class ComboBoxImpl; class TOOLKIT_DLLPUBLIC ComboBox : public Edit { DECL_GET_IMPL( ComboBox ); + DECL_GET_WINDOW (ComboBox ); DECL_CONSTRUCTORS( ComboBox, Edit, 0 ); public: - USHORT InsertEntry( XubString const& rStr, USHORT nPos = COMBOBOX_APPEND ); - void RemoveEntry( XubString const& rStr ); - void RemoveEntry( USHORT nPos ); + ~ComboBox (); + sal_uInt16 InsertEntry( String const& rStr, sal_uInt16 nPos=COMBOBOX_APPEND ); + void RemoveEntry( String const& rStr ); + void RemoveEntry( sal_uInt16 nPos ); void Clear(); - USHORT GetEntryPos( XubString const& rStr ) const; - XubString GetEntry( USHORT nPos ) const; - USHORT GetEntryCount() const; + sal_uInt16 GetEntryPos( String const& rStr ) const; + String GetEntry( sal_uInt16 nPos ) const; + sal_uInt16 GetEntryCount() const; void SetClickHdl( Link const& rLink ); void SetSelectHdl( Link const& rLink ); + void EnableAutocomplete (bool enable, bool matchCase=false ); }; -#define LISTBOX_APPEND ((USHORT)0xFFFF) -#define LISTBOX_ENTRY_NOTFOUND ((USHORT)0xFFFF) class ListBoxImpl; class TOOLKIT_DLLPUBLIC ListBox : public Control { DECL_GET_IMPL( ListBox ); DECL_CONSTRUCTORS( ListBox, Control, WB_BORDER ); + DECL_GET_WINDOW (ListBox); + public: - USHORT InsertEntry( XubString const& rStr, USHORT nPos = LISTBOX_APPEND ); + ~ListBox (); + sal_uInt16 InsertEntry( String const& rStr, sal_uInt16 nPos=LISTBOX_APPEND ); - void RemoveEntry( XubString const& rStr ); - void RemoveEntry( USHORT nPos ); + void RemoveEntry( String const& rStr ); + void RemoveEntry( sal_uInt16 nPos ); void Clear(); - USHORT GetEntryPos( XubString const& rStr ) const; - XubString GetEntry( USHORT nPos ) const; - USHORT GetEntryCount() const; + sal_uInt16 GetEntryPos( String const& rStr ) const; + String GetEntry( sal_uInt16 nPos ) const; + sal_uInt16 GetEntryCount() const; - void SelectEntry( XubString const& rStr, BOOL bSelect = TRUE ); - void SelectEntryPos( USHORT nPos, BOOL bSelect = TRUE ); + void SelectEntry( String const& rStr, bool bSelect=true ); + void SelectEntryPos( sal_uInt16 nPos, bool bSelect=true ); - USHORT GetSelectEntryCount() const; - XubString GetSelectEntry( USHORT nSelIndex = 0 ) const; - USHORT GetSelectEntryPos( USHORT nSelIndex = 0 ) const; + sal_uInt16 GetSelectEntryCount() const; + String GetSelectEntry( sal_uInt16 nSelIndex=0 ) const; + sal_uInt16 GetSelectEntryPos( sal_uInt16 nSelIndex=0 ) const; - void SetSelectHdl( Link const& rLink ); - void SetClickHdl( Link const& rLink ); + void SetSelectHdl (Link const& link); + Link& GetSelectHdl (); + + void SetClickHdl (Link const& link); + Link& GetClickHdl (); + + void SetDoubleClickHdl (Link const& link); + Link& GetDoubleClickHdl (); + + void SetEntryData (sal_uInt16 pos, void* data); + void* GetEntryData (sal_uInt16 pos) const; + + virtual void SetNoSelection (); +}; + +class MultiListBoxImpl; +class TOOLKIT_DLLPUBLIC MultiListBox : public ListBox +{ + DECL_GET_IMPL( MultiListBox ); + DECL_CONSTRUCTORS( MultiListBox, ListBox, 0 ); + DECL_GET_WINDOW( MultiListBox ); }; class DialogImpl; class TOOLKIT_DLLPUBLIC Dialog : public Context, public Window { - DECL_GET_IMPL( Dialog ); - void SetParent( Window *pParent ); - void SetParent( ::Window *pParent ); + DECL_GET_WINDOW (Dialog); + +public: + DECL_GET_IMPL (Dialog); + Dialog( Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0 ); + Dialog( ::Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0 ); + ~Dialog (); + virtual short Execute(); + void EndDialog( long nResult=0 ); + void SetText( rtl::OUString const& rStr ); + void SetTitle (rtl::OUString const& rStr ); + bool Close (); + long Notify (NotifyEvent & event); + + // Sxf*Dialog + bool bConstruct; + void Initialize (SfxChildWinInfo*); +}; + +#define DECL_MESSAGE_BOX_CTORS(Name)\ + public:\ + Name##Box (::Window *parent, char const* message,\ + char const* yes=0, char const* no=0, sal_uIntPtr help_id=0,\ + char const* xml_file="message-box.xml", char const* id="message-box");\ + Name##Box (::Window *parent, rtl::OUString const& message,\ + rtl::OUString yes=String (),\ + rtl::OUString no=String (),\ + sal_uIntPtr help_id=0,\ + char const* xml_file="message-box.xml", char const* id="message-box");\ + Name##Box (::Window *parent, WinBits, char const* message,\ + char const* yes=0, char const* no=0, sal_uIntPtr help_id=0,\ + char const* xml_file="message-box.xml", char const* id="message-box");\ + Name##Box (::Window *parent, WinBits, rtl::OUString const& message,\ + rtl::OUString yes=String (),\ + rtl::OUString no=String (),\ + sal_uIntPtr help_id=0,\ + char const* xml_file="message-box.xml", char const* id="message-box")\ + +class TOOLKIT_DLLPUBLIC MessageBox : public Dialog +{ + DECL_MESSAGE_BOX_CTORS(Message); + +protected: + FixedImage imageError; + FixedImage imageInfo; + FixedImage imageQuery; + FixedImage imageWarning; + FixedText messageText; + CancelButton cancelButton; + HelpButton helpButton; + IgnoreButton ignoreButton; + NoButton noButton; + RetryButton retryButton; + YesButton yesButton; + + void bits_init (WinBits bits, rtl::OUString const& message, + rtl::OUString yes, rtl::OUString, sal_uIntPtr help_id); + void init (rtl::OUString const& message, + rtl::OUString const& yes, rtl::OUString const& no, sal_uIntPtr help_id); + void init (char const* message, char const* yes, char const* no, sal_uIntPtr help_id); +}; + +#define CLASS_MESSAGE_BOX(Name)\ + class TOOLKIT_DLLPUBLIC Name##Box : public MessageBox\ + {\ + DECL_MESSAGE_BOX_CTORS (Name);\ + } + +//CLASS_MESSAGE_BOX (Mess); +typedef MessageBox MessBox; +CLASS_MESSAGE_BOX (Error); +CLASS_MESSAGE_BOX (Info); +CLASS_MESSAGE_BOX (Query); +CLASS_MESSAGE_BOX (Warning); + +#undef CLASS_MESSAGE_BOX + +#undef TAB_APPEND + +class TabControlImpl; +class TOOLKIT_DLLPUBLIC TabControl : public Control +{ +//#ifndef TAB_APPEND +#define TAB_APPEND 0xFFFF +//#endif /* !TAB_APPEND */ + + DECL_GET_IMPL (TabControl); + DECL_CONSTRUCTORS (TabControl, Control, 0); + DECL_GET_WINDOW (TabControl); + DECL_GET_LAYOUT_VCLXWINDOW (TabControl); + +public: + ~TabControl (); + void InsertPage (sal_uInt16 id, rtl::OUString const& title, sal_uInt16 pos=TAB_APPEND); + void RemovePage (sal_uInt16 id); + sal_uInt16 GetPageCount () const; + sal_uInt16 GetPageId (sal_uInt16 pos) const; + sal_uInt16 GetPagePos (sal_uInt16 id) const; + void SetCurPageId (sal_uInt16 id); + sal_uInt16 GetCurPageId () const; + void SetTabPage (sal_uInt16 id, ::TabPage* page); + ::TabPage* GetTabPage (sal_uInt16 id) const; + void SetActivatePageHdl (Link const& link); + Link& GetActivatePageHdl () const; + void SetDeactivatePageHdl (Link const& link); + Link& GetDeactivatePageHdl () const; + void SetTabPageSizePixel (Size const& size); + Size GetTabPageSizePixel () const; +}; + +class TabPageImpl; +class TOOLKIT_DLLPUBLIC TabPage : public Context, public Window +{ + DECL_GET_IMPL( TabPage ); public: - Dialog( Window *pOptParent, char const* pXMLPath, char const* pId, sal_uInt32 nId = 0 ); - Dialog( ::Window *pOptParent, char const* pXMLPath, char const* pId, sal_uInt32 nId = 0 ); - short Execute(); - void EndDialog( long nResult = 0 ); - void SetText( String const& rStr ); + static ::Window* global_parent; + static TabControl* global_tabcontrol; + + TabPage( Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0 ); + TabPage( ::Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0 ); + ~TabPage(); + DECL_GET_WINDOW( TabPage ); + virtual void ActivatePage(); + virtual void DeactivatePage(); }; class ProgressBarImpl; @@ -450,7 +713,7 @@ protected: css::uno::Reference< css::awt::XLayoutContainer > mxContainer; Container( rtl::OUString const& rName, sal_Int32 nBorder ); public: - Container( Context const* pCtx, char const* pId ); + Container( Context const* context, char const* id ); void Add( Window *pWindow ); void Add( Container *pContainer ); @@ -474,11 +737,11 @@ class TOOLKIT_DLLPUBLIC Table : public Container protected: Table( sal_Int32 nBorder, sal_Int32 nColumns ); public: - Table( Context const* pCtx, char const* pId ); + Table( Context const* context, char const* id ); void Add( Window *pWindow, bool bXExpand, bool bYExpand, - sal_Int32 nXSpan = 1, sal_Int32 nYSpan = 1 ); + sal_Int32 nXSpan=1, sal_Int32 nYSpan=1 ); void Add( Container *pContainer, bool bXExpand, bool bYExpand, - sal_Int32 nXSpan = 1, sal_Int32 nYSpan = 1 ); + sal_Int32 nXSpan=1, sal_Int32 nYSpan=1 ); private: void setProps( css::uno::Reference< css::awt::XLayoutConstrains > xChild, @@ -490,7 +753,7 @@ class TOOLKIT_DLLPUBLIC Box : public Container protected: Box( rtl::OUString const& rName, sal_Int32 nBorder, bool bHomogeneous ); public: - Box( Context const* pCtx, char const* pId ); + Box( Context const* context, char const* id ); void Add( Window *pWindow, bool bExpand, bool bFill, sal_Int32 nPadding); void Add( Container *pContainer, bool bExpand, bool bFill, sal_Int32 nPadding); @@ -502,16 +765,69 @@ private: class TOOLKIT_DLLPUBLIC HBox : public Box { public: - HBox( Context const* pCtx, char const* pId ); + HBox( Context const* context, char const* id ); HBox( sal_Int32 nBorder, bool bHomogeneous ); }; class TOOLKIT_DLLPUBLIC VBox : public Box { public: - VBox( Context const* pCtx, char const* pId ); + VBox( Context const* context, char const* id ); VBox( sal_Int32 nBorder, bool bHomogeneous ); }; +class PluginImpl; +class TOOLKIT_DLLPUBLIC Plugin : public Control +{ + DECL_GET_IMPL( Plugin ); + //DECL_CONSTRUCTORS( Plugin, Control, 0 ); +public: + ::Control *mpPlugin; + Plugin( Context *context, char const* id, ::Control *plugin ); +}; + +class LocalizedStringImpl; +class TOOLKIT_DLLPUBLIC LocalizedString : public Window +{ + DECL_GET_IMPL( LocalizedString ); + +public: + LocalizedString( Context *context, char const* id ); + + rtl::OUString operator= (rtl::OUString const&); + rtl::OUString operator+= (sal_Unicode ); + rtl::OUString operator+= (rtl::OUString const&); + + operator rtl::OUString (); + operator rtl::OUString const& (); + operator String(); + String getString (); + rtl::OUString getOUString (); + String GetToken (USHORT i, sal_Char c); +}; + +class InPlugImpl; +class TOOLKIT_DLLPUBLIC InPlug : public Context, public Window +{ + DECL_GET_IMPL (InPlug); + +public: + InPlug ( Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0); + InPlug ( ::Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0); + + void ParentSet (Window *window); +}; + } // end namespace layout +#if ENABLE_LAYOUT +#define LAYOUT_NS layout:: +#define LAYOUT_DIALOG_PARENT\ + VCLXWindow::GetImplementation( uno::Reference <awt::XWindow> ( GetPeer(), uno::UNO_QUERY ) )->GetWindow() +#define LAYOUT_THIS_WINDOW( this ) this->GetWindow () +#else /* !ENABLE_LAYOUT */ +#define LAYOUT_NS +#define LAYOUT_DIALOG_PARENT this +#define LAYOUT_THIS_WINDOW( this ) this +#endif /* !ENABLE_LAYOUT */ + #endif /* _LAYOUT_HXX */ diff --git a/toolkit/inc/toolkit/awt/vclxwindows.hxx b/toolkit/inc/toolkit/awt/vclxwindows.hxx index d131a0d5199a..3e61a9e9aa87 100644 --- a/toolkit/inc/toolkit/awt/vclxwindows.hxx +++ b/toolkit/inc/toolkit/awt/vclxwindows.hxx @@ -181,6 +181,7 @@ protected: public: VCLXButton(); + ~VCLXButton(); // ::com::sun::star::lang::XComponent void SAL_CALL dispose( ) throw(::com::sun::star::uno::RuntimeException); @@ -346,6 +347,8 @@ public: static void ImplGetPropertyIds( std::list< sal_uInt16 > &aIds ); virtual void GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); } + + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getFirstActionListener (); }; // ---------------------------------------------------- @@ -764,6 +767,7 @@ protected: public: VCLXComboBox(); + ~VCLXComboBox(); // ::com::sun::star::uno::XInterface ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException); diff --git a/toolkit/inc/toolkit/controls/unocontrol.hxx b/toolkit/inc/toolkit/controls/unocontrol.hxx index 690b34e5e8e0..d7a6d749902b 100644 --- a/toolkit/inc/toolkit/controls/unocontrol.hxx +++ b/toolkit/inc/toolkit/controls/unocontrol.hxx @@ -124,7 +124,7 @@ protected: ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > getParentPeer() const; void updateFromModel(); void peerCreated(); - bool ImplMapPlaceHolder( ::rtl::OUString& rPlaceHolder ); + bool ImplCheckLocalize( ::rtl::OUString& _rPossiblyLocalizable ); ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > ImplGetCompatiblePeer( sal_Bool bAcceptExistingPeer ); virtual void ImplSetPeerProperty( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Any& rVal ); virtual void PrepareWindowDescriptor( ::com::sun::star::awt::WindowDescriptor& rDesc ); diff --git a/toolkit/inc/toolkit/helper/property.hxx b/toolkit/inc/toolkit/helper/property.hxx index da2de08c9544..f5e1b4ea3770 100644 --- a/toolkit/inc/toolkit/helper/property.hxx +++ b/toolkit/inc/toolkit/helper/property.hxx @@ -165,7 +165,7 @@ namespace rtl { #define BASEPROPERTY_IMAGEPOSITION 113 // sal_Int16 #define BASEPROPERTY_NATIVE_WIDGET_LOOK 114 // sal_Bool #define BASEPROPERTY_VERTICALALIGN 115 // VerticalAlignment -#define BASEPROPERTY_WHEELWITHOUTFOCUS 116 // sal_Bool +#define BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR 116 // sal_Int16 #define BASEPROPERTY_GRAPHIC 117 // css.graphic.XGraphic #define BASEPROPERTY_STEP_TIME 118 // sal_Int32 #define BASEPROPERTY_DECORATION 119 // sal_Bool @@ -191,6 +191,7 @@ namespace rtl { #define BASEPROPERTY_IMAGE_SCALE_MODE 137 #define BASEPROPERTY_WRITING_MODE 138 #define BASEPROPERTY_CONTEXT_WRITING_MODE 139 +#define BASEPROPERTY_ENABLEVISIBLE 140 // sal_Bool // Keine gebundenen Properties, werden immer aus der Property BASEPROPERTY_FONTDESCRIPTOR entnommen. #define BASEPROPERTY_FONTDESCRIPTORPART_START 1000 diff --git a/toolkit/inc/toolkit/helper/vclunohelper.hxx b/toolkit/inc/toolkit/helper/vclunohelper.hxx index 68583f99b447..1c5d89a3cc64 100644 --- a/toolkit/inc/toolkit/helper/vclunohelper.hxx +++ b/toolkit/inc/toolkit/helper/vclunohelper.hxx @@ -135,11 +135,15 @@ public: static MapUnit /* MapModeUnit */ ConvertToMapModeUnit(sal_Int16 /* com.sun.star.util.MeasureUnit.* */ _nMeasureUnit) throw (::com::sun::star::lang::IllegalArgumentException); static sal_Int16 /* com.sun.star.util.MeasureUnit.* */ ConvertToMeasurementUnit(MapUnit /* MapModeUnit */ _nMapModeUnit) throw (::com::sun::star::lang::IllegalArgumentException); + static ::Size /* VCLSize */ ConvertToVCLSize(::com::sun::star::awt::Size const& _aSize); static ::com::sun::star::awt::Size ConvertToAWTSize(::Size /* VCLSize */ const& _aSize); + static ::Point /* VCLPoint */ ConvertToVCLPoint(::com::sun::star::awt::Point const& _aPoint); static ::com::sun::star::awt::Point ConvertToAWTPoint(::Point /* VCLPoint */ const& _aPoint); + static ::Rectangle ConvertToVCLRect( ::com::sun::star::awt::Rectangle const & _rRect ); + static ::com::sun::star::awt::Rectangle ConvertToAWTRect( ::Rectangle const & _rRect ); }; diff --git a/toolkit/prj/build.lst b/toolkit/prj/build.lst index 8b7ac22bd209..7fa0efaded53 100644 --- a/toolkit/prj/build.lst +++ b/toolkit/prj/build.lst @@ -2,10 +2,11 @@ ti toolkit : vcl NULL ti toolkit usr1 - all ti_mkout NULL ti toolkit\prj get - all ti_prj NULL ti toolkit\inc nmake - all ti_inc NULL +ti toolkit\uiconfig\layout nmake - all ti_uiconfig_layout NULL ti toolkit\source\helper nmake - all ti_helper ti_inc NULL ti toolkit\source\awt nmake - all ti_awt ti_inc NULL ti toolkit\source\controls nmake - all ti_controls ti_inc NULL ti toolkit\source\controls\tree nmake - all ti_tree NULL -ti toolkit\source\layout nmake - all ti_layout NULL -ti toolkit\source\vclcompat nmake - all ti_vclcompat NULL -ti toolkit\util nmake - all ti_util ti_awt ti_controls ti_layout ti_helper ti_tree ti_vclcompat NULL +ti toolkit\source\layout\core nmake - all ti_layout_core NULL +ti toolkit\source\layout\vcl nmake - all ti_layout_vcl NULL +ti toolkit\util nmake - all ti_util ti_awt ti_controls ti_layout_core ti_helper ti_tree ti_layout_vcl NULL diff --git a/toolkit/prj/d.lst b/toolkit/prj/d.lst index b73e85a59441..0c62a083b330 100644 --- a/toolkit/prj/d.lst +++ b/toolkit/prj/d.lst @@ -22,7 +22,9 @@ mkdir: %_DEST%\inc%_EXT%\toolkit\controls ..\inc\toolkit\awt\vclxdevice.hxx %_DEST%\inc%_EXT%\toolkit\awt\vclxdevice.hxx ..\inc\toolkit\awt\vclxfont.hxx %_DEST%\inc%_EXT%\toolkit\awt\vclxfont.hxx ..\inc\toolkit\awt\vclxtopwindow.hxx %_DEST%\inc%_EXT%\toolkit\awt\vclxtopwindow.hxx +..\inc\toolkit\awt\vclxtoolkit.hxx %_DEST%\inc%_EXT%\toolkit\awt\vclxtoolkit.hxx ..\inc\toolkit\awt\vclxwindow.hxx %_DEST%\inc%_EXT%\toolkit\awt\vclxwindow.hxx +..\source\awt\vclxdialog.hxx %_DEST%\inc%_EXT%\toolkit\awt\vclxdialog.hxx ..\inc\toolkit\awt\vclxwindows.hxx %_DEST%\inc%_EXT%\toolkit\awt\vclxwindows.hxx ..\inc\toolkit\awt\vclxmenu.hxx %_DEST%\inc%_EXT%\toolkit\awt\vclxmenu.hxx @@ -53,3 +55,9 @@ mkdir: %_DEST%\inc%_EXT%\layout ..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib ..\inc\layout\*.hxx %_DEST%\inc%_EXT%\layout\*.hxx +mkdir: %_DEST%\inc%_EXT%\layout\core +..\source\layout\core\*.hxx %_DEST%\inc%_EXT%\layout\core\*.hxx +mkdir: %_DEST%\inc%_EXT%\layout\vcl +..\source\layout\vcl\*.hxx %_DEST%\inc%_EXT%\layout\vcl\*.hxx + +..\%__SRC%\bin\*-layout.zip %_DEST%\pck%_EXT%\*.* diff --git a/toolkit/source/awt/makefile.mk b/toolkit/source/awt/makefile.mk index c4525516ac7f..86953691ad27 100644 --- a/toolkit/source/awt/makefile.mk +++ b/toolkit/source/awt/makefile.mk @@ -43,9 +43,6 @@ ENABLE_EXCEPTIONS=TRUE # --- Files -------------------------------------------------------- -# FIXME: This is bad, hmkay -CFLAGS+= -I$(PRJ)/source - .IF "$(GUIBASE)"=="aqua" OBJCXXFLAGS=-x objective-c++ -fobjc-exceptions CFLAGSCXX+=$(OBJCXXFLAGS) @@ -75,9 +72,11 @@ SLOFILES= \ $(SLO)/vclxbutton.obj\ $(SLO)/vclxdialog.obj\ $(SLO)/vclxfixedline.obj\ + $(SLO)/vclxplugin.obj\ $(SLO)/vclxscroller.obj\ $(SLO)/vclxsplitter.obj\ - $(SLO)/vclxtabcontrol.obj + $(SLO)/vclxtabcontrol.obj\ + $(SLO)/vclxtabpage.obj SRS1NAME=$(TARGET) SRC1FILES=\ diff --git a/toolkit/source/awt/vclxbutton.cxx b/toolkit/source/awt/vclxbutton.cxx index 2e16100e6d11..2665c5e1e44d 100644 --- a/toolkit/source/awt/vclxbutton.cxx +++ b/toolkit/source/awt/vclxbutton.cxx @@ -31,7 +31,7 @@ #include "vclxbutton.hxx" -#include "layout/layoutcore.hxx" +#include <layout/core/helper.hxx> #include <com/sun/star/awt/ImagePosition.hpp> #include <vcl/button.hxx> diff --git a/toolkit/source/awt/vclxdevice.cxx b/toolkit/source/awt/vclxdevice.cxx index cf00e1480a96..79c3da6093ab 100644 --- a/toolkit/source/awt/vclxdevice.cxx +++ b/toolkit/source/awt/vclxdevice.cxx @@ -315,7 +315,7 @@ VCLXVirtualDevice::~VCLXVirtualDevice() (void)aPoint; ::vos::OGuard aGuard( GetMutex() ); if (SourceUnit == com::sun::star::util::MeasureUnit::PERCENT || - SourceUnit == com::sun::star::util::MeasureUnit::PIXEL) + SourceUnit == com::sun::star::util::MeasureUnit::PIXEL ) { // pixel or percentage not allowed here throw ::com::sun::star::lang::IllegalArgumentException(); diff --git a/toolkit/source/awt/vclxdialog.cxx b/toolkit/source/awt/vclxdialog.cxx index 26cff37e8e2b..0712f8ca074c 100644 --- a/toolkit/source/awt/vclxdialog.cxx +++ b/toolkit/source/awt/vclxdialog.cxx @@ -45,9 +45,7 @@ #include <tools/prewin.h> #include <windows.h> #include <tools/postwin.h> -#endif - -#ifdef QUARTZ +#elif defined ( QUARTZ ) #include "premac.h" #include <Cocoa/Cocoa.h> #include "postmac.h" @@ -211,6 +209,15 @@ void VCLXDialog::setTitle( const ::rtl::OUString& Title ) throw(::com::sun::star pWindow->SetText( Title ); } +void VCLXDialog::setHelpId( sal_Int32 id ) throw(::com::sun::star::uno::RuntimeException) +{ + ::vos::OGuard aGuard( GetMutex() ); + + Window* pWindow = GetWindow(); + if ( pWindow ) + pWindow->SetHelpId( id ); +} + ::rtl::OUString VCLXDialog::getTitle() throw(::com::sun::star::uno::RuntimeException) { ::vos::OGuard aGuard( GetMutex() ); diff --git a/toolkit/source/awt/vclxdialog.hxx b/toolkit/source/awt/vclxdialog.hxx index b4245a7b6e65..65d4c5d42130 100644 --- a/toolkit/source/awt/vclxdialog.hxx +++ b/toolkit/source/awt/vclxdialog.hxx @@ -36,7 +36,7 @@ #include <com/sun/star/awt/XSystemDependentWindowPeer.hpp> #include <com/sun/star/awt/XTopWindow.hpp> #include <comphelper/uno3.hxx> -#include <layout/bin.hxx> +#include <layout/core/bin.hxx> #include <toolkit/awt/vclxtopwindow.hxx> namespace layoutimpl @@ -44,10 +44,10 @@ namespace layoutimpl typedef ::cppu::ImplHelper1 < ::com::sun::star::awt::XDialog2 > VCLXDialog_Base; -class VCLXDialog :public VCLXWindow - ,public VCLXTopWindow_Base - ,public VCLXDialog_Base - ,public Bin +class TOOLKIT_DLLPUBLIC VCLXDialog : public VCLXWindow + , public VCLXTopWindow_Base + , public VCLXDialog_Base + , public Bin { private: bool bRealized, bResizeSafeguard; @@ -102,6 +102,7 @@ public: // ::com::sun::star::awt::XDialog2 void SAL_CALL endDialog( sal_Int32 nResult ) throw(::com::sun::star::uno::RuntimeException); + void SAL_CALL setHelpId( sal_Int32 id ) throw(::com::sun::star::uno::RuntimeException); }; diff --git a/toolkit/source/awt/vclxmenu.cxx b/toolkit/source/awt/vclxmenu.cxx index febb6523e2cc..c8e5e1bd3853 100644 --- a/toolkit/source/awt/vclxmenu.cxx +++ b/toolkit/source/awt/vclxmenu.cxx @@ -682,6 +682,8 @@ namespace aAWTKey.Modifiers |= css::awt::KeyModifier::MOD1; if (aVCLKey.IsMod2()) aAWTKey.Modifiers |= css::awt::KeyModifier::MOD2; + if (aVCLKey.IsMod3()) + aAWTKey.Modifiers |= css::awt::KeyModifier::MOD3; return aAWTKey; } @@ -691,9 +693,10 @@ namespace sal_Bool bShift = ((aAWTKey.Modifiers & css::awt::KeyModifier::SHIFT) == css::awt::KeyModifier::SHIFT ); sal_Bool bMod1 = ((aAWTKey.Modifiers & css::awt::KeyModifier::MOD1 ) == css::awt::KeyModifier::MOD1 ); sal_Bool bMod2 = ((aAWTKey.Modifiers & css::awt::KeyModifier::MOD2 ) == css::awt::KeyModifier::MOD2 ); + sal_Bool bMod3 = ((aAWTKey.Modifiers & css::awt::KeyModifier::MOD3 ) == css::awt::KeyModifier::MOD3 ); USHORT nKey = (USHORT)aAWTKey.KeyCode; - return KeyCode(nKey, bShift, bMod1, bMod2); + return KeyCode(nKey, bShift, bMod1, bMod2, bMod3); } } // END ANONYMOUS NAMESPACE diff --git a/toolkit/source/awt/vclxplugin.cxx b/toolkit/source/awt/vclxplugin.cxx new file mode 100644 index 000000000000..4ad306d31e70 --- /dev/null +++ b/toolkit/source/awt/vclxplugin.cxx @@ -0,0 +1,88 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile$ + * + * $Revision$ + * + * last change: $Author$ $Date$ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, + * MA 02110-1301 USA + * + ************************************************************************/ + +#include "vclxplugin.hxx" + +#include <com/sun/star/awt/PosSize.hpp> +#include <toolkit/helper/convert.hxx> +#include <toolkit/helper/property.hxx> +#include <vcl/ctrl.hxx> + +#include "forward.hxx" + +namespace layoutimpl +{ + +using namespace ::com::sun::star; + +VCLXPlugin::VCLXPlugin( Window *p, WinBits b ) + : VCLXWindow() + , mpWindow( p ) + , mpPlugin( 0 ) + , mStyle( b ) +{ +} + +VCLXPlugin::~VCLXPlugin() +{ +} + +void SAL_CALL VCLXPlugin::dispose() throw(uno::RuntimeException) +{ + { + ::vos::OGuard aGuard( GetMutex() ); + + lang::EventObject aDisposeEvent; + aDisposeEvent.Source = W3K_EXPLICIT_CAST (*this); + } + + VCLXWindow::dispose(); +} + +void VCLXPlugin::SetPlugin( ::Control *p ) +{ + mpPlugin = p; +} + +awt::Size SAL_CALL VCLXPlugin::getMinimumSize() + throw(::com::sun::star::uno::RuntimeException) +{ + ::vos::OClearableGuard aGuard( GetMutex() ); + if ( mpPlugin ) + return AWTSize( mpPlugin->GetSizePixel() ); + return awt::Size(); +} + +} // namespace layoutimpl diff --git a/toolkit/source/awt/vclxplugin.hxx b/toolkit/source/awt/vclxplugin.hxx new file mode 100644 index 000000000000..b6a7f04b56f6 --- /dev/null +++ b/toolkit/source/awt/vclxplugin.hxx @@ -0,0 +1,75 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile$ + * + * $Revision$ + * + * last change: $Author$ $Date$ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, + * MA 02110-1301 USA + * + ************************************************************************/ + +#ifndef LAYOUT_AWT_VCLXPLUGIN_HXX +#define LAYOUT_AWT_VCLXPLUGIN_HXX + +#include <toolkit/awt/vclxwindow.hxx> +#include <vcl/wintypes.hxx> + +class Control; +namespace layoutimpl +{ + +namespace css = ::com::sun::star; + +class VCLXPlugin : public VCLXWindow +{ +public: + Window *mpWindow; + ::Control *mpPlugin; + WinBits mStyle; + + VCLXPlugin( Window *p, WinBits b ); + + void SetPlugin( ::Control *p ); + +protected: + ~VCLXPlugin(); + + // XComponent + void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::awt::Size SAL_CALL getMinimumSize() + throw(::com::sun::star::uno::RuntimeException); + +private: + VCLXPlugin( VCLXPlugin const & ); + VCLXPlugin& operator=( VCLXPlugin const & ); +}; + +} // namespace layoutimpl + +#endif /* LAYOUT_AWT_VCLXPLUGIN_HXX */ diff --git a/toolkit/source/awt/vclxscroller.hxx b/toolkit/source/awt/vclxscroller.hxx index 02f8829a5ccf..745e4d5588d7 100644 --- a/toolkit/source/awt/vclxscroller.hxx +++ b/toolkit/source/awt/vclxscroller.hxx @@ -33,7 +33,7 @@ #define LAYOUT_AWT_VCLXSCROLLER_HXX #include <comphelper/uno3.hxx> -#include <layout/bin.hxx> +#include <layout/core/bin.hxx> #include <toolkit/awt/vclxwindow.hxx> class ScrollBar; diff --git a/toolkit/source/awt/vclxsplitter.cxx b/toolkit/source/awt/vclxsplitter.cxx index b38ed4baf38a..33c1beb6ed41 100644 --- a/toolkit/source/awt/vclxsplitter.cxx +++ b/toolkit/source/awt/vclxsplitter.cxx @@ -78,8 +78,8 @@ VCLXSplitter::createChildProps( Box_Base::ChildData *pData ) DBG_NAME( VCLXSplitter ); VCLXSplitter::VCLXSplitter( bool bHorizontal ) - : VCLXWindow() - , Box_Base() + : VCLXWindow() + , Box_Base() { DBG_CTOR( VCLXSplitter, NULL ); mnHandleRatio = 0.5; diff --git a/toolkit/source/awt/vclxsplitter.hxx b/toolkit/source/awt/vclxsplitter.hxx index 5ecb7e0cde3b..8ed5d572e030 100644 --- a/toolkit/source/awt/vclxsplitter.hxx +++ b/toolkit/source/awt/vclxsplitter.hxx @@ -35,7 +35,7 @@ #include <com/sun/star/awt/MaxChildrenException.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <comphelper/uno3.hxx> -#include <layout/box-base.hxx> +#include <layout/core/box-base.hxx> #include <toolkit/awt/vclxwindow.hxx> class Splitter; diff --git a/toolkit/source/awt/vclxsystemdependentwindow.cxx b/toolkit/source/awt/vclxsystemdependentwindow.cxx index ee9edb85bbdd..ff25d16c4841 100644 --- a/toolkit/source/awt/vclxsystemdependentwindow.cxx +++ b/toolkit/source/awt/vclxsystemdependentwindow.cxx @@ -46,9 +46,7 @@ #include <tools/prewin.h> #include <windows.h> #include <tools/postwin.h> -#endif - -#ifdef QUARTZ +#elif defined ( QUARTZ ) #include "premac.h" #include <Cocoa/Cocoa.h> #include "postmac.h" diff --git a/toolkit/source/awt/vclxtabcontrol.cxx b/toolkit/source/awt/vclxtabcontrol.cxx index 0097c6a0a73a..908554c9ae0c 100644 --- a/toolkit/source/awt/vclxtabcontrol.cxx +++ b/toolkit/source/awt/vclxtabcontrol.cxx @@ -43,8 +43,6 @@ namespace layoutimpl { -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::awt; using namespace ::com::sun::star::lang; using namespace ::com::sun::star::beans; using namespace ::com::sun::star; @@ -76,12 +74,20 @@ VCLXTabControl::createChildProps( Box_Base::ChildData *pData ) DBG_NAME( VCLXTabControl ); +#if !defined (__GNUC__) +#define __PRETTY_FUNCTION__ __FUNCTION__ +#endif /* !__GNUC__ */ + VCLXTabControl::VCLXTabControl() : VCLXWindow() , VCLXTabControl_Base() , Box_Base() - , mnNextTabId( 1 ) + , mTabId (1) + , bRealized (false) { +#ifndef __SUNPRO_CC + OSL_TRACE ("\n********%s:%x", __PRETTY_FUNCTION__, this); +#endif DBG_CTOR( VCLXTabControl, NULL ); } @@ -94,7 +100,7 @@ IMPLEMENT_2_FORWARD_XINTERFACE2( VCLXTabControl, VCLXWindow, Container, VCLXTabC IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXTabControl, VCLXWindow, VCLXTabControl_Base ); -void SAL_CALL VCLXTabControl::dispose( ) throw(RuntimeException) +void SAL_CALL VCLXTabControl::dispose( ) throw(uno::RuntimeException) { { ::vos::OGuard aGuard( GetMutex() ); @@ -108,38 +114,38 @@ void SAL_CALL VCLXTabControl::dispose( ) throw(RuntimeException) } #if 0 -void SAL_CALL VCLXTabControl::addTabListener( const Reference< XTabListener >& listener ) throw (RuntimeException) +void SAL_CALL VCLXTabControl::addTabListener( const Reference< XTabListener >& listener ) throw (uno::RuntimeException) { if ( listener.is() ) maTabListeners.addInterface( listener ); } -void SAL_CALL VCLXTabControl::removeTabListener( const Reference< XTabListener >& listener ) throw (RuntimeException) +void SAL_CALL VCLXTabControl::removeTabListener( const Reference< XTabListener >& listener ) throw (uno::RuntimeException) { if ( listener.is() ) maTabListeners.removeInterface( listener ); } #endif -TabControl *VCLXTabControl::getTabControl() const throw (RuntimeException) +TabControl *VCLXTabControl::getTabControl() const throw (uno::RuntimeException) { TabControl *pTabControl = static_cast< TabControl* >( GetWindow() ); if ( pTabControl ) return pTabControl; - throw RuntimeException(); + throw uno::RuntimeException(); } -sal_Int32 SAL_CALL VCLXTabControl::insertTab() throw (RuntimeException) +sal_Int32 SAL_CALL VCLXTabControl::insertTab() throw (uno::RuntimeException) { TabControl *pTabControl = getTabControl(); - USHORT id = sal::static_int_cast< USHORT >( mnNextTabId++ ); + USHORT id = sal::static_int_cast< USHORT >( mTabId++ ); rtl::OUString title (RTL_CONSTASCII_USTRINGPARAM( "" ) ); pTabControl->InsertPage( id, title.getStr(), TAB_APPEND ); pTabControl->SetTabPage( id, new TabPage( pTabControl ) ); return id; } -void SAL_CALL VCLXTabControl::removeTab( sal_Int32 ID ) throw (RuntimeException, IndexOutOfBoundsException) +void SAL_CALL VCLXTabControl::removeTab( sal_Int32 ID ) throw (uno::RuntimeException, IndexOutOfBoundsException) { TabControl *pTabControl = getTabControl(); if ( pTabControl->GetTabPage( sal::static_int_cast< USHORT >( ID ) ) == NULL ) @@ -147,7 +153,7 @@ void SAL_CALL VCLXTabControl::removeTab( sal_Int32 ID ) throw (RuntimeException, pTabControl->RemovePage( sal::static_int_cast< USHORT >( ID ) ); } -void SAL_CALL VCLXTabControl::activateTab( sal_Int32 ID ) throw (RuntimeException, IndexOutOfBoundsException) +void SAL_CALL VCLXTabControl::activateTab( sal_Int32 ID ) throw (uno::RuntimeException, IndexOutOfBoundsException) { TabControl *pTabControl = getTabControl(); if ( pTabControl->GetTabPage( sal::static_int_cast< USHORT >( ID ) ) == NULL ) @@ -155,15 +161,15 @@ void SAL_CALL VCLXTabControl::activateTab( sal_Int32 ID ) throw (RuntimeExceptio pTabControl->SelectTabPage( sal::static_int_cast< USHORT >( ID ) ); } -sal_Int32 SAL_CALL VCLXTabControl::getActiveTabID() throw (RuntimeException) +sal_Int32 SAL_CALL VCLXTabControl::getActiveTabID() throw (uno::RuntimeException) { return getTabControl()->GetCurPageId( ); } -void SAL_CALL VCLXTabControl::addTabListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTabListener >& xListener ) throw (::com::sun::star::uno::RuntimeException) +void SAL_CALL VCLXTabControl::addTabListener( const uno::Reference< awt::XTabListener >& xListener ) throw (uno::RuntimeException) { - for ( std::list< ::com::sun::star::uno::Reference - < ::com::sun::star::awt::XTabListener > >::const_iterator it + for ( std::list< uno::Reference + < awt::XTabListener > >::const_iterator it = mxTabListeners.begin(); it != mxTabListeners.end(); it++ ) { if ( *it == xListener ) @@ -173,10 +179,10 @@ void SAL_CALL VCLXTabControl::addTabListener( const ::com::sun::star::uno::Refer mxTabListeners.push_back( xListener ); } -void SAL_CALL VCLXTabControl::removeTabListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTabListener >& xListener ) throw (::com::sun::star::uno::RuntimeException) +void SAL_CALL VCLXTabControl::removeTabListener( const uno::Reference< awt::XTabListener >& xListener ) throw (uno::RuntimeException) { - for ( std::list< ::com::sun::star::uno::Reference - < ::com::sun::star::awt::XTabListener > >::iterator it + for ( std::list< uno::Reference + < awt::XTabListener > >::iterator it = mxTabListeners.begin(); it != mxTabListeners.end(); it++ ) { if ( *it == xListener ) @@ -187,7 +193,7 @@ void SAL_CALL VCLXTabControl::removeTabListener( const ::com::sun::star::uno::Re } } -void SAL_CALL VCLXTabControl::setTabProps( sal_Int32 ID, const Sequence< NamedValue >& Properties ) throw (RuntimeException, IndexOutOfBoundsException) +void SAL_CALL VCLXTabControl::setTabProps( sal_Int32 ID, const uno::Sequence< NamedValue >& Properties ) throw (uno::RuntimeException, IndexOutOfBoundsException) { TabControl *pTabControl = getTabControl(); if ( pTabControl->GetTabPage( sal::static_int_cast< USHORT >( ID ) ) == NULL ) @@ -196,7 +202,7 @@ void SAL_CALL VCLXTabControl::setTabProps( sal_Int32 ID, const Sequence< NamedVa for ( int i = 0; i < Properties.getLength(); i++ ) { const rtl::OUString &name = Properties[i].Name; - const Any &value = Properties[i].Value; + const uno::Any &value = Properties[i].Value; if ( name == rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ) ) { @@ -206,8 +212,8 @@ void SAL_CALL VCLXTabControl::setTabProps( sal_Int32 ID, const Sequence< NamedVa } } -Sequence< NamedValue > SAL_CALL VCLXTabControl::getTabProps( sal_Int32 ID ) - throw (IndexOutOfBoundsException, RuntimeException) +uno::Sequence< NamedValue > SAL_CALL VCLXTabControl::getTabProps( sal_Int32 ID ) + throw (IndexOutOfBoundsException, uno::RuntimeException) { TabControl *pTabControl = getTabControl(); if ( pTabControl->GetTabPage( sal::static_int_cast< USHORT >( ID ) ) == NULL ) @@ -216,11 +222,11 @@ Sequence< NamedValue > SAL_CALL VCLXTabControl::getTabProps( sal_Int32 ID ) #define ADD_PROP( seq, i, name, val ) { \ NamedValue value; \ value.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( name ) ); \ - value.Value = makeAny( val ); \ + value.Value = uno::makeAny( val ); \ seq[i] = value; \ } - Sequence< NamedValue > props( 2 ); + uno::Sequence< NamedValue > props( 2 ); ADD_PROP( props, 0, "Title", rtl::OUString( pTabControl->GetPageText( sal::static_int_cast< USHORT >( ID ) ) ) ); ADD_PROP( props, 1, "Position", pTabControl->GetPagePos( sal::static_int_cast< USHORT >( ID ) ) ); #undef ADD_PROP @@ -228,7 +234,7 @@ Sequence< NamedValue > SAL_CALL VCLXTabControl::getTabProps( sal_Int32 ID ) } // TODO: draw tab border here -void SAL_CALL VCLXTabControl::draw( sal_Int32 nX, sal_Int32 nY ) throw(::com::sun::star::uno::RuntimeException) +void SAL_CALL VCLXTabControl::draw( sal_Int32 nX, sal_Int32 nY ) throw(uno::RuntimeException) { ::vos::OGuard aGuard( GetMutex() ); @@ -249,16 +255,29 @@ void SAL_CALL VCLXTabControl::draw( sal_Int32 nX, sal_Int32 nY ) throw(::com::su VCLXWindow::draw( nX, nY ); } +void VCLXTabControl::AddChild (uno::Reference< awt::XLayoutConstrains > const& xChild) + +{ +#ifndef __SUNPRO_CC + OSL_TRACE ("%s: children: %d", __PRETTY_FUNCTION__, maChildren.size ()); +#endif + mIdMap[ xChild ] = mTabId++; + Box_Base::AddChild( xChild ); +#ifndef __SUNPRO_CC + OSL_TRACE ("%s: children: %d", __PRETTY_FUNCTION__, maChildren.size ()); +#endif +} + void SAL_CALL VCLXTabControl::addChild( - const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XLayoutConstrains > &xChild ) - throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::awt::MaxChildrenException) + const uno::Reference< awt::XLayoutConstrains > &xChild ) + throw (uno::RuntimeException, awt::MaxChildrenException) { mIdMap[ xChild ] = insertTab(); Box_Base::addChild( xChild ); } -void SAL_CALL VCLXTabControl::removeChild( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XLayoutConstrains > &xChild ) - throw (::com::sun::star::uno::RuntimeException) +void SAL_CALL VCLXTabControl::removeChild( const uno::Reference< awt::XLayoutConstrains > &xChild ) + throw (uno::RuntimeException) { removeTab( mIdMap[xChild] ); mIdMap[ xChild ] = -1; @@ -284,21 +303,90 @@ static void setChildrenVisible( uno::Reference < awt::XLayoutConstrains > xChild } } -void SAL_CALL VCLXTabControl::allocateArea( - const ::com::sun::star::awt::Rectangle &rArea ) - throw (::com::sun::star::uno::RuntimeException) +void SAL_CALL VCLXTabControl::allocateArea (awt::Rectangle const &area) + throw (uno::RuntimeException) { - maAllocation = rArea; +#ifndef __SUNPRO_CC + OSL_TRACE ("\n%s", __PRETTY_FUNCTION__); +#endif + maAllocation = area; TabControl *pTabControl = getTabControl(); -// FIXME: this is wrong. We just want to set tab controls pos/size for the tabs menu, -// otherwise, it gets events that should go to children (I guess we could solve this -// by making the tabcontrol as the actual XWindow parent of its children, when importing...) -// Not sure about TabPage drawing... That doesn't work on gtk+; just ignoring that. -// LATER: Nah, the proper fix is to get the XWindow hierarchy straight. +// FIXME: this is wrong. We just want to set tab controls pos/size for +// the tabs menu, otherwise, it gets events that should go to children +// (I guess we could solve this by making the tabcontrol as the actual +// XWindow parent of its children, when importing...) Not sure about +// TabPage drawing... That doesn't work on gtk+; just ignoring that. +// LATER: Nah, the proper fix is to get the XWindow hierarchy +// straight. + +#if 0 + setPosSize( area.X, area.Y, area.Width, area.Height, awt::PosSize::POSSIZE ); +#else + awt::Size currentSize = getSize(); + awt::Size requestedSize (area.Width, area.Height); +// requestedSize.Height = getHeightForWidth( area.Width ); + + awt::Size minimumSize = getMinimumSize(); + if (requestedSize.Width < minimumSize.Width) + requestedSize.Width = minimumSize.Width; + if (requestedSize.Height < minimumSize.Height) + requestedSize.Height = minimumSize.Height; + + Size pageSize = static_cast<TabControl*> (GetWindow ())->GetTabPageSizePixel (); + awt::Size pageBasedSize (0, 0); + pageBasedSize.Width = pageSize.Width (); + pageBasedSize.Height = pageSize.Height (); + + const int wc = 0; + const int hc = 20; + static int pwc = 0; + static int phc = 40; + + if (requestedSize.Width < pageBasedSize.Width) + requestedSize.Width = pageBasedSize.Width + wc; + if (requestedSize.Height < pageBasedSize.Height) + requestedSize.Height = pageBasedSize.Height + hc; + + Size windowSize = GetWindow()->GetSizePixel(); + Window *parent = GetWindow()->GetParent(); + Size parentSize = parent->GetSizePixel(); + +#ifndef __SUNPRO_CC +#ifdef GCC_MAJOR + OSL_TRACE ("\n%s", __PRETTY_FUNCTION__); +#endif /* GCC_MAJOR */ + OSL_TRACE ("%s: cursize: %d ,%d", __FUNCTION__, currentSize.Width, currentSize.Height ); + OSL_TRACE ("%s: area: %d, %d", __FUNCTION__, area.Width, area.Height ); + OSL_TRACE ("%s: minimum: %d, %d", __FUNCTION__, minimumSize.Width, minimumSize.Height ); + OSL_TRACE ("%s: requestedSize: %d, %d", __FUNCTION__, requestedSize.Width, requestedSize.Height ); + OSL_TRACE ("%s: pageBasedSize: %d, %d", __FUNCTION__, pageBasedSize.Width, pageBasedSize.Height ); + + //OSL_TRACE ("%s: parent: %d, %d", __FUNCTION__, parentSize.Width(), parentSize.Height() ); + //OSL_TRACE ("%s: window: %d, %d", __FUNCTION__, windowSize.Width(), windowSize.Height() ); +#endif + + //bRealized = false; + if (!bRealized) + { + setPosSize( area.X, area.Y, requestedSize.Width, requestedSize.Height, awt::PosSize::POSSIZE ); + bRealized = true; + } + else + { + if ( requestedSize.Width > currentSize.Width + 10) + setPosSize( 0, 0, requestedSize.Width, 0, awt::PosSize::WIDTH ); + if ( requestedSize.Height > currentSize.Height + 10) + setPosSize( 0, 0, 0, requestedSize.Height, awt::PosSize::HEIGHT ); + } +#endif - setPosSize( rArea.X, rArea.Y, rArea.Width, rArea.Height, PosSize::POSSIZE ); + if (pageBasedSize.Width > parentSize.Width () + || pageBasedSize.Height > parentSize.Height ()) + //parent->SetSizePixel ( Size (pageBasedSize.Width, pageBasedSize.Height)); + //parent->SetSizePixel ( Size (pageBasedSize.Width + pwc, pageBasedSize.Height + phc)); + parent->SetSizePixel ( Size (requestedSize.Width + pwc, requestedSize.Height + phc)); // FIXME: we can save cycles by setting visibility more sensibly. Having // it here does makes it easier when changing tabs (just needs a recalc()) @@ -307,8 +395,8 @@ void SAL_CALL VCLXTabControl::allocateArea( = maChildren.begin(); it != maChildren.end(); it++, i++ ) { ChildData *child = static_cast<VCLXTabControl::ChildData*> ( *it ); - ::com::sun::star::uno::Reference - < ::com::sun::star::awt::XLayoutConstrains > xChild( child->mxChild ); + uno::Reference + < awt::XLayoutConstrains > xChild( child->mxChild ); if ( xChild.is() ) { uno::Reference< awt::XWindow > xWin( xChild, uno::UNO_QUERY ); @@ -340,15 +428,15 @@ void SAL_CALL VCLXTabControl::allocateArea( } } -::com::sun::star::awt::Size SAL_CALL VCLXTabControl::getMinimumSize() - throw(::com::sun::star::uno::RuntimeException) +awt::Size SAL_CALL VCLXTabControl::getMinimumSize() + throw(uno::RuntimeException) { - awt::Size size = VCLXWindow::getMinimumSize(); + awt::Size requestedSize = VCLXWindow::getMinimumSize(); awt::Size childrenSize( 0, 0 ); TabControl* pTabControl = static_cast< TabControl* >( GetWindow() ); if ( !pTabControl ) - return size; + return requestedSize; // calculate size to accomodate all children unsigned i = 0; @@ -367,10 +455,19 @@ void SAL_CALL VCLXTabControl::allocateArea( } } - size.Width += childrenSize.Width; - size.Height += childrenSize.Height + 20; - maRequisition = size; - return size; +#ifndef __SUNPRO_CC +#ifdef GCC_MAJOR + OSL_TRACE ("\n%s", __PRETTY_FUNCTION__); +#endif /* GCC_MAJOR */ + OSL_TRACE ("%s: children: %d", __FUNCTION__, i); + OSL_TRACE ("%s: childrenSize: %d, %d", __FUNCTION__, childrenSize.Width, childrenSize.Height ); +#endif + + requestedSize.Width += childrenSize.Width; + requestedSize.Height += childrenSize.Height + 20; + + maRequisition = requestedSize; + return requestedSize; } void VCLXTabControl::ProcessWindowEvent( const VclWindowEvent& _rVclWindowEvent ) @@ -391,12 +488,12 @@ void VCLXTabControl::ProcessWindowEvent( const VclWindowEvent& _rVclWindowEvent case VCLEVENT_TABPAGE_PAGETEXTCHANGED: { ULONG page = (ULONG) _rVclWindowEvent.GetData(); - for ( std::list< ::com::sun::star::uno::Reference - < ::com::sun::star::awt::XTabListener > >::iterator it + for ( std::list< uno::Reference + < awt::XTabListener > >::iterator it = mxTabListeners.begin(); it != mxTabListeners.end(); it++) { - ::com::sun::star::uno::Reference - < ::com::sun::star::awt::XTabListener > listener = *it; + uno::Reference + < awt::XTabListener > listener = *it; switch ( _rVclWindowEvent.GetId() ) { @@ -414,7 +511,7 @@ void VCLXTabControl::ProcessWindowEvent( const VclWindowEvent& _rVclWindowEvent listener->removed( page ); break; case VCLEVENT_TABPAGE_REMOVEDALL: - for ( int i = 1; i < mnNextTabId; i++) + for ( int i = 1; i < mTabId; i++) { if ( pTabControl->GetTabPage( sal::static_int_cast< USHORT >( i ) ) ) listener->removed( i ); @@ -434,12 +531,12 @@ void VCLXTabControl::ProcessWindowEvent( const VclWindowEvent& _rVclWindowEvent } } -void SAL_CALL VCLXTabControl::setProperty( const ::rtl::OUString& PropertyName, const Any &Value ) throw(RuntimeException) +void SAL_CALL VCLXTabControl::setProperty( const ::rtl::OUString& PropertyName, const uno::Any &Value ) throw(uno::RuntimeException) { VCLXWindow::setProperty( PropertyName, Value ); } -Any SAL_CALL VCLXTabControl::getProperty( const ::rtl::OUString& PropertyName ) throw(RuntimeException) +uno::Any SAL_CALL VCLXTabControl::getProperty( const ::rtl::OUString& PropertyName ) throw(uno::RuntimeException) { return VCLXWindow::getProperty( PropertyName ); } diff --git a/toolkit/source/awt/vclxtabcontrol.hxx b/toolkit/source/awt/vclxtabcontrol.hxx index 7db18b19a609..0db5d9707a3f 100644 --- a/toolkit/source/awt/vclxtabcontrol.hxx +++ b/toolkit/source/awt/vclxtabcontrol.hxx @@ -34,7 +34,7 @@ #include <com/sun/star/awt/XSimpleTabController.hpp> #include <comphelper/uno3.hxx> -#include <layout/box-base.hxx> +#include <layout/core/box-base.hxx> #include <map> #include <toolkit/awt/vclxwindow.hxx> @@ -50,9 +50,14 @@ class VCLXTabControl :public VCLXWindow ,public VCLXTabControl_Base ,public Box_Base { + int mTabId; + bool bRealized; + public: VCLXTabControl(); + void AddChild (css::uno::Reference <css::awt::XLayoutConstrains> const &); + protected: ~VCLXTabControl(); @@ -65,7 +70,7 @@ protected: // XComponent void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL draw( sal_Int32 nX, sal_Int32 nY ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL draw( sal_Int32 nX, sal_Int32 nY ) throw (::com::sun::star::uno::RuntimeException); // XSimpleTabController virtual ::sal_Int32 SAL_CALL insertTab() throw (::com::sun::star::uno::RuntimeException); @@ -108,10 +113,6 @@ protected: // VCLXWindow void ProcessWindowEvent( const VclWindowEvent& _rVclWindowEvent ); - - // Each tab page needs an unique id. - int mnNextTabId; - public: // Maps page ids to child references struct ChildData : public Box_Base::ChildData diff --git a/toolkit/source/awt/vclxtabpage.cxx b/toolkit/source/awt/vclxtabpage.cxx new file mode 100644 index 000000000000..0b7bbd008a86 --- /dev/null +++ b/toolkit/source/awt/vclxtabpage.cxx @@ -0,0 +1,164 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile$ + * + * $Revision$ + * + * last change: $Author$ $Date$ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, + * MA 02110-1301 USA + * + ************************************************************************/ + +#include "vclxtabpage.hxx" +#include "forward.hxx" + +#include <com/sun/star/awt/PosSize.hpp> +#include <toolkit/helper/convert.hxx> +#include <vcl/tabpage.hxx> +#include <vcl/tabctrl.hxx> + +#if !defined (__GNUC__) +#define __PRETTY_FUNCTION__ __FUNCTION__ +#endif /* !__GNUC__ */ + +namespace layoutimpl +{ + +using namespace ::com::sun::star; + +// XInterface +IMPLEMENT_FORWARD_XINTERFACE2( VCLXTabPage, VCLXWindow, Bin ); + +// XTypeProvider +IMPLEMENT_FORWARD_XTYPEPROVIDER1( VCLXTabPage, VCLXWindow ); + +VCLXTabPage::VCLXTabPage( Window *p ) + : VCLXWindow() + , Bin() + , bRealized( false ) +{ + /* FIXME: before Window is set, setLabel, setProperty->setImage + * are silent no-ops. */ + p->SetComponentInterface( this ); +} + +VCLXTabPage::~VCLXTabPage() +{ +} + +void SAL_CALL VCLXTabPage::dispose() throw(uno::RuntimeException) +{ + { + ::vos::OGuard aGuard( GetMutex() ); + + lang::EventObject aDisposeEvent; + aDisposeEvent.Source = W3K_EXPLICIT_CAST (*this); + } + + VCLXWindow::dispose(); +} + +void SAL_CALL VCLXTabPage::allocateArea( awt::Rectangle const& area ) + throw (uno::RuntimeException) +{ + awt::Size currentSize = getSize(); + awt::Size requestedSize = getMinimumSize(); + requestedSize.Height = getHeightForWidth( area.Width ); + + if ( currentSize.Width > 0 && currentSize.Height > 0 + && requestedSize.Width > currentSize.Width ) + requestedSize.Width = currentSize.Width; + if ( currentSize.Width > 0 && currentSize.Height > 0 + && requestedSize.Height > currentSize.Height ) + requestedSize.Height = currentSize.Height; + + // FIXME: missing destructor? + if ( !GetWindow() ) + return; + + Size windowSize = GetWindow()->GetSizePixel(); + Window *parent = GetWindow()->GetParent(); + Size parentSize = parent->GetSizePixel(); + + Point pos = GetWindow()->GetPosPixel(); +#ifndef __SUNPRO_CC + OSL_TRACE ("\n%s", __PRETTY_FUNCTION__); + OSL_TRACE ("%s: curpos: %d ,%d", __FUNCTION__, pos.X(), pos.Y() ); + + OSL_TRACE ("%s: cursize: %d ,%d", __FUNCTION__, currentSize.Width, currentSize.Height ); + OSL_TRACE ("%s: area: %d, %d", __FUNCTION__, area.Width, area.Height ); + OSL_TRACE ("%s: requestedSize: %d, %d", __FUNCTION__, requestedSize.Width, requestedSize.Height ); + OSL_TRACE ("%s: parent: %d, %d", __FUNCTION__, parentSize.Width(), parentSize.Height() ); + OSL_TRACE ("%s: window: %d, %d", __FUNCTION__, windowSize.Width(), windowSize.Height() ); +#endif + +#if 0 + if (requestedSize.Width > parentSize.Width () + || requestedSize.Height > parentSize.Height ()) + { +#ifndef __SUNPRO_CC + OSL_TRACE ("%s: ***setting parent: %d, %d", __FUNCTION__, requestedSize.Width, requestedSize.Height ); +#endif + parent->SetSizePixel ( Size (requestedSize.Width, requestedSize.Height) ); + + if (Window *grand_parent = parent->GetParent ()) + grand_parent->SetSizePixel ( Size (requestedSize.Width, requestedSize.Height) ); + } +#endif + + if ( !bRealized ) + { + setPosSize( area.X, area.Y, requestedSize.Width, requestedSize.Height, awt::PosSize::SIZE ); + bRealized = true; + } + else + { + if ( requestedSize.Width > currentSize.Width + 10) + setPosSize( 0, 0, requestedSize.Width, 0, awt::PosSize::WIDTH ); + if ( requestedSize.Height > currentSize.Height + 10) + setPosSize( 0, 0, 0, requestedSize.Height, awt::PosSize::HEIGHT ); + } + + awt::Size newSize = getSize(); +#ifndef __SUNPRO_CC + OSL_TRACE ("%s: newSize: %d, %d", __FUNCTION__, newSize.Width, newSize.Height ); +#endif + maAllocation.Width = newSize.Width; + maAllocation.Height = newSize.Height; + + Bin::allocateArea( maAllocation ); +} + +awt::Size SAL_CALL VCLXTabPage::getMinimumSize() + throw(uno::RuntimeException) +{ + ::vos::OGuard aGuard( GetMutex() ); + + return Bin::getMinimumSize(); +} + +} // namespace layoutimpl diff --git a/toolkit/source/awt/vclxtabpage.hxx b/toolkit/source/awt/vclxtabpage.hxx new file mode 100644 index 000000000000..a31db2e69781 --- /dev/null +++ b/toolkit/source/awt/vclxtabpage.hxx @@ -0,0 +1,81 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile$ + * + * $Revision$ + * + * last change: $Author$ $Date$ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, + * MA 02110-1301 USA + * + ************************************************************************/ + +#ifndef LAYOUT_AWT_VCLXTABPAGE_HXX +#define LAYOUT_AWT_VCLXTABPAGE_HXX + +#include <toolkit/awt/vclxwindow.hxx> +#include <layout/core/bin.hxx> +#include <comphelper/uno3.hxx> + +namespace layoutimpl +{ + +namespace css = ::com::sun::star; + +class VCLXTabPage : public VCLXWindow + , public Bin +{ + bool bRealized; + +public: + VCLXTabPage( Window *p ); + + // XInterface + DECLARE_XINTERFACE() + + // XTypeProvider + DECLARE_XTYPEPROVIDER() + +protected: + ~VCLXTabPage(); + + // XComponent + void SAL_CALL dispose() throw(css::uno::RuntimeException); + + // ::com::sun::star::awt::XLayoutContainer + virtual void SAL_CALL allocateArea( css::awt::Rectangle const& rArea ) + throw (css::uno::RuntimeException); + virtual css::awt::Size SAL_CALL getMinimumSize() + throw(css::uno::RuntimeException); + +private: + VCLXTabPage( VCLXTabPage const & ); + VCLXTabPage& operator=( VCLXTabPage const & ); +}; + +} // namespace layoutimpl + +#endif /* LAYOUT_AWT_VCLXTABPAGE_HXX */ diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx index 8cb7ed60f2a4..eeacd037d7c1 100644 --- a/toolkit/source/awt/vclxtoolkit.cxx +++ b/toolkit/source/awt/vclxtoolkit.cxx @@ -55,6 +55,18 @@ #include <rtl/memory.h> #include <rtl/uuid.h> #include <rtl/process.h> + +#ifdef WNT +#include <tools/prewin.h> +#include <windows.h> +#include <tools/postwin.h> +#elif (defined QUARTZ) +#include "premac.h" +#include <Cocoa/Cocoa.h> +#include "postmac.h" +#endif +#include <vcl/sysdata.hxx> + #include <toolkit/awt/vclxwindows.hxx> #include <toolkit/awt/vclxsystemdependentwindow.hxx> #include <toolkit/awt/vclxregion.hxx> @@ -108,12 +120,6 @@ #include <vcl/wrkwin.hxx> #include "toolkit/awt/vclxspinbutton.hxx" -#ifdef QUARTZ -#include "premac.h" -#include <Cocoa/Cocoa.h> -#include "postmac.h" -#endif -#include <vcl/sysdata.hxx> #include <tools/debug.hxx> #include <comphelper/processfactory.hxx> @@ -1608,7 +1614,9 @@ long VCLXToolkit::callKeyHandlers(::VclSimpleEvent const * pEvent, | (pKeyEvent->GetKeyCode().IsMod1() ? ::css::awt::KeyModifier::MOD1 : 0) | (pKeyEvent->GetKeyCode().IsMod2() - ? ::css::awt::KeyModifier::MOD2 : 0), + ? ::css::awt::KeyModifier::MOD2 : 0) + | (pKeyEvent->GetKeyCode().IsMod3() + ? ::css::awt::KeyModifier::MOD3 : 0), pKeyEvent->GetKeyCode().GetCode(), pKeyEvent->GetCharCode(), sal::static_int_cast< sal_Int16 >( pKeyEvent->GetKeyCode().GetFunction())); diff --git a/toolkit/source/awt/vclxtopwindow.cxx b/toolkit/source/awt/vclxtopwindow.cxx index 907ccb797fd2..26e457d74583 100644 --- a/toolkit/source/awt/vclxtopwindow.cxx +++ b/toolkit/source/awt/vclxtopwindow.cxx @@ -33,13 +33,11 @@ #include <com/sun/star/lang/SystemDependent.hpp> #include <com/sun/star/awt/SystemDependentXWindow.hpp> -#if !defined(UNX) && !defined(OS2) +#ifdef WNT #include <tools/prewin.h> #include <windows.h> #include <tools/postwin.h> -#endif - -#ifdef QUARTZ +#elif defined ( QUARTZ ) #include "premac.h" #include <Cocoa/Cocoa.h> #include "postmac.h" diff --git a/toolkit/source/awt/vclxwindow.cxx b/toolkit/source/awt/vclxwindow.cxx index c767458f03ae..337400c08713 100644 --- a/toolkit/source/awt/vclxwindow.cxx +++ b/toolkit/source/awt/vclxwindow.cxx @@ -35,6 +35,7 @@ #include <com/sun/star/awt/KeyModifier.hpp> #include <com/sun/star/awt/MouseEvent.hpp> #include <com/sun/star/awt/MouseButton.hpp> +#include <com/sun/star/awt/MouseWheelBehavior.hpp> #include <com/sun/star/awt/XTopWindow.hpp> #include <com/sun/star/awt/Style.hpp> #include <com/sun/star/accessibility/AccessibleRole.hpp> @@ -82,6 +83,7 @@ using ::com::sun::star::style::VerticalAlignment_BOTTOM; using ::com::sun::star::style::VerticalAlignment_MAKE_FIXED_SIZE; namespace WritingMode2 = ::com::sun::star::text::WritingMode2; +namespace MouseWheelBehavior = ::com::sun::star::awt::MouseWheelBehavior; //==================================================================== @@ -226,6 +228,8 @@ private: ::toolkit::AccessibilityClient maAccFactory; bool mbDisposed; bool mbDrawingOntoParent; // no bit mask, is passed around by reference + sal_Bool mbEnableVisible; + sal_Bool mbDirectVisible; ::osl::Mutex maListenerContainerMutex; ::cppu::OInterfaceContainerHelper maWindow2Listeners; @@ -273,6 +277,15 @@ public: */ VCLXWindowImpl( VCLXWindow& _rAntiImpl, ::vos::IMutex& _rMutex, bool _bWithDefaultProps ); + /** synchronously mbEnableVisible + */ + void setEnableVisible( sal_Bool bEnableVisible ) { mbEnableVisible = bEnableVisible; } + sal_Bool isEnableVisible() { return mbEnableVisible; } + /** synchronously mbDirectVisible; + */ + void setDirectVisible( sal_Bool bDirectVisible ) { mbDirectVisible = bDirectVisible; } + sal_Bool isDirectVisible() { return mbDirectVisible; } + /** asynchronously notifies a mouse event to the VCLXWindow's XMouseListeners */ void notifyMouseEvent( const awt::MouseEvent& _rMouseEvent, MouseEventType _nType ); @@ -347,6 +360,8 @@ VCLXWindowImpl::VCLXWindowImpl( VCLXWindow& _rAntiImpl, ::vos::IMutex& _rMutex, ,mrMutex( _rMutex ) ,mbDisposed( false ) ,mbDrawingOntoParent( false ) + ,mbEnableVisible(sal_True) + ,mbDirectVisible(sal_True) ,maListenerContainerMutex( ) ,maWindow2Listeners( maListenerContainerMutex ) ,maDockableWindowListeners( maListenerContainerMutex ) @@ -548,6 +563,8 @@ void ImplInitKeyEvent( ::com::sun::star::awt::KeyEvent& rEvent, const KeyEvent& rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD1; if ( rEvt.GetKeyCode().IsMod2() ) rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD2; + if ( rEvt.GetKeyCode().IsMod3() ) + rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD3; rEvent.KeyCode = rEvt.GetKeyCode().GetCode(); rEvent.KeyChar = rEvt.GetCharCode(); @@ -623,7 +640,12 @@ void VCLXWindow::SetWindow( Window* pWindow ) SetOutputDevice( pWindow ); if ( GetWindow() ) + { GetWindow()->AddEventListener( LINK( this, VCLXWindow, WindowEventListener ) ); + sal_Bool bDirectVisible = pWindow ? pWindow->IsVisible() : false; + mpImpl->setDirectVisible( bDirectVisible ); + } + } void VCLXWindow::suspendVclEventListening( ) @@ -1224,7 +1246,8 @@ void VCLXWindow::setVisible( sal_Bool bVisible ) throw(::com::sun::star::uno::Ru } } */ - pWindow->Show( bVisible ); + mpImpl->setDirectVisible( bVisible ); + pWindow->Show( bVisible && mpImpl->isEnableVisible() ); } } @@ -1527,6 +1550,7 @@ void VCLXWindow::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds, bool bWithDe BASEPROPERTY_HELPURL, BASEPROPERTY_TEXT, BASEPROPERTY_PRINTABLE, + BASEPROPERTY_ENABLEVISIBLE, // for visibility BASEPROPERTY_TABSTOP, 0); @@ -1632,19 +1656,27 @@ void VCLXWindow::setProperty( const ::rtl::OUString& PropertyName, const ::com:: } break; - case BASEPROPERTY_WHEELWITHOUTFOCUS: + case BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR: { - sal_Bool bWheelOnHover( sal_True ); - if ( Value >>= bWheelOnHover ) - { - AllSettings aSettings = pWindow->GetSettings(); - MouseSettings aMouseSettings = aSettings.GetMouseSettings(); + sal_uInt16 nWheelBehavior( MouseWheelBehavior::SCROLL_FOCUS_ONLY ); + OSL_VERIFY( Value >>= nWheelBehavior ); - aMouseSettings.SetNoWheelActionWithoutFocus( !bWheelOnHover ); - aSettings.SetMouseSettings( aMouseSettings ); + AllSettings aSettings = pWindow->GetSettings(); + MouseSettings aMouseSettings = aSettings.GetMouseSettings(); - pWindow->SetSettings( aSettings, TRUE ); + USHORT nVclBehavior( MOUSE_WHEEL_FOCUS_ONLY ); + switch ( nWheelBehavior ) + { + case MouseWheelBehavior::SCROLL_DISABLED: nVclBehavior = MOUSE_WHEEL_DISABLE; break; + case MouseWheelBehavior::SCROLL_FOCUS_ONLY: nVclBehavior = MOUSE_WHEEL_FOCUS_ONLY; break; + case MouseWheelBehavior::SCROLL_ALWAYS: nVclBehavior = MOUSE_WHEEL_ALWAYS; break; + default: + OSL_ENSURE( false, "VCLXWindow::setProperty( 'MouseWheelBehavior' ): illegal property value!" ); } + + aMouseSettings.SetWheelBehavior( nWheelBehavior ); + aSettings.SetMouseSettings( aMouseSettings ); + pWindow->SetSettings( aSettings, TRUE ); } break; @@ -1670,6 +1702,19 @@ void VCLXWindow::setProperty( const ::rtl::OUString& PropertyName, const ::com:: setEnable( b ); } break; + case BASEPROPERTY_ENABLEVISIBLE: + { + sal_Bool b = sal_False; + if ( Value >>= b ) + { + if( b != mpImpl->isEnableVisible() ) + { + mpImpl->setEnableVisible( b ); + pWindow->Show( b && mpImpl->isDirectVisible() ); + } + } + } + break; case BASEPROPERTY_TEXT: case BASEPROPERTY_LABEL: case BASEPROPERTY_TITLE: @@ -2120,10 +2165,19 @@ void VCLXWindow::setProperty( const ::rtl::OUString& PropertyName, const ::com:: aProp <<= mpImpl->mnWritingMode; break; - case BASEPROPERTY_WHEELWITHOUTFOCUS: + case BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR: { - sal_Bool bWheelOnHover = !GetWindow()->GetSettings().GetMouseSettings().GetNoWheelActionWithoutFocus(); - aProp <<= bWheelOnHover; + USHORT nVclBehavior = GetWindow()->GetSettings().GetMouseSettings().GetWheelBehavior(); + sal_Int16 nBehavior = MouseWheelBehavior::SCROLL_FOCUS_ONLY; + switch ( nVclBehavior ) + { + case MOUSE_WHEEL_DISABLE: nBehavior = MouseWheelBehavior::SCROLL_DISABLED; break; + case MOUSE_WHEEL_FOCUS_ONLY: nBehavior = MouseWheelBehavior::SCROLL_FOCUS_ONLY; break; + case MOUSE_WHEEL_ALWAYS: nBehavior = MouseWheelBehavior::SCROLL_ALWAYS; break; + default: + OSL_ENSURE( false, "VCLXWindow::getProperty( 'MouseWheelBehavior' ): illegal VCL value!" ); + } + aProp <<= nBehavior; } break; @@ -2135,6 +2189,10 @@ void VCLXWindow::setProperty( const ::rtl::OUString& PropertyName, const ::com:: aProp <<= (sal_Bool) GetWindow()->IsEnabled(); break; + case BASEPROPERTY_ENABLEVISIBLE: + aProp <<= (sal_Bool) mpImpl->isEnableVisible(); + break; + case BASEPROPERTY_TEXT: case BASEPROPERTY_LABEL: case BASEPROPERTY_TITLE: @@ -2409,7 +2467,7 @@ void VCLXWindow::draw( sal_Int32 nX, sal_Int32 nY ) throw(::com::sun::star::uno: if ( !pWindow ) return; - if ( pWindow ) + if ( isDesignMode() || mpImpl->isEnableVisible() ) { TabPage* pTabPage = dynamic_cast< TabPage* >( pWindow ); if ( pTabPage ) @@ -2479,7 +2537,7 @@ void VCLXWindow::draw( sal_Int32 nX, sal_Int32 nY ) throw(::com::sun::star::uno: vcl::PDFExtOutDevData* pPDFExport = dynamic_cast<vcl::PDFExtOutDevData*>(pDev->GetExtOutDevData()); bool bDrawSimple = ( pDev->GetOutDevType() == OUTDEV_PRINTER ) || ( pDev->GetOutDevViewType() == OUTDEV_VIEWTYPE_PRINTPREVIEW ) - || ( pPDFExport && ! pPDFExport->GetIsExportFormFields() ); + || ( pPDFExport != NULL ); if ( bDrawSimple ) { pWindow->Draw( pDev, aP, aSz, WINDOW_DRAW_NOCONTROLS ); diff --git a/toolkit/source/awt/vclxwindow1.cxx b/toolkit/source/awt/vclxwindow1.cxx index f8dce643697a..4a5315008b9f 100644 --- a/toolkit/source/awt/vclxwindow1.cxx +++ b/toolkit/source/awt/vclxwindow1.cxx @@ -38,7 +38,12 @@ #include <vcl/wrkwin.hxx> #endif #include <vcl/window.hxx> -#ifdef QUARTZ + +#ifdef WNT +#include <tools/prewin.h> +#include <windows.h> +#include <tools/postwin.h> +#elif defined ( QUARTZ ) #include "premac.h" #include <Cocoa/Cocoa.h> #include "postmac.h" diff --git a/toolkit/source/awt/vclxwindows.cxx b/toolkit/source/awt/vclxwindows.cxx index dadb1300675a..b49fa1a621d6 100644 --- a/toolkit/source/awt/vclxwindows.cxx +++ b/toolkit/source/awt/vclxwindows.cxx @@ -386,6 +386,7 @@ void VCLXButton::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_DEFAULTBUTTON, BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_GRAPHIC, BASEPROPERTY_HELPTEXT, @@ -417,6 +418,13 @@ VCLXButton::VCLXButton() { } +VCLXButton::~VCLXButton() +{ +#ifndef __SUNPRO_CC + OSL_TRACE ("%s", __FUNCTION__); +#endif +} + ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > VCLXButton::CreateAccessibleContext() { return getAccessibleFactory().createAccessibleContext( this ); @@ -661,6 +669,7 @@ void VCLXImageControl::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_BORDERCOLOR, BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_GRAPHIC, BASEPROPERTY_HELPTEXT, BASEPROPERTY_HELPURL, @@ -789,6 +798,7 @@ void VCLXCheckBox::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) PushPropertyIds( rIds, BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_GRAPHIC, BASEPROPERTY_HELPTEXT, @@ -1088,6 +1098,7 @@ void VCLXRadioButton::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) PushPropertyIds( rIds, BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_GRAPHIC, BASEPROPERTY_HELPTEXT, @@ -1361,11 +1372,21 @@ void VCLXRadioButton::ImplClickedOrToggled( BOOL bToggled ) } } +::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > VCLXRadioButton::getFirstActionListener () +{ + if (!maItemListeners.getLength ()) + return ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > (); + return maActionListeners.getElements()[0]; +} + // ---------------------------------------------------- // class VCLXSpinField // ---------------------------------------------------- void VCLXSpinField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) { + PushPropertyIds( rIds, + BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR, + 0 ); VCLXEdit::ImplGetPropertyIds( rIds ); } @@ -1505,6 +1526,7 @@ void VCLXListBox::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_DROPDOWN, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_HELPTEXT, BASEPROPERTY_HELPURL, @@ -1518,6 +1540,7 @@ void VCLXListBox::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_ALIGN, BASEPROPERTY_WRITING_MODE, BASEPROPERTY_CONTEXT_WRITING_MODE, + BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR, 0); VCLXWindow::ImplGetPropertyIds( rIds ); } @@ -2175,6 +2198,9 @@ VCLXDialog::VCLXDialog() VCLXDialog::~VCLXDialog() { +#ifndef __SUNPRO_CC + OSL_TRACE ("%s", __FUNCTION__); +#endif } // ::com::sun::star::uno::XInterface @@ -2692,6 +2718,7 @@ void VCLXFixedHyperlink::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_BORDERCOLOR, BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_HELPTEXT, BASEPROPERTY_HELPURL, @@ -2720,6 +2747,7 @@ void VCLXFixedText::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_BORDERCOLOR, BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_HELPTEXT, BASEPROPERTY_HELPURL, @@ -2862,6 +2890,7 @@ void VCLXScrollBar::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_BORDERCOLOR, BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_HELPTEXT, BASEPROPERTY_HELPURL, BASEPROPERTY_LINEINCREMENT, @@ -3341,6 +3370,7 @@ void VCLXEdit::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ECHOCHAR, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_HARDLINEBREAKS, BASEPROPERTY_HELPTEXT, @@ -3717,6 +3747,7 @@ void VCLXComboBox::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_DROPDOWN, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_HELPTEXT, BASEPROPERTY_HELPURL, @@ -3731,6 +3762,7 @@ void VCLXComboBox::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_ALIGN, BASEPROPERTY_WRITING_MODE, BASEPROPERTY_CONTEXT_WRITING_MODE, + BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR, 0); // no, don't call VCLXEdit here - it has properties which we do *not* want to have at at combo box // #i92690# / 2008-08-12 / frank.schoenheit@sun.com @@ -3743,6 +3775,13 @@ VCLXComboBox::VCLXComboBox() { } +VCLXComboBox::~VCLXComboBox() +{ +#ifndef __SUNPRO_CC + OSL_TRACE ("%s", __FUNCTION__); +#endif +} + // ::com::sun::star::uno::XInterface ::com::sun::star::uno::Any VCLXComboBox::queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException) { @@ -4226,6 +4265,7 @@ void VCLXDateField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_DROPDOWN, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_EXTDATEFORMAT, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_HELPTEXT, @@ -4242,6 +4282,7 @@ void VCLXDateField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_HIDEINACTIVESELECTION, BASEPROPERTY_WRITING_MODE, BASEPROPERTY_CONTEXT_WRITING_MODE, + BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR, 0); VCLXFormattedSpinField::ImplGetPropertyIds( rIds ); } @@ -4562,6 +4603,7 @@ void VCLXTimeField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_BORDERCOLOR, BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_EXTTIMEFORMAT, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_HELPTEXT, @@ -4581,6 +4623,7 @@ void VCLXTimeField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_HIDEINACTIVESELECTION, BASEPROPERTY_WRITING_MODE, BASEPROPERTY_CONTEXT_WRITING_MODE, + BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR, 0); VCLXFormattedSpinField::ImplGetPropertyIds( rIds ); } @@ -4863,6 +4906,7 @@ void VCLXNumericField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_DECIMALACCURACY, BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_HELPTEXT, BASEPROPERTY_HELPURL, @@ -4882,6 +4926,7 @@ void VCLXNumericField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_HIDEINACTIVESELECTION, BASEPROPERTY_WRITING_MODE, BASEPROPERTY_CONTEXT_WRITING_MODE, + BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR, 0); VCLXFormattedSpinField::ImplGetPropertyIds( rIds ); } @@ -5203,6 +5248,7 @@ void VCLXMetricField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_DECIMALACCURACY, BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_HELPTEXT, BASEPROPERTY_HELPURL, @@ -5220,6 +5266,7 @@ void VCLXMetricField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_CUSTOMUNITTEXT, BASEPROPERTY_WRITING_MODE, BASEPROPERTY_CONTEXT_WRITING_MODE, + BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR, 0); VCLXFormattedSpinField::ImplGetPropertyIds( rIds ); } @@ -5453,6 +5500,7 @@ void VCLXCurrencyField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_DECIMALACCURACY, BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_HELPTEXT, BASEPROPERTY_HELPURL, @@ -5472,6 +5520,7 @@ void VCLXCurrencyField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_HIDEINACTIVESELECTION, BASEPROPERTY_WRITING_MODE, BASEPROPERTY_CONTEXT_WRITING_MODE, + BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR, 0); VCLXFormattedSpinField::ImplGetPropertyIds( rIds ); } @@ -5804,6 +5853,7 @@ void VCLXPatternField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_DEFAULTCONTROL, BASEPROPERTY_EDITMASK, BASEPROPERTY_ENABLED, + BASEPROPERTY_ENABLEVISIBLE, BASEPROPERTY_FONTDESCRIPTOR, BASEPROPERTY_HELPTEXT, BASEPROPERTY_HELPURL, @@ -5817,6 +5867,7 @@ void VCLXPatternField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds ) BASEPROPERTY_HIDEINACTIVESELECTION, BASEPROPERTY_WRITING_MODE, BASEPROPERTY_CONTEXT_WRITING_MODE, + BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR, 0); VCLXFormattedSpinField::ImplGetPropertyIds( rIds ); } diff --git a/toolkit/source/controls/formattedcontrol.cxx b/toolkit/source/controls/formattedcontrol.cxx index c80c3b14e63e..6171067f1185 100644 --- a/toolkit/source/controls/formattedcontrol.cxx +++ b/toolkit/source/controls/formattedcontrol.cxx @@ -142,6 +142,7 @@ namespace toolkit ImplRegisterProperty( BASEPROPERTY_EFFECTIVE_MAX ); ImplRegisterProperty( BASEPROPERTY_EFFECTIVE_MIN ); ImplRegisterProperty( BASEPROPERTY_ENABLED ); + ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE ); ImplRegisterProperty( BASEPROPERTY_FONTDESCRIPTOR ); ImplRegisterProperty( BASEPROPERTY_FORMATKEY ); ImplRegisterProperty( BASEPROPERTY_FORMATSSUPPLIER ); @@ -161,6 +162,7 @@ namespace toolkit ImplRegisterProperty( BASEPROPERTY_ENFORCE_FORMAT ); ImplRegisterProperty( BASEPROPERTY_WRITING_MODE ); ImplRegisterProperty( BASEPROPERTY_CONTEXT_WRITING_MODE ); + ImplRegisterProperty( BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR ); Any aTreatAsNumber; aTreatAsNumber <<= (sal_Bool) sal_True; @@ -323,8 +325,11 @@ namespace toolkit ++pPropertyNames ) { - bSettingValue = ( BASEPROPERTY_EFFECTIVE_VALUE == GetPropertyId( *pPropertyNames ) ); - bSettingText = ( BASEPROPERTY_TEXT == GetPropertyId( *pPropertyNames ) ); + if ( BASEPROPERTY_EFFECTIVE_VALUE == GetPropertyId( *pPropertyNames ) ) + bSettingValue = true; + + if ( BASEPROPERTY_TEXT == GetPropertyId( *pPropertyNames ) ) + bSettingText = true; } m_bSettingValueAndText = ( bSettingValue && bSettingText ); diff --git a/toolkit/source/controls/tkspinbutton.cxx b/toolkit/source/controls/tkspinbutton.cxx index 5c4e47e240dc..138b849a190c 100644 --- a/toolkit/source/controls/tkspinbutton.cxx +++ b/toolkit/source/controls/tkspinbutton.cxx @@ -60,6 +60,7 @@ namespace toolkit ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR ); ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL ); ImplRegisterProperty( BASEPROPERTY_ENABLED ); + ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE ); ImplRegisterProperty( BASEPROPERTY_HELPTEXT ); ImplRegisterProperty( BASEPROPERTY_HELPURL ); ImplRegisterProperty( BASEPROPERTY_ORIENTATION ); diff --git a/toolkit/source/controls/tree/treecontrol.cxx b/toolkit/source/controls/tree/treecontrol.cxx index 68c3212f5692..2949954bb13c 100644 --- a/toolkit/source/controls/tree/treecontrol.cxx +++ b/toolkit/source/controls/tree/treecontrol.cxx @@ -65,6 +65,7 @@ UnoTreeModel::UnoTreeModel() ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR ); ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL ); ImplRegisterProperty( BASEPROPERTY_ENABLED ); + ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE ); ImplRegisterProperty( BASEPROPERTY_FILLCOLOR ); ImplRegisterProperty( BASEPROPERTY_HELPTEXT ); ImplRegisterProperty( BASEPROPERTY_HELPURL ); diff --git a/toolkit/source/controls/unocontrol.cxx b/toolkit/source/controls/unocontrol.cxx index 72c24f4b25bd..0775b6ee74f3 100644 --- a/toolkit/source/controls/unocontrol.cxx +++ b/toolkit/source/controls/unocontrol.cxx @@ -51,6 +51,7 @@ #include <tools/time.hxx> #include <tools/urlobj.hxx> #include <tools/debug.hxx> +#include <tools/diagnose_ex.h> #include <vcl/svapp.hxx> #include <vcl/wrkwin.hxx> #include <comphelper/stl_types.hxx> @@ -132,7 +133,6 @@ public: inline VclListenerLock( VCLXWindow* _pLockWindow ) :m_pLockWindow( _pLockWindow ) { -// DBG_ASSERT( m_pLockWindow, "VclListenerLock::VclListenerLock: invalid window!" ); if ( m_pLockWindow ) m_pLockWindow->suspendVclEventListening( ); } @@ -143,14 +143,23 @@ public: } private: - VclListenerLock(); // never implemented + VclListenerLock(); // never implemented VclListenerLock( const VclListenerLock& ); // never implemented VclListenerLock& operator=( const VclListenerLock& ); // never implemented }; +typedef ::std::map< ::rtl::OUString, sal_Int32 > MapString2Int; struct UnoControl_Data { - ::std::set< ::rtl::OUString > aPropertyNotificationFilter; + MapString2Int aSuspendedPropertyNotifications; + /// true if and only if our model has a property ResourceResolver + bool bLocalizationSupport; + + UnoControl_Data() + :aSuspendedPropertyNotifications() + ,bLocalizationSupport( false ) + { + } }; // ---------------------------------------------------- @@ -245,33 +254,34 @@ Reference< XWindowPeer > UnoControl::ImplGetCompatiblePeer( sal_Bool bAcceptE return xCompatiblePeer; } -bool UnoControl::ImplMapPlaceHolder( ::rtl::OUString& rPlaceHolder ) +bool UnoControl::ImplCheckLocalize( ::rtl::OUString& _rPossiblyLocalizable ) { - rtl::OUString aMappedValue; + if ( !mpData->bLocalizationSupport + || ( _rPossiblyLocalizable.getLength() == 0 ) + || ( _rPossiblyLocalizable[0] != '&' ) + // TODO: make this reasonable. At the moment, everything which by accident starts with a & is considered + // localizable, which is probably wrong. + ) + return false; - Reference< XPropertySet > xPropSet( mxModel, UNO_QUERY ); - if ( xPropSet.is() ) + try { - Any a; - Reference< resource::XStringResourceResolver > xStringResourceResolver; - a = xPropSet->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ResourceResolver" ))); - if ( a >>= xStringResourceResolver ) + Reference< XPropertySet > xPropSet( mxModel, UNO_QUERY_THROW ); + Reference< resource::XStringResourceResolver > xStringResourceResolver( + xPropSet->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ResourceResolver" ) ) ), + UNO_QUERY + ); + if ( xStringResourceResolver.is() ) { - if ( xStringResourceResolver.is() ) - { - try - { - rPlaceHolder = xStringResourceResolver->resolveString( rPlaceHolder ); - return true; - } - catch ( resource::MissingResourceException& ) - { - return false; - } - } + ::rtl::OUString aLocalizationKey( _rPossiblyLocalizable.copy( 1 ) ); + _rPossiblyLocalizable = xStringResourceResolver->resolveString( aLocalizationKey ); + return true; } } - + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } return false; } @@ -284,56 +294,36 @@ void UnoControl::ImplSetPeerProperty( const ::rtl::OUString& rPropName, const An if ( mxVclWindowPeer.is() ) { - Any aVal( rVal ); - - // We now support a mapping for language dependent properties. This is the - // central method to implement it. - if (( rPropName.equalsAsciiL( "Text", 4 )) || - ( rPropName.equalsAsciiL( "Label", 5 )) || - ( rPropName.equalsAsciiL( "Title", 5 )) || - ( rPropName.equalsAsciiL( "HelpText", 8 )) || - ( rPropName.equalsAsciiL( "CurrencySymbol", 14 )) || - ( rPropName.equalsAsciiL( "StringItemList", 14 )) ) - { - rtl::OUString aValue; - uno::Sequence< rtl::OUString > aSeqValue; + Any aConvertedValue( rVal ); - if ( aVal >>= aValue ) + if ( mpData->bLocalizationSupport ) + { + // We now support a mapping for language dependent properties. This is the + // central method to implement it. + if (( rPropName.equalsAsciiL( "Text", 4 )) || + ( rPropName.equalsAsciiL( "Label", 5 )) || + ( rPropName.equalsAsciiL( "Title", 5 )) || + ( rPropName.equalsAsciiL( "HelpText", 8 )) || + ( rPropName.equalsAsciiL( "CurrencySymbol", 14 )) || + ( rPropName.equalsAsciiL( "StringItemList", 14 )) ) { - // Map single string value - if (( aValue.getLength() > 0 ) && - ( aValue.compareToAscii( "&", 1 ) == 0 )) + ::rtl::OUString aValue; + uno::Sequence< rtl::OUString > aSeqValue; + if ( aConvertedValue >>= aValue ) { - // Magic symbol '&' found at first place. Interpret as a place - // holder identifier. Now try to map it to the real value. The - // magic symbol must be removed. - rtl::OUString aKeyValue( aValue.copy( 1 )); - if ( ImplMapPlaceHolder( aKeyValue )) - aVal <<= aKeyValue; + if ( ImplCheckLocalize( aValue ) ) + aConvertedValue <<= aValue; } - } - else if ( aVal >>= aSeqValue ) - { - // Map sequence strings - for ( sal_Int32 i = 0; i < aSeqValue.getLength(); i++ ) + else if ( aConvertedValue >>= aSeqValue ) { - aValue = aSeqValue[i]; - if (( aValue.getLength() > 0 ) && - ( aValue.compareToAscii( "&", 1 ) == 0 )) - { - // Magic symbol '&' found at first place. Interpret as a place - // holder identifier. Now try to map it to the real value. The - // magic symbol must be removed. - rtl::OUString aKeyValue( aValue.copy( 1 )); - if ( ImplMapPlaceHolder( aKeyValue )) - aSeqValue[i] = aKeyValue; - } + for ( sal_Int32 i = 0; i < aSeqValue.getLength(); i++ ) + ImplCheckLocalize( aSeqValue[i] ); + aConvertedValue <<= aSeqValue; } - aVal <<= aSeqValue; } } - mxVclWindowPeer->setProperty( rPropName, aVal ); + mxVclWindowPeer->setProperty( rPropName, aConvertedValue ); } } @@ -455,13 +445,13 @@ void UnoControl::propertiesChange( const Sequence< PropertyChangeEvent >& rEvent { ::osl::MutexGuard aGuard( GetMutex() ); - if ( !mpData->aPropertyNotificationFilter.empty() ) + if ( !mpData->aSuspendedPropertyNotifications.empty() ) { // strip the property which we are currently updating (somewhere up the stack) PropertyChangeEvent* pEvents = aEvents.getArray(); PropertyChangeEvent* pEventsEnd = pEvents + aEvents.getLength(); for ( ; pEvents < pEventsEnd; ) - if ( mpData->aPropertyNotificationFilter.find( pEvents->PropertyName ) != mpData->aPropertyNotificationFilter.end() ) + if ( mpData->aSuspendedPropertyNotifications.find( pEvents->PropertyName ) != mpData->aSuspendedPropertyNotifications.end() ) { if ( pEvents != pEventsEnd ) ::std::copy( pEvents + 1, pEventsEnd, pEvents ); @@ -481,17 +471,22 @@ void UnoControl::propertiesChange( const Sequence< PropertyChangeEvent >& rEvent void UnoControl::ImplLockPropertyChangeNotification( const ::rtl::OUString& rPropertyName, bool bLock ) { + MapString2Int::iterator pos = mpData->aSuspendedPropertyNotifications.find( rPropertyName ); if ( bLock ) { - OSL_PRECOND( mpData->aPropertyNotificationFilter.find( rPropertyName ) == mpData->aPropertyNotificationFilter.end(), - "UnoControl::ImplLockPropertyChangeNotification: already locked!" ); - mpData->aPropertyNotificationFilter.insert( rPropertyName ); + if ( pos == mpData->aSuspendedPropertyNotifications.end() ) + pos = mpData->aSuspendedPropertyNotifications.insert( MapString2Int::value_type( rPropertyName, 0 ) ).first; + ++pos->second; } else { - OSL_PRECOND( mpData->aPropertyNotificationFilter.find( rPropertyName ) != mpData->aPropertyNotificationFilter.end(), - "UnoControl::ImplLockPropertyChangeNotification: not locked!" ); - mpData->aPropertyNotificationFilter.erase( rPropertyName ); + OSL_ENSURE( pos != mpData->aSuspendedPropertyNotifications.end(), "UnoControl::ImplLockPropertyChangeNotification: property not locked!" ); + if ( pos != mpData->aSuspendedPropertyNotifications.end() ) + { + OSL_ENSURE( pos->second > 0, "UnoControl::ImplLockPropertyChangeNotification: invalid suspension counter!" ); + if ( 0 == --pos->second ) + mpData->aSuspendedPropertyNotifications.erase( pos ); + } } } @@ -1054,7 +1049,13 @@ void UnoControl::draw( sal_Int32 x, sal_Int32 y ) throw(RuntimeException) } if ( xDrawPeerView.is() ) + { + Reference< XVclWindowPeer > xWindowPeer; + xWindowPeer.set( xDrawPeer, UNO_QUERY ); + if ( xWindowPeer.is() ) + xWindowPeer->setDesignMode( mbDesignMode ); xDrawPeerView->draw( x, y ); + } if ( bDisposeDrawPeer ) xDrawPeer->dispose(); @@ -1377,16 +1378,28 @@ sal_Bool UnoControl::setModel( const Reference< XControlModel >& rxModel ) throw if( xPropSet.is() ) xPropSet->removePropertiesChangeListener( xListener ); + mpData->bLocalizationSupport = false; mxModel = rxModel; + if( mxModel.is() ) { - xPropSet = Reference< XMultiPropertySet > ( mxModel, UNO_QUERY ); - if( xPropSet.is() ) + try { + xPropSet.set( mxModel, UNO_QUERY_THROW ); + Reference< XPropertySetInfo > xPSI( xPropSet->getPropertySetInfo(), UNO_SET_THROW ); + Sequence< ::rtl::OUString> aNames = lcl_ImplGetPropertyNames( xPropSet ); xPropSet->addPropertiesChangeListener( aNames, xListener ); + + mpData->bLocalizationSupport = xPSI->hasPropertyByName( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ResourceResolver" ) ) ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + mxModel.clear(); } } + return mxModel.is(); } @@ -1413,7 +1426,6 @@ void UnoControl::setDesignMode( sal_Bool bOn ) throw(RuntimeException) // remember this mbDesignMode = bOn; xWindow = xWindow.query( getPeer() ); - // dispose our current AccessibleContext, if we have one // (changing the design mode implies having a new implementation for this context, // so the old one must be declared DEFUNC) diff --git a/toolkit/source/controls/unocontrolmodel.cxx b/toolkit/source/controls/unocontrolmodel.cxx index 0f54a204a010..cc5faa27eec8 100644 --- a/toolkit/source/controls/unocontrolmodel.cxx +++ b/toolkit/source/controls/unocontrolmodel.cxx @@ -36,6 +36,7 @@ #include <com/sun/star/awt/FontWidth.hpp> #include <com/sun/star/awt/FontWeight.hpp> #include <com/sun/star/awt/FontSlant.hpp> +#include <com/sun/star/awt/MouseWheelBehavior.hpp> #include <com/sun/star/graphic/XGraphicProvider.hpp> #include <com/sun/star/text/WritingMode2.hpp> #include <com/sun/star/io/XMarkableStream.hpp> @@ -294,6 +295,7 @@ void UnoControlModel::ImplPropertyChanged( sal_uInt16 ) case BASEPROPERTY_IMAGEALIGN: aDefault <<= (sal_Int16) 1 /*ImageAlign::TOP*/; break; case BASEPROPERTY_IMAGEPOSITION: aDefault <<= (sal_Int16) 12 /*ImagePosition::Centered*/; break; case BASEPROPERTY_PUSHBUTTONTYPE: aDefault <<= (sal_Int16) 0 /*PushButtonType::STANDARD*/; break; + case BASEPROPERTY_MOUSE_WHEEL_BEHAVIOUR:aDefault <<= (sal_Int16) awt::MouseWheelBehavior::SCROLL_FOCUS_ONLY; break; case BASEPROPERTY_DATEMAX: aDefault <<= (sal_Int32) Date( 31, 12, 2200 ).GetDate(); break; case BASEPROPERTY_DATEMIN: aDefault <<= (sal_Int32) Date( 1, 1, 1900 ).GetDate(); break; @@ -338,13 +340,13 @@ void UnoControlModel::ImplPropertyChanged( sal_uInt16 ) case BASEPROPERTY_HARDLINEBREAKS: case BASEPROPERTY_NOLABEL: aDefault <<= (sal_Bool) sal_False; break; - case BASEPROPERTY_WHEELWITHOUTFOCUS: case BASEPROPERTY_HIDEINACTIVESELECTION: case BASEPROPERTY_ENFORCE_FORMAT: case BASEPROPERTY_AUTOCOMPLETE: case BASEPROPERTY_SCALEIMAGE: case BASEPROPERTY_ENABLED: case BASEPROPERTY_PRINTABLE: + case BASEPROPERTY_ENABLEVISIBLE: case BASEPROPERTY_DECORATION: aDefault <<= (sal_Bool) sal_True; break; case BASEPROPERTY_HELPTEXT: diff --git a/toolkit/source/controls/unocontrols.cxx b/toolkit/source/controls/unocontrols.cxx index 53b28cb7f2ac..3abacef7b67f 100644 --- a/toolkit/source/controls/unocontrols.cxx +++ b/toolkit/source/controls/unocontrols.cxx @@ -230,17 +230,7 @@ void UnoEditControl::ImplSetPeerProperty( const ::rtl::OUString& rPropName, cons { ::rtl::OUString sText; rVal >>= sText; - if (( sText.getLength() > 0 ) && - ( sText.compareToAscii( "&", 1 ) == 0 )) - { - // Magic symbol '&' found at first place. Interpret as a place - // holder identifier. Now try to map it to the real value. The - // magic symbol must be removed. - rtl::OUString aKeyValue( sText.copy( 1 )); - if ( UnoControl::ImplMapPlaceHolder( aKeyValue )) - sText = aKeyValue; - } - + ImplCheckLocalize( sText ); xTextComponent->setText( sText ); bDone = sal_True; } @@ -491,6 +481,7 @@ UnoControlFileControlModel::UnoControlFileControlModel() ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR ); ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL ); ImplRegisterProperty( BASEPROPERTY_ENABLED ); + ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE ); ImplRegisterProperty( BASEPROPERTY_FONTDESCRIPTOR ); ImplRegisterProperty( BASEPROPERTY_HELPTEXT ); ImplRegisterProperty( BASEPROPERTY_HELPURL ); @@ -1788,6 +1779,7 @@ UnoControlGroupBoxModel::UnoControlGroupBoxModel() { ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL ); ImplRegisterProperty( BASEPROPERTY_ENABLED ); + ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE ); ImplRegisterProperty( BASEPROPERTY_FONTDESCRIPTOR ); ImplRegisterProperty( BASEPROPERTY_HELPTEXT ); ImplRegisterProperty( BASEPROPERTY_HELPURL ); @@ -3532,16 +3524,7 @@ void UnoPatternFieldControl::ImplSetPeerProperty( const ::rtl::OUString& rPropNa { // same comment as in UnoControl::ImplSetPeerProperty - see there ::rtl::OUString sText( Text ); - if (( Text.getLength() > 0 ) && - ( Text.compareToAscii( "&", 1 ) == 0 )) - { - // Magic symbol '&' found at first place. Interpret as a place - // holder identifier. Now try to map it to the real value. The - // magic symbol must be removed. - rtl::OUString aKeyValue( Text.copy( 1 )); - if ( UnoControl::ImplMapPlaceHolder( aKeyValue )) - sText = aKeyValue; - } + ImplCheckLocalize( sText ); xPF->setString( sText ); xPF->setMasks( EditMask, LiteralMask ); } @@ -3613,6 +3596,7 @@ UnoControlProgressBarModel::UnoControlProgressBarModel() ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR ); ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL ); ImplRegisterProperty( BASEPROPERTY_ENABLED ); + ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE ); ImplRegisterProperty( BASEPROPERTY_FILLCOLOR ); ImplRegisterProperty( BASEPROPERTY_HELPTEXT ); ImplRegisterProperty( BASEPROPERTY_HELPURL ); @@ -3742,6 +3726,7 @@ UnoControlFixedLineModel::UnoControlFixedLineModel() ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR ); ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL ); ImplRegisterProperty( BASEPROPERTY_ENABLED ); + ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE ); ImplRegisterProperty( BASEPROPERTY_FONTDESCRIPTOR ); ImplRegisterProperty( BASEPROPERTY_HELPTEXT ); ImplRegisterProperty( BASEPROPERTY_HELPURL ); diff --git a/toolkit/source/helper/property.cxx b/toolkit/source/helper/property.cxx index bace3ff94771..0560afbd835f 100644 --- a/toolkit/source/helper/property.cxx +++ b/toolkit/source/helper/property.cxx @@ -257,7 +257,7 @@ ImplPropertyInfo* ImplGetPropertyInfos( sal_uInt16& rElementCount ) DECL_PROP_2 ( "Complete", COMPLETE, sal_Bool, BOUND, MAYBEDEFAULT ), DECL_PROP_2 ( "CurrentItemID", CURRENTITEMID, sal_Int16, BOUND, MAYBEDEFAULT ), - DECL_PROP_2 ( "WheelWithoutFocus", WHEELWITHOUTFOCUS, sal_Bool, BOUND, MAYBEDEFAULT ), + DECL_PROP_2 ( "MouseWheelBehavior", MOUSE_WHEEL_BEHAVIOUR, sal_Int16, BOUND, MAYBEDEFAULT ), DECL_PROP_2 ( "StepTime", STEP_TIME, sal_Int32, BOUND, MAYBEDEFAULT ), DECL_PROP_2 ( "Decoration", DECORATION, sal_Bool, BOUND, MAYBEDEFAULT ), @@ -272,7 +272,8 @@ ImplPropertyInfo* ImplGetPropertyInfos( sal_uInt16& rElementCount ) DECL_PROP_2 ( "DialogSourceURL", DIALOGSOURCEURL, ::rtl::OUString, BOUND, MAYBEDEFAULT ), DECL_PROP_2 ( "URL", URL, ::rtl::OUString, BOUND, MAYBEDEFAULT ), DECL_PROP_2 ( "WritingMode", WRITING_MODE, sal_Int16, BOUND, MAYBEDEFAULT ), - DECL_PROP_3 ( "ContextWritingMode", CONTEXT_WRITING_MODE, sal_Int16, BOUND, MAYBEDEFAULT, TRANSIENT ) + DECL_PROP_3 ( "ContextWritingMode", CONTEXT_WRITING_MODE, sal_Int16, BOUND, MAYBEDEFAULT, TRANSIENT ), + DECL_PROP_2 ( "EnableVisible", ENABLEVISIBLE, sal_Bool, BOUND, MAYBEDEFAULT ) }; pPropertyInfos = aImplPropertyInfos; nElements = sizeof( aImplPropertyInfos ) / sizeof( ImplPropertyInfo ); diff --git a/toolkit/source/helper/unowrapper.cxx b/toolkit/source/helper/unowrapper.cxx index fe41ad9a52ef..a652d493e653 100644 --- a/toolkit/source/helper/unowrapper.cxx +++ b/toolkit/source/helper/unowrapper.cxx @@ -292,11 +292,17 @@ void UnoWrapper::WindowDestroyed( Window* pWindow ) if ( pParent && pParent->GetWindowPeer() ) pParent->GetWindowPeer()->notifyWindowRemoved( *pWindow ); - if ( pWindow && pWindow->GetWindowPeer() ) + VCLXWindow* pWindowPeer = pWindow->GetWindowPeer(); + uno::Reference< lang::XComponent > xWindowPeerComp( pWindow->GetComponentInterface( FALSE ), uno::UNO_QUERY ); + OSL_ENSURE( ( pWindowPeer != NULL ) == ( xWindowPeerComp.is() == sal_True ), + "UnoWrapper::WindowDestroyed: inconsistency in the window's peers!" ); + if ( pWindowPeer ) { - pWindow->GetWindowPeer()->SetWindow( NULL ); + pWindowPeer->SetWindow( NULL ); pWindow->SetWindowPeer( NULL, NULL ); } + if ( xWindowPeerComp.is() ) + xWindowPeerComp->dispose(); // #102132# Iterate over frames after setting Window peer to NULL, // because while destroying other frames, we get get into the method again and try diff --git a/toolkit/source/helper/vclunohelper.cxx b/toolkit/source/helper/vclunohelper.cxx index d76b56a6a37d..029e520baca6 100644 --- a/toolkit/source/helper/vclunohelper.cxx +++ b/toolkit/source/helper/vclunohelper.cxx @@ -736,4 +736,12 @@ com::sun::star::awt::Point VCLUnoHelper::ConvertToAWTPoint(::Point /* VCLPoint * return aAWTPoint; } +::Rectangle VCLUnoHelper::ConvertToVCLRect( ::com::sun::star::awt::Rectangle const & _rRect ) +{ + return ::Rectangle( _rRect.X, _rRect.Y, _rRect.X + _rRect.Width - 1, _rRect.Y + _rRect.Height - 1 ); +} +::com::sun::star::awt::Rectangle VCLUnoHelper::ConvertToAWTRect( ::Rectangle const & _rRect ) +{ + return ::com::sun::star::awt::Rectangle( _rRect.Left(), _rRect.Top(), _rRect.GetWidth(), _rRect.GetHeight() ); +} diff --git a/toolkit/source/layout/bin.cxx b/toolkit/source/layout/core/bin.cxx index fa521ca91ca3..390c574c46c6 100644 --- a/toolkit/source/layout/bin.cxx +++ b/toolkit/source/layout/core/bin.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: bin.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -165,6 +165,12 @@ Align::allocateArea( const awt::Rectangle &rArea ) allocateChildAt( mxChild, aChildArea ); } +bool +Align::emptyVisible () +{ + return true; +} + /* MinSize */ MinSize::MinSize() : Bin() @@ -178,6 +184,12 @@ MinSize::MinSize() : Bin() &mnMinHeight ); } +bool +MinSize::emptyVisible () +{ + return true; +} + awt::Size SAL_CALL MinSize::getMinimumSize() throw(uno::RuntimeException) { diff --git a/toolkit/source/layout/bin.hxx b/toolkit/source/layout/core/bin.hxx index fb3991869a6c..23d082076359 100644 --- a/toolkit/source/layout/bin.hxx +++ b/toolkit/source/layout/core/bin.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: bin.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -31,10 +31,10 @@ /* A few simple binary containers */ -#ifndef CORE_BIN_HXX -#define CORE_BIN_HXX +#ifndef LAYOUT_CORE_BIN_HXX +#define LAYOUT_CORE_BIN_HXX -#include "container.hxx" +#include <layout/core/container.hxx> namespace layoutimpl { @@ -75,8 +75,6 @@ public: // css::awt::XLayoutConstrains virtual css::awt::Size SAL_CALL getMinimumSize() throw(css::uno::RuntimeException); - - PROPHELPER_SET_INFO }; // Align gives control over child position on the allocated space. @@ -91,11 +89,11 @@ protected: public: Align(); + bool emptyVisible (); + // css::awt::XLayoutContainer virtual void SAL_CALL allocateArea( const css::awt::Rectangle &rArea ) throw (css::uno::RuntimeException); - - PROPHELPER_SET_INFO }; // Makes child request its or a specified size, whatever is larger. @@ -108,13 +106,12 @@ protected: public: MinSize(); + bool emptyVisible (); // css::awt::XLayoutContainer virtual css::awt::Size SAL_CALL getMinimumSize() throw(css::uno::RuntimeException); - - PROPHELPER_SET_INFO }; } // namespace layoutimpl -#endif /*CORE_BIN_HXX*/ +#endif /* LAYOUT_CORE_BIN_HXX */ diff --git a/toolkit/source/layout/box-base.cxx b/toolkit/source/layout/core/box-base.cxx index 7addc617a511..63cb49901ec4 100644 --- a/toolkit/source/layout/box-base.cxx +++ b/toolkit/source/layout/core/box-base.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: box-base.cxx,v $ + * $RCSfile$ * - * $Revision: 1.2 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -69,9 +69,9 @@ static bool isVisible( uno::Reference< awt::XLayoutConstrains > xWidget ) uno::Sequence< uno::Reference< awt::XLayoutConstrains > > aChildren = xContainer->getChildren(); - // FIXME: <flow> workaround: empty visible containers always visible: - if ( !aChildren.getLength() ) - return true; + if (!aChildren.getLength ()) + if (Container *c = dynamic_cast <Container*> (xWidget.get ())) + return c->emptyVisible (); for ( int i = 0; i < aChildren.getLength(); i++ ) if ( isVisible( aChildren[i] ) ) @@ -88,16 +88,22 @@ bool Box_Base::ChildData::isVisible() return layoutimpl::isVisible( mxChild ); } +void +Box_Base::AddChild (uno::Reference <awt::XLayoutConstrains> const& xChild) +{ + ChildData *pData = createChild (xChild); + maChildren.push_back (pData); + queueResize (); +} + void SAL_CALL -Box_Base::addChild( const uno::Reference< awt::XLayoutConstrains >& xChild ) +Box_Base::addChild (uno::Reference <awt::XLayoutConstrains> const& xChild) throw (uno::RuntimeException, awt::MaxChildrenException) { - if ( xChild.is() ) + if (xChild.is ()) { - ChildData *pData = createChild( xChild ); - maChildren.push_back( pData ); - setChildParent( xChild ); - queueResize(); + AddChild (xChild); + setChildParent (xChild); } } diff --git a/toolkit/source/layout/box-base.hxx b/toolkit/source/layout/core/box-base.hxx index 208b8dd6a537..c4958a303540 100644 --- a/toolkit/source/layout/box-base.hxx +++ b/toolkit/source/layout/core/box-base.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: box-base.hxx,v $ + * $RCSfile$ * - * $Revision: 1.2 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,10 +29,10 @@ * ************************************************************************/ -#ifndef CORE_BOX_BASE_HXX -#define CORE_BOX_BASE_HXX +#ifndef LAYOUT_CORE_BOX_BASE_HXX +#define LAYOUT_CORE_BOX_BASE_HXX -#include "container.hxx" +#include <layout/core/container.hxx> #include <list> @@ -57,7 +57,6 @@ public: struct ChildProps: public PropHelper { //ChildProps( ChildProps* ); - PROPHELPER_SET_INFO }; protected: @@ -70,8 +69,10 @@ protected: ChildData *removeChildData( std::list< ChildData *>, css::uno::Reference< css::awt::XLayoutConstrains > const& Child ); public: + void AddChild( const css::uno::Reference< css::awt::XLayoutConstrains >& Child); + // css::awt::XLayoutContainer - virtual void SAL_CALL addChild( const css::uno::Reference< css::awt::XLayoutConstrains >& Child ) + virtual void SAL_CALL addChild( const css::uno::Reference< css::awt::XLayoutConstrains >& Child) throw (css::uno::RuntimeException, css::awt::MaxChildrenException); virtual void SAL_CALL removeChild( const css::uno::Reference< css::awt::XLayoutConstrains >& Child ) throw (css::uno::RuntimeException); @@ -87,4 +88,4 @@ public: } // namespace layoutimpl -#endif /* CORE_BOX__BASE HXX */ +#endif /* LAYOUT_CORE_BOX_BASE HXX */ diff --git a/toolkit/source/layout/box.cxx b/toolkit/source/layout/core/box.cxx index 6466ab9cd07d..254099d96411 100644 --- a/toolkit/source/layout/box.cxx +++ b/toolkit/source/layout/core/box.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: box.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -65,9 +65,9 @@ Box::ChildData::ChildData( uno::Reference< awt::XLayoutConstrains > const& xChil Box::ChildData* Box::createChild( uno::Reference< awt::XLayoutConstrains > const& xChild ) -{ + { return new ChildData( xChild ); -} + } Box::ChildProps* Box::createChildProps( Box_Base::ChildData *pData ) diff --git a/toolkit/source/layout/box.hxx b/toolkit/source/layout/core/box.hxx index 2b09ede7f357..0c36ce335213 100644 --- a/toolkit/source/layout/box.hxx +++ b/toolkit/source/layout/core/box.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: box.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,10 +29,10 @@ * ************************************************************************/ -#ifndef CORE_BOX_HXX -#define CORE_BOX_HXX +#ifndef LAYOUT_CORE_BOX_HXX +#define LAYOUT_CORE_BOX_HXX -#include "box-base.hxx" +#include <layout/core/box-base.hxx> #include <com/sun/star/awt/Point.hpp> @@ -83,8 +83,6 @@ public: // helper: mix of getMinimumSize() and getHeightForWidth() css::awt::Size calculateSize( long nWidth = 0 ); - PROPHELPER_SET_INFO - private: /* Helpers to deal with the joint Box directions. */ inline int primDim (const css::awt::Size &size) @@ -105,4 +103,4 @@ struct HBox : public Box } // namespace layoutimpl -#endif /* CORE_BOX_HXX */ +#endif /* LAYOUT_CORE_BOX_HXX */ diff --git a/toolkit/source/layout/byteseq.cxx b/toolkit/source/layout/core/byteseq.cxx index a40807100c3b..ffa9852bd303 100644 --- a/toolkit/source/layout/byteseq.cxx +++ b/toolkit/source/layout/core/byteseq.cxx @@ -6,8 +6,8 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: byteseq.cxx,v $ - * $Revision: 1.4 $ + * $RCSfile$ + * $Revision$ * * This file is part of OpenOffice.org. * diff --git a/toolkit/source/layout/container.cxx b/toolkit/source/layout/core/container.cxx index af40af05e36d..5978ae7f04a4 100644 --- a/toolkit/source/layout/container.cxx +++ b/toolkit/source/layout/core/container.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: container.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -50,6 +50,12 @@ Container::Container() setChangeListener( this ); } +bool +Container::emptyVisible () +{ + return false; +} + uno::Any Container::queryInterface( const uno::Type & rType ) throw (uno::RuntimeException) { diff --git a/toolkit/source/layout/container.hxx b/toolkit/source/layout/core/container.hxx index 70ec10c678d2..4dbd61cd398c 100644 --- a/toolkit/source/layout/container.hxx +++ b/toolkit/source/layout/core/container.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: container.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,10 +29,10 @@ * ************************************************************************/ -#ifndef CORE_CONTAINER_HXX -#define CORE_CONTAINER_HXX +#ifndef LAYOUT_CORE_CONTAINER_HXX +#define LAYOUT_CORE_CONTAINER_HXX -#include "helper.hxx" +#include <layout/core/helper.hxx> #include <cppuhelper/implbase2.hxx> #include <com/sun/star/awt/MaxChildrenException.hpp> @@ -44,7 +44,7 @@ namespace css = ::com::sun::star; typedef ::cppu::WeakImplHelper2< css::awt::XLayoutContainer, css::awt::XLayoutConstrains > Container_Base; -class Container : public Container_Base, public PropHelper, public PropHelper::Listener +class TOOLKIT_DLLPUBLIC Container : public Container_Base, public PropHelper, public PropHelper::Listener { friend class ChildProps; protected: @@ -73,6 +73,8 @@ public: Container(); virtual ~Container() {} + virtual bool emptyVisible (); + // XInterface virtual void SAL_CALL acquire() throw() { PropHelper::acquire(); } virtual void SAL_CALL release() throw() { PropHelper::release(); } @@ -129,12 +131,10 @@ public: css::awt::Size SAL_CALL calcAdjustedSize( const css::awt::Size& rNewSize ) throw(css::uno::RuntimeException) { return rNewSize; } -PROPHELPER_SET_INFO - protected: void propertiesChanged(); }; } // namespace layoutimpl -#endif /*CORE_CONTAINER_HXX*/ +#endif /* LAYOUT_CORE_CONTAINER_HXX */ diff --git a/toolkit/source/layout/dialogbuttonhbox.cxx b/toolkit/source/layout/core/dialogbuttonhbox.cxx index 1337b79cce8c..9334ef688135 100644 --- a/toolkit/source/layout/dialogbuttonhbox.cxx +++ b/toolkit/source/layout/core/dialogbuttonhbox.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: dialogbuttonhbox.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -39,13 +39,12 @@ #include "proplist.hxx" #if TEST_LAYOUT && !defined( DBG_UTIL ) -#include <stdio.h> #undef DBG_ERROR -#define DBG_ERROR printf +#define DBG_ERROR OSL_TRACE #undef DBG_ERROR1 -#define DBG_ERROR1 printf +#define DBG_ERROR1 OSL_TRACE #undef DBG_ERROR2 -#define DBG_ERROR2 printf +#define DBG_ERROR2 OSL_TRACE #endif /* TEST_LAYOUT && !DBG_UTIL */ namespace layoutimpl diff --git a/toolkit/source/layout/dialogbuttonhbox.hxx b/toolkit/source/layout/core/dialogbuttonhbox.hxx index 23ea3b2c9c00..26bab6d0602c 100644 --- a/toolkit/source/layout/dialogbuttonhbox.hxx +++ b/toolkit/source/layout/core/dialogbuttonhbox.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: dialogbuttonhbox.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,11 +29,11 @@ * ************************************************************************/ -#ifndef CORE_DIALOGBUTTONHBOX_HXX -#define CORE_DIALOGBUTTONHBOX_HXX +#ifndef LAYOUT_CORE_DIALOGBUTTONHBOX_HXX +#define LAYOUT_CORE_DIALOGBUTTONHBOX_HXX -#include "box.hxx" -#include "flow.hxx" +#include <layout/core/box.hxx> +#include <layout/core/flow.hxx> namespace layoutimpl { @@ -74,4 +74,4 @@ private: } // namespace layoutimpl -#endif /* CORE_DIALOGBUTTONHBOX_HXX */ +#endif /* LAYOUT_CORE_DIALOGBUTTONHBOX_HXX */ diff --git a/toolkit/source/layout/factory.cxx b/toolkit/source/layout/core/factory.cxx index 0e5ce93756f4..3462ba51648d 100644 --- a/toolkit/source/layout/factory.cxx +++ b/toolkit/source/layout/core/factory.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: factory.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -41,52 +41,52 @@ using namespace ::com::sun::star; using namespace layoutimpl; void * SAL_CALL comp_Layout_component_getFactory( const char * pImplName, void * pServiceManager, void * /*registryKey*/ ) -{ - void * pRet = 0; + { + void * pRet = 0; - ::rtl::OUString aImplName( ::rtl::OUString::createFromAscii( pImplName ) ); - uno::Reference< lang::XSingleServiceFactory > xFactory; + ::rtl::OUString aImplName( ::rtl::OUString::createFromAscii( pImplName ) ); + uno::Reference< lang::XSingleServiceFactory > xFactory; - if ( pServiceManager && aImplName.equals( LayoutFactory::impl_staticGetImplementationName() ) ) - xFactory = ::cppu::createOneInstanceFactory( reinterpret_cast< lang::XMultiServiceFactory*>( pServiceManager ), - LayoutFactory::impl_staticGetImplementationName(), - LayoutFactory::impl_staticCreateSelfInstance, - LayoutFactory::impl_staticGetSupportedServiceNames() ); - if ( xFactory.is() ) - { - xFactory->acquire(); - pRet = xFactory.get(); - } + if ( pServiceManager && aImplName.equals( LayoutFactory::impl_staticGetImplementationName() ) ) + xFactory = ::cppu::createOneInstanceFactory( reinterpret_cast< lang::XMultiServiceFactory*>( pServiceManager ), + LayoutFactory::impl_staticGetImplementationName(), + LayoutFactory::impl_staticCreateSelfInstance, + LayoutFactory::impl_staticGetSupportedServiceNames() ); + if ( xFactory.is() ) + { + xFactory->acquire(); + pRet = xFactory.get(); + } - return pRet; -} + return pRet; + } sal_Bool SAL_CALL comp_Layout_component_writeInfo( void * /*serviceManager*/, void * pRegistryKey ) -{ - if ( pRegistryKey ) { - try + if ( pRegistryKey ) { - uno::Reference< registry::XRegistryKey > xKey( reinterpret_cast< registry::XRegistryKey* >( pRegistryKey ) ); - uno::Reference< registry::XRegistryKey > xNewKey; - - xNewKey = xKey->createKey( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("/") ) + - LayoutFactory::impl_staticGetImplementationName() + - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "/UNO/SERVICES") ) ); - - const uno::Sequence< ::rtl::OUString > aServices = LayoutFactory::impl_staticGetSupportedServiceNames(); - for ( sal_Int32 i = 0; i < aServices.getLength(); i++ ) - xNewKey->createKey( aServices.getConstArray()[i] ); - - return sal_True; - } - catch (registry::InvalidRegistryException &) + try + { + uno::Reference< registry::XRegistryKey > xKey( reinterpret_cast< registry::XRegistryKey* >( pRegistryKey ) ); + uno::Reference< registry::XRegistryKey > xNewKey; + + xNewKey = xKey->createKey( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("/") ) + + LayoutFactory::impl_staticGetImplementationName() + + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "/UNO/SERVICES") ) ); + + const uno::Sequence< ::rtl::OUString > aServices = LayoutFactory::impl_staticGetSupportedServiceNames(); + for ( sal_Int32 i = 0; i < aServices.getLength(); i++ ) + xNewKey->createKey( aServices.getConstArray()[i] ); + + return sal_True; + } + catch (registry::InvalidRegistryException &) { OSL_ENSURE( sal_False, "### InvalidRegistryException!" ); } + } + return sal_False; } - return sal_False; -} // Component registration ::rtl::OUString SAL_CALL LayoutFactory::impl_staticGetImplementationName() diff --git a/toolkit/source/layout/factory.hxx b/toolkit/source/layout/core/factory.hxx index 6c7162475e6d..3715b1f7efcb 100644 --- a/toolkit/source/layout/factory.hxx +++ b/toolkit/source/layout/core/factory.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: factory.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,8 +29,8 @@ * ************************************************************************/ -#ifndef FACTORY_HXX_ -#define FACTORY_HXX_ +#ifndef LAYOUT_CORE_FACTORY_HXX +#define LAYOUT_CORE_FACTORY_HXX #include <com/sun/star/lang/XSingleServiceFactory.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> @@ -75,4 +75,4 @@ public: }; -#endif /* FACTORY_HXX */ +#endif /* LAYOUT_CORE_FACTORY_HXX */ diff --git a/toolkit/source/layout/flow.cxx b/toolkit/source/layout/core/flow.cxx index 5d53a17ccd4f..7d856de1f714 100644 --- a/toolkit/source/layout/flow.cxx +++ b/toolkit/source/layout/core/flow.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: flow.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -56,6 +56,12 @@ Flow::Flow() &mnSpacing ); } +bool +Flow::emptyVisible () +{ + return true; +} + void SAL_CALL Flow::addChild( const uno::Reference< awt::XLayoutConstrains >& xChild ) throw (uno::RuntimeException, css::awt::MaxChildrenException) @@ -97,7 +103,7 @@ Flow::getChildren() uno::Sequence< uno::Reference< awt::XLayoutConstrains > > children( maChildren.size() ); unsigned int i = 0; for ( std::list< ChildData * >::iterator it = maChildren.begin(); - it != maChildren.end(); it++, i++ ) + it != maChildren.end(); it++, i++ ) children[i] = (*it)->xChild; return children; diff --git a/toolkit/source/layout/flow.hxx b/toolkit/source/layout/core/flow.hxx index de217720315e..d650d61f4e40 100644 --- a/toolkit/source/layout/flow.hxx +++ b/toolkit/source/layout/core/flow.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: flow.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,10 +29,10 @@ * ************************************************************************/ -#ifndef CORE_FLOW_HXX -#define CORE_FLOW_HXX +#ifndef LAYOUT_CORE_FLOW_HXX +#define LAYOUT_CORE_FLOW_HXX -#include "container.hxx" +#include <layout/core/container.hxx> #include <list> @@ -63,6 +63,8 @@ protected: public: Flow(); + bool emptyVisible (); + // css::awt::XLayoutContainer virtual void SAL_CALL addChild( const css::uno::Reference< css::awt::XLayoutConstrains >& Child ) throw (css::uno::RuntimeException, css::awt::MaxChildrenException); @@ -87,8 +89,6 @@ public: virtual sal_Int32 SAL_CALL getHeightForWidth( sal_Int32 nWidth ) throw(css::uno::RuntimeException); -PROPHELPER_SET_INFO - private: // shared between getMinimumSize() and getHeightForWidth() css::awt::Size calculateSize( long nMaxWidth ); @@ -96,4 +96,4 @@ private: } // namespace layoutimpl -#endif /*FLOW_CORE_HXX*/ +#endif /* LAYOUT_FLOW_CORE_HXX */ diff --git a/toolkit/source/layout/core/helper.cxx b/toolkit/source/layout/core/helper.cxx new file mode 100644 index 000000000000..02c10ed9dc2b --- /dev/null +++ b/toolkit/source/layout/core/helper.cxx @@ -0,0 +1,676 @@ +/************************************************************************* + * + * 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$ + * + * $Revision$ + * + * 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. + * + ************************************************************************/ + +#include "helper.hxx" + +#include <assert.h> +#include <list> +#include <com/sun/star/awt/WindowAttribute.hpp> +#include <com/sun/star/awt/XWindow.hpp> +#include <com/sun/star/awt/VclWindowPeerAttribute.hpp> +#include <toolkit/awt/vclxwindow.hxx> +#include <tools/debug.hxx> + +#include "proplist.hxx" + +#if TEST_LAYOUT && !defined( DBG_UTIL ) +#undef DBG_ERROR +#define DBG_ERROR OSL_TRACE +#undef DBG_ERROR1 +#define DBG_ERROR1 OSL_TRACE +#undef DBG_ERROR2 +#define DBG_ERROR2 OSL_TRACE +#endif /* TEST_LAYOUT && !DBG_UTIL */ + +namespace layoutimpl +{ +using namespace com::sun::star; +using rtl::OUString; + +uno::Reference< awt::XWindowPeer > +getParent( uno::Reference< uno::XInterface > xRef ) +{ + do + { + uno::Reference< awt::XWindowPeer > xPeer( xRef, uno::UNO_QUERY ); + if ( xPeer.is() ) + return xPeer; + + uno::Reference< awt::XLayoutContainer > xCont( xRef, uno::UNO_QUERY ); + if ( xCont.is() ) + xRef = xCont->getParent(); + } + while ( xRef.is() ); + + return uno::Reference< awt::XWindowPeer >(); +} + +#if 0 +static uno::Reference< awt::XWindowPeer > +getToplevel( uno::Reference< uno::XInterface > xRef ) +{ + uno::Reference< awt::XWindowPeer > xTop, i; + while ( ( i = uno::Reference< awt::XWindowPeer >( xRef, uno::UNO_QUERY ) ).is() ) + { + xTop = i; + + uno::Reference< awt::XLayoutContainer > xCont( xRef, uno::UNO_QUERY ); + if ( xCont.is() ) + xRef = xCont->getParent(); + else + xRef = uno::Reference< awt::XWindowPeer >(); + } + + return xTop; +} +#endif + +} + +#include "bin.hxx" +#include "box.hxx" +#include "dialogbuttonhbox.hxx" +#include "flow.hxx" +#include "localized-string.hxx" +#include "table.hxx" + +namespace layoutimpl +{ + +oslModule WidgetFactory::mSfx2Library = 0; +WindowCreator WidgetFactory::mSfx2CreateWidget = 0; + +uno::Reference <awt::XLayoutContainer> WidgetFactory::createContainer (OUString const& name) +{ + uno::Reference< awt::XLayoutContainer > xPeer; + + if ( name.equalsAscii( "hbox" ) ) + xPeer = uno::Reference< awt::XLayoutContainer >( new HBox() ); + else if ( name.equalsAscii( "vbox" ) ) + xPeer = uno::Reference< awt::XLayoutContainer >( new VBox() ); + else if ( name.equalsAscii( "table" ) ) + xPeer = uno::Reference< awt::XLayoutContainer >( new Table() ); + else if ( name.equalsAscii( "flow" ) ) + xPeer = uno::Reference< awt::XLayoutContainer >( new Flow() ); + else if ( name.equalsAscii( "bin" ) ) + xPeer = uno::Reference< awt::XLayoutContainer >( new Bin() ); + else if ( name.equalsAscii( "min-size" ) ) + xPeer = uno::Reference< awt::XLayoutContainer >( new MinSize() ); + else if ( name.equalsAscii( "align" ) ) + xPeer = uno::Reference< awt::XLayoutContainer >( new Align() ); + else if ( name.equalsAscii( "dialogbuttonhbox" ) ) + xPeer = uno::Reference< awt::XLayoutContainer >( new DialogButtonHBox() ); + + return xPeer; +} + +uno::Reference <awt::XLayoutConstrains> WidgetFactory::toolkitCreateWidget (uno::Reference <awt::XToolkit> xToolkit, uno::Reference <uno::XInterface> xParent, OUString const& name, long properties) +{ + uno::Reference< awt::XLayoutConstrains > xPeer; + bool bToplevel = !xParent.is(); + + // UNO Control Widget + awt::WindowDescriptor desc; + if ( bToplevel ) + desc.Type = awt::WindowClass_TOP; + else + { + desc.Type = awt::WindowClass_SIMPLE; + +#if 0 + // top container -- a wrapper for framewindow -- is de-coupled + // from awt::XWindowPeer. So, getParent() fails at it. + uno::Reference< awt::XWindowPeer > xWinParent = getParent( xParent ); +#else + uno::Reference< awt::XWindowPeer > xWinParent( xParent, uno::UNO_QUERY ); +#endif + assert( xParent.is() ); + assert( xWinParent.is() ); + /* + With the new three layer instarr/rpath feature, when + prepending toolkit/unxlngx6.pro/lib or $SOLARVER/lib to + LD_LIBRARY_PATH, VCLXWindow::GetImplementation returns 0x0 + vclxtoolkit::ImplCreateWindow failing to create any widget; + although it succeeds here. + + While developing, one now must copy libtlx.so to + $OOO_INSTALL_PREFIX/openoffice.org/basis3.0/program/libtklx.so + each time. + */ + VCLXWindow* parentComponent = VCLXWindow::GetImplementation( xWinParent ); + if ( !parentComponent ) + throw uno::RuntimeException( + OUString::createFromAscii( "parent has no implementation" ), + uno::Reference< uno::XInterface >() ); + desc.Parent = xWinParent; + } + + desc.ParentIndex = 0; + // debugging help ... + desc.Bounds.X = 0; + desc.Bounds.Y = 0; + desc.Bounds.Width = 300; + desc.Bounds.Height = 200; + + desc.WindowAttributes = properties; + desc.WindowServiceName = name; + + uno::Reference< awt::XWindowPeer > xWinPeer; + try + { + OSL_TRACE("Asking toolkit: %s", OUSTRING_CSTR( desc.WindowServiceName ) ); + xWinPeer = xToolkit->createWindow( desc ); + if ( !xWinPeer.is() ) + throw uno::RuntimeException( + OUString( RTL_CONSTASCII_USTRINGPARAM( "Cannot create peer" ) ), + uno::Reference< uno::XInterface >() ); + xPeer = uno::Reference< awt::XLayoutConstrains >( xWinPeer, uno::UNO_QUERY ); + } + catch( uno::Exception & ) + { + DBG_ERROR1( "Warning: %s is not a recognized type\n", OUSTRING_CSTR( name ) ); + return uno::Reference< awt::XLayoutConstrains >(); + } + +#if 0 // This shadows the show="false" property and seems otherwise + // unnecessary + + // default to visible, let then people change it on properties + if ( ! bToplevel ) + { + uno::Reference< awt::XWindow> xWindow( xPeer, uno::UNO_QUERY ); + if ( xWindow.is() ) + xWindow->setVisible( true ); + } +#endif + + return xPeer; +} + +uno::Reference< awt::XLayoutConstrains > +WidgetFactory::createWidget (uno::Reference< awt::XToolkit > xToolkit, uno::Reference< uno::XInterface > xParent, OUString const& name, long properties) +{ + uno::Reference< awt::XLayoutConstrains > xPeer; + + xPeer = uno::Reference <awt::XLayoutConstrains> (createContainer (name), uno::UNO_QUERY); + if ( xPeer.is() ) + return xPeer; + + xPeer = implCreateWidget (xParent, name, properties); + if (xPeer.is ()) + return xPeer; + +#define FIXED_INFO 1 +#if FIXED_INFO + OUString tName = name; + // FIXME + if ( name.equalsAscii( "fixedinfo" ) ) + tName = OUString::createFromAscii( "fixedtext" ); + xPeer = toolkitCreateWidget (xToolkit, xParent, tName, properties); +#else + xPeer = toolkitCreateWidget (xToolkit, xParent, name, properties); +#endif + + return xPeer; +} + +PropHelper::PropHelper() : LockHelper() + , cppu::OPropertySetHelper( maBrdcstHelper ) + , pHelper( NULL ) +{ +} + +void +PropHelper::addProp (const char *pName, sal_Int32 nNameLen, rtl_TextEncoding e, + uno::Type aType, void *pPtr) +{ + // this sucks rocks for effiency ... + PropDetails aDetails; + aDetails.aName = rtl::OUString::intern( pName, nNameLen, e ); + aDetails.aType = aType; + aDetails.pValue = pPtr; + maDetails.push_back( aDetails ); +} + +cppu::IPropertyArrayHelper & SAL_CALL +PropHelper::getInfoHelper() +{ + if ( ! pHelper ) + { + uno::Sequence< beans::Property > aProps( maDetails.size() ); + for ( unsigned int i = 0; i < maDetails.size(); i++) + { + aProps[i].Name = maDetails[i].aName; + aProps[i].Type = maDetails[i].aType; + aProps[i].Handle = i; + aProps[i].Attributes = 0; + } + pHelper = new cppu::OPropertyArrayHelper( aProps, false /* fixme: faster ? */ ); + + } + return *pHelper; +} + +sal_Bool SAL_CALL +PropHelper::convertFastPropertyValue( + uno::Any & rConvertedValue, + uno::Any & rOldValue, + sal_Int32 nHandle, + const uno::Any& rValue ) + throw (lang::IllegalArgumentException) +{ + OSL_ASSERT( nHandle >= 0 && nHandle < (sal_Int32) maDetails.size() ); + + // FIXME: no Any::getValue ... + getFastPropertyValue( rOldValue, nHandle ); + if ( rOldValue != rValue ) + { + rConvertedValue = rValue; + return sal_True; // changed + } + else + { + rConvertedValue.clear(); + rOldValue.clear(); + } + return sal_False; +} + + +void SAL_CALL +PropHelper::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, + const uno::Any& rValue ) + throw (uno::Exception) +{ + OSL_ASSERT( nHandle >= 0 && nHandle < (sal_Int32) maDetails.size() ); + + const PropDetails &rInfo = maDetails[ nHandle ]; + + uno_type_assignData( rInfo.pValue, rInfo.aType.getTypeLibType(), + rValue.pData, rValue.pType, + 0, 0, 0 ); + + if ( mpListener ) + mpListener->propertiesChanged(); +} + +void SAL_CALL +PropHelper::getFastPropertyValue( uno::Any& rValue, + sal_Int32 nHandle ) const +{ + OSL_ASSERT( nHandle >= 0 && nHandle < (sal_Int32) maDetails.size() ); + const PropDetails &rInfo = maDetails[ nHandle ]; +#if 0 + switch ( rInfo.aType.getTypeClass() ) + { +#define MAP(classtype,ctype) \ + case uno::TypeClass_##classtype: \ + rValue <<= *(ctype *)(rInfo.pValue); \ + break + MAP( DOUBLE, double ); + MAP( SHORT, sal_Int16 ); + MAP( LONG, sal_Int32 ); + MAP( UNSIGNED_SHORT, sal_uInt16 ); + MAP( UNSIGNED_LONG, sal_uInt32 ); + MAP( STRING, ::rtl::OUString ); + default: + DBG_ERROR( "ERROR: unknown type to map!" ); + break; + } +#undef MAP +#endif + rValue.setValue( rInfo.pValue, rInfo.aType ); +} + +::com::sun::star::uno::Any +PropHelper::queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException) +{ + return OPropertySetHelper::queryInterface( rType ); +} + +uno::Reference <beans::XPropertySetInfo> SAL_CALL PropHelper::getPropertySetInfo () throw (uno::RuntimeException) +{ + return css::uno::Reference <css::beans::XPropertySetInfo> (createPropertySetInfo (getInfoHelper ())); +} + +} // namespace layoutimpl + +#include <awt/vclxbutton.hxx> +#include <awt/vclxdialog.hxx> +#include <awt/vclxfixedline.hxx> +#include <awt/vclxplugin.hxx> +#include <awt/vclxscroller.hxx> +#include <awt/vclxsplitter.hxx> +#include <awt/vclxtabcontrol.hxx> +#include <awt/vclxtabpage.hxx> +#include <toolkit/awt/vclxtoolkit.hxx> +#include <toolkit/awt/vclxwindow.hxx> +#include <vcl/button.hxx> +#include <vcl/dialog.hxx> +#include <vcl/fixed.hxx> +#include <vcl/tabctrl.hxx> +#include <vcl/tabpage.hxx> +#include <vcl/unohelp.hxx> + +#include <layout/layout.hxx> +#include <toolkit/awt/vclxwindows.hxx> +#include <vcl/lstbox.hxx> +#include <vcl.hxx> + +#include <typeinfo> + +namespace layoutimpl +{ + +uno::Reference <awt::XLayoutConstrains> WidgetFactory::implCreateWidget (uno::Reference <uno::XInterface> xParent, OUString name, long attributes) +{ + Window* parent = 0; + + if (VCLXWindow* parentComponent = VCLXWindow::GetImplementation (xParent)) + parent = parentComponent->GetWindow (); + + VCLXWindow* component = 0; + Window* window = 0; //sfx2CreateWindow (&component, parent, name, attributes); + if (!window) + window = layoutCreateWindow (&component, parent, name, attributes); + + uno::Reference <awt::XLayoutConstrains> reference; + if (window) + { + window->SetCreatedWithToolkit( sal_True ); + if ( component ) + component->SetCreatedWithToolkit( true ); + reference = component; + window->SetComponentInterface( component ); + if ( attributes & awt::WindowAttribute::SHOW ) + window->Show(); + } + + return reference; +} + +extern "C" { static void SAL_CALL thisModule() {} } + +Window* WidgetFactory::sfx2CreateWindow (VCLXWindow** component, Window* parent, OUString const& name, long& attributes) +{ + OSL_TRACE("Asking sfx2: %s", OUSTRING_CSTR (name)); + + if (!mSfx2Library) + { + OUString libraryName = ::vcl::unohelper::CreateLibraryName ("sfx", TRUE); + mSfx2Library = osl_loadModuleRelative (&thisModule, libraryName.pData, SAL_LOADMODULE_DEFAULT); + if (mSfx2Library) + { + OUString functionName (RTL_CONSTASCII_USTRINGPARAM ("CreateWindow")); + mSfx2CreateWidget = (WindowCreator) osl_getFunctionSymbol (mSfx2Library, functionName.pData); + } + } + + if (mSfx2CreateWidget) + return mSfx2CreateWidget (component, name, parent, attributes); + + return 0; +} + +Window* WidgetFactory::layoutCreateWindow (VCLXWindow** component, Window *parent, OUString const& name, long& attributes) +{ + Window* window = 0; + + if (0) + { + ; + } + if ( name.equalsAscii( "dialog" ) ) + { + if ( parent == NULL ) + parent = DIALOG_NO_PARENT; + window = new Dialog( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXDialog(); + + attributes ^= awt::WindowAttribute::SHOW; + } + else if ( name.equalsAscii( "modaldialog" ) ) + { + if ( parent == NULL ) + parent = DIALOG_NO_PARENT; + window = new ModalDialog( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXDialog(); + + attributes ^= awt::WindowAttribute::SHOW; + } + else if ( name.equalsAscii( "modelessdialog" ) ) + { + if ( parent == NULL ) + parent = DIALOG_NO_PARENT; + window = new ModelessDialog (parent, ImplGetWinBits (attributes, 0)); + *component = new layoutimpl::VCLXDialog(); + + attributes ^= awt::WindowAttribute::SHOW; + } + else if ( name.equalsAscii( "sfxdialog" ) ) + { + if ( parent == NULL ) + parent = DIALOG_NO_PARENT; + window = new ClosingDialog (parent, ImplGetWinBits (attributes, 0)); + *component = new layoutimpl::VCLXDialog(); + + attributes ^= awt::WindowAttribute::SHOW; + } + else if ( name.equalsAscii( "sfxmodaldialog" ) ) + { + if ( parent == NULL ) + parent = DIALOG_NO_PARENT; + window = new ClosingModalDialog( parent, + ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXDialog(); + + attributes ^= awt::WindowAttribute::SHOW; + } + else if ( name.equalsAscii( "sfxmodelessdialog" ) ) + { + if ( parent == NULL ) + parent = DIALOG_NO_PARENT; + window = new ClosingModelessDialog (parent, ImplGetWinBits (attributes, 0)); + *component = new layoutimpl::VCLXDialog(); + + attributes ^= awt::WindowAttribute::SHOW; + } + else if ( name.equalsAscii( "tabcontrol" ) ) + { + window = new TabControl( parent, ImplGetWinBits( attributes, WINDOW_TABCONTROL ) ); + *component = new layoutimpl::VCLXTabControl(); + } + else if ( name.equalsAscii( "scroller" ) ) + { + // used FixedImage because I just want some empty non-intrusive widget + window = new FixedImage( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXScroller(); + } + else if ( name.equalsAscii( "hsplitter" ) || name.equalsAscii( "vsplitter" ) ) + { + window = new FixedImage( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXSplitter( name.equalsAscii( "hsplitter" ) ); + } + else if ( name.equalsAscii( "hfixedline" ) || name.equalsAscii( "vfixedline" ) ) + { + WinBits nStyle = ImplGetWinBits( attributes, 0 ); + nStyle ^= WB_HORZ; + if ( name.equalsAscii( "hfixedline" ) ) + nStyle |= WB_HORZ; + else + nStyle |= WB_VERT; + window = new FixedLine( parent, nStyle ); + *component = new layoutimpl::VCLXFixedLine(); + } + else if ( name.equalsAscii( "okbutton" ) ) + { + window = new PushButton( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXOKButton( window ); + window->SetType (WINDOW_OKBUTTON); + } + else if ( name.equalsAscii( "cancelbutton" ) ) + { + window = new PushButton( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXCancelButton( window ); + window->SetType (WINDOW_CANCELBUTTON); + } + else if ( name.equalsAscii( "yesbutton" ) ) + { + window = new PushButton( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXYesButton( window ); + window->SetType (WINDOW_OKBUTTON); + } + else if ( name.equalsAscii( "nobutton" ) ) + { + window = new PushButton( parent, ImplGetWinBits( attributes, 0 ) ); + window->SetType (WINDOW_CANCELBUTTON); + *component = new layoutimpl::VCLXNoButton( window ); + } + else if ( name.equalsAscii( "retrybutton" ) ) + { + window = new PushButton( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXRetryButton( window ); + } + else if ( name.equalsAscii( "ignorebutton" ) ) + { + window = new PushButton( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXIgnoreButton( window ); + } + else if ( name.equalsAscii( "resetbutton" ) ) + { + window = new PushButton( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXResetButton( window ); + } + else if ( name.equalsAscii( "applybutton" ) ) + { + window = new PushButton( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXApplyButton( window ); + } + else if ( name.equalsAscii( "helpbutton" ) ) + { + window = new PushButton( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXHelpButton( window ); + window->SetType (WINDOW_HELPBUTTON); + } + else if ( name.equalsAscii( "morebutton" ) ) + { + window = new PushButton( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXMoreButton( window ); + window->SetType (WINDOW_MOREBUTTON); + } + else if ( name.equalsAscii( "advancedbutton" ) ) + { + window = new PushButton( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::VCLXAdvancedButton( window ); + } + else if ( name.equalsAscii( "plugin" ) ) + { + window = new Control( parent, ImplGetWinBits( attributes, 0 ) ); +#ifndef __SUNPRO_CC + OSL_TRACE( "%s: parent=%p (%s)\n", __FUNCTION__, parent, typeid( *parent ).name() ); +#endif + *component = new layoutimpl::VCLXPlugin( window, ImplGetWinBits( attributes, 0 ) ); + } + else if ( name.equalsAscii( "tabpage" ) ) + { +#if 0 + if ( !parent ) + parent = layout::TabPage::global_parent; +#else + if (layout::TabPage::global_parent) + parent = layout::TabPage::global_parent; + layout::TabPage::global_parent = 0; +#endif + //window = new TabPage( parent, ImplGetWinBits( attributes, 0 ) ); + attributes ^= awt::WindowAttribute::SHOW; + WinBits nStyle = ImplGetWinBits( attributes, 0 ); + nStyle |= WB_HIDE; + + if (!parent) + { + window = new Dialog( parent, nStyle ); + *component = new VCLXDialog(); + } + else + { + window = new TabPage( parent, nStyle ); + *component = new VCLXTabPage( window ); + } + } + else if ( name.equalsAscii( "string" ) ) + { + // FIXME: move <string>s.text to simple map<string> in root? + attributes &= ~awt::WindowAttribute::SHOW; + window = new Window( parent, ImplGetWinBits( attributes, 0 ) ); + *component = new layoutimpl::LocalizedString(); + } +#if 0 // parent paranoia + else if ( name.equalsAscii( "listbox" ) ) + { + window = new ListBox (parent, ImplGetWinBits (attributes, 0)); + *component = new VCLXListBox (); + } +#endif + else if (name.equalsAscii ("svxfontlistbox") + || name.equalsAscii ("svxlanguagebox")) + { + window = new ListBox (parent, ImplGetWinBits (attributes, 0)); + *component = new VCLXListBox (); + } + return window; +} + +} // namespace layoutimpl + +// Avoid polluting the rest of the code with vcl linkage pieces ... + +#include <vcl/imagerepository.hxx> +#include <vcl/bitmapex.hxx> +#include <vcl/graph.hxx> + +namespace layoutimpl +{ + +uno::Reference< graphic::XGraphic > loadGraphic( const char *pName ) +{ + BitmapEx aBmp; + + OUString aStr( pName, strlen( pName ), RTL_TEXTENCODING_ASCII_US ); + if ( aStr.compareToAscii( ".uno:" ) == 0 ) + aStr = aStr.copy( 5 ).toAsciiLowerCase(); + + if ( !vcl::ImageRepository::loadImage( OUString::createFromAscii( pName ), aBmp, true ) ) + return uno::Reference< graphic::XGraphic >(); + + return Graphic( aBmp ).GetXGraphic(); +} + +} // namespace layoutimpl diff --git a/toolkit/source/layout/helper.hxx b/toolkit/source/layout/core/helper.hxx index b4dc7e0d0858..787e4f4132b4 100644 --- a/toolkit/source/layout/helper.hxx +++ b/toolkit/source/layout/core/helper.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: helper.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,8 +29,8 @@ * ************************************************************************/ -#ifndef HELPER_HXX -#define HELPER_HXX +#ifndef LAYOUT_CORE_HELPER_HXX +#define LAYOUT_CORE_HELPER_HXX #include <toolkit/dllapi.h> #include <vector> @@ -39,10 +39,19 @@ #include <com/sun/star/awt/XLayoutContainer.hpp> #include <com/sun/star/awt/XVclWindowPeer.hpp> #include <com/sun/star/xml/input/XRoot.hpp> +#include <com/sun/star/graphic/XGraphic.hpp> #include <cppuhelper/implbase1.hxx> #include <cppuhelper/propshlp.hxx> +#include <osl/module.h> #include <rtl/ustring.hxx> +class Window; +class VCLXWindow; +extern "C" +{ + typedef Window* (SAL_CALL *WindowCreator) (VCLXWindow** component, rtl::OUString const& name, Window* parent, long& attributes); +} + namespace layoutimpl { @@ -97,23 +106,13 @@ public: virtual void SAL_CALL getFastPropertyValue( css::uno::Any& rValue, sal_Int32 nHandle ) const; - // you -must- use this macro in sub-classes that define new properties. - // NB. 'static' ... - // com::sun::star::beans::XMultiPropertySet -#define PROPHELPER_SET_INFO \ - css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL \ - getPropertySetInfo() throw(css::uno::RuntimeException) \ - { \ - static css::uno::Reference< css::beans::XPropertySetInfo > xInfo( \ - createPropertySetInfo( getInfoHelper() ) ); \ - return xInfo; \ - } - PROPHELPER_SET_INFO + virtual css::uno::Reference <css::beans::XPropertySetInfo> SAL_CALL getPropertySetInfo () throw (css::uno::RuntimeException); struct Listener { virtual void propertiesChanged() = 0; }; + void setChangeListener( Listener *pListener ) { mpListener = pListener; @@ -131,25 +130,24 @@ css::uno::Any anyFromString (const rtl::OUString &value, const css::uno::Type &t css::uno::Reference< css::awt::XWindowPeer > getParent( css::uno::Reference< css::uno::XInterface > xPeer ); - -struct WidgetFactory +class TOOLKIT_DLLPUBLIC WidgetFactory { - virtual css::uno::Reference< css::awt::XLayoutConstrains > - createWidget( css::uno::Reference< css::awt::XToolkit > xToolkit, - css::uno::Reference< css::uno::XInterface > xParent, - const rtl::OUString &rName, long nProps ); +public: + static oslModule mSfx2Library; + static WindowCreator mSfx2CreateWidget; + + // Should use UNO services in due course + static css::uno::Reference <css::awt::XLayoutConstrains> toolkitCreateWidget (css::uno::Reference <css::awt::XToolkit> xToolkit, css::uno::Reference <css::uno::XInterface> xParent, rtl::OUString const& name, long properties); + static css::uno::Reference< css::awt::XLayoutConstrains > createWidget( css::uno::Reference <css::awt::XToolkit > xToolkit, css::uno::Reference< css::uno::XInterface > xParent, rtl::OUString const &name, long properties); + static css::uno::Reference <css::awt::XLayoutContainer> createContainer (rtl::OUString const& name); + static css::uno::Reference <css::awt::XLayoutConstrains> implCreateWidget (css::uno::Reference <css::uno::XInterface> xParent, rtl::OUString name, long attributes); + static Window* sfx2CreateWindow (VCLXWindow** component, Window* parent, rtl::OUString const& name, long& attributes); + static Window* layoutCreateWindow (VCLXWindow** component, Window *parent, rtl::OUString const& name, long& attributes); }; -// A local factory method - should use UNO services in due course -css::uno::Reference< css::awt::XLayoutConstrains > TOOLKIT_DLLPUBLIC -createWidget( css::uno::Reference< css::awt::XToolkit > xToolkit, - css::uno::Reference< css::uno::XInterface > xParent, - const rtl::OUString &rName, long nProps ); -// Factory for containers (not visible ones) -css::uno::Reference< css::awt::XLayoutContainer > -createContainer( const rtl::OUString &rName ); +css::uno::Reference< css::graphic::XGraphic > loadGraphic( const char *pName ); -} // namespace layoutimpl +} // end namespace layoutimpl -#endif /* HELPER_HXX */ +#endif /* LAYOUT_CORE_HELPER_HXX */ diff --git a/toolkit/source/layout/import.cxx b/toolkit/source/layout/core/import.cxx index 75d4656f2971..dede47ad3ceb 100644 --- a/toolkit/source/layout/import.cxx +++ b/toolkit/source/layout/core/import.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: import.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -35,14 +35,12 @@ #include <com/sun/star/awt/XDialog2.hpp> #include <vcl/image.hxx> #include <tools/debug.hxx> +#include <layout/layout.hxx> #include "root.hxx" #include "helper.hxx" #include "dialogbuttonhbox.hxx" -// Hmm... -#include "layout/layout.hxx" -#include "layout/layoutcore.hxx" #define XMLNS_LAYOUT_URI "http://openoffice.org/2007/layout" #define XMLNS_CONTAINER_URI "http://openoffice.org/2007/layout/container" @@ -99,7 +97,16 @@ SAL_THROW (()) { OUString aTitle; if ( findAndRemove( "title", aProps, aTitle ) ) + { + OSL_TRACE("Setting title: %s", OUSTRING_CSTR( aTitle ) ); xDialog->setTitle( aTitle ); + } + OUString aHelpId; + if ( findAndRemove( "help-id", aProps, aHelpId ) ) + { + OSL_TRACE("Setting help-id: %s", OUSTRING_CSTR( aHelpId ) ); + xDialog->setHelpId( aHelpId.toInt32 () ); + } } // DEBUG: else if ( pParent == NULL ) { @@ -122,32 +129,23 @@ SAL_THROW (()) if ( DialogButtonHBox *b = dynamic_cast<DialogButtonHBox *> ( mpWidget->getPeer().get() ) ) b->setOrdering ( aOrdering ); -#ifdef IMPORT_RADIOGROUP - bool bSetRadioGroup, bSetTitle; - OUString aRadioGroup, aTitle; + bool bSetRadioGroup; + OUString aRadioGroup; bSetRadioGroup = findAndRemove( "radiogroup", aProps, aRadioGroup ); - bSetTitle = findAndRemove( "title", aProps, aTitle ); - setProperties( mxPeer, aProps ); + mpWidget->setProperties( aProps ); // we need to add radio buttons to the group after their properties are // set, so we can check if they should be the one selected by default or not. // And the state changed event isn't fired when changing properties. - if ( bSetRadioGroup ) - { - static int i = 0; - i++; - uno::Reference< awt::XRadioButton > xRadio( mxPeer, uno::UNO_QUERY ); - if ( xRadio.is() ) - pImport->mxRadioGroups.addItem( aRadioGroup, xRadio ); - } - if ( bSetTitle ) + + uno::Reference< awt::XRadioButton > xRadio( mpWidget->getPeer(), uno::UNO_QUERY ); + if ( xRadio.is() ) { - uno::Reference< awt::XDialog2 > xDialog( mxPeer, uno::UNO_QUERY ); - if ( xDialog.is() ) - xDialog->setTitle( aTitle ); + if (!bSetRadioGroup) + aRadioGroup = OUString::createFromAscii ("default"); + pImport->mxRadioGroups.addItem( aRadioGroup, xRadio ); } -#endif } WidgetElement::~WidgetElement() @@ -181,7 +179,7 @@ WidgetElement::startChildElement ( sal_Int32 nUid, OUString const &name, // transex3 hack. void SAL_CALL WidgetElement::characters( OUString const& rChars ) - throw (css::xml::sax::SAXException, css::uno::RuntimeException) + throw (xml::sax::SAXException, uno::RuntimeException) { if ( mpWidget && rChars.trim().getLength() ) { @@ -239,11 +237,104 @@ uno::Reference< xml::input::XElement > ImportContext::startRootElement( uno::Reference< xml::input::XAttributes > const & xAttributes ) throw (xml::sax::SAXException, uno::RuntimeException) { - if (XMLNS_LAYOUT_UID != nUid) + if ( XMLNS_LAYOUT_UID != nUid ) throw xml::sax::SAXException( OUString( RTL_CONSTASCII_USTRINGPARAM( "invalid namespace!" ) ), uno::Reference< uno::XInterface >(), uno::Any() ); - return new ToplevelElement( rLocalName, xAttributes, this ); + return new ToplevelElement( rLocalName, xAttributes, this ); +} + +RadioGroups::RadioGroups() +{ +} + +void RadioGroups::addItem( rtl::OUString id, uno::Reference< awt::XRadioButton > xRadio ) + throw (uno::RuntimeException) +{ + if ( ! xRadio.is() ) + throw uno::RuntimeException(); + + uno::Reference< RadioGroup > group; + RadioGroupsMap::iterator it = mxRadioGroups.find( id ); + if ( it == mxRadioGroups.end() ) + { + group = uno::Reference< RadioGroup > ( new RadioGroup() ); + mxRadioGroups [id] = group; + } + else + group = it->second; + group->addItem( xRadio ); +} + +RadioGroups::RadioGroup::RadioGroup() +{ +} + +void RadioGroups::RadioGroup::addItem( uno::Reference< awt::XRadioButton > xRadio ) +{ + if ( ! mxSelectedRadio.is() ) + { + xRadio->setState( true ); + mxSelectedRadio = xRadio; + } + else if ( xRadio->getState() ) + { +#if 1 + xRadio->setState( false ); +#else // huh, why select last added? + mxSelectedRadio->setState( false ); + mxSelectedRadio = xRadio; +#endif + } + + // TOO late: actionPerformed is called before itemStateChanged. + // If client code (wrongly?) uses actionPerformed, it will see + // the previous RadioButtons' state. + xRadio->addItemListener( this ); + + uno::Reference< awt::XButton > xButton = uno::Reference< awt::XButton > ( xRadio, uno::UNO_QUERY ); + xButton->addActionListener( this ); + + mxRadios.push_back (xRadio); +} + +void RadioGroups::RadioGroup::handleSelected () + throw (uno::RuntimeException) +{ + for ( RadioButtonsList::iterator it = mxRadios.begin(); + it != mxRadios.end(); it++ ) + if ( *it != mxSelectedRadio && (*it)->getState() ) + { + mxSelectedRadio->setState( false ); + mxSelectedRadio = *it; + break; + } +} + +// awt::XItemListener +void RadioGroups::RadioGroup::itemStateChanged( const awt::ItemEvent& e ) + throw (uno::RuntimeException) +{ + // TOO late: actionPerformed is called before itemStateChanged. + // If client code (wrongly?) uses actionPerformed, it will see + // the previous RadioButtons' state. + + // Need this for initialization, though. + if ( e.Selected ) + handleSelected (); +} + +// awt::XActionListener +void RadioGroups::RadioGroup::actionPerformed( const awt::ActionEvent& ) + throw (uno::RuntimeException) +{ + handleSelected (); +} + +// lang::XEventListener +void SAL_CALL RadioGroups::RadioGroup::disposing( const lang::EventObject& ) + throw (uno::RuntimeException) +{ } } // namespace layoutimpl diff --git a/toolkit/source/layout/import.hxx b/toolkit/source/layout/core/import.hxx index 9f32d2263ccf..d72e8a337f56 100644 --- a/toolkit/source/layout/import.hxx +++ b/toolkit/source/layout/core/import.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: import.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,15 +29,19 @@ * ************************************************************************/ -#ifndef IMPORT_HXX -#define IMPORT_HXX +#ifndef LAYOUT_CORE_IMPORT_HXX +#define LAYOUT_CORE_IMPORT_HXX #include <map> #include <list> +#define _BACKWARD_BACKWARD_WARNING_H 1 #include <hash_map> + #include <com/sun/star/xml/input/XRoot.hpp> #include <cppuhelper/implbase1.hxx> +#include <com/sun/star/awt/XButton.hpp> +#include <com/sun/star/awt/XRadioButton.hpp> namespace layoutimpl { @@ -45,94 +49,41 @@ class LayoutRoot; class LayoutWidget; namespace css = ::com::sun::star; -/* blocks under IMPORT_RADIOGROUP are marked for deletion. - The use of it is to synchronize radio buttons into groups. - But toolkit doesn't fire toggle events when toggled from the code. - Another approach is to implement our own XRadioButton from our - internal toolkit. We could have some singleton where they would - register... We would need to add another attribute... -*/ - -#ifdef IMPORT_RADIOGROUP -#include <com/sun/star/awt/XRadioButton.hpp> class RadioGroups { public: - RadioGroups() - { - } + RadioGroups(); void addItem( rtl::OUString id, css::uno::Reference< css::awt::XRadioButton > xRadio ) - throw (css::uno::RuntimeException) - { - if ( ! xRadio.is() ) - throw css::uno::RuntimeException(); - - css::uno::Reference< RadioGroup > group; - RadioGroupsMap::iterator it = mxRadioGroups.find( id ); - if ( it == mxRadioGroups.end() ) - { - group = css::uno::Reference< RadioGroup > ( new RadioGroup() ); - mxRadioGroups [id] = group; - } - else - group = it->second; - group->addItem( xRadio ); - } + throw (css::uno::RuntimeException); private: class RadioGroup : public ::cppu::WeakImplHelper1< css::awt::XItemListener > + , public ::cppu::WeakImplHelper1< css::awt::XActionListener > { public: - RadioGroup() - { - } - - void addItem( css::uno::Reference< css::awt::XRadioButton > xRadio ) - { - if ( ! mxSelectedRadio.is() ) - { - xRadio->setState( true ); - mxSelectedRadio = xRadio; - } - else if ( xRadio->getState() ) - { - mxSelectedRadio->setState( false ); - mxSelectedRadio = xRadio; - } - - xRadio->addItemListener( this ); - mxRadios.push_back (xRadio); - } + RadioGroup(); + void addItem( css::uno::Reference< css::awt::XRadioButton > xRadio ); private: typedef std::list< css::uno::Reference< css::awt::XRadioButton > > RadioButtonsList; RadioButtonsList mxRadios; css::uno::Reference< css::awt::XRadioButton > mxSelectedRadio; + void handleSelected () + throw (css::uno::RuntimeException); + // awt::XItemListener - void itemStateChanged( const com::sun::star::awt::ItemEvent& e) - throw (css::uno::RuntimeException) - { - if ( e.Selected ) - { - mxSelectedRadio->setState( false ); - // the only radio button selected would be the one that fired the event - for ( RadioButtonsList::iterator it = mxRadios.begin(); - it != mxRadios.end(); it++ ) - if ( (*it)->getState() ) - { - mxSelectedRadio = *it; - break; - } - } - } + void SAL_CALL itemStateChanged( const css::awt::ItemEvent& e ) + throw (css::uno::RuntimeException); + + // awt::XActionListener + void SAL_CALL actionPerformed( const css::awt::ActionEvent& e ) + throw (css::uno::RuntimeException); // lang::XEventListener void SAL_CALL disposing( const css::lang::EventObject& ) - throw (css::uno::RuntimeException) - { - } + throw (css::uno::RuntimeException); }; // each RadioGroup will stay alive after RadioGroups die with the ImportContext @@ -140,7 +91,6 @@ private: typedef std::map< rtl::OUString, css::uno::Reference< RadioGroup > > RadioGroupsMap; RadioGroupsMap mxRadioGroups; }; -#endif #if 0 // generator @@ -196,9 +146,7 @@ class ImportContext : public ::cppu::WeakImplHelper1< css::xml::input::XRoot > public: sal_Int32 XMLNS_LAYOUT_UID, XMLNS_CONTAINER_UID; LayoutRoot &mrRoot; // switch to XNameContainer ref ? -#ifdef IMPORT_RADIOGROUP RadioGroups mxRadioGroups; -#endif inline ImportContext( LayoutRoot &rRoot ) SAL_THROW( () ) : mrRoot( rRoot ) {} @@ -312,4 +260,4 @@ public: } // namespace layoutimpl -#endif /* IMPORT_HXX */ +#endif /* LAYOUT_CORE_IMPORT_HXX */ diff --git a/toolkit/source/layout/core/localized-string.cxx b/toolkit/source/layout/core/localized-string.cxx new file mode 100644 index 000000000000..9bc9df372832 --- /dev/null +++ b/toolkit/source/layout/core/localized-string.cxx @@ -0,0 +1,87 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile$ + * + * $Revision$ + * + * last change: $Author$ $Date$ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, + * MA 02110-1301 USA + * + ************************************************************************/ + +#include "localized-string.hxx" + +#include <toolkit/helper/property.hxx> +#include <vcl/window.hxx> + +namespace layoutimpl +{ + +namespace css = ::com::sun::star; +using namespace css; +using rtl::OUString; + +LocalizedString::LocalizedString() + : VCLXWindow() +{ +} + +void LocalizedString::ImplGetPropertyIds( std::list< sal_uInt16 > &ids ) +{ + PushPropertyIds( ids, BASEPROPERTY_TEXT, 0); + VCLXWindow::ImplGetPropertyIds( ids ); +} + +// XInterface +uno::Any LocalizedString::queryInterface( uno::Type const& rType ) + throw(uno::RuntimeException) +{ + uno::Any aRet = ::cppu::queryInterface( rType, + SAL_STATIC_CAST( awt::XFixedText*, this ) ); + return (aRet.hasValue() ? aRet : VCLXWindow::queryInterface( rType )); +} + +void LocalizedString::setText( OUString const& s ) + throw(uno::RuntimeException) +{ + ::vos::OGuard aGuard( GetMutex() ); + + if ( Window *w = GetWindow() ) + return w->SetText( s ); +} + +OUString LocalizedString::getText() + throw(uno::RuntimeException) +{ + ::vos::OGuard aGuard( GetMutex() ); + + if ( Window *w = GetWindow() ) + return w->GetText(); + return OUString(); +} + +} // namespace layoutimpl diff --git a/toolkit/source/layout/core/localized-string.hxx b/toolkit/source/layout/core/localized-string.hxx new file mode 100644 index 000000000000..7c897f2c713d --- /dev/null +++ b/toolkit/source/layout/core/localized-string.hxx @@ -0,0 +1,84 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile$ + * + * $Revision$ + * + * last change: $Author$ $Date$ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, + * MA 02110-1301 USA + * + ************************************************************************/ + +#ifndef LAYOUT_CORE_LOCALIZED_STRING_HXX +#define LAYOUT_CORE_LOCALIZED_STRING_HXX + +#include <com/sun/star/awt/XFixedText.hpp> +#include <toolkit/awt/vclxwindow.hxx> + +namespace layoutimpl +{ +namespace css = ::com::sun::star; + +// FIXME: misuse XFixedText interface for simple string +class LocalizedString : public css::awt::XFixedText + , public VCLXWindow +{ +public: + LocalizedString(); + + // css::uno::XInterface + css::uno::Any SAL_CALL queryInterface( css::uno::Type const& rType ) + throw(css::uno::RuntimeException); + void SAL_CALL acquire() throw() { OWeakObject::acquire(); } + void SAL_CALL release() throw() { OWeakObject::release(); } + + // css::awt::XFixedText + void SAL_CALL setText( ::rtl::OUString const& s ) + throw(css::uno::RuntimeException); + ::rtl::OUString SAL_CALL getText() + throw(css::uno::RuntimeException); + void SAL_CALL setAlignment( sal_Int16 ) + throw(css::uno::RuntimeException) { } + sal_Int16 SAL_CALL getAlignment() + throw(css::uno::RuntimeException) { return 0; } + + // css::awt::XLayoutConstrains + virtual css::awt::Size SAL_CALL getMinimumSize() + throw(css::uno::RuntimeException) { return css::awt::Size( 0, 0 ); } + css::awt::Size SAL_CALL getPreferredSize() + throw(css::uno::RuntimeException) { return getMinimumSize(); } + css::awt::Size SAL_CALL calcAdjustedSize( css::awt::Size const& size ) + throw(css::uno::RuntimeException) { return size; } + + static void ImplGetPropertyIds( std::list< sal_uInt16 > &ids ); + virtual void GetPropertyIds( std::list< sal_uInt16 > &ids ) + { return ImplGetPropertyIds( ids ); } +}; + +} // namespace layoutimpl + +#endif /* LAYOUT_CORE_LOCALIZED_STRING_HXX */ diff --git a/toolkit/source/layout/makefile.mk b/toolkit/source/layout/core/makefile.mk index a9b743742117..131be7eb237c 100644 --- a/toolkit/source/layout/makefile.mk +++ b/toolkit/source/layout/core/makefile.mk @@ -6,9 +6,9 @@ # # OpenOffice.org - a multi-platform office productivity suite # -# $RCSfile: makefile.mk,v $ +# $RCSfile$ # -# $Revision: 1.3 $ +# $Revision$ # # This file is part of OpenOffice.org. # @@ -29,9 +29,9 @@ # #************************************************************************* -PRJ=..$/.. +PRJ=../../.. PRJNAME=toolkit -TARGET=layoutcore +TARGET=layout-core ENABLE_EXCEPTIONS=true # --- Settings ----------------------------------------------------- @@ -55,11 +55,14 @@ SLOFILES= \ $(SLO)$/flow.obj \ $(SLO)$/helper.obj \ $(SLO)$/import.obj \ + $(SLO)$/localized-string.obj \ $(SLO)$/proplist.obj \ $(SLO)$/root.obj \ $(SLO)$/table.obj \ $(SLO)$/timer.obj \ - $(SLO)$/translate.obj + $(SLO)$/translate.obj\ + $(SLO)$/vcl.obj\ +# # --- Targets ------------------------------------------------------ diff --git a/toolkit/source/layout/precompiled_xmlscript.hxx b/toolkit/source/layout/core/precompiled_xmlscript.hxx index 0c554b41402a..f8ad22b56678 100644 --- a/toolkit/source/layout/precompiled_xmlscript.hxx +++ b/toolkit/source/layout/core/precompiled_xmlscript.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: precompiled_xmlscript.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * diff --git a/toolkit/source/layout/proplist.cxx b/toolkit/source/layout/core/proplist.cxx index 2d3d1265c0fc..9b154077eaa8 100644 --- a/toolkit/source/layout/proplist.cxx +++ b/toolkit/source/layout/core/proplist.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: proplist.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -39,16 +39,15 @@ #include <com/sun/star/awt/VclWindowPeerAttribute.hpp> #include <tools/debug.hxx> -#include "layout/layoutcore.hxx" +#include "helper.hxx" #if TEST_LAYOUT && !defined( DBG_UTIL ) -#include <stdio.h> #undef DBG_ERROR -#define DBG_ERROR printf +#define DBG_ERROR OSL_TRACE #undef DBG_ERROR1 -#define DBG_ERROR1 printf +#define DBG_ERROR1 OSL_TRACE #undef DBG_ERROR2 -#define DBG_ERROR2 printf +#define DBG_ERROR2 OSL_TRACE #endif /* TEST_LAYOUT && !DBG_UTIL */ namespace layoutimpl @@ -251,18 +250,17 @@ setProperties( uno::Reference< uno::XInterface > const& xPeer, if ( !prophlp::canHandleProps( xPeer ) ) { DBG_ERROR( "Error: setProperties - bad handle ignoring props:\n" ); - PropList::const_iterator cur; - for ( cur = rProps.begin(); cur != rProps.end(); cur++ ) + for ( PropList::const_iterator it = rProps.begin(); it != rProps.end(); + it++ ) { - OString attr = OUStringToOString( cur->first, RTL_TEXTENCODING_UTF8 ); - OString value = OUStringToOString( cur->second, RTL_TEXTENCODING_UTF8 ); + DBG_ERROR2( "%s=%s\n", OUSTRING_CSTR( it->first ), OUSTRING_CSTR( it->second ) ); } return; } - PropList::const_iterator cur; - for ( cur = rProps.begin(); cur != rProps.end(); cur++ ) - setProperty( xPeer, cur->first, cur->second ); + for ( PropList::const_iterator it = rProps.begin(); it != rProps.end(); + it++ ) + setProperty( xPeer, it->first, it->second ); } void @@ -271,7 +269,7 @@ setProperty( uno::Reference< uno::XInterface > const& xPeer, { OUString unoAttr = toUnoNaming( attr ); - OSL_TRACE( "setting %s=%s\n", OUSTRING_CSTR( attr ), OUSTRING_CSTR( value ) ); + OSL_TRACE( "setting %s=%s", OUSTRING_CSTR( attr ), OUSTRING_CSTR( value ) ); // get a Property object beans::Property prop; try @@ -350,7 +348,7 @@ static const AttributesMap attribsMap[] = { "spin", awt::VclWindowPeerAttribute::SPIN, false }, { "vscroll", awt::VclWindowPeerAttribute::VSCROLL, false }, - // cutting on OK, YES_NO_CANCEL and related obscure attributes... + // cutting on OK, YES_NO_CANCEL and related obsite attributes... }; static const int attribsMapLen = sizeof( attribsMap ) / sizeof( AttributesMap ); @@ -382,8 +380,6 @@ long getAttribute( const OUString &rName, bool bTopWindow ) void propsFromAttributes( const uno::Reference<xml::input::XAttributes> & xAttributes, PropList &rProps, sal_Int32 nNamespace ) { - - sal_Int32 nAttrs = xAttributes->getLength(); for ( sal_Int32 i = 0; i < nAttrs; i++ ) { @@ -402,15 +398,16 @@ void propsFromAttributes( const uno::Reference<xml::input::XAttributes> & xAttri bool findAndRemove( const char *pAttr, PropList &rProps, OUString &rValue ) { - PropList::iterator cur; + PropList::iterator it; OUString aName = OUString::createFromAscii( pAttr ); - for ( cur = rProps.begin(); cur != rProps.end(); cur++ ) + for ( it = rProps.begin(); it != rProps.end(); it++ ) { - if ( cur->first.equalsIgnoreAsciiCase( aName ) ) + if ( it->first.equalsIgnoreAsciiCase( aName ) + || it->first.equalsIgnoreAsciiCase( OUString::createFromAscii ("_") + aName ) ) { - rValue = cur->second; - rProps.erase( cur ); + rValue = it->second; + rProps.erase( it ); return true; } } diff --git a/toolkit/inc/layout/layoutcore.hxx b/toolkit/source/layout/core/proplist.hxx index 2ffe777c59ae..27682faf8902 100644 --- a/toolkit/inc/layout/layoutcore.hxx +++ b/toolkit/source/layout/core/proplist.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: layoutcore.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,40 +29,39 @@ * ************************************************************************/ -#ifndef _LAYOUT_CORE_HXX_ -#define _LAYOUT_CORE_HXX_ - -#include <com/sun/star/awt/XToolkit.hpp> -#include <com/sun/star/graphic/XGraphic.hpp> -#include <com/sun/star/awt/XLayoutContainer.hpp> -#include <com/sun/star/awt/XLayoutConstrains.hpp> - -#include <layout/layout.hxx> +#ifndef LAYOUT_CORE_PROPLIST_HXX +#define LAYOUT_CORE_PROPLIST_HXX +#include <com/sun/star/beans/XPropertySetInfo.hpp> +#include <com/sun/star/xml/input/XAttributes.hpp> +#include <list> +#include <rtl/ustring.hxx> +#include <toolkit/dllapi.h> +\ namespace layoutimpl { -namespace css = layout::css; +namespace css = ::com::sun::star; + +typedef std::list< std::pair< rtl::OUString, rtl::OUString > > PropList; -css::uno::Reference< css::awt::XLayoutContainer > -createContainer( const rtl::OUString &rName ); +void propsFromAttributes( const css::uno::Reference<css::xml::input::XAttributes> & xAttributes, + PropList &rProps, sal_Int32 nNamespace ); -css::uno::Reference< css::awt::XLayoutConstrains > -createWidget( css::uno::Reference< css::awt::XToolkit > xToolkit, - css::uno::Reference< css::uno::XInterface > xParent, - const rtl::OUString &rName, long nProps ); +void setProperties( css::uno::Reference< css::uno::XInterface > const& xPeer, + PropList const& rProps); -css::uno::Reference< css::awt::XLayoutConstrains > -createInternalWidget( css::uno::Reference< css::awt::XToolkit > xToolkit, - css::uno::Reference< css::uno::XInterface > xParent, - const rtl::OUString &rName, long nProps ); +void setProperty( css::uno::Reference< css::uno::XInterface > const& xPeer, + rtl::OUString const& attr, rtl::OUString const& value ); -css::uno::Reference< css::graphic::XGraphic > loadGraphic( const char *pName ); +long getAttributeProps( PropList &rProps ); +bool findAndRemove( const char *pAttr, PropList &rProps, rtl::OUString &rValue); // Helpers - unfortunately VCLXWindows don't implement XPropertySet // but containers do - these helpers help us to hide this namespace prophlp { + // can we set properties on this handle ? bool TOOLKIT_DLLPUBLIC canHandleProps( const css::uno::Reference< css::uno::XInterface > &xRef ); // if so which properties ? @@ -75,6 +74,22 @@ void TOOLKIT_DLLPUBLIC setProperty( const css::uno::Reference< css::uno::XInterf css::uno::Any TOOLKIT_DLLPUBLIC getProperty( const css::uno::Reference< css::uno::XInterface > &xRef, const rtl::OUString &rName ); } // namespace prophlp + } // namespace layoutimpl -#endif // _LAYOUT_CORE_HXX_ + +#if !OUSTRING_CSTR_PARANOIA +#define OUSTRING_CSTR( str ) \ + rtl::OUStringToOString( str, RTL_TEXTENCODING_ASCII_US ).getStr() +#else + +inline char const* OUSTRING_CSTR( rtl::OUString const& str ) +{ + rtl::OString *leak + = new rtl::OString (rtl::OUStringToOString (str, RTL_TEXTENCODING_ASCII_US)); + return leak->getStr(); +} + +#endif + +#endif /* LAYOUT_CORE_PROPLIST_HXX */ diff --git a/toolkit/source/layout/root.cxx b/toolkit/source/layout/core/root.cxx index 6934c997f1e8..b316fdfc8e9e 100644 --- a/toolkit/source/layout/root.cxx +++ b/toolkit/source/layout/core/root.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: root.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -31,8 +31,7 @@ #include "root.hxx" -#include <assert.h> -#include <stdio.h> +#include <cassert> #include <com/sun/star/awt/WindowAttribute.hpp> #include <com/sun/star/awt/XMessageBox.hpp> @@ -47,7 +46,6 @@ #include "timer.hxx" #include "translate.hxx" - namespace layoutimpl { @@ -102,11 +100,12 @@ void ShowMessageBox( uno::Reference< lang::XMultiServiceFactory > const& xFactor xMessageBox->execute(); //FIXME: exceptions not caught and printed at top level?? //else - printf( "%s\n", OUSTRING_CSTR( aMessage ) ); + //printf( "%s\n", OUSTRING_CSTR( aMessage ) ); } void LayoutRoot::error( OUString const& message ) { + OSL_TRACE( "%s\n", OUSTRING_CSTR( message ) ); ShowMessageBox( mxFactory, mxToolkit, OUString::createFromAscii( "Fatal error" ), message ); @@ -140,7 +139,7 @@ void SAL_CALL LayoutRoot::initialize( const uno::Sequence< uno::Any >& aArgument OUString::createFromAscii( "com.sun.star.xml.sax.Parser" ) ), uno::UNO_QUERY ); OSL_ASSERT( xParser.is() ); - if (! xParser.is() ) + if (! xParser.is()) { throw uno::RuntimeException( OUString::createFromAscii( "cannot create sax-parser component" ), @@ -249,9 +248,9 @@ uno::Sequence< OUString > SAL_CALL LayoutRoot::getElementNames() uno::Sequence< OUString > aNames( maItems.size() ); sal_Int32 nPos = 0; - for ( ItemHash::const_iterator i = maItems.begin(); - i != maItems.end(); i++ ) - aNames[ nPos++ ] = i->first; + for ( ItemHash::const_iterator it = maItems.begin(); + it != maItems.end(); it++ ) + aNames[ nPos++ ] = it->first; return aNames; } @@ -345,9 +344,9 @@ uno::Reference< awt::XLayoutConstrains > LayoutRoot::getToplevel() uno::Reference< awt::XLayoutConstrains > LayoutRoot::getById( OUString id ) { uno::Reference< awt::XLayoutConstrains > rRef = 0; - ItemHash::iterator i = maItems.find( id ); - if ( i != maItems.end() ) - rRef = i->second; + ItemHash::iterator it = maItems.find( id ); + if ( it != maItems.end() ) + rRef = it->second; return rRef; } #endif @@ -363,7 +362,7 @@ LayoutWidget::LayoutWidget( uno::Reference< awt::XToolkit > xToolkit, xParent = uno::Reference< awt::XLayoutContainer >( xContainer->getParent(), uno::UNO_QUERY ); } - mxWidget = createWidget( xToolkit, xParent, unoName, attrbs ); + mxWidget = WidgetFactory::createWidget( xToolkit, xParent, unoName, attrbs ); assert( mxWidget.is() ); mxContainer = uno::Reference< awt::XLayoutContainer >( mxWidget, uno::UNO_QUERY ); } diff --git a/toolkit/source/layout/root.hxx b/toolkit/source/layout/core/root.hxx index 73421dfe4bd2..92824f0d8ada 100644 --- a/toolkit/source/layout/root.hxx +++ b/toolkit/source/layout/core/root.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: root.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,9 +29,10 @@ * ************************************************************************/ -#ifndef CORE_ROOT_HXX -#define CORE_ROOT_HXX +#ifndef LAYOUT_CORE_ROOT_HXX +#define LAYOUT_CORE_ROOT_HXX +#define _BACKWARD_BACKWARD_WARNING_H 1 #include <hash_map> #include <com/sun/star/awt/XLayoutRoot.hpp> @@ -44,7 +45,7 @@ #include <cppuhelper/interfacecontainer.h> #include <toolkit/dllapi.h> -#include "proplist.hxx" +#include <layout/core/proplist.hxx> namespace layoutimpl { @@ -156,4 +157,4 @@ protected: } // namespace layoutimpl -#endif // CORE_ROOT_HXX +#endif /* LAYOUT_CORE_ROOT_HXX */ diff --git a/toolkit/source/layout/table.cxx b/toolkit/source/layout/core/table.cxx index c172f71d5ff1..f8b2639c2258 100644 --- a/toolkit/source/layout/table.cxx +++ b/toolkit/source/layout/core/table.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: table.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -79,7 +79,7 @@ Table::Table() Table::ChildData::ChildData( uno::Reference< awt::XLayoutConstrains > const& xChild ) : Box_Base::ChildData( xChild ) -// , mbExpand( { 0, 1 } ) +// , mbExpand( { 1, 1 } ) , mnColSpan( 1 ) , mnRowSpan( 1 ) , mnLeftCol( 0 ) @@ -87,7 +87,7 @@ Table::ChildData::ChildData( uno::Reference< awt::XLayoutConstrains > const& xCh , mnTopRow( 0 ) , mnBottomRow( 0 ) { - mbExpand[ 0 ] = 0; + mbExpand[ 0 ] = 1; mbExpand[ 1 ] = 1; } @@ -139,7 +139,7 @@ Table::getMinimumSize() throw( uno::RuntimeException ) col = 0; row++; - unsigned int i = col + ( row*mnColsLen ); + unsigned int i = col +( row*mnColsLen ); while ( aTable.size() > i && !aTable[ i ] ) i++; diff --git a/toolkit/source/layout/table.hxx b/toolkit/source/layout/core/table.hxx index eb0d81e9a81b..f4fd70d0a1f9 100644 --- a/toolkit/source/layout/table.hxx +++ b/toolkit/source/layout/core/table.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: table.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,10 +29,10 @@ * ************************************************************************/ -#ifndef TABLE_HXX -#define TABLE_HXX +#ifndef LAYOUT_CORE_TABLE_HXX +#define LAYOUT_CORE_TABLE_HXX -#include "box-base.hxx" +#include <layout/core/box-base.hxx> namespace layoutimpl { @@ -99,10 +99,8 @@ public: virtual sal_Int32 SAL_CALL getHeightForWidth( sal_Int32 /*nWidth*/ ) throw(css::uno::RuntimeException) { return maRequisition.Height; } - - PROPHELPER_SET_INFO }; } // namespace layoutimpl -#endif /*TABLE_HXX*/ +#endif /* LAYOUT_CORE_TABLE_HXX */ diff --git a/toolkit/source/layout/timer.cxx b/toolkit/source/layout/core/timer.cxx index 8104bf79e470..0da0f2c2abee 100644 --- a/toolkit/source/layout/timer.cxx +++ b/toolkit/source/layout/core/timer.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: timer.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -101,12 +101,12 @@ public: // 1. remove duplications and children for ( ContainerList::iterator it = mxContainers.begin(); - it != mxContainers.end(); it++ ) + it != mxContainers.end(); it++ ) eraseChildren( it, mxContainers ); // 2. check damage extent for ( ContainerList::iterator it = mxContainers.begin(); - it != mxContainers.end(); it++ ) + it != mxContainers.end(); it++ ) { uno::Reference< awt::XLayoutContainer > xContainer = *it; while ( xContainer->getParent().is() && isContainerDamaged( xContainer ) ) @@ -126,7 +126,7 @@ public: } // 3. force re-calculations - for( ContainerList::iterator it = mxContainers.begin(); + for ( ContainerList::iterator it = mxContainers.begin(); it != mxContainers.end(); it++ ) (*it)->allocateArea( (*it)->getAllocatedArea() ); } diff --git a/toolkit/source/layout/timer.hxx b/toolkit/source/layout/core/timer.hxx index 3cecd48359ab..b1d7c7597b2e 100644 --- a/toolkit/source/layout/timer.hxx +++ b/toolkit/source/layout/core/timer.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: timer.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,8 +29,8 @@ * ************************************************************************/ -#ifndef CORE_TIMER_HXX -#define CORE_TIMER_HXX +#ifndef LAYOUT_CORE_TIMER_HXX +#define LAYOUT_CORE_TIMER_HXX #include <com/sun/star/awt/XLayoutUnit.hpp> #include <cppuhelper/implbase1.hxx> @@ -50,4 +50,4 @@ public: } -#endif /*CORE_TIMER_HXX*/ +#endif /* LAYOUT_CORE_TIMER_HXX */ diff --git a/toolkit/source/layout/translate.cxx b/toolkit/source/layout/core/translate.cxx index 2a39f93c35a9..cca51632557b 100644 --- a/toolkit/source/layout/translate.cxx +++ b/toolkit/source/layout/core/translate.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: translate.cxx,v $ + * $RCSfile$ * - * $Revision: 1.4 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -33,7 +33,7 @@ #include <list> #if TEST_LAYOUT -#include <stdio.h> +#include <cstdio> #include "tools/getprocessworkingdir.hxx" #endif @@ -58,13 +58,13 @@ getLocaleSubdirList( lang::Locale const& rLocale ) { std::list<OUString> aSubdirs; aSubdirs.push_front( OUString::createFromAscii( "." ) ); - aSubdirs.push_front( OUString::createFromAscii( "en_US" ) ); + aSubdirs.push_front( OUString::createFromAscii( "en-US" ) ); if ( rLocale.Language.getLength() ) aSubdirs.push_front( rLocale.Language ); if ( rLocale.Country.getLength() ) { OUString aLocaleCountry = rLocale.Language - + OUString::createFromAscii( "_" ) + + OUString::createFromAscii( "-" ) + rLocale.Country; aSubdirs.push_front( aLocaleCountry ); if ( rLocale.Variant.getLength() ) @@ -93,9 +93,7 @@ getFirstExisting( OUString const& aDir, std::list<OUString> const& aSubDirs, i != aSubDirs.end(); i++ ) { String aFile = aDir + aSlash + *i + aSlash + aXMLName; -#if TEST_LAYOUT - printf( "testing: %s\n", OUSTRING_CSTR( aFile ) ); -#endif + OSL_TRACE( "testing: %s", OUSTRING_CSTR( aFile ) ); if ( fileExists( aFile ) ) return aFile; } @@ -129,9 +127,7 @@ readRightTranslation( OUString const& aXMLName ) aXMLFile = getFirstExisting( aXMLDir, aSubdirs, aXMLName ); } -#if TEST_LAYOUT - printf( "FOUND:%s\n", OUSTRING_CSTR ( OUString (aXMLFile) ) ); -#endif /* TEST_LAYOUT */ + OSL_TRACE( "FOUND:%s", OUSTRING_CSTR ( OUString (aXMLFile) ) ); return aXMLFile; } diff --git a/toolkit/source/layout/translate.hxx b/toolkit/source/layout/core/translate.hxx index ca59f5046d29..05043baa4fb6 100644 --- a/toolkit/source/layout/translate.hxx +++ b/toolkit/source/layout/core/translate.hxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: translate.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,8 +29,8 @@ * ************************************************************************/ -#ifndef CORE_TRANSLATE_HXX -#define CORE_TRANSLATE_HXX +#ifndef LAYOUT_CORE_TRANSLATE_HXX +#define LAYOUT_CORE_TRANSLATE_HXX namespace rtl { class OUString; @@ -41,4 +41,4 @@ namespace layoutimpl ::rtl::OUString readRightTranslation( ::rtl::OUString const& aXMLName ); } // namespace layoutimpl -#endif /* CORE_TRANSLATE_HXX */ +#endif /* LAYOUT_CORE_TRANSLATE_HXX */ diff --git a/toolkit/source/layout/proplist.hxx b/toolkit/source/layout/core/vcl.cxx index 1e962cdf63c7..418229351084 100644 --- a/toolkit/source/layout/proplist.hxx +++ b/toolkit/source/layout/core/vcl.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: proplist.hxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -29,37 +29,42 @@ * ************************************************************************/ -#ifndef CORE_PROPLIST_HXX -#define CORE_PROPLIST_HXX +#include <vcl.hxx> -#include <list> -#include <com/sun/star/xml/input/XAttributes.hpp> +#include <sal/types.h> +#include <vcl/button.hxx> -#include <rtl/ustring.hxx> - -namespace layoutimpl +static PushButton* get_button (Dialog const* dialog, sal_uInt32 type) { + Window* child = dialog->GetWindow (WINDOW_FIRSTCHILD); + while (child) + { + if (child->GetType () == type) + return static_cast <PushButton*> (child); + child = child->GetWindow (WINDOW_NEXT); + } -namespace css = ::com::sun::star; - -typedef std::list< std::pair< rtl::OUString, rtl::OUString > > PropList; - -void propsFromAttributes( const css::uno::Reference<css::xml::input::XAttributes> & xAttributes, - PropList &rProps, sal_Int32 nNamespace ); - -void setProperties( css::uno::Reference< css::uno::XInterface > const& xPeer, - PropList const& rProps); - -void setProperty( css::uno::Reference< css::uno::XInterface > const& xPeer, - rtl::OUString const& attr, rtl::OUString const& value ); - -long getAttributeProps( PropList &rProps ); -bool findAndRemove( const char *pAttr, PropList &rProps, rtl::OUString &rValue); - + return 0; } -// Convert a rtl::OUString to a byte string. -#define OUSTRING_CSTR( str ) \ - rtl::OUStringToOString( str, RTL_TEXTENCODING_ASCII_US ).getStr() +#define IMPLEMENT_CLOSING_DIALOG(cls)\ + Closing##cls::Closing##cls (Window* parent, WinBits bits)\ + : cls (parent, bits)\ + , mClosing (false)\ + {\ + }\ + BOOL Closing##cls::Close ()\ + {\ + if (mClosing)\ + EndDialog (false);\ + else if (PushButton *cancel = get_button (this, WINDOW_CANCELBUTTON))\ + cancel->Click ();\ + else if (PushButton *ok = get_button (this, WINDOW_OKBUTTON))\ + ok->Click ();\ + mClosing = true;\ + return false;\ + } -#endif // CORE_PROPLIST_HXX +IMPLEMENT_CLOSING_DIALOG (Dialog); +IMPLEMENT_CLOSING_DIALOG (ModelessDialog); +IMPLEMENT_CLOSING_DIALOG (ModalDialog); diff --git a/comphelper/qa/complex/sequenceoutputstream/SequenceOutputStreamTest.java b/toolkit/source/layout/core/vcl.hxx index e2acd0dd1322..d072fa4bf25e 100644 --- a/comphelper/qa/complex/sequenceoutputstream/SequenceOutputStreamTest.java +++ b/toolkit/source/layout/core/vcl.hxx @@ -6,8 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: SequenceOutputStreamTest.java,v $ - * $Revision: 1.3 $ + * $RCSfile$ + * + * $Revision$ * * This file is part of OpenOffice.org. * @@ -27,8 +28,25 @@ * for a copy of the LGPLv3 License. * ************************************************************************/ -package complex.sequenceoutputstream; -public interface SequenceOutputStreamTest { - boolean test(); -}
\ No newline at end of file +#ifndef LAYOUT_CORE_VCL_HXX +#define LAYOUT_CORE_VCL_HXX + +#include <vcl/dialog.hxx> + +#define DECLARE_CLOSING_DIALOG(cls)\ + class Closing##cls : public cls\ + {\ + public:\ + bool mClosing;\ + Closing##cls (Window* parent, WinBits bits);\ + virtual BOOL Close ();\ + } + +DECLARE_CLOSING_DIALOG (Dialog); +DECLARE_CLOSING_DIALOG (ModalDialog); +DECLARE_CLOSING_DIALOG (ModelessDialog); + +#undef DECLARE_CLOSING_DIALOG + +#endif /* LAYOUT_CORE_VCL_HXX */ diff --git a/toolkit/source/layout/helper.cxx b/toolkit/source/layout/helper.cxx deleted file mode 100644 index b03de8394fee..000000000000 --- a/toolkit/source/layout/helper.cxx +++ /dev/null @@ -1,520 +0,0 @@ -/************************************************************************* - * - * 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: helper.cxx,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. - * - ************************************************************************/ - -#include "helper.hxx" - -#include <assert.h> -#include <list> -#include <com/sun/star/awt/WindowAttribute.hpp> -#include <com/sun/star/awt/XWindow.hpp> -#include <com/sun/star/awt/VclWindowPeerAttribute.hpp> -#include <tools/debug.hxx> - -#include "proplist.hxx" -#include "layout/layoutcore.hxx" - -#if TEST_LAYOUT && !defined( DBG_UTIL ) -#include <stdio.h> -#undef DBG_ERROR -#define DBG_ERROR printf -#undef DBG_ERROR1 -#define DBG_ERROR1 printf -#undef DBG_ERROR2 -#define DBG_ERROR2 printf -#endif /* TEST_LAYOUT && !DBG_UTIL */ - -namespace layoutimpl -{ -using namespace com::sun::star; -using rtl::OUString; - -uno::Reference< awt::XWindowPeer > -getParent( uno::Reference< uno::XInterface > xRef ) -{ - do - { - uno::Reference< awt::XWindowPeer > xPeer( xRef, uno::UNO_QUERY ); - if ( xPeer.is() ) - return xPeer; - - uno::Reference< awt::XLayoutContainer > xCont( xRef, uno::UNO_QUERY ); - if ( xCont.is() ) - xRef = xCont->getParent(); - } - while ( xRef.is() ); - - return uno::Reference< awt::XWindowPeer >(); -} - -#if 0 -static uno::Reference< awt::XWindowPeer > -getToplevel( uno::Reference< uno::XInterface > xRef ) -{ - uno::Reference< awt::XWindowPeer > xTop, i; - while ( ( i = uno::Reference< awt::XWindowPeer >( xRef, uno::UNO_QUERY ) ).is() ) - { - xTop = i; - - uno::Reference< awt::XLayoutContainer > xCont( xRef, uno::UNO_QUERY ); - if ( xCont.is() ) - xRef = xCont->getParent(); - else - xRef = uno::Reference< awt::XWindowPeer >(); - } - - return xTop; -} -#endif - -} - -#include "dialogbuttonhbox.hxx" -#include "bin.hxx" -#include "box.hxx" -#include "table.hxx" -#include "flow.hxx" - -namespace layoutimpl -{ - -static uno::Reference< awt::XLayoutConstrains > ImplCreateWindow( - uno::Reference< uno::XInterface > xParent, - OUString aName, long WindowAttributes ); - -uno::Reference< awt::XLayoutContainer > -createContainer( const OUString &rName ) -{ - uno::Reference< awt::XLayoutContainer > xPeer; - - if ( rName.equalsAscii( "hbox" ) ) - xPeer = uno::Reference< awt::XLayoutContainer >( new HBox() ); - else if ( rName.equalsAscii( "vbox" ) ) - xPeer = uno::Reference< awt::XLayoutContainer >( new VBox() ); - else if ( rName.equalsAscii( "table" ) ) - xPeer = uno::Reference< awt::XLayoutContainer >( new Table() ); - else if ( rName.equalsAscii( "flow" ) ) - xPeer = uno::Reference< awt::XLayoutContainer >( new Flow() ); - else if ( rName.equalsAscii( "bin" ) ) - xPeer = uno::Reference< awt::XLayoutContainer >( new Bin() ); - else if ( rName.equalsAscii( "min-size" ) ) - xPeer = uno::Reference< awt::XLayoutContainer >( new MinSize() ); - else if ( rName.equalsAscii( "align" ) ) - xPeer = uno::Reference< awt::XLayoutContainer >( new Align() ); - else if ( rName.equalsAscii( "dialogbuttonhbox" ) ) - xPeer = uno::Reference< awt::XLayoutContainer >( new DialogButtonHBox() ); - - return xPeer; -} - -static uno::Reference< awt::XLayoutConstrains > -createToolkitWidget( uno::Reference< awt::XToolkit > xToolkit, - uno::Reference< uno::XInterface > xParent, - const OUString &rName, long nProps ) -{ - uno::Reference< awt::XLayoutConstrains > xPeer; - bool bToplevel = !xParent.is(); - - // UNO Control Widget - awt::WindowDescriptor desc; - if ( bToplevel ) - desc.Type = awt::WindowClass_TOP; - else - { - desc.Type = awt::WindowClass_SIMPLE; - - // top container -- a wrapper for framewindow -- is de-coupled - // from awt::XWindowPeer. So, getParent() fails at it. -// uno::Reference< awt::XWindowPeer > xWinParent = getParent( xParent ); - - uno::Reference< awt::XWindowPeer > xWinParent( xParent, uno::UNO_QUERY ); - - assert( xParent.is() ); - assert( xWinParent.is() ); - desc.Parent = xWinParent; - } - - desc.ParentIndex = 0; - // debugging help ... - desc.Bounds.X = 0; - desc.Bounds.Y = 0; - desc.Bounds.Width = 300; - desc.Bounds.Height = 200; - - desc.WindowAttributes = nProps; - desc.WindowServiceName = rName; - - uno::Reference< awt::XWindowPeer > xWinPeer; - try - { -// DBG_ERROR1("Asking toolkit: %s\n", OUSTRING_CSTR( desc.WindowServiceName ) ); - xWinPeer = xToolkit->createWindow( desc ); - if ( !xWinPeer.is() ) - throw uno::RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM( "Cannot create peer" ) ), - uno::Reference< uno::XInterface >() ); - xPeer = uno::Reference< awt::XLayoutConstrains >( xWinPeer, uno::UNO_QUERY ); - } - catch( uno::Exception & ) - { - DBG_ERROR1( "Warning: %s is not a recognized type\n", OUSTRING_CSTR( rName ) ); - return uno::Reference< awt::XLayoutConstrains >(); - } - - // default to visible, let then people change it on properties - if ( ! bToplevel ) - { - uno::Reference< awt::XWindow> xWindow( xPeer, uno::UNO_QUERY ); - if ( xWindow.is() ) - xWindow->setVisible( true ); - } - return xPeer; -} - -uno::Reference< awt::XLayoutConstrains > -createWidget( uno::Reference< awt::XToolkit > xToolkit, - uno::Reference< uno::XInterface > xParent, - const OUString &rName, long nProps ) -{ - uno::Reference< awt::XLayoutConstrains > xPeer; - - xPeer = uno::Reference< awt::XLayoutConstrains >( - createContainer( rName ), uno::UNO_QUERY ); - if ( xPeer.is() ) - return xPeer; - - xPeer = ImplCreateWindow( xParent, rName, nProps ); - if ( xPeer.is() ) - return xPeer; - -#if FIXED_INFO - OUString tName = rName; - // FIXME - if ( rName.equalsAscii( "fixedinfo" ) ) - tName = OUString::createFromAscii( "fixedtext" ); - xPeer = createToolkitWidget( xToolkit, xParent, tName, nProps ); -#else - xPeer = createToolkitWidget( xToolkit, xParent, rName, nProps ); -#endif - return xPeer; -} - -PropHelper::PropHelper() : LockHelper() - , cppu::OPropertySetHelper( maBrdcstHelper ) - , pHelper( NULL ) -{ -} - -void -PropHelper::addProp (const char *pName, sal_Int32 nNameLen, rtl_TextEncoding e, - uno::Type aType, void *pPtr) -{ - // this sucks rocks for effiency ... - PropDetails aDetails; - aDetails.aName = rtl::OUString::intern( pName, nNameLen, e ); - aDetails.aType = aType; - aDetails.pValue = pPtr; - maDetails.push_back( aDetails ); -} - -cppu::IPropertyArrayHelper & SAL_CALL -PropHelper::getInfoHelper() -{ - if ( ! pHelper ) - { - uno::Sequence< beans::Property > aProps( maDetails.size() ); - for ( unsigned int i = 0; i < maDetails.size(); i++) - { - aProps[i].Name = maDetails[i].aName; - aProps[i].Type = maDetails[i].aType; - aProps[i].Handle = i; - aProps[i].Attributes = 0; - } - pHelper = new cppu::OPropertyArrayHelper( aProps, false /* fixme: faster ? */ ); - - } - return *pHelper; -} - -sal_Bool SAL_CALL -PropHelper::convertFastPropertyValue( - uno::Any & rConvertedValue, - uno::Any & rOldValue, - sal_Int32 nHandle, - const uno::Any& rValue ) - throw (lang::IllegalArgumentException) -{ - OSL_ASSERT( nHandle >= 0 && nHandle < (sal_Int32) maDetails.size() ); - - // FIXME: no Any::getValue ... - getFastPropertyValue( rOldValue, nHandle ); - if ( rOldValue != rValue ) - { - rConvertedValue = rValue; - return sal_True; // changed - } - else - { - rConvertedValue.clear(); - rOldValue.clear(); - } - return sal_False; -} - - -void SAL_CALL -PropHelper::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, - const uno::Any& rValue ) - throw (uno::Exception) -{ - OSL_ASSERT( nHandle >= 0 && nHandle < (sal_Int32) maDetails.size() ); - - const PropDetails &rInfo = maDetails[ nHandle ]; - - uno_type_assignData( rInfo.pValue, rInfo.aType.getTypeLibType(), - rValue.pData, rValue.pType, - 0, 0, 0 ); - - if ( mpListener ) - mpListener->propertiesChanged(); -} - -void SAL_CALL -PropHelper::getFastPropertyValue( uno::Any& rValue, - sal_Int32 nHandle ) const -{ - OSL_ASSERT( nHandle >= 0 && nHandle < (sal_Int32) maDetails.size() ); - const PropDetails &rInfo = maDetails[ nHandle ]; -#if 0 - switch ( rInfo.aType.getTypeClass() ) - { -#define MAP(classtype,ctype) \ - case uno::TypeClass_##classtype: \ - rValue <<= *(ctype *)(rInfo.pValue); \ - break - MAP( DOUBLE, double ); - MAP( SHORT, sal_Int16 ); - MAP( LONG, sal_Int32 ); - MAP( UNSIGNED_SHORT, sal_uInt16 ); - MAP( UNSIGNED_LONG, sal_uInt32 ); - MAP( STRING, ::rtl::OUString ); - default: - DBG_ERROR( "ERROR: unknown type to map!" ); - break; - } -#undef MAP -#endif - rValue.setValue( rInfo.pValue, rInfo.aType ); -} - -::com::sun::star::uno::Any -PropHelper::queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException) -{ - return OPropertySetHelper::queryInterface( rType ); -} - -} // namespace layoutimpl - -#include <awt/vclxbutton.hxx> -#include <awt/vclxdialog.hxx> -#include <awt/vclxfixedline.hxx> -#include <awt/vclxscroller.hxx> -#include <awt/vclxsplitter.hxx> -#include <awt/vclxtabcontrol.hxx> -#include <toolkit/awt/vclxtoolkit.hxx> -#include <toolkit/awt/vclxwindow.hxx> -#include <vcl/button.hxx> -#include <vcl/dialog.hxx> -#include <vcl/fixed.hxx> -#include <vcl/tabctrl.hxx> -#include <vcl/tabpage.hxx> - - -///#include <svtools/prgsbar.hxx> - -namespace layoutimpl -{ - -uno::Reference< awt::XLayoutConstrains > ImplCreateWindow( - uno::Reference< uno::XInterface > xParent, - OUString aName, long WindowAttributes ) -{ - VCLXWindow *pNewComp = NULL; - Window *pNewWindow = NULL; - Window *pParent = NULL; - uno::Reference< awt::XLayoutConstrains > xRef; - - VCLXWindow* pParentComponent = VCLXWindow::GetImplementation( xParent ); - if ( pParentComponent ) - pParent = pParentComponent->GetWindow(); - - if ( aName.equalsAscii( "dialog" ) ) - { - if ( pParent == NULL ) - pParent = DIALOG_NO_PARENT; - pNewWindow = new Dialog( pParent, - ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXDialog(); - - WindowAttributes ^= awt::WindowAttribute::SHOW; - } - else if ( aName.equalsAscii( "modaldialog" ) ) - { - if ( pParent == NULL ) - pParent = DIALOG_NO_PARENT; - pNewWindow = new ModalDialog( pParent, - ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXDialog(); - - WindowAttributes ^= awt::WindowAttribute::SHOW; - } - else if ( aName.equalsAscii( "tabcontrol" ) ) - { - pNewWindow = new TabControl( pParent, - ImplGetWinBits( WindowAttributes, WINDOW_TABCONTROL ) ); - pNewComp = new layoutimpl::VCLXTabControl(); - } - else if ( aName.equalsAscii( "scroller" ) ) - { - // used FixedImage because I just want some empty non-intrusive widget - pNewWindow = new FixedImage( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXScroller(); - } - else if ( aName.equalsAscii( "hsplitter" ) || aName.equalsAscii( "vsplitter" ) ) - { - pNewWindow = new FixedImage( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXSplitter( aName.equalsAscii( "hsplitter" ) ); - } - else if ( aName.equalsAscii( "hfixedline" ) || aName.equalsAscii( "vfixedline" ) ) - { - WinBits nStyle = ImplGetWinBits( WindowAttributes, 0 ); - nStyle ^= WB_HORZ; - if ( aName.equalsAscii( "hfixedline" ) ) - nStyle |= WB_HORZ; - else - nStyle |= WB_VERT; - pNewWindow = new FixedLine( pParent, nStyle ); - pNewComp = new layoutimpl::VCLXFixedLine(); - } - else if ( aName.equalsAscii( "okbutton" ) ) - { - pNewWindow = new PushButton( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXOKButton( pNewWindow ); - } - else if ( aName.equalsAscii( "cancelbutton" ) ) - { - pNewWindow = new PushButton( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXCancelButton( pNewWindow ); - } - else if ( aName.equalsAscii( "yesbutton" ) ) - { - pNewWindow = new PushButton( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXYesButton( pNewWindow ); - } - else if ( aName.equalsAscii( "nobutton" ) ) - { - pNewWindow = new PushButton( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXNoButton( pNewWindow ); - } - else if ( aName.equalsAscii( "retrybutton" ) ) - { - pNewWindow = new PushButton( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXRetryButton( pNewWindow ); - } - else if ( aName.equalsAscii( "ignorebutton" ) ) - { - pNewWindow = new PushButton( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXIgnoreButton( pNewWindow ); - } - else if ( aName.equalsAscii( "resetbutton" ) ) - { - pNewWindow = new PushButton( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXResetButton( pNewWindow ); - } - else if ( aName.equalsAscii( "applybutton" ) ) - { - pNewWindow = new PushButton( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXApplyButton( pNewWindow ); - } - else if ( aName.equalsAscii( "helpbutton" ) ) - { - pNewWindow = new PushButton( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXHelpButton( pNewWindow ); - } - else if ( aName.equalsAscii( "morebutton" ) ) - { - pNewWindow = new PushButton( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXMoreButton( pNewWindow ); - } - else if ( aName.equalsAscii( "advancedbutton" ) ) - { - pNewWindow = new PushButton( pParent, ImplGetWinBits( WindowAttributes, 0 ) ); - pNewComp = new layoutimpl::VCLXAdvancedButton( pNewWindow ); - } - - if ( !pNewWindow ) - return xRef; - - pNewWindow->SetCreatedWithToolkit( sal_True ); - pNewComp->SetCreatedWithToolkit( TRUE ); - xRef = pNewComp; - pNewWindow->SetComponentInterface( pNewComp ); - if ( WindowAttributes & awt::WindowAttribute::SHOW ) - pNewWindow->Show(); - - return xRef; -} - -} // namespace layoutimpl - -// Avoid polluting the rest of the code with vcl linkage pieces ... - -#include <vcl/imagerepository.hxx> -#include <vcl/bitmapex.hxx> -#include <vcl/graph.hxx> - -namespace layoutimpl -{ - -uno::Reference< graphic::XGraphic > loadGraphic( const char *pName ) -{ - BitmapEx aBmp; - - OUString aStr( pName, strlen( pName ), RTL_TEXTENCODING_ASCII_US ); - if ( aStr.compareToAscii( ".uno:" ) == 0 ) - aStr = aStr.copy( 5 ).toAsciiLowerCase(); - - if ( !vcl::ImageRepository::loadImage( OUString::createFromAscii( pName ), aBmp, true ) ) - return uno::Reference< graphic::XGraphic >(); - - return Graphic( aBmp ).GetXGraphic(); -} - -} // namespace layoutimpl diff --git a/toolkit/source/vclcompat/makefile.mk b/toolkit/source/layout/vcl/makefile.mk index a4405e186508..a6cc754efa1b 100644 --- a/toolkit/source/vclcompat/makefile.mk +++ b/toolkit/source/layout/vcl/makefile.mk @@ -6,9 +6,9 @@ # # OpenOffice.org - a multi-platform office productivity suite # -# $RCSfile: makefile.mk,v $ +# $RCSfile$ # -# $Revision: 1.3 $ +# $Revision$ # # This file is part of OpenOffice.org. # @@ -29,9 +29,9 @@ # #************************************************************************* -PRJ=..$/.. +PRJ=../../.. PRJNAME=toolkit -TARGET=vclcompat +TARGET=layout-vcl ENABLE_EXCEPTIONS=true # --- Settings ----------------------------------------------------- @@ -39,10 +39,11 @@ ENABLE_EXCEPTIONS=true .INCLUDE : settings.mk .INCLUDE : $(PRJ)$/util$/makefile.pmk -# --- Files -------------------------------------------------------- +.IF "$(COMNAME)" == "gcc3" +CFLAGS+=-Wall -fno-default-inline +.ENDIF -# FIXME: This is bad, hmkay -CFLAGS+= -I$(PRJ)/source +# --- Files -------------------------------------------------------- SLOFILES= \ $(SLO)$/wrapper.obj \ diff --git a/toolkit/source/layout/vcl/wbutton.cxx b/toolkit/source/layout/vcl/wbutton.cxx new file mode 100644 index 000000000000..0b8b41299315 --- /dev/null +++ b/toolkit/source/layout/vcl/wbutton.cxx @@ -0,0 +1,685 @@ +/************************************************************************* + * + * 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$ + * + * $Revision$ + * + * 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. + * + ************************************************************************/ + +#include "wrapper.hxx" + +#include <com/sun/star/awt/PosSize.hpp> +#include <com/sun/star/awt/XActionListener.hpp> +#include <com/sun/star/awt/XButton.hpp> +#include <com/sun/star/awt/XCheckBox.hpp> +#include <com/sun/star/awt/XRadioButton.hpp> +#include <com/sun/star/graphic/XGraphic.hpp> +#include <cppuhelper/implbase1.hxx> +#include <toolkit/awt/vclxwindow.hxx> +#include <toolkit/awt/vclxwindows.hxx> +#include <toolkit/helper/convert.hxx> +#include <vcl/button.hxx> +#include <vcl/event.hxx> +#include <vcl/msgbox.hxx> +#include <vcl/svapp.hxx> +#include <vcl/window.hxx> + +#include <list> + +#include <layout/core/helper.hxx> + +using namespace ::com::sun::star; + +using rtl::OUString; + +namespace layout +{ + +class ImageImpl +{ + public: + uno::Reference< graphic::XGraphic > mxGraphic; + ImageImpl( const char *pName ) + : mxGraphic( layoutimpl::loadGraphic( pName ) ) + { + if ( !mxGraphic.is() ) + { + DBG_ERROR1( "ERROR: failed to load image: `%s'\n", pName ); + } + } +}; + +Image::Image( const char *pName ) + : pImpl( new ImageImpl( pName ) ) +{ +} + +Image::~Image() +{ + delete pImpl; +} + +class ButtonImpl : public ControlImpl + , public ::cppu::WeakImplHelper1< awt::XActionListener > +{ + Link maClickHdl; + +public: + uno::Reference< awt::XButton > mxButton; + ButtonImpl( Context *context, const PeerHandle &peer, Window *window ) + : ControlImpl( context, peer, window ) + , mxButton( peer, uno::UNO_QUERY ) + { + /* We have default action when clicked, always listen. */ + mxButton->addActionListener( this ); + } + + ~ButtonImpl() + { + } + + virtual void Click() { /* make me pure virtual? */ }; + + Link& GetClickHdl () + { + return maClickHdl; + } + + virtual void SetClickHdl( Link const& link ) + { + maClickHdl = link; + } + + void SAL_CALL disposing( lang::EventObject const& e ) + throw (uno::RuntimeException) + { + mxButton->removeActionListener( this ); + ControlImpl::disposing (e); + mxButton.clear (); + } + + virtual void SAL_CALL actionPerformed( const awt::ActionEvent& ) + throw (uno::RuntimeException) + { + if ( !maClickHdl ) + Click(); + else + maClickHdl.Call( static_cast<Window *>( mpWindow ) ); + } + + bool SetModeImage( uno::Reference< graphic::XGraphic > xGraph ) + { + setProperty( "Graphic", uno::Any( xGraph ) ); + return true; + } +}; + +Button::~Button () +{ +} + +String Button::GetStandardText (sal_uInt16 button_type) +{ + return ::Button::GetStandardText (button_type); +} + +void Button::SetText( OUString const& rStr ) +{ + if ( !getImpl().mxButton.is() ) + return; + getImpl().mxButton->setLabel( rStr ); +} + +void Button::SetClickHdl( const Link& link ) +{ + if (&getImpl () && getImpl().mxButton.is ()) + getImpl().SetClickHdl( link ); +} + +Link& Button::GetClickHdl () +{ + return getImpl().GetClickHdl (); +} + +bool Button::SetModeImage (Image const& image) +{ + return getImpl().SetModeImage (image.getImpl().mxGraphic); +} + +bool Button::SetModeImage (::Image const& image, BmpColorMode mode) +{ + return GetButton ()->SetModeImage (image, mode); +} + +void Button::SetImageAlign( ImageAlign eAlign ) +{ + getImpl().setProperty( "ImageAlign", uno::Any( (sal_Int16) eAlign ) ); +} + +void Button::Click() +{ +} + +IMPL_GET_IMPL( Button ); +IMPL_CONSTRUCTORS( Button, Control, "button" ); +IMPL_GET_WINDOW (Button); + +class PushButtonImpl : public ButtonImpl + , public ::cppu::WeakImplHelper1< awt::XItemListener > +{ + Link maToggleHdl; +public: + PushButtonImpl( Context *context, const PeerHandle &peer, Window *window ) + : ButtonImpl( context, peer, window ) + { + } + + void SetToggleHdl( const Link& link ) + { + // XButton doesn't have an explicit event for Toggle. Anyway, it is a + // superset of the clicks: all clicks, and explicit toggles + if (!link && !!maToggleHdl) + mxButton->removeActionListener( this ); + else if (!!link && !maToggleHdl) + mxButton->addActionListener( this ); + maToggleHdl = link; + } + void SAL_CALL disposing( lang::EventObject const& e ) + throw (uno::RuntimeException) + { + ButtonImpl::disposing (e); + } + virtual void SAL_CALL actionPerformed( awt::ActionEvent const& e ) + throw (uno::RuntimeException) + { + ButtonImpl::actionPerformed( e ); + fireToggle(); + } + virtual void SAL_CALL itemStateChanged( const awt::ItemEvent& ) + throw (uno::RuntimeException) + { + maToggleHdl.Call( static_cast<Window *>( mpWindow ) ); + } + void fireToggle() + { + maToggleHdl.Call( static_cast<Window *>( mpWindow ) ); + } + +}; + +PushButton::~PushButton () +{ + SetToggleHdl (Link ()); +} + +void PushButton::Check( bool bCheck ) +{ + getImpl().setProperty( "State", uno::Any( (sal_Int16) !!bCheck ) ); + // XButton doesn't have explicit toggle event + getImpl().fireToggle(); +} + +bool PushButton::IsChecked() const +{ + return !!( getImpl().getProperty( "State" ).get< sal_Int16 >() ); +} + +void PushButton::Toggle() +{ + Check( true ); +} + +void PushButton::SetToggleHdl( const Link& link ) +{ + if (&getImpl () && getImpl().mxButton.is ()) + getImpl().SetToggleHdl( link ); +} + +IMPL_GET_IMPL( PushButton ); +IMPL_CONSTRUCTORS( PushButton, Button, "pushbutton" ); +IMPL_GET_WINDOW (PushButton); + +class RadioButtonImpl : public ButtonImpl + , public ::cppu::WeakImplHelper1< awt::XItemListener > +{ + Link maToggleHdl; +public: + uno::Reference< awt::XRadioButton > mxRadioButton; + RadioButtonImpl( Context *context, const PeerHandle &peer, Window *window ) + : ButtonImpl( context, peer, window ) + , mxRadioButton( peer, uno::UNO_QUERY ) + { + } + + void Check( bool bCheck ) + { + if ( !mxRadioButton.is() ) + return; + +#if 1 + // Have setState fire item event for + // RadioGroups::RadioGroup::itemStateChanged () + ::RadioButton *r = static_cast<RadioButton*>(mpWindow)->GetRadioButton (); + bool state = r->IsRadioCheckEnabled (); + r->EnableRadioCheck(); + mxRadioButton->setState( !!bCheck ); + r->EnableRadioCheck (state); +#else + mxRadioButton->setState( !!bCheck ); +#endif + fireToggle(); + } + + bool IsChecked() + { + if ( !mxRadioButton.is() ) + return false; + return mxRadioButton->getState(); + } + + void SetToggleHdl( const Link& link ) + { + if (!link && !!maToggleHdl) + mxRadioButton->removeItemListener( this ); + else if (!!link && !maToggleHdl) + mxRadioButton->addItemListener( this ); + maToggleHdl = link; + } + + inline void fireToggle() + { + maToggleHdl.Call( static_cast<Window *>( mpWindow ) ); + } + + virtual void SetClickHdl( const Link& link ) + { + // Keep RadioGroups::RadioGroup's actionListener at HEAD + // of list. This way, it can handle RadioGroup's button + // states before all other callbacks and make sure the + // client code has the right state. + + // IWBN to add an XRadioButton2 and layout::VCLXRadioButton + // with {get,set}RadioGroup() (and a "radiogroup" property + // even) and handle the grouping here in RadioButtonImpl. + uno::Reference< uno::XInterface > x = static_cast<VCLXRadioButton*> (mpWindow->GetVCLXWindow ())->getFirstActionListener (); + uno::Reference< awt::XActionListener > a = uno::Reference< awt::XActionListener> (x ,uno::UNO_QUERY ); + mxButton->removeActionListener (a); + ButtonImpl::SetClickHdl (link); + mxButton->addActionListener (a); + } + + void SAL_CALL disposing( lang::EventObject const& e ) + throw (uno::RuntimeException) + { + ButtonImpl::disposing (e); + } + + virtual void SAL_CALL itemStateChanged( const awt::ItemEvent& ) + throw (uno::RuntimeException) + { + maToggleHdl.Call( static_cast<Window *>( mpWindow ) ); + } +}; + +RadioButton::~RadioButton () +{ + SetToggleHdl (Link ()); +} + +void RadioButton::Check( bool bCheck ) +{ + getImpl().Check( bCheck ); +} + +bool RadioButton::IsChecked() const +{ + return getImpl().IsChecked(); +} + +void RadioButton::SetToggleHdl( const Link& link ) +{ + if (&getImpl () && getImpl().mxRadioButton.is ()) + getImpl().SetToggleHdl( link ); +} + +IMPL_GET_IMPL( RadioButton ); +IMPL_GET_WINDOW( RadioButton ); +IMPL_GET_VCLXWINDOW( RadioButton ); +IMPL_CONSTRUCTORS( RadioButton, Button, "radiobutton" ); + +class CheckBoxImpl : public ButtonImpl + , public ::cppu::WeakImplHelper1< awt::XItemListener > +{ + Link maToggleHdl; + public: + uno::Reference< awt::XCheckBox > mxCheckBox; + CheckBoxImpl( Context *context, const PeerHandle &peer, Window *window ) + : ButtonImpl( context, peer, window ) + , mxCheckBox( peer, uno::UNO_QUERY ) + { + } + + void SetToggleHdl( const Link& link ) + { + if (!link && !!maToggleHdl) + mxCheckBox->removeItemListener( this ); + else if (!!link && !maToggleHdl) + mxCheckBox->addItemListener( this ); + maToggleHdl = link; + } + void SAL_CALL disposing( lang::EventObject const& e ) + throw (uno::RuntimeException) + { + ButtonImpl::disposing (e); + } + virtual void SAL_CALL itemStateChanged( const awt::ItemEvent& ) + throw (uno::RuntimeException) + { + maToggleHdl.Call( static_cast<Window *>( mpWindow ) ); + } +}; + +CheckBox::~CheckBox () +{ + SetToggleHdl (Link ()); +} + +void CheckBox::Check( bool bCheck ) +{ + if ( !getImpl().mxCheckBox.is() ) + return; + getImpl().mxCheckBox->setState( !!bCheck ); +} + +bool CheckBox::IsChecked() const +{ + if ( !getImpl().mxCheckBox.is() ) + return false; + return getImpl().mxCheckBox->getState() != 0; +} + +void CheckBox::SetToggleHdl( const Link& link ) +{ + if (&getImpl () && getImpl().mxCheckBox.is ()) + getImpl().SetToggleHdl( link ); +} + +IMPL_GET_IMPL( CheckBox ); +IMPL_CONSTRUCTORS( CheckBox, Button, "checkbox" ); + +#define BUTTON_IMPL(t, parent, response) \ + class t##Impl : public parent##Impl \ + { \ + public: \ + t##Impl( Context *context, PeerHandle const& peer, Window *window ) \ + : parent##Impl( context, peer, window ) \ + { \ + } \ + void Click() \ + { \ + if (Dialog *d = static_cast<Dialog *> (mpCtx)) \ + d->EndDialog( response ); \ + } \ + } + +/* Common button types currently unavailable in OOo: */ +/* mpReset */ +/* mpApply */ +/* mpAction */ +#define RET_RESET 6 +#define RET_APPLY 7 +#define BUTTONID_RESET RET_RESET +#define BUTTONID_APPLY RET_APPLY + +BUTTON_IMPL( OKButton, PushButton, BUTTONID_OK ); +BUTTON_IMPL( CancelButton, PushButton, BUTTONID_CANCEL ); +BUTTON_IMPL( YesButton, PushButton, BUTTONID_YES ); +BUTTON_IMPL( NoButton, PushButton, BUTTONID_NO ); +BUTTON_IMPL( RetryButton, PushButton, BUTTONID_RETRY ); +BUTTON_IMPL( IgnoreButton, PushButton, BUTTONID_IGNORE ); +BUTTON_IMPL( ResetButton, PushButton, BUTTONID_RESET ); +BUTTON_IMPL( ApplyButton, PushButton, BUTTONID_APPLY ); /* Deprecated? */ +BUTTON_IMPL( HelpButton, PushButton, BUTTONID_HELP ); + +IMPL_CONSTRUCTORS( OKButton, PushButton, "okbutton" ); +IMPL_CONSTRUCTORS( CancelButton, PushButton, "cancelbutton" ); +IMPL_CONSTRUCTORS( YesButton, PushButton, "yesbutton" ); +IMPL_CONSTRUCTORS( NoButton, PushButton, "nobutton" ); +IMPL_CONSTRUCTORS( RetryButton, PushButton, "retrybutton" ); +IMPL_CONSTRUCTORS( IgnoreButton, PushButton, "ignorebutton" ); +IMPL_CONSTRUCTORS( ResetButton, PushButton, "resetbutton" ); +IMPL_CONSTRUCTORS( ApplyButton, PushButton, "applybutton" ); /* Deprecated? */ +IMPL_CONSTRUCTORS( HelpButton, PushButton, "helpbutton" ); + +IMPL_IMPL (ImageButton, PushButton) + + +IMPL_CONSTRUCTORS( ImageButton, PushButton, "imagebutton" ); + +class AdvancedButtonImpl : public PushButtonImpl +{ +protected: + bool bAdvancedMode; + std::list< Window*> maAdvanced; + std::list< Window*> maSimple; + +public: + rtl::OUString mAdvancedLabel; + rtl::OUString mSimpleLabel; + +protected: + Window* Remove( std::list< Window*> lst, Window* w ) + { + for ( std::list< Window*>::iterator it = maAdvanced.begin(); + it != maAdvanced.end(); it++ ) + if ( *it == w ) + { + lst.erase( it ); + return *it; + } + return 0; + } + +public: + AdvancedButtonImpl( Context *context, PeerHandle const& peer, Window *window ) + : PushButtonImpl( context, peer, window ) + , bAdvancedMode( false ) + // TODO: i18n + // Button::GetStandardText( BUTTON_ADVANCED ); + // Button::GetStandardText( BUTTON_SIMPLE ); + , mAdvancedLabel( rtl::OUString::createFromAscii( "Advanced..." ) ) + , mSimpleLabel( rtl::OUString::createFromAscii( "Simple..." ) ) + { + } + void Click() + { + bAdvancedMode = !bAdvancedMode; + if ( bAdvancedMode ) + advancedMode(); + else + simpleMode(); + } + void setAlign () + { + ::PushButton *b = static_cast<PushButton*> (mpWindow)->GetPushButton (); + b->SetSymbolAlign (SYMBOLALIGN_RIGHT); + b->SetSmallSymbol (); + //mpWindow->SetStyle (mpWindow->GetStyle() | WB_CENTER); + } + void advancedMode() + { + ::PushButton *b = static_cast<PushButton*> (mpWindow)->GetPushButton (); + b->SetSymbol (SYMBOL_PAGEUP); + setAlign (); + if (mSimpleLabel.getLength ()) + b->SetText (mSimpleLabel); + for ( std::list< Window*>::iterator it = maAdvanced.begin(); + it != maAdvanced.end(); it++ ) + ( *it )->Show(); + for ( std::list< Window*>::iterator it = maSimple.begin(); + it != maSimple.end(); it++ ) + ( *it )->Hide(); + + redraw (); + } + void simpleMode() + { + //mxButton->setLabel( mSimpleLabel ); + ::PushButton *b = static_cast<PushButton*> (mpWindow)->GetPushButton (); + b->SetSymbol (SYMBOL_PAGEDOWN); + if (mAdvancedLabel.getLength ()) + b->SetText (mAdvancedLabel); + setAlign (); + for ( std::list< Window*>::iterator it = maAdvanced.begin(); + it != maAdvanced.end(); it++ ) + ( *it )->Hide(); + for ( std::list< Window*>::iterator it = maSimple.begin(); + it != maSimple.end(); it++ ) + ( *it )->Show(); + + redraw (true); + } + void AddAdvanced( Window* w ) + { + maAdvanced.push_back( w ); + if ( !bAdvancedMode ) + w->Hide(); + } + void AddSimple( Window* w ) + { + maSimple.push_back( w ); + if ( bAdvancedMode ) + w->Hide(); + } + void RemoveAdvanced( Window* w ) + { + Remove( maAdvanced, w ); + } + void RemoveSimple( Window* w ) + { + Remove( maSimple, w ); + } +}; + +void AdvancedButton::AddAdvanced( Window* w ) +{ + getImpl().AddAdvanced( w ); +} + +void AdvancedButton::AddSimple( Window* w ) +{ + getImpl().AddSimple( w ); +} + +void AdvancedButton::RemoveAdvanced( Window* w ) +{ + getImpl().RemoveAdvanced( w ); +} + +void AdvancedButton::RemoveSimple( Window* w ) +{ + getImpl().RemoveSimple( w ); +} + +void AdvancedButton::SetAdvancedText (rtl::OUString const& text) +{ + if (text.getLength ()) + getImpl ().mAdvancedLabel = text; +} + +void AdvancedButton::SetSimpleText (rtl::OUString const& text) +{ + if (text.getLength ()) + getImpl ().mSimpleLabel = text; +} + +rtl::OUString AdvancedButton::GetAdvancedText () const +{ + return getImpl ().mAdvancedLabel; +} + +rtl::OUString AdvancedButton::GetSimpleText () const +{ + return getImpl ().mSimpleLabel; +} + +void AdvancedButton::SetDelta (int) +{ +} + +IMPL_CONSTRUCTORS_BODY( AdvancedButton, PushButton, "advancedbutton", getImpl().simpleMode () ); +IMPL_GET_IMPL( AdvancedButton ); + + +class MoreButtonImpl : public AdvancedButtonImpl +{ +public: + MoreButtonImpl( Context *context, PeerHandle const& peer, Window *window ) + : AdvancedButtonImpl( context, peer, window) + { + mSimpleLabel = Button::GetStandardText( BUTTON_MORE ); + mAdvancedLabel = Button::GetStandardText( BUTTON_LESS ); + } + void AddWindow( Window* w ) { AddAdvanced( w ); } + void RemoveWindow( Window* w ) { RemoveAdvanced( w ); } +}; + +// TODO +//BUTTON_IMPL( MoreButton, PushButton, 0 ); +IMPL_CONSTRUCTORS_BODY( MoreButton, AdvancedButton, "morebutton", getImpl().simpleMode () ); +IMPL_GET_IMPL( MoreButton ); + +void MoreButton::AddWindow( Window* w ) +{ + getImpl().AddWindow( w ); +} + +void MoreButton::RemoveWindow( Window* w ) +{ + getImpl().RemoveWindow( w ); +} + +void MoreButton::SetMoreText (rtl::OUString const& text) +{ + SetAdvancedText (text); +} + +void MoreButton::SetLessText (rtl::OUString const& text) +{ + SetSimpleText (text); +} + +rtl::OUString MoreButton::GetMoreText () const +{ + return GetAdvancedText (); +} + +rtl::OUString MoreButton::GetLessText () const +{ + return GetSimpleText (); +} + +} // namespace layout diff --git a/toolkit/source/vclcompat/wcontainer.cxx b/toolkit/source/layout/vcl/wcontainer.cxx index 5fed9c34cc24..e4f5a92f69e0 100644 --- a/toolkit/source/vclcompat/wcontainer.cxx +++ b/toolkit/source/layout/vcl/wcontainer.cxx @@ -6,9 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: wcontainer.cxx,v $ + * $RCSfile$ * - * $Revision: 1.3 $ + * $Revision$ * * This file is part of OpenOffice.org. * @@ -31,12 +31,10 @@ #include "wrapper.hxx" -#include "layout/layoutcore.hxx" #include <com/sun/star/awt/XLayoutRoot.hpp> #include <com/sun/star/awt/XLayoutContainer.hpp> - #include <comphelper/processfactory.hxx> - +#include <layout/core/helper.hxx> #include <tools/debug.hxx> using namespace ::com::sun::star; @@ -44,8 +42,8 @@ using namespace ::com::sun::star; namespace layout { -Container::Container( Context const* pCtx, char const* pId ) - : mxContainer( pCtx->GetPeerHandle( pId ), uno::UNO_QUERY ) +Container::Container( Context const* context, char const* pId ) + : mxContainer( context->GetPeerHandle( pId ), uno::UNO_QUERY ) { if ( !mxContainer.is() ) { @@ -55,7 +53,7 @@ Container::Container( Context const* pCtx, char const* pId ) Container::Container( rtl::OUString const& rName, sal_Int32 nBorder ) { - mxContainer = layoutimpl::createContainer( rName ); + mxContainer = layoutimpl::WidgetFactory::createContainer( rName ); uno::Reference< beans::XPropertySet > xProps( mxContainer, uno::UNO_QUERY_THROW ); xProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Border" ) ), @@ -102,8 +100,8 @@ void Container::Clear() { css::uno::Sequence< css::uno::Reference < css::awt::XLayoutConstrains > > children; children = mxContainer->getChildren(); - for ( int i = 0; i < children.getLength(); i++ ) - mxContainer->removeChild( children[ i ] ); + for (int i = 0; i < children.getLength(); i++) + mxContainer->removeChild( children[i] ); } void Container::ShowAll( bool bShow ) @@ -117,7 +115,7 @@ void Container::ShowAll( bool bShow ) { uno::Sequence< uno::Reference < awt::XLayoutConstrains > > aChildren; aChildren = xCont->getChildren(); - for ( int i = 0; i < aChildren.getLength(); i++ ) + for (int i = 0; i < aChildren.getLength(); i++) { uno::Reference < awt::XLayoutConstrains > xChild( aChildren[ i ] ); @@ -154,12 +152,12 @@ Table::Table( sal_Int32 nBorder, sal_Int32 nColumns ) uno::Any( nColumns ) ); } -void Table::Add( Window *pWindow, bool bXExpand, bool bYExpand, +void Table::Add( Window *window, bool bXExpand, bool bYExpand, sal_Int32 nXSpan, sal_Int32 nYSpan ) { - if ( !pWindow ) + if ( !window ) return; - WindowImpl &rImpl = pWindow->getImpl(); + WindowImpl &rImpl = window->getImpl(); uno::Reference< awt::XLayoutConstrains > xChild( rImpl.mxWindow, uno::UNO_QUERY ); mxContainer->addChild( xChild ); @@ -200,11 +198,11 @@ Box::Box( rtl::OUString const& rName, sal_Int32 nBorder, bool bHomogeneous ) uno::Any( bHomogeneous ) ); } -void Box::Add( Window *pWindow, bool bExpand, bool bFill, sal_Int32 nPadding) +void Box::Add( Window *window, bool bExpand, bool bFill, sal_Int32 nPadding) { - if ( !pWindow ) + if ( !window ) return; - WindowImpl &rImpl = pWindow->getImpl(); + WindowImpl &rImpl = window->getImpl(); uno::Reference< awt::XLayoutConstrains > xChild( rImpl.mxWindow, uno::UNO_QUERY ); @@ -237,13 +235,13 @@ void Box::setProps( uno::Reference< awt::XLayoutConstrains > xChild, uno::Any( nPadding ) ); } -Table::Table( Context const* pCtx, char const* pId ) - : Container( pCtx, pId ) +Table::Table( Context const* context, char const* pId ) + : Container( context, pId ) { } -Box::Box( Context const* pCtx, char const* pId ) - : Container( pCtx, pId ) +Box::Box( Context const* context, char const* pId ) + : Container( context, pId ) { } @@ -253,8 +251,8 @@ HBox::HBox( sal_Int32 nBorder, bool bHomogeneous ) { } -HBox::HBox( Context const* pCtx, char const* pId ) - : Box( pCtx, pId ) +HBox::HBox( Context const* context, char const* pId ) + : Box( context, pId ) { } @@ -264,8 +262,8 @@ VBox::VBox( sal_Int32 nBorder, bool bHomogeneous ) { } -VBox::VBox( Context const* pCtx, char const* pId ) - : Box( pCtx, pId ) +VBox::VBox( Context const* context, char const* pId ) + : Box( context, pId ) { } diff --git a/toolkit/source/layout/vcl/wfield.cxx b/toolkit/source/layout/vcl/wfield.cxx new file mode 100644 index 000000000000..281d909530b0 --- /dev/null +++ b/toolkit/source/layout/vcl/wfield.cxx @@ -0,0 +1,796 @@ +/************************************************************************* + * + * 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$ + * + * $Revision$ + * + * 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. + * + ************************************************************************/ + +#include "wrapper.hxx" + +#include <comphelper/processfactory.hxx> +#include <com/sun/star/awt/XMetricField.hpp> +#include <com/sun/star/awt/XNumericField.hpp> +#include <com/sun/star/awt/XTextComponent.hpp> +#include <com/sun/star/awt/XListBox.hpp> +#include <com/sun/star/awt/XComboBox.hpp> +#include <cppuhelper/implbase1.hxx> +#include <com/sun/star/awt/XActionListener.hpp> +#include <com/sun/star/awt/XItemListener.hpp> +#include <com/sun/star/awt/XMouseListener.hpp> +#include <vcl/combobox.hxx> +#include <vcl/lstbox.hxx> + +#include <toolkit/awt/vclxwindows.hxx> + +using namespace ::com::sun::star; +using rtl::OUString; + +#define LAYOUT_API_CALLS_HANDLER 0 + +namespace layout +{ + +class EditImpl : public ControlImpl + , public ::cppu::WeakImplHelper1< awt::XTextListener > +{ +public: + Link maModifyHdl; + + uno::Reference< awt::XTextComponent > mxEdit; + EditImpl( Context *context, const PeerHandle &peer, Window *window ) + : ControlImpl( context, peer, window ) + , mxEdit( peer, uno::UNO_QUERY ) + { + } + + ~EditImpl (); + + virtual void SAL_CALL disposing( lang::EventObject const& e ) + throw (uno::RuntimeException); + + virtual void SetModifyHdl( Link const& link ); + + void SAL_CALL textChanged( const awt::TextEvent& /* rEvent */ ) + throw (uno::RuntimeException) + { + maModifyHdl.Call( mpWindow ); + } +}; + +EditImpl::~EditImpl () +{ +} + +void SAL_CALL EditImpl::disposing( lang::EventObject const& e ) + throw (uno::RuntimeException) +{ + ControlImpl::disposing (e); + mxEdit.clear (); +} + +void EditImpl::SetModifyHdl( Link const& link ) +{ + if (!link && !!maModifyHdl) + mxEdit->removeTextListener( this ); + else if (!!link && !maModifyHdl) + mxEdit->addTextListener( this ); + maModifyHdl = link; +} + +Edit::~Edit () +{ + SetModifyHdl (Link ()); +} + +void Edit::SetSelection( Selection const& rSelection ) +{ +#if LAYOUT_API_CALLS_HANDLER + if ( !getImpl().mxEdit.is() ) + getImpl().mxEdit->setSelection( awt::Selection( rSelection.Min(), rSelection.Max() ) ); +#else /* !LAYOUT_API_CALLS_HANDLER */ + GetEdit ()->SetSelection (rSelection); +#endif /* !LAYOUT_API_CALLS_HANDLER */ +} + +void Edit::SetText( OUString const& rStr ) +{ +#if LAYOUT_API_CALLS_HANDLER + if ( getImpl().mxEdit.is() ) + /// this calls handlers; endless loop in numfmt.cxx + getImpl().mxEdit->setText( rStr ); +#else /* !LAYOUT_API_CALLS_HANDLER */ + GetEdit ()->SetText (rStr); +#endif /* !LAYOUT_API_CALLS_HANDLER */ +} + +String Edit::GetText() const +{ + if ( !getImpl().mxEdit.is() ) + return getImpl().mxEdit->getText(); + return OUString(); +} + +void Edit::SetModifyHdl( const Link& link ) +{ + if (&getImpl () && getImpl().mxEdit.is ()) + getImpl().SetModifyHdl( link ); +} + +IMPL_CONSTRUCTORS( Edit, Control, "edit" ); +IMPL_GET_IMPL( Edit ); +IMPL_GET_WINDOW (Edit); + +class MultiLineEditImpl : public EditImpl +{ +public: + MultiLineEditImpl( Context *context, const PeerHandle &peer, Window *window ) + : EditImpl( context, peer, window ) + { + } +}; + +IMPL_CONSTRUCTORS( MultiLineEdit, Edit, "multilineedit" ); +IMPL_GET_IMPL( MultiLineEdit ); + +class SpinFieldImpl : public EditImpl +{ + public: + SpinFieldImpl( Context *context, const PeerHandle &peer, Window *window ) + : EditImpl( context, peer, window ) + { + } +}; + +IMPL_CONSTRUCTORS( SpinField, Edit, "spinfield" ); + +class NumericFieldImpl : public SpinFieldImpl +{ + public: + NumericFieldImpl( Context *context, const PeerHandle &peer, Window *window ) + : SpinFieldImpl( context, peer, window ) + { + } +}; + +class MetricFieldImpl : public SpinFieldImpl +{ + public: + MetricFieldImpl( Context *context, const PeerHandle &peer, Window *window ) + : SpinFieldImpl( context, peer, window ) + { + } +}; + +IMPL_GET_IMPL( SpinField ); +IMPL_GET_IMPL( NumericField ); +IMPL_GET_IMPL( MetricField ); + +class FormatterBaseImpl +{ + protected: + PeerHandle mpeer; + public: + explicit FormatterBaseImpl( const PeerHandle &peer ) + : mpeer( peer ) + { + }; +}; + +FormatterBase::FormatterBase( FormatterBaseImpl *pFormatImpl ) + : mpFormatImpl( pFormatImpl ) +{ +} + +class NumericFormatterImpl : public FormatterBaseImpl +{ + public: + uno::Reference< awt::XNumericField > mxField; + explicit NumericFormatterImpl( const PeerHandle &peer ) + : FormatterBaseImpl( peer ) + , mxField( peer, uno::UNO_QUERY ) + { + } + + // FIXME: burn that CPU ! cut/paste from vclxwindows.cxx + double valueToDouble( sal_Int64 nValue ) + { + sal_Int16 nDigits = mxField->getDecimalDigits(); + double n = (double)nValue; + for ( sal_uInt16 d = 0; d < nDigits; d++ ) + n /= 10; + return n; + } // FIXME: burn that CPU ! cut/paste from vclxwindows.cxx + sal_Int64 doubleToValue( double nValue ) + { + sal_Int16 nDigits = mxField->getDecimalDigits(); + double n = nValue; + for ( sal_uInt16 d = 0; d < nDigits; d++ ) + n *= 10; + return (sal_Int64) n; + } +}; + +class MetricFormatterImpl : public FormatterBaseImpl +{ + public: + uno::Reference< awt::XMetricField > mxField; + explicit MetricFormatterImpl( const PeerHandle &peer ) + : FormatterBaseImpl( peer ) + , mxField( peer, uno::UNO_QUERY ) + { + } +}; + +NumericFormatter::NumericFormatter( FormatterBaseImpl *pImpl ) + : FormatterBase( pImpl ) +{ +} + +NumericFormatterImpl& NumericFormatter::getFormatImpl() const +{ + return *( static_cast<NumericFormatterImpl *>( mpFormatImpl ) ); +} + +#define SET_IMPL(vclmethod, idlmethod) \ + void NumericFormatter::vclmethod( sal_Int64 nValue ) \ + { \ + if ( !getFormatImpl().mxField.is() ) \ + return; \ + getFormatImpl().mxField->idlmethod( getFormatImpl().valueToDouble( nValue ) ); \ + } + +SET_IMPL( SetMin, setMin ) +SET_IMPL( SetMax, setMax ) +SET_IMPL( SetLast, setLast ) +SET_IMPL( SetFirst, setFirst ) +SET_IMPL( SetValue, setValue ) +SET_IMPL( SetSpinSize, setSpinSize ) + +sal_Int64 NumericFormatter::GetValue() const +{ + if ( !getFormatImpl().mxField.is() ) + return 0; + return getFormatImpl().doubleToValue( getFormatImpl().mxField->getValue() ); +} + +#undef SET_IMPL + +IMPL_CONSTRUCTORS_2( NumericField, SpinField, NumericFormatter, "numericfield" ); + +MetricFormatter::MetricFormatter( FormatterBaseImpl *pImpl ) + : FormatterBase( pImpl ) +{ +} +MetricFormatterImpl& MetricFormatter::getFormatImpl() const +{ return *( static_cast<MetricFormatterImpl *>( mpFormatImpl ) ); } + +#define MetricUnitVclToUno(a) ((sal_uInt16)(a)) + +#define SET_IMPL(vclmethod, idlmethod) \ + void MetricFormatter::vclmethod( sal_Int64 nValue, FieldUnit nUnit ) \ + { \ + if ( !getFormatImpl().mxField.is() ) \ + return; \ + getFormatImpl().mxField->idlmethod( nValue, MetricUnitVclToUno( nUnit ) ); \ + } + +SET_IMPL( SetMin, setMin ) +SET_IMPL( SetMax, setMax ) +SET_IMPL( SetLast, setLast ) +SET_IMPL( SetFirst, setFirst ) +SET_IMPL( SetValue, setValue ) + +#undef SET_IMPL + +void MetricFormatter::SetSpinSize( sal_Int64 nValue ) +{ + if ( !getFormatImpl().mxField.is() ) + return; + getFormatImpl().mxField->setSpinSize( nValue ); +} + +sal_Int64 MetricFormatter::GetValue( FieldUnit nUnit ) const +{ + if ( !getFormatImpl().mxField.is() ) + return 0; + return getFormatImpl().mxField->getValue( MetricUnitVclToUno( nUnit ) ); +} + +IMPL_CONSTRUCTORS_2( MetricField, SpinField, MetricFormatter, "metricfield" ); + +class ComboBoxImpl : public EditImpl + , public ::cppu::WeakImplHelper1< awt::XActionListener > + , public ::cppu::WeakImplHelper1< awt::XItemListener > +{ +public: + uno::Reference< awt::XComboBox > mxComboBox; + + Link maClickHdl; + Link maSelectHdl; + + Window *parent; + + ComboBoxImpl( Context *context, const PeerHandle &peer, Window *window ) + : EditImpl( context, peer, window ) + , mxComboBox( peer, uno::UNO_QUERY ) + { + } + + ~ComboBoxImpl (); + + sal_uInt16 InsertEntry( OUString const& rStr, sal_uInt16 nPos ) + { + if ( nPos == COMBOBOX_APPEND ) + nPos = GetEntryCount(); + mxComboBox->addItem( rtl::OUString( rStr ), nPos ); + return nPos; + } + + void RemoveEntry( sal_uInt16 nPos ) + { + mxComboBox->removeItems( nPos, 1 ); + } + + sal_uInt16 GetEntryPos( String const& rStr ) const + { + uno::Sequence< rtl::OUString> aItems( mxComboBox->getItems() ); + rtl::OUString rKey( rStr ); + sal_uInt16 n = sal::static_int_cast< sal_uInt16 >(aItems.getLength()); + for (sal_uInt16 i = 0; i < n; i++) + { + if ( aItems[ i ] == rKey ) + return i; + } + return COMBOBOX_ENTRY_NOTFOUND; + } + + OUString GetEntry( sal_uInt16 nPos ) const + { + return OUString( mxComboBox->getItem( nPos ) ); + } + + sal_uInt16 GetEntryCount() const + { + return mxComboBox->getItemCount(); + } + + void SetClickHdl( Link const& link ) + { + if (!link && !!maClickHdl) + mxComboBox->removeActionListener( this ); + else if (!!link && !maClickHdl) + mxComboBox->addActionListener( this ); + maClickHdl = link; + } + + void SetSelectHdl( Link const& link ) + { + if (!link && !!maSelectHdl) + mxComboBox->removeItemListener( this ); + else if (!!link && !maSelectHdl) + mxComboBox->addItemListener( this ); + maSelectHdl = link; + } + + void SAL_CALL disposing( lang::EventObject const& e ) + throw (uno::RuntimeException); + + void SAL_CALL actionPerformed (const awt::ActionEvent&) + throw (uno::RuntimeException) + { + ComboBox* pComboBox = static_cast<ComboBox*>( mpWindow ); + if ( !pComboBox ) + return; + maClickHdl.Call( pComboBox ); + } + + void SAL_CALL itemStateChanged( awt::ItemEvent const&) + throw (uno::RuntimeException) + { + ComboBox* pComboBox = static_cast<ComboBox*>( mpWindow ); + if ( !pComboBox ) + return; + maSelectHdl.Call( pComboBox ); + } +}; + +ComboBox::~ComboBox () +{ +#ifndef __SUNPRO_CC + OSL_TRACE ("%s: deleting ComboBox for window: %p", __FUNCTION__, GetWindow ()); +#endif +} + +ComboBoxImpl::~ComboBoxImpl () +{ +#ifndef __SUNPRO_CC + OSL_TRACE ("%s: deleting ComboBoxImpl for window: %p", __FUNCTION__, mpWindow ? mpWindow->GetWindow () : 0); + OSL_TRACE ("%s: deleting ComboBoxImpl for listener: %p", __FUNCTION__, static_cast<XFocusListener*> (this)); +#endif +} + +void ComboBoxImpl::disposing( lang::EventObject const& e ) + throw (uno::RuntimeException) +{ + EditImpl::disposing (e); + mxComboBox.clear (); +} + +sal_uInt16 ComboBox::InsertEntry( String const& rStr, sal_uInt16 nPos ) +{ + return getImpl().InsertEntry( rStr, nPos ); +} + +void ComboBox::RemoveEntry( String const& rStr ) +{ + getImpl().RemoveEntry( GetEntryPos( rStr ) ); +} + +void ComboBox::RemoveEntry( sal_uInt16 nPos ) +{ + getImpl().RemoveEntry( nPos ); +} + +void ComboBox::Clear() +{ + uno::Sequence< rtl::OUString> aNoItems; + getImpl().setProperty( "StringItemList", uno::Any( aNoItems ) ); +} + +sal_uInt16 ComboBox::GetEntryPos( String const& rStr ) const +{ + return getImpl().GetEntryPos( rStr ); +} + +String ComboBox::GetEntry( sal_uInt16 nPos ) const +{ + rtl::OUString rItem = getImpl().mxComboBox->getItem( nPos ); + return OUString( rItem ); +} + +sal_uInt16 ComboBox::GetEntryCount() const +{ + return getImpl().GetEntryCount(); +} + +void ComboBox::SetClickHdl( const Link& link ) +{ + if (&getImpl () && getImpl().mxComboBox.is ()) + getImpl().SetClickHdl( link ); +} + +void ComboBox::SetSelectHdl( const Link& link ) +{ + if (&getImpl () && getImpl().mxComboBox.is ()) + getImpl().SetSelectHdl( link ); +} + +void ComboBox::EnableAutocomplete (bool enable, bool matchCase) +{ + GetComboBox ()->EnableAutocomplete (enable, matchCase); +} + +IMPL_CONSTRUCTORS_BODY( ComboBox, Edit, "combobox", getImpl().parent = parent; ); +IMPL_GET_WINDOW (ComboBox); +/// IMPL_GET_IMPL( ComboBox ); + +static ComboBoxImpl* null_combobox_impl = 0; + +ComboBoxImpl &ComboBox::getImpl () const +{ + if (ComboBoxImpl* c = static_cast<ComboBoxImpl *>(mpImpl)) + return *c; + return *null_combobox_impl; +} + +class ListBoxImpl : public ControlImpl + , public ::cppu::WeakImplHelper1< awt::XActionListener > + , public ::cppu::WeakImplHelper1< awt::XItemListener > + , public ::cppu::WeakImplHelper1< awt::XMouseListener > +{ + Link maClickHdl; + Link maSelectHdl; + Link maDoubleClickHdl; + +public: + uno::Reference< awt::XListBox > mxListBox; + ListBoxImpl( Context *context, const PeerHandle &peer, Window *window ) + : ControlImpl( context, peer, window ) + , mxListBox( peer, uno::UNO_QUERY ) + { + SelectEntryPos (0, true); + } + + sal_uInt16 InsertEntry (String const& rStr, sal_uInt16 nPos) + { + if ( nPos == LISTBOX_APPEND ) + nPos = mxListBox->getItemCount(); + mxListBox->addItem( rtl::OUString( rStr ), nPos ); + return nPos; + } + + void RemoveEntry( sal_uInt16 nPos ) + { + mxListBox->removeItems( nPos, 1 ); + } + + sal_uInt16 RemoveEntry( String const& rStr, sal_uInt16 nPos) + { + if ( nPos == LISTBOX_APPEND ) + nPos = mxListBox->getItemCount(); + mxListBox->addItem( rtl::OUString( rStr ), nPos ); + return nPos; + } + + sal_uInt16 GetEntryPos( String const& rStr ) const + { + uno::Sequence< rtl::OUString> aItems( mxListBox->getItems() ); + rtl::OUString rKey( rStr ); + sal_uInt16 n = sal::static_int_cast< sal_uInt16 >(aItems.getLength()); + for (sal_uInt16 i = 0; i < n; i++) + { + if ( aItems[ i ] == rKey ) + return i; + } + return LISTBOX_ENTRY_NOTFOUND; + } + + OUString GetEntry( sal_uInt16 nPos ) const + { + return mxListBox->getItem( nPos ); + } + + sal_uInt16 GetEntryCount() const + { + return mxListBox->getItemCount(); + } + + void SelectEntryPos( sal_uInt16 nPos, bool bSelect ) + { + mxListBox->selectItemPos( nPos, bSelect ); + } + + sal_uInt16 GetSelectEntryCount() const + { + return sal::static_int_cast< sal_uInt16 >( mxListBox->getSelectedItems().getLength() ); + } + + sal_uInt16 GetSelectEntryPos( sal_uInt16 nSelIndex ) const + { + sal_uInt16 nSelected = 0; + if ( mxListBox->isMutipleMode() ) + { + uno::Sequence< short > aItems( mxListBox->getSelectedItemsPos() ); + if ( nSelIndex < aItems.getLength() ) + nSelected = aItems[ nSelIndex ]; + } + else + nSelected = mxListBox->getSelectedItemPos(); + return nSelected; + } + + virtual void SAL_CALL disposing( lang::EventObject const& e ) + throw (uno::RuntimeException) + { + ControlImpl::disposing (e); + mxListBox.clear (); + } + + Link& GetClickHdl () + { + return maClickHdl; + } + + void SetClickHdl( Link const& link ) + { + if (!link && !!maClickHdl) + mxListBox->removeActionListener( this ); + else if (!!link && !maClickHdl) + mxListBox->addActionListener( this ); + maClickHdl = link; + } + + void SAL_CALL actionPerformed( const awt::ActionEvent& /* rEvent */ ) + throw (uno::RuntimeException) + { + maClickHdl.Call( mpWindow ); + } + + Link& GetSelectHdl () + { + return maSelectHdl; + } + + void SetSelectHdl( Link const& link ) + { + if (!link && !!maSelectHdl) + mxListBox->removeItemListener( this ); + else if (!!link && !maSelectHdl) + mxListBox->addItemListener( this ); + maSelectHdl = link; + } + + void SAL_CALL itemStateChanged (awt::ItemEvent const&) + throw (uno::RuntimeException) + { + maSelectHdl.Call (static_cast <ListBox*> (mpWindow)); + } + + Link& GetDoubleClickHdl () + { + return maDoubleClickHdl; + } + + void SetDoubleClickHdl (Link const& link) + { + if (!link && !!maDoubleClickHdl) + mxWindow->removeMouseListener (this); + else if (!!link && !maSelectHdl) + mxWindow->addMouseListener (this); + maDoubleClickHdl = link; + } + + void SAL_CALL mousePressed (awt::MouseEvent const&) throw (uno::RuntimeException) + { + } + void SAL_CALL mouseReleased (awt::MouseEvent const& e) throw (uno::RuntimeException) + { + if (e.ClickCount == 2) + maDoubleClickHdl.Call (mpWindow); + } + void SAL_CALL mouseEntered (awt::MouseEvent const&) throw (uno::RuntimeException) + { + } + void SAL_CALL mouseExited (awt::MouseEvent const&) throw (uno::RuntimeException) + { + } +}; + +ListBox::~ListBox () +{ +} + +sal_uInt16 ListBox::InsertEntry (String const& rStr, sal_uInt16 nPos) +{ + return getImpl().InsertEntry(rStr, nPos); +} + +void ListBox::RemoveEntry( sal_uInt16 nPos ) +{ + return getImpl().RemoveEntry( nPos ); +} + +void ListBox::RemoveEntry( String const& rStr ) +{ + return getImpl().RemoveEntry( GetEntryPos( rStr ) ); +} + +void ListBox::Clear() +{ + uno::Sequence< rtl::OUString> aNoItems; + getImpl().setProperty( "StringItemList", uno::Any( aNoItems ) ); +} + +sal_uInt16 ListBox::GetEntryPos( String const& rStr ) const +{ + return getImpl().GetEntryPos( rStr ); +} + +String ListBox::GetEntry( sal_uInt16 nPos ) const +{ + return getImpl().GetEntry( nPos ); +} + +sal_uInt16 ListBox::GetEntryCount() const +{ + return getImpl().GetEntryCount(); +} + +void ListBox::SelectEntryPos( sal_uInt16 nPos, bool bSelect ) +{ +#if LAYOUT_API_CALLS_HANDLER + getImpl().SelectEntryPos( nPos, bSelect ); +#else /* !LAYOUT_API_CALLS_HANDLER */ + GetListBox ()->SelectEntryPos (nPos, bSelect); +#endif /* !LAYOUT_API_CALLS_HANDLER */ +} + +void ListBox::SelectEntry( String const& rStr, bool bSelect ) +{ + SelectEntryPos( GetEntryPos( rStr ), bSelect ); +} + +sal_uInt16 ListBox::GetSelectEntryCount() const +{ + return getImpl().GetSelectEntryCount(); +} + +sal_uInt16 ListBox::GetSelectEntryPos( sal_uInt16 nSelIndex ) const +{ + return getImpl().GetSelectEntryPos( nSelIndex ); +} + +String ListBox::GetSelectEntry( sal_uInt16 nSelIndex ) const +{ + return GetEntry( GetSelectEntryPos( nSelIndex ) ); +} + +Link& ListBox::GetSelectHdl () +{ + return getImpl ().GetSelectHdl (); +} + +void ListBox::SetSelectHdl( Link const& link ) +{ + getImpl().SetSelectHdl( link ); +} + +Link& ListBox::GetClickHdl () +{ + return getImpl ().GetSelectHdl (); +} + +void ListBox::SetClickHdl( Link const& link ) +{ + if (&getImpl () && getImpl().mxListBox.is ()) + getImpl().SetClickHdl( link ); +} + +Link& ListBox::GetDoubleClickHdl () +{ + return getImpl ().GetSelectHdl (); +} + +void ListBox::SetDoubleClickHdl( Link const& link ) +{ + getImpl().SetDoubleClickHdl( link ); +} + +void ListBox::SetEntryData( sal_uInt16 pos, void* data) +{ + GetListBox ()->SetEntryData (pos, data); +} + +void* ListBox::GetEntryData( sal_uInt16 pos) const +{ + return GetListBox ()->GetEntryData (pos); +} + +void ListBox::SetNoSelection () +{ + GetListBox ()->SetNoSelection (); +} + +IMPL_CONSTRUCTORS (ListBox, Control, "listbox"); +IMPL_GET_IMPL (ListBox); +IMPL_GET_WINDOW (ListBox); + +IMPL_IMPL (MultiListBox, ListBox) +IMPL_CONSTRUCTORS_BODY( MultiListBox, ListBox, "multilistbox", GetMultiListBox()->EnableMultiSelection( true ); ); +IMPL_GET_IMPL( MultiListBox ); +IMPL_GET_WINDOW( MultiListBox ); +} // namespace layout diff --git a/toolkit/source/layout/vcl/wrapper.cxx b/toolkit/source/layout/vcl/wrapper.cxx new file mode 100644 index 000000000000..0e2eec91773e --- /dev/null +++ b/toolkit/source/layout/vcl/wrapper.cxx @@ -0,0 +1,1630 @@ +/************************************************************************* + * + * 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$ + * + * $Revision$ + * + * 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. + * + ************************************************************************/ + +#include <tools/rc.h> +//#define RESOURCE_PUBLISH_PROTECTED 1 +#if RESOURCE_PUBLISH_PROTECTED +// ugh, override non-helpful proctection +#define protected public +#endif /* RESOURCE_PUBLISH_PROTECTED */ +#include <tools/rc.hxx> +#undef protected + + +#include "wrapper.hxx" + +#include <awt/vclxplugin.hxx> +#include <awt/vclxtabcontrol.hxx> +#include <com/sun/star/awt/PosSize.hpp> +#include <com/sun/star/awt/VclWindowPeerAttribute.hpp> +#include <com/sun/star/awt/WindowAttribute.hpp> +#include <com/sun/star/awt/XDialog2.hpp> +#include <com/sun/star/awt/XProgressBar.hpp> +#include <com/sun/star/awt/XSimpleTabController.hpp> +#include <com/sun/star/awt/XTabListener.hpp> +#include <com/sun/star/graphic/XGraphic.hpp> +#include <comphelper/processfactory.hxx> +#include <layout/core/factory.hxx> +#include <layout/core/localized-string.hxx> +#include <layout/core/root.hxx> +#include <toolkit/awt/vclxwindow.hxx> +#include <vcl/ctrl.hxx> +#include <vcl/dialog.hxx> +#include <vcl/image.hxx> +#include <vcl/tabctrl.hxx> +#include <vcl/tabpage.hxx> +#include <vcl/window.hxx> + +using namespace ::com::sun::star; +using rtl::OUString; + +namespace layout +{ + +// Context bits ... +class ContextImpl +{ + uno::Reference< awt::XLayoutRoot > mxRoot; + uno::Reference< container::XNameAccess > mxNameAccess; + PeerHandle mxTopLevel; + +public: + ContextImpl( char const *pPath ) + { + uno::Sequence< uno::Any > aParams( 1 ); + aParams[0] <<= OUString( pPath, strlen( pPath ), RTL_TEXTENCODING_UTF8 ); + + uno::Reference< lang::XSingleServiceFactory > xFactory( + comphelper::createProcessComponent( + OUString::createFromAscii( "com.sun.star.awt.Layout" ) ), + uno::UNO_QUERY ); + if ( !xFactory.is() ) + { + throw uno::RuntimeException( + OUString( RTL_CONSTASCII_USTRINGPARAM( "Layout engine not installed" ) ), + uno::Reference< uno::XInterface >() ); + } + mxRoot = uno::Reference< awt::XLayoutRoot >( + xFactory->createInstanceWithArguments( aParams ), + uno::UNO_QUERY ); + + mxNameAccess = uno::Reference< container::XNameAccess >( mxRoot, uno::UNO_QUERY ); + } + + ~ContextImpl() + { + } + + PeerHandle getByName( const OUString &rName ) + { + uno::Any val = mxNameAccess->getByName( rName ); + PeerHandle xRet; + val >>= xRet; + return xRet; + } + PeerHandle getTopLevel() + { + return mxTopLevel; + } + void setTopLevel( PeerHandle xToplevel ) + { + mxTopLevel = xToplevel; + } + PeerHandle getRoot() + { + return mxRoot; + } +}; + +Context::Context( const char *pPath ) + : pImpl( new ContextImpl( pPath ) ) +{ +} +Context::~Context() +{ + delete pImpl; + pImpl = NULL; +} + +void Context::setToplevel( PeerHandle xToplevel ) +{ + pImpl->setTopLevel( xToplevel ); +} + +PeerHandle Context::getToplevel() +{ + return pImpl->getTopLevel(); +} +PeerHandle Context::getRoot() +{ + return pImpl->getRoot(); +} + +PeerHandle Context::GetPeerHandle( const char *id, sal_uInt32 nId ) const +{ + PeerHandle xHandle; + xHandle = pImpl->getByName( OUString( id, strlen( id ), RTL_TEXTENCODING_UTF8 ) ); + if ( !xHandle.is() ) + { + DBG_ERROR1( "Failed to fetch widget '%s'", id ); + } + + if ( nId != 0 ) + { + rtl::OString aStr = rtl::OString::valueOf( (sal_Int32) nId ); + xHandle = GetPeerHandle( aStr, 0 ); + } + return xHandle; +} + +WindowImpl::WindowImpl (Context *context, const PeerHandle &peer, Window *window) + : mpWindow (window) + , mpCtx (context) + , mxWindow (peer, uno::UNO_QUERY) + , mxVclPeer (peer, uno::UNO_QUERY) + , mvclWindow (0) + , bFirstTimeVisible (true) +{ +} + +WindowImpl::~WindowImpl () +{ + if (mpWindow) + mpWindow->mpImpl = 0; + if (mvclWindow) + { + VCLXWindow *v = mvclWindow->GetWindowPeer (); + v->SetWindow (0); + mvclWindow->SetComponentInterface (uno::Reference <awt::XWindowPeer> ()); + mvclWindow->SetWindowPeer (uno::Reference <awt::XWindowPeer> (), 0); + delete mvclWindow; + mvclWindow = 0; + } +} + +void WindowImpl::wrapperGone () +{ + mvclWindow = 0; + mpWindow->mpImpl = 0; + mpWindow = 0; + mpCtx = 0; + if ( mxWindow.is() ) + { + uno::Reference< lang::XComponent > xComp( mxWindow, uno::UNO_QUERY ); + mxWindow.clear (); + if ( xComp.is() ) + xComp->dispose(); + } +} + +void SAL_CALL WindowImpl::disposing (lang::EventObject const&) + throw (uno::RuntimeException) +{ + if (mxWindow.is ()) + mxWindow.clear (); +} + +uno::Any WindowImpl::getProperty (char const* name) +{ + if ( !this || !mxVclPeer.is() ) + return css::uno::Any(); + return mxVclPeer->getProperty + ( rtl::OUString( name, strlen( name ), RTL_TEXTENCODING_ASCII_US ) ); +} + +void WindowImpl::setProperty (char const *name, uno::Any any) +{ + if ( !this || !mxVclPeer.is() ) + return; + mxVclPeer->setProperty + ( rtl::OUString( name, strlen( name ), RTL_TEXTENCODING_ASCII_US ), any ); +} + +void WindowImpl::redraw (bool resize) +{ + uno::Reference <awt::XWindow> ref (mxWindow, uno::UNO_QUERY); + ::Window* window = VCLXWindow::GetImplementation (ref)->GetWindow (); + ::Window* parent = window->GetParent(); + ::Rectangle r = Rectangle (parent->GetPosPixel (), + parent->GetSizePixel ()); + parent->Invalidate (r, INVALIDATE_CHILDREN | INVALIDATE_NOCHILDREN ); + if (resize) + parent->SetPosSizePixel (0, 0, 1, 1, awt::PosSize::SIZE); + else + parent->SetPosSizePixel (0, 0, r.nRight - r.nLeft, r.nBottom - r.nTop, + awt::PosSize::SIZE); +} + +Window::Window( WindowImpl *pImpl ) + : mpImpl( pImpl ) +{ + mpImpl->mvclWindow = GetVCLXWindow () ? GetWindow () : 0; +} + +Window::~Window() +{ + /* likely to be an UNO object - with floating references */ + if (mpImpl) + mpImpl->wrapperGone (); + mpImpl = 0; +} + +///IMPL_GET_IMPL( Control ); + +static ControlImpl* null_control_impl = 0; + +ControlImpl &Control::getImpl () const +{ + if (ControlImpl* c = static_cast<ControlImpl *>(mpImpl)) + return *c; + return *null_control_impl; +} + +Control::~Control () +{ + SetGetFocusHdl (Link ()); + SetLoseFocusHdl (Link ()); +} + +void Window::setRes (ResId const& res) +{ +#if RESOURCE_PUBLISH_PROTECTED + // Resources are shut-off from use. Is that really necessary? + Resource &r = *GetWindow (); + r.GetRes (res); +#else /* !RESOURCE_PUBLISH_PROTECTED */ + //We *must* derive. Is this also really necessary? + //Resource r (res); + + // ugh, I wonder which solution is cleaner... + class Resource_open_up : public Resource + { + public: + Resource_open_up (ResId const& r) + : Resource (r) + { + } + static sal_Int32 GetLongRes (void *p) + { + return Resource::GetLongRes (p); + } + void* GetClassRes () + { + return Resource::GetClassRes (); + } + sal_Int32 ReadLongRes () + { + return Resource::ReadLongRes (); + } + UniString ReadStringRes () + { + return Resource::ReadStringRes (); + } + }; + + Resource_open_up r (res); +#endif /* !RESOURCE_PUBLISH_PROTECTED */ + if (sal_uInt32 help_id = (sal_uInt32)r.GetLongRes (static_cast<char *> (r.GetClassRes ()) + 12)) + SetHelpId (help_id); + sal_uInt32 mask = r.ReadLongRes (); + if ( mask & WINDOW_TEXT ) + SetText( r.ReadStringRes ()); +} + +void Window::SetParent( ::Window *parent ) +{ + uno::Reference <awt::XWindow> ref( GetPeer(), uno::UNO_QUERY ); + if (VCLXWindow *vcl = VCLXWindow::GetImplementation( ref )) + if (::Window *window = vcl->GetWindow()) + window->SetParent( parent ); +} + +void Window::SetParent( Window *parent ) +{ + /* Let's hear it for C++: poor man's dynamic binding. */ + parent->ParentSet (this); +} + +void Window::ParentSet (Window *window) +{ + window->SetParent (GetWindow ()); +} + +Context *Window::getContext() +{ + return this && mpImpl ? mpImpl->mpCtx : NULL; +} + +PeerHandle Window::GetPeer() const +{ + if ( !mpImpl ) + return PeerHandle(); + return mpImpl->mxWindow; +} + +uno::Reference<awt::XWindow> Window::GetRef() const +{ + return uno::Reference <awt::XWindow> ( GetPeer(), uno::UNO_QUERY ); +} + +VCLXWindow* Window::GetVCLXWindow() const +{ + return VCLXWindow::GetImplementation( GetRef() ); +} + +::Window* Window::GetWindow() const +{ + return GetVCLXWindow()->GetWindow(); +} + +::Window* Window::GetParent() const +{ + return GetWindow()->GetParent(); +} + +void Window::SetHelpId( sal_uIntPtr id ) +{ + GetWindow()->SetHelpId( id ); +} + +sal_uIntPtr Window::GetHelpId() const +{ + return GetWindow()->GetHelpId(); +} + +void Window::SetSmartHelpId( SmartId const& id, SmartIdUpdateMode mode ) +{ + GetWindow()->SetSmartHelpId( id, mode ); +} + +SmartId Window::GetSmartHelpId() const +{ + return GetWindow()->GetSmartHelpId(); +} + +void Window::EnterWait () +{ + GetWindow()->EnterWait (); +} +void Window::LeaveWait () +{ + GetWindow()->LeaveWait (); +} +bool Window::IsWait () const +{ + return GetWindow()->IsWait (); +} + +bool Window::IsVisible () const +{ + if (GetWindow ()) + return GetWindow()->IsVisible (); + return false; +} + +bool Window::HasChildPathFocus (bool systemWindow) const +{ + return GetWindow()->HasChildPathFocus (systemWindow); +} + +void Window::SetPosPixel (Point const&) +{ +} + +Point Window::GetPosPixel () const +{ + return Point (); +} + +void Window::SetSizePixel (Size const&) +{ +} + +void Window::SetPosSizePixel (Point const&, Size const&) +{ +} + +Size Window::GetSizePixel () const +{ + return Size (); +} + +// void Window::Enable (bool enable, bool child); +// { +// GetWindow ()->Enable (enable, child); +// } + +// void Window::Disable (bool child) +// { +// GetWindow ()->Disable (child); +// } + +bool Window::IsEnabled () const +{ + return GetWindow ()->IsEnabled (); +// if (getImpl().mxWindow.is ()) +// return getImpl ().mxWindow->isEnabled (); +// return false; +} + +void Window::EnableInput (bool enable, bool child) +{ + GetWindow ()->EnableInput (enable, child); +} + +bool Window::IsInputEnabled () const +{ + return GetWindow ()->IsInputEnabled (); +} + +bool Window::HasFocus () const +{ + return GetWindow ()->HasFocus (); +} + +Font& Window::GetFont () const +{ + return const_cast <Font&> (GetWindow ()->GetFont ()); +} + +void Window::SetFont (Font const& font) +{ + GetWindow ()->SetFont (font); +} + +void Window::Invalidate (sal_uInt8 flags) +{ + GetWindow ()->Invalidate (flags); +} + +struct ToolkitVclPropsMap +{ + WinBits vclStyle; + long initAttr; + const char *propName; + + // the value to give the prop to enable/disable it -- not the most brilliant + // type declaration and storage, but does the work... properties are + // either a boolean or a short since they are either a directly wrappers for + // a WinBit, or aggregates related (like Align for WB_LEFT, _RIGHT and _CENTER). + bool isBoolean; + short enableProp, disableProp; +}; + +#define TYPE_BOOL true +#define TYPE_SHORT false +#define NOTYPE 0 +static const ToolkitVclPropsMap toolkitVclPropsMap[] = +{ + { WB_BORDER, awt::WindowAttribute::BORDER, "Border", TYPE_SHORT, 1, 0 }, + { WB_NOBORDER, awt::VclWindowPeerAttribute::NOBORDER, "Border", TYPE_SHORT, 0, 1 }, + { WB_SIZEABLE, awt::WindowAttribute::SIZEABLE, NULL, NOTYPE, 0, 0 }, + { WB_MOVEABLE, awt::WindowAttribute::MOVEABLE, NULL, NOTYPE, 0, 0 }, + { WB_CLOSEABLE, awt::WindowAttribute::CLOSEABLE, NULL, NOTYPE, 0, 0 }, + + { WB_HSCROLL, awt::VclWindowPeerAttribute::HSCROLL, NULL, NOTYPE, 0, 0 }, + { WB_VSCROLL, awt::VclWindowPeerAttribute::VSCROLL, NULL, NOTYPE, 0, 0 }, + { WB_LEFT, awt::VclWindowPeerAttribute::LEFT, "Align", TYPE_SHORT, 0, 0 }, + { WB_CENTER, awt::VclWindowPeerAttribute::CENTER, "Align", TYPE_SHORT, 1, 0 }, + { WB_RIGHT, awt::VclWindowPeerAttribute::RIGHT, "Align", TYPE_SHORT, 2, 0 }, + { WB_SPIN, awt::VclWindowPeerAttribute::SPIN, NULL, NOTYPE, 0, 0 }, + { WB_SORT, awt::VclWindowPeerAttribute::SORT, NULL, NOTYPE, 0, 0 }, + { WB_DROPDOWN, awt::VclWindowPeerAttribute::DROPDOWN, "Dropdown", TYPE_BOOL, 1, 0 }, + { WB_DEFBUTTON, awt::VclWindowPeerAttribute::DEFBUTTON, "DefaultButton", TYPE_BOOL, 1, 0 }, + { WB_READONLY, awt::VclWindowPeerAttribute::READONLY, NULL, NOTYPE, 0, 0 }, + { WB_CLIPCHILDREN, awt::VclWindowPeerAttribute::CLIPCHILDREN, NULL, NOTYPE, 0, 0 }, + { WB_GROUP, awt::VclWindowPeerAttribute::GROUP, NULL, NOTYPE, 0, 0 }, + + { WB_OK, awt::VclWindowPeerAttribute::OK, NULL, NOTYPE, 0, 0 }, + { WB_OK_CANCEL, awt::VclWindowPeerAttribute::OK_CANCEL, NULL, NOTYPE, 0, 0 }, + { WB_YES_NO, awt::VclWindowPeerAttribute::YES_NO, NULL, NOTYPE, 0, 0 }, + { WB_YES_NO_CANCEL, awt::VclWindowPeerAttribute::YES_NO_CANCEL, NULL, NOTYPE, 1, 0 }, + { WB_RETRY_CANCEL, awt::VclWindowPeerAttribute::RETRY_CANCEL, NULL, NOTYPE, 1, 0 }, + { WB_DEF_OK, awt::VclWindowPeerAttribute::DEF_OK, NULL, NOTYPE, 0, 0 }, + { WB_DEF_CANCEL, awt::VclWindowPeerAttribute::DEF_CANCEL, NULL, NOTYPE, 1, 0 }, + { WB_DEF_RETRY, awt::VclWindowPeerAttribute::DEF_RETRY, NULL, NOTYPE, 0, 0 }, + { WB_DEF_YES, awt::VclWindowPeerAttribute::DEF_YES, NULL, NOTYPE, 0, 0 }, + { WB_DEF_NO, awt::VclWindowPeerAttribute::DEF_NO, NULL, NOTYPE, 0, 0 }, + + { WB_AUTOHSCROLL, awt::VclWindowPeerAttribute::AUTOHSCROLL, "AutoHScroll", TYPE_BOOL, 1, 0 }, + { WB_AUTOVSCROLL, awt::VclWindowPeerAttribute::AUTOVSCROLL, "AutoVScroll", TYPE_BOOL, 1, 0 }, + + { WB_WORDBREAK, 0, "MultiLine", TYPE_BOOL, 1, 0 }, + { WB_NOPOINTERFOCUS, 0, "FocusOnClick", TYPE_BOOL, 1, 0 }, + { WB_TOGGLE, 0, "Toggle", TYPE_BOOL, 1, 0 }, + { WB_REPEAT, 0, "Repeat", TYPE_BOOL, 1, 0 }, + { WB_NOHIDESELECTION, 0, "HideInactiveSelection", TYPE_BOOL, 1, 0 }, +}; +#undef TYPE_BOOL +#undef TYPE_SHORT +#undef NOTYPE + +static const int toolkitVclPropsMapLen = + sizeof( toolkitVclPropsMap ) / sizeof( ToolkitVclPropsMap ); + +void Window::SetStyle( WinBits nStyle ) +{ + uno::Reference< awt::XVclWindowPeer > xPeer = mpImpl->mxVclPeer; + for (int i = 0; i < toolkitVclPropsMapLen; i++) + { + if ( toolkitVclPropsMap[ i ].propName ) + { + short nValue; + if ( nStyle & toolkitVclPropsMap[ i ].vclStyle ) + nValue = toolkitVclPropsMap[ i ].enableProp; + else + nValue = toolkitVclPropsMap[ i ].disableProp; + uno::Any aValue; + if ( toolkitVclPropsMap[ i ].isBoolean ) + aValue = uno::makeAny( (bool) nValue ); + else + aValue = uno::makeAny( (short) nValue ); + mpImpl->setProperty( toolkitVclPropsMap[ i ].propName, aValue ); + } + } +} + +WinBits Window::GetStyle() +{ + uno::Reference< awt::XVclWindowPeer > xPeer = mpImpl->mxVclPeer; + WinBits ret = 0; + for (int i = 0; i < toolkitVclPropsMapLen; i++) + { + if ( toolkitVclPropsMap[ i ].propName ) + { + short nValue = 0; + if ( toolkitVclPropsMap[ i ].isBoolean ) + { + bool bValue = false; + mpImpl->getProperty( toolkitVclPropsMap[ i ].propName ) >>= bValue; + nValue = bValue ? 1 : 0; + } + else + mpImpl->getProperty( toolkitVclPropsMap[ i ].propName ) >>= nValue; + if ( nValue == toolkitVclPropsMap[ i ].enableProp ) + ret |= toolkitVclPropsMap[i].vclStyle; + } + } + return ret; +} + +/* Unpleasant way to get an xToolkit pointer ... */ +uno::Reference< awt::XToolkit > getToolkit() +{ + static uno::Reference< awt::XToolkit > xToolkit; + if (!xToolkit.is()) + { + // Urgh ... + xToolkit = uno::Reference< awt::XToolkit >( + ::comphelper::getProcessServiceFactory()->createInstance( + OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.Toolkit" ) ) ), + uno::UNO_QUERY ); + if ( !xToolkit.is() ) + throw uno::RuntimeException( + OUString( RTL_CONSTASCII_USTRINGPARAM( "failed to create toolkit!") ), + uno::Reference< uno::XInterface >() ); + } + return xToolkit; +} + +PeerHandle Window::CreatePeer( Window *parent, WinBits nStyle, const char *pName) +{ + long nWinAttrbs = 0; + for (int i = 0; i < toolkitVclPropsMapLen; i++) + if ( nStyle & toolkitVclPropsMap[ i ].vclStyle ) + nWinAttrbs |= toolkitVclPropsMap[ i ].initAttr; + + return layoutimpl::WidgetFactory::createWidget (getToolkit(), parent->GetPeer(), OUString::createFromAscii( pName ), nWinAttrbs); +} + +void Window::Enable( bool bEnable ) +{ + if ( !getImpl().mxWindow.is() ) + return; + getImpl().mxWindow->setEnable( bEnable ); +} + +void Window::Show( bool bVisible ) +{ + if ( !getImpl().mxWindow.is() ) + return; + getImpl().mxWindow->setVisible( bVisible ); + if (!bVisible) + getImpl ().bFirstTimeVisible = true; + else if (GetParent() && getImpl().bFirstTimeVisible) + { + getImpl().redraw (); + getImpl().bFirstTimeVisible = false; + } +} + +void Window::GrabFocus() +{ + if ( !getImpl().mxWindow.is() ) + return; + getImpl().mxWindow->setFocus(); +} + +void Window::SetUpdateMode(bool mode) +{ + GetWindow()->SetUpdateMode( mode ); +} + +void Window::SetPointer( Pointer const& pointer ) +{ + GetWindow()->SetPointer( pointer ); +} + +Pointer const& Window::GetPointer() const +{ + return GetWindow()->GetPointer(); +} + +void Window::SetText( OUString const& str ) +{ + GetWindow()->SetText( str ); +} + +String Window::GetText() const +{ + return GetWindow()->GetText(); +} + +sal_Int32 Window::GetCtrlTextWidth (OUString const&) const +{ + return 0; +} + +sal_Int32 Window::GetTextHeight () const +{ + return 0; +} + +Size Window::LogicToPixel( Size const& size, MapMode const&) const +{ + return size; +} + +ControlImpl::ControlImpl (Context *context, const PeerHandle &peer, Window *window) + : WindowImpl( context, peer, window ) +{ +} + +ControlImpl::~ControlImpl () +{ + if ((!!mGetFocusHdl || !!mLoseFocusHdl) && mxWindow.is ()) + /* Disposing will be done @ VCLXWindow::dispose () maFocusListeners.disposeAndClear() + don't do it twice */ + mxWindow.clear (); +} + +void ControlImpl::SetGetFocusHdl (Link const& link) +{ + if (!mLoseFocusHdl || !link) + UpdateListening (link); + mGetFocusHdl = link; +} + +Link& ControlImpl::GetGetFocusHdl () +{ + return mGetFocusHdl; +} + +void ControlImpl::SetLoseFocusHdl (Link const& link) +{ + if (!mGetFocusHdl || !link) + UpdateListening (link); + mLoseFocusHdl = link; +} + +Link& ControlImpl::GetLoseFocusHdl () +{ + return mGetFocusHdl; +} + +void ControlImpl::UpdateListening (Link const& link) +{ + if (!link && (!!mGetFocusHdl || !!mLoseFocusHdl) + && (!mGetFocusHdl || !mLoseFocusHdl)) + mxWindow->removeFocusListener (this); + else if (!!link && !mGetFocusHdl && !mLoseFocusHdl) + mxWindow->addFocusListener (this); +} + +void SAL_CALL ControlImpl::disposing (lang::EventObject const&) + throw (uno::RuntimeException) +{ +/// mxWindow.clear (); +} + +void SAL_CALL ControlImpl::focusGained (awt::FocusEvent const&) + throw (uno::RuntimeException) +{ + mGetFocusHdl.Call (mpWindow); +} + +void SAL_CALL ControlImpl::focusLost (awt::FocusEvent const&) + throw (uno::RuntimeException) +{ + mLoseFocusHdl.Call (mpWindow); +} + +Link& Control::GetGetFocusHdl () +{ + return getImpl ().GetGetFocusHdl (); +} + +void Control::SetGetFocusHdl (Link const& link) +{ + if (&getImpl () && getImpl().mxWindow.is ()) + getImpl ().SetGetFocusHdl (link); +} + +Link& Control::GetLoseFocusHdl () +{ + return getImpl ().GetLoseFocusHdl (); +} + +void Control::SetLoseFocusHdl (Link const& link) +{ + if (&getImpl () && getImpl().mxWindow.is ()) + getImpl ().SetLoseFocusHdl (link); +} + +class DialogImpl : public WindowImpl +{ +public: + uno::Reference< awt::XDialog2 > mxDialog; + DialogImpl( Context *context, PeerHandle const &peer, Window *window ); +}; + +DialogImpl::DialogImpl( Context *context, const PeerHandle &peer, Window *window ) + : WindowImpl( context, peer, window ) + , mxDialog( peer, uno::UNO_QUERY ) +{ +} + +Dialog::Dialog( Window *parent, const char *xml_file, const char *id, sal_uInt32 nId ) + : Context( xml_file ) + , Window( new DialogImpl( this, Context::GetPeerHandle( id, nId ), this ) ) + , bConstruct (true) +{ + if ( parent ) + SetParent( parent ); +} + +Dialog::Dialog( ::Window *parent, const char *xml_file, const char *id, sal_uInt32 nId ) + : Context( xml_file ) + , Window( new DialogImpl( this, Context::GetPeerHandle( id, nId ), this ) ) +{ + if ( parent ) + SetParent( parent ); +} + +Dialog::~Dialog () +{ +} + +IMPL_GET_WINDOW (Dialog); +IMPL_GET_IMPL (Dialog); + +#define MX_DIALOG if (getImpl ().mxDialog.is ()) getImpl ().mxDialog +#define RETURN_MX_DIALOG if (getImpl ().mxDialog.is ()) return getImpl ().mxDialog + +short Dialog::Execute() +{ + RETURN_MX_DIALOG->execute (); + return -1; +} + +void Dialog::EndDialog( long result ) +{ + MX_DIALOG->endDialog (result); +} + +void Dialog::SetText( OUString const& str ) +{ + SetTitle (str); +} + +void Dialog::SetTitle( OUString const& str ) +{ + MX_DIALOG->setTitle (str); +} + +bool Dialog::Close () +{ + EndDialog (false); + return true; +} + +long Dialog::Notify (NotifyEvent& event) +{ + return GetDialog ()->Notify (event); +} + +void Dialog::Initialize (SfxChildWinInfo*) +{ +} + +#define MESSAGE_BOX_MEMBER_INIT\ + Dialog (parent, xml_file, id)\ + , imageError (this, "FI_ERROR")\ + , imageInfo (this, "FI_INFO")\ + , imageQuery (this, "FI_QUERY")\ + , imageWarning (this, "FI_WARNING")\ + , messageText (this, "FT_MESSAGE")\ + , cancelButton (this, "BTN_CANCEL")\ + , helpButton (this, "BTN_HELP")\ + , ignoreButton (this, "BTN_IGNORE")\ + , noButton (this, "BTN_NO")\ + , retryButton (this, "BTN_RETRY")\ + , yesButton (this, "BTN_YES") + +MessageBox::MessageBox (::Window *parent, char const* message, + char const* yes, char const* no, sal_uIntPtr help_id, + char const* xml_file, char const* id) + : MESSAGE_BOX_MEMBER_INIT +{ + ignoreButton.Hide (); + retryButton.Hide (); + init (message, yes, no, help_id); +} + +MessageBox::MessageBox (::Window *parent, OUString const& message, + OUString yes, OUString no, sal_uIntPtr help_id, + char const* xml_file, char const* id) + : MESSAGE_BOX_MEMBER_INIT +{ + ignoreButton.Hide (); + retryButton.Hide (); + init (message, yes, no, help_id); +} + +#if !defined (__GNUC__) +#define __PRETTY_FUNCTION__ __FUNCTION__ +#endif /* !__GNUC__ */ + +MessageBox::MessageBox (::Window *parent, WinBits bits, char const* message, + char const* yes, char const* no, sal_uIntPtr help_id, + char const* xml_file, char const* id) + : MESSAGE_BOX_MEMBER_INIT +{ + // HIG suggests using verbs instead of yes/no/retry etc. + // This constructor provides client-code compatibility: Client code should be fixed. +#ifndef __SUNPRO_CC + OSL_TRACE ("%s: warning, deprecated vcl/Messbox compatibility", __PRETTY_FUNCTION__); +#endif + bits_init (bits, OUString::createFromAscii (message), OUString::createFromAscii (yes), OUString::createFromAscii (no), help_id); +} + +MessageBox::MessageBox (::Window *parent, WinBits bits, OUString const& message, + OUString yes, OUString no, sal_uIntPtr help_id, + char const* xml_file, char const* id) + : MESSAGE_BOX_MEMBER_INIT +{ + // HIG suggests using verbs instead of yes/no/retry etc. + // This constructor provides client-code compatibility: Client code should be fixed. +#ifndef __SUNPRO_CC + OSL_TRACE ("%s: warning, deprecated vcl/Messbox compatibility", __PRETTY_FUNCTION__); +#endif + bits_init (bits, message, yes, no, help_id); +} + +void MessageBox::bits_init (WinBits bits, OUString const& message, + OUString yes, OUString no, sal_uIntPtr help_id) +{ + if ( bits & ( WB_OK_CANCEL | WB_OK )) + yes = Button::GetStandardText ( BUTTON_OK ); + if ( bits & (WB_YES_NO | WB_YES_NO_CANCEL )) + { + yes = Button::GetStandardText ( BUTTON_YES ); + no = Button::GetStandardText ( BUTTON_NO ); + } + if (! (bits & (WB_RETRY_CANCEL | WB_YES_NO_CANCEL | WB_ABORT_RETRY_IGNORE ))) + cancelButton.Hide (); + if (! (bits & (WB_RETRY_CANCEL | WB_ABORT_RETRY_IGNORE))) + retryButton.Hide (); + if ( bits & WB_ABORT_RETRY_IGNORE ) + cancelButton.SetText ( Button::GetStandardText (BUTTON_ABORT)); + else + ignoreButton.Hide (); + if ( !(bits & ( WB_OK | WB_OK_CANCEL | WB_YES_NO | WB_YES_NO_CANCEL))) + yesButton.Hide (); + if ( !(bits & ( WB_YES_NO | WB_YES_NO_CANCEL))) + noButton.Hide (); + + init (message, yes, no, help_id); +} + +void MessageBox::init (char const* message, char const* yes, char const* no, sal_uIntPtr help_id) +{ + init ( OUString::createFromAscii (message), OUString::createFromAscii (yes), OUString::createFromAscii (no), help_id); +} + +void MessageBox::init (OUString const& message, OUString const& yes, OUString const& no, sal_uIntPtr help_id) +{ + imageError.Hide (); + imageInfo.Hide (); + imageQuery.Hide (); + imageWarning.Hide (); + if (message.getLength ()) + messageText.SetText (message); + if (yes.getLength ()) + { + yesButton.SetText (yes); + if (yes != OUString (Button::GetStandardText (BUTTON_OK)) + && yes != OUString (Button::GetStandardText (BUTTON_YES))) + SetTitle (yes); + if (no.getLength ()) + noButton.SetText (no); + else + noButton.Hide (); + } + if (help_id) + SetHelpId (help_id); + else + helpButton.Hide (); +} + +#undef MESSAGE_BOX_IMPL +#define MESSAGE_BOX_IMPL(Name)\ + Name##Box::Name##Box (::Window *parent, char const* message,\ + char const* yes, char const* no, sal_uIntPtr help_id,\ + char const* xml_file, char const* id)\ + : MessageBox (parent, message, yes, no, help_id, xml_file, id)\ + {\ + image##Name.Show ();\ + }\ + Name##Box::Name##Box (::Window *parent, OUString const& message,\ + OUString yes, OUString no, sal_uIntPtr help_id,\ + char const* xml_file, char const* id)\ + : MessageBox (parent, message, yes, no, help_id, xml_file, id)\ + {\ + image##Name.Show ();\ + }\ + Name##Box::Name##Box (::Window *parent, WinBits bits, char const* message,\ + char const* yes, char const* no, sal_uIntPtr help_id,\ + char const* xml_file, char const* id)\ + : MessageBox (parent, bits, message, yes, no, help_id, xml_file, id)\ + {\ + image##Name.Show ();\ + }\ + Name##Box::Name##Box (::Window *parent, WinBits bits, OUString const& message,\ + OUString yes, OUString no, sal_uIntPtr help_id,\ + char const* xml_file, char const* id)\ + : MessageBox (parent, bits, message, yes, no, help_id, xml_file, id)\ + {\ + image##Name.Show ();\ + } + +MESSAGE_BOX_IMPL (Error); +MESSAGE_BOX_IMPL (Info); +MESSAGE_BOX_IMPL (Query); +MESSAGE_BOX_IMPL (Warning); + +class TabControlImpl + : public ControlImpl + , public ::cppu::WeakImplHelper1 <awt::XTabListener> +{ + Link mActivatePageHdl; + Link mDeactivatePageHdl; + +public: + uno::Reference <awt::XSimpleTabController> mxTabControl; + TabControlImpl (Context *context, const PeerHandle &peer, Window *window) + : ControlImpl (context, peer, window) + , mxTabControl (peer, uno::UNO_QUERY) + { + } + + virtual void SAL_CALL disposing (lang::EventObject const& e) + throw (uno::RuntimeException) + { + ControlImpl::disposing (e); + mxTabControl.clear (); + } + + Link& GetActivatePageHdl () + { + return mActivatePageHdl; + } + + void SetActivatePageHdl (Link const& link) + { + if (!mDeactivatePageHdl || !link) + UpdateListening (link); + mActivatePageHdl = link; + } + + Link& GetDeactivatePageHdl () + { + return mDeactivatePageHdl; + } + + void SetDeactivatePageHdl (Link const& link) + { + if (!mActivatePageHdl || !link) + UpdateListening (link); + mDeactivatePageHdl = link; + } + + void UpdateListening (Link const& link) + { + if (!link && (!!mActivatePageHdl || !!mDeactivatePageHdl)) + mxTabControl->removeTabListener (this); + else if (!!link && !mActivatePageHdl && !mDeactivatePageHdl) + mxTabControl->addTabListener (this); + } + + void SAL_CALL activated (sal_Int32) + throw (uno::RuntimeException) + { + mActivatePageHdl.Call (mpWindow); + } + + void SAL_CALL deactivated (sal_Int32) + throw (uno::RuntimeException) + { + mDeactivatePageHdl.Call (mpWindow); + } + + void SAL_CALL inserted (sal_Int32) + throw (uno::RuntimeException) + { + } + + void SAL_CALL removed (sal_Int32) + throw (uno::RuntimeException) + { + } + + void SAL_CALL changed (sal_Int32, uno::Sequence <beans::NamedValue> const&) + throw (uno::RuntimeException) + { + } +}; + +IMPL_GET_WINDOW (TabControl); +IMPL_GET_LAYOUT_VCLXWINDOW (TabControl); + +#define MX_TABCONTROL if (getImpl ().mxTabControl.is ()) getImpl ().mxTabControl +#define RETURN_MX_TABCONTROL if (getImpl ().mxTabControl.is ()) return getImpl ().mxTabControl + +TabControl::~TabControl () +{ + SetActivatePageHdl (Link ()); + SetDeactivatePageHdl (Link ()); +} + +void TabControl::InsertPage (sal_uInt16 id, OUString const& title, sal_uInt16 pos) +{ + (void) pos; +// GetTabControl ()->InsertPage (id, title, pos); +// GetTabControl ()->SetTabPage (id, new ::TabPage (GetTabControl ())); + + MX_TABCONTROL->insertTab (); + SetCurPageId (id); + +#if 1 // colour me loc productive -- NOT +#define ADD_PROP( seq, i, name, val )\ + { \ + beans::NamedValue value; \ + value.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( name ) ); \ + value.Value = uno::makeAny( val ); \ + seq[i] = value; \ + } + + uno::Sequence< beans::NamedValue > seq (1); + ADD_PROP ( seq, 0, "Title", OUString (title) ); + MX_TABCONTROL->setTabProps (id, seq); +#else + GetTabPage (id)->SetText (title); +#endif + +#if 0 + /// This so seems the right solution, but it makes the buttons of the + /// tabdialog move up + + ::TabPage *page = GetTabPage (id); + if (Window *w = dynamic_cast <Window*> (page)) + { + w->SetParent (this); + //GetVCLXTabControl ()->Box_Base::addChild (uno::Reference <awt::XLayoutConstrains> (w->GetPeer (), uno::UNO_QUERY)); + //GetVCLXTabControl ()->Box_Base::AddChild (uno::Reference <awt::XLayoutConstrains> (w->GetPeer (), uno::UNO_QUERY)); + //GetVCLXTabControl ()->AddChild (w); + //GetVCLXTabControl ()->AddChild (uno::Reference <awt::XLayoutConstrains> (w->GetPeer (), uno::UNO_QUERY)); + //uno::Reference <uno::XInterface> x (page->GetWindowPeer()); + //GetVCLXTabControl ()->AddChild (uno::Reference <awt::XLayoutConstrains> (page->::Window::GetWindowPeer (), uno::UNO_QUERY)); + //GetVCLXTabControl ()->AddChild (uno::Reference <awt::XLayoutConstrains> (page->GetComponentInterface (), uno::UNO_QUERY)); + } + getImpl ().redraw (); +#endif +} +void TabControl::RemovePage (sal_uInt16 id) +{ + GetTabControl ()->RemovePage (id); +} +sal_uInt16 TabControl::GetPageCount () const +{ + return GetTabControl ()->GetPageCount (); +} +sal_uInt16 TabControl::GetPageId (sal_uInt16 pos) const +{ + return GetTabControl ()->GetPageId (pos); +} +sal_uInt16 TabControl::GetPagePos (sal_uInt16 id) const +{ + getImpl ().redraw (); + return GetTabControl ()->GetPagePos (id); +} +void TabControl::SetCurPageId (sal_uInt16 id) +{ + getImpl ().redraw (); + GetTabControl ()->SetCurPageId (id); +} +sal_uInt16 TabControl::GetCurPageId () const +{ + return GetTabControl ()->GetCurPageId (); +} +void TabControl::SetTabPage (sal_uInt16 id, ::TabPage* page) +{ + GetTabControl ()->SetTabPage (id, page); + +#if 0 + /// This so seems the right solution, but it makes the buttons of the + /// tabdialog move up + if (Window *w = dynamic_cast <Window*> (page)) + { + w->SetParent (this); + //GetVCLXTabControl ()->Box_Base::addChild (uno::Reference <awt::XLayoutConstrains> (w->GetPeer (), uno::UNO_QUERY)); + //GetVCLXTabControl ()->Box_Base::AddChild (uno::Reference <awt::XLayoutConstrains> (w->GetPeer (), uno::UNO_QUERY)); + //GetVCLXTabControl ()->AddChild (w); + //GetVCLXTabControl ()->AddChild (uno::Reference <awt::XLayoutConstrains> (w->GetPeer (), uno::UNO_QUERY)); + //GetVCLXTabControl ()->AddChild (uno::Reference <awt::XLayoutConstrains> (page->GetWindowPeer (), uno::UNO_QUERY)); + //GetVCLXTabControl ()->AddChild (uno::Reference <awt::XLayoutConstrains> (page->GetComponentInterface (), uno::UNO_QUERY)); + } +#endif + getImpl ().redraw (); +} +::TabPage* TabControl::GetTabPage (sal_uInt16 id) const +{ + return GetTabControl ()->GetTabPage (id); +} +void TabControl::SetActivatePageHdl (Link const& link) +{ + if (&getImpl () && getImpl().mxTabControl.is ()) + getImpl ().SetActivatePageHdl (link); +} +Link& TabControl::GetActivatePageHdl () const +{ + return getImpl ().GetActivatePageHdl (); +} +void TabControl::SetDeactivatePageHdl (Link const& link) +{ + if (&getImpl () && getImpl().mxTabControl.is ()) + getImpl ().SetDeactivatePageHdl (link); +} +Link& TabControl::GetDeactivatePageHdl () const +{ + return getImpl ().GetDeactivatePageHdl (); +} +void TabControl::SetTabPageSizePixel (Size const& size) +{ + GetTabControl ()->SetTabPageSizePixel (size); +// GetParent()->SetSizePixel (size); +// GetWindow()->SetSizePixel (size); + //GetVCLXTabControl->SetTabSize (size); +} +Size TabControl::GetTabPageSizePixel () const +{ +#if 0 + //return GetTabControl ()->GetTabPageSizePixel (); + static size_t const tab_page_first_index = 1; + for (size_t i = 0; i < GetPageCount (); i++) + { + ::TabPage *p = GetTabPage (i + tab_page_first_index); + //if (dynamic_cast<Windowt*> (p)) + if (i) // URG + return p->GetOptimalSize (WINDOWSIZE_MINIMUM); + } +#endif + return GetTabControl ()->GetTabPageSizePixel (); +} + +IMPL_CONSTRUCTORS (TabControl, Control, "tabcontrol"); +IMPL_GET_IMPL (TabControl); + +class TabPageImpl : public WindowImpl +{ +public: + uno::Reference< awt::XWindow > mxTabPage; + TabPageImpl( Context *context, const PeerHandle &peer, Window *window ) + : WindowImpl( context, peer, window ) + , mxTabPage( peer, uno::UNO_QUERY ) + { + } +}; + +::Window* TabPage::global_parent = 0; +TabControl* TabPage::global_tabcontrol = 0; + +IMPL_GET_IMPL( TabPage ); + +TabPage::TabPage( Window *parent, const char *xml_file, const char *id, sal_uInt32 nId) + : Context( xml_file ) + , Window( new TabPageImpl( this, Context::GetPeerHandle( id, nId ), this ) ) +{ + if ( parent ) + SetParent( parent ); +} + +TabPage::TabPage( ::Window *parent, const char *xml_file, const char *id, sal_uInt32 nId) + : Context( xml_file ) + , Window( new TabPageImpl( this, Context::GetPeerHandle( id, nId ), this ) ) +{ + if ( parent ) + SetParent( parent ); +} + +TabPage::~TabPage() +{ + delete GetTabPage(); +} + +IMPL_GET_WINDOW( TabPage ); + +void TabPage::ActivatePage() +{ +} + +void TabPage::DeactivatePage() +{ +} + +class FixedLineImpl : public ControlImpl +{ +public: + FixedLineImpl( Context *context, const PeerHandle &peer, Window *window ) + : ControlImpl( context, peer, window ) + { + } +}; + +IMPL_CONSTRUCTORS( FixedLine, Control, "hfixedline" ); +IMPL_GET_IMPL( FixedLine ); + +bool FixedLine::IsEnabled() const +{ + //FIXME + return true; +} + +class FixedTextImpl : public ControlImpl +{ +public: + uno::Reference< awt::XFixedText > mxFixedText; + FixedTextImpl( Context *context, const PeerHandle &peer, Window *window ) + : ControlImpl( context, peer, window ) + , mxFixedText( peer, uno::UNO_QUERY ) + { + } + + ~FixedTextImpl (); + + virtual void SAL_CALL disposing( lang::EventObject const& e ) + throw (uno::RuntimeException); +}; + +FixedTextImpl::~FixedTextImpl () +{ +} + +void SAL_CALL FixedTextImpl::disposing( lang::EventObject const& e ) + throw (uno::RuntimeException) +{ + ControlImpl::disposing (e); + mxFixedText.clear (); +} + +FixedText::~FixedText () +{ +} + +IMPL_CONSTRUCTORS( FixedText, Control, "fixedtext" ); +IMPL_GET_IMPL( FixedText ); + +void FixedText::SetText( OUString const& rStr ) +{ + if ( !getImpl().mxFixedText.is() ) + return; + getImpl().mxFixedText->setText( rStr ); +} + +class FixedInfoImpl : public FixedTextImpl +{ +public: + FixedInfoImpl( Context *context, const PeerHandle &peer, Window *window ) + : FixedTextImpl( context, peer, window ) + { + } +}; + +IMPL_CONSTRUCTORS( FixedInfo, FixedText, "fixedinfo" ); +IMPL_GET_IMPL( FixedInfo ); + +class ProgressBarImpl : public ControlImpl +{ +public: + uno::Reference< awt::XProgressBar > mxProgressBar; + ProgressBarImpl( Context *context, const PeerHandle &peer, Window *window ) + : ControlImpl( context, peer, window ) + , mxProgressBar( peer, uno::UNO_QUERY ) + { + } + + virtual void SAL_CALL disposing( lang::EventObject const& e ) + throw (uno::RuntimeException) + { + ControlImpl::disposing (e); + mxProgressBar.clear (); + } +}; + + +class FixedImageImpl: public ControlImpl +{ +public: + uno::Reference< graphic::XGraphic > mxGraphic; + FixedImageImpl( Context *context, const PeerHandle &peer, Window *window) +// const char *pName ) + : ControlImpl( context, peer, window ) + //, mxGraphic( layoutimpl::loadGraphic( pName ) ) + , mxGraphic( peer, uno::UNO_QUERY ) + { + if ( !mxGraphic.is() ) + { + DBG_ERROR( "ERROR: failed to load image: `%s'" /*, pName*/ ); + } +#if 0 + else + getImpl().mxGraphic->...(); +#endif + } +}; + +IMPL_CONSTRUCTORS( FixedImage, Control, "fixedimage" ); +IMPL_GET_IMPL( FixedImage ) + +void FixedImage::setImage( ::Image const& i ) +{ + (void) i; + if ( !getImpl().mxGraphic.is() ) + return; + //FIXME: hack moved to proplist + //getImpl().mxGraphic = +} + +#if 0 + +FixedImage::FixedImage( const char *pName ) + : pImpl( new FixedImageImpl( pName ) ) +{ +} + +FixedImage::~FixedImage() +{ + delete pImpl; +} + +#endif + + +IMPL_CONSTRUCTORS( ProgressBar, Control, "ProgressBar" ); +IMPL_GET_IMPL( ProgressBar ); + +void ProgressBar::SetForegroundColor( util::Color color ) +{ + if ( !getImpl().mxProgressBar.is() ) + return; + getImpl().mxProgressBar->setForegroundColor( color ); +} + +void ProgressBar::SetBackgroundColor( util::Color color ) +{ + if ( !getImpl().mxProgressBar.is() ) + return; + getImpl().mxProgressBar->setBackgroundColor( color ); +} + +void ProgressBar::SetValue( sal_Int32 i ) +{ + if ( !getImpl().mxProgressBar.is() ) + return; + getImpl().mxProgressBar->setValue( i ); +} + +void ProgressBar::SetRange( sal_Int32 min, sal_Int32 max ) +{ + if ( !getImpl().mxProgressBar.is() ) + return; + getImpl().mxProgressBar->setRange( min, max ); +} + +sal_Int32 ProgressBar::GetValue() +{ + if ( !getImpl().mxProgressBar.is() ) + return 0; + return getImpl().mxProgressBar->getValue(); +} + +class PluginImpl: public ControlImpl +{ +public: + ::Control *mpPlugin; + + PluginImpl( Context *context, const PeerHandle &peer, Window *window, :: Control *plugin ) + : ControlImpl( context, peer, window ) + , mpPlugin( plugin ) + { + uno::Reference <awt::XWindow> ref( mxWindow, uno::UNO_QUERY ); + layoutimpl::VCLXPlugin *vcl + = static_cast<layoutimpl::VCLXPlugin*>( VCLXWindow::GetImplementation( ref ) ); + ::Window *parent = vcl->mpWindow->GetParent(); + vcl->SetWindow( plugin ); + vcl->SetPlugin( mpPlugin ); + plugin->SetParent( parent ); + plugin->SetStyle( vcl->mStyle ); + plugin->SetCreatedWithToolkit( true ); + plugin->SetComponentInterface( vcl ); + plugin->Show(); + } +}; + +Plugin::Plugin( Context *context, char const *id, ::Control *plugin ) + : Control( new PluginImpl( context, context->GetPeerHandle( id, 0 ), this, plugin ) ) + , mpPlugin( plugin ) +{ +} + +IMPL_GET_IMPL( Plugin ); + +class LocalizedStringImpl : public WindowImpl +{ +public: + layoutimpl::LocalizedString *mpString; + OUString maString; + LocalizedStringImpl( Context *context, const PeerHandle &peer, Window *window ) + : WindowImpl( context, peer, window ) + , mpString( static_cast<layoutimpl::LocalizedString*>( VCLXWindow::GetImplementation( uno::Reference <awt::XWindow> ( mxWindow, uno::UNO_QUERY ) ) ) ) + , maString () + { + } + OUString getText() + { + if (mpString) + maString = mpString->getText (); + return maString; + } + void setText( OUString const& s ) + { + if (mpString) + mpString->setText( s ); + } +}; + +IMPL_GET_IMPL( LocalizedString ); + +LocalizedString::LocalizedString( Context *context, char const* id ) + : Window( new LocalizedStringImpl( context, context->GetPeerHandle( id, 0 ), this ) ) +{ +} + +String LocalizedString::getString () +{ + return getImpl ().getText (); +} + +OUString LocalizedString::getOUString () +{ + return getImpl ().getText (); +} + +LocalizedString::operator OUString () +{ + return getOUString (); +} + +LocalizedString::operator OUString const& () +{ + getOUString (); + return getImpl ().maString; +} + +LocalizedString::operator String() +{ + getOUString (); + return getImpl ().maString; +} + +String LocalizedString::GetToken (USHORT i, sal_Char c) +{ + return getString ().GetToken (i, c); +} + +OUString LocalizedString::operator= (OUString const& s) +{ + getImpl().setText( s ); + return getImpl().getText(); +} + +OUString LocalizedString::operator+= (OUString const& b) +{ + OUString a = getImpl ().getText (); + a += b; + getImpl ().setText (a); + return getImpl ().getText (); +} + +OUString LocalizedString::operator+= (sal_Unicode const b) +{ + String a = getImpl ().getText (); + a += b; + getImpl ().setText (a); + return getImpl ().getText (); +} + +class InPlugImpl : public WindowImpl +{ +public: + InPlugImpl (Context *context, const PeerHandle &peer, Window *window) + : WindowImpl (context, peer, window) + { + } +}; + +IMPL_GET_IMPL (InPlug); + +static char const *FIXME_set_parent (::Window *parent, char const *xml_file) +{ + layout::TabPage::global_parent = parent; + return xml_file; +} + +InPlug::InPlug (Window *parent, char const* xml_file, char const* id, sal_uInt32 nId) + : Context (FIXME_set_parent (parent ? parent->GetWindow () : 0, xml_file)) + , layout::Window (new InPlugImpl (this, Context::GetPeerHandle (id, nId), this)) +{ + if (parent) + SetParent (parent); + if (::Window *w = dynamic_cast< ::Window* > (this)) + w->SetComponentInterface (GetVCLXWindow ()); +} + +InPlug::InPlug (::Window *parent, char const* xml_file, char const* id, sal_uInt32 nId) + : Context (FIXME_set_parent (parent, xml_file)) + , layout::Window (new InPlugImpl (this, Context::GetPeerHandle (id, nId), this)) +{ + if (parent) + layout::Window::SetParent (parent); + if (::Window *w = dynamic_cast< ::Window* > (this)) + w->SetComponentInterface (GetVCLXWindow ()); +} + +void InPlug::ParentSet (Window *window) +{ + window->SetParent (dynamic_cast< ::Window* > (this)); + + /// FIXME: for standalone run of layout::SfxTabDialog + SetParent (window->GetParent ()); +} + +} // namespace layout diff --git a/toolkit/source/layout/vcl/wrapper.hxx b/toolkit/source/layout/vcl/wrapper.hxx new file mode 100644 index 000000000000..a9d5a6490c31 --- /dev/null +++ b/toolkit/source/layout/vcl/wrapper.hxx @@ -0,0 +1,153 @@ +/************************************************************************* + * + * 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$ + * + * $Revision$ + * + * 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 LAYOUT_VCL_WRAPPER_HXX +#define LAYOUT_VCL_WRAPPER_HXX + +#include <layout/layout.hxx> +#include <com/sun/star/uno/Reference.hxx> +#include <com/sun/star/awt/XDialog2.hpp> +#include <com/sun/star/awt/XFocusListener.hpp> +#include <com/sun/star/awt/XWindow.hpp> +#include <com/sun/star/awt/XVclWindowPeer.hpp> +#include <cppuhelper/implbase1.hxx> + +#include <cstring> + +namespace layout +{ + +namespace css = com::sun::star; + +class WindowImpl +{ +public: + Window *mpWindow; + Context *mpCtx; + css::uno::Reference< css::awt::XWindow > mxWindow; + css::uno::Reference< css::awt::XVclWindowPeer > mxVclPeer; + ::Window *mvclWindow; + bool bFirstTimeVisible; + + WindowImpl (Context *context, PeerHandle const &peer, Window *window); + virtual ~WindowImpl (); + + void wrapperGone(); + css::uno::Any getProperty (char const *name); + void setProperty (char const *name, css::uno::Any any); + void redraw (bool resize=false); + + // XFocusListener + virtual void SAL_CALL disposing (css::lang::EventObject const&) throw (css::uno::RuntimeException); +}; + +class ControlImpl : public WindowImpl + , public ::cppu::WeakImplHelper1 <css::awt::XFocusListener> +{ +public: + Link mGetFocusHdl; + Link mLoseFocusHdl; + + ControlImpl( Context *context, PeerHandle const& peer, Window *window ); + ~ControlImpl (); + + virtual void SetGetFocusHdl (Link const& link); + Link& GetGetFocusHdl (); + virtual void SetLoseFocusHdl (Link const& link); + Link& GetLoseFocusHdl (); + virtual void UpdateListening (Link const& link); + + // XFocusListener + virtual void SAL_CALL disposing (css::lang::EventObject const&) throw (css::uno::RuntimeException); + void SAL_CALL focusGained (css::awt::FocusEvent const& e) throw (css::uno::RuntimeException); + void SAL_CALL focusLost (css::awt::FocusEvent const& e) throw (css::uno::RuntimeException); +}; + +inline WindowImpl &Window::getImpl() const{ return *(static_cast< WindowImpl * >( mpImpl )); } + +// Helpers for defining boiler-plate constructors ... +// Could in-line in top-level but not with safe static_casts. +#define IMPL_GET_IMPL(t) \ + inline t##Impl &t::getImpl() const \ + { \ + return *(static_cast<t##Impl *>(mpImpl)); \ + } +#define IMPL_CONSTRUCTORS_BODY(t,par,unoName,body) \ + t::t( Context *context, const char *pId, sal_uInt32 nId ) \ + : par( new t##Impl( context, context->GetPeerHandle( pId, nId ), this ) ) \ + { \ + Window *parent = dynamic_cast<Window*> (context);\ + body;\ + if (parent)\ + SetParent (parent);\ + } \ + t::t( Window *parent, WinBits bits) \ + : par( new t##Impl( parent->getContext(), Window::CreatePeer( parent, bits, unoName ), this ) ) \ + { \ + body;\ + if ( parent )\ + SetParent (parent);\ + } \ + t::t( Window *parent, ResId const& res) \ + : par( new t##Impl( parent->getContext(), Window::CreatePeer( parent, 0, unoName ), this ) ) \ + { \ + body;\ + setRes (res);\ + if (parent)\ + SetParent (parent);\ + } +#define IMPL_CONSTRUCTORS(t,par,unoName) IMPL_CONSTRUCTORS_BODY(t, par, unoName, ) +#define IMPL_CONSTRUCTORS_2(t,win_par,other_par,unoName) \ + t::t( Context *context, const char *pId, sal_uInt32 nId ) \ + : win_par( new t##Impl( context, context->GetPeerHandle( pId, nId ), this ) ) \ + , other_par( new other_par##Impl( Window::GetPeer() ) ) \ + { \ + } \ + t::t( Window *parent, WinBits bits) \ + : win_par( new t##Impl( parent->getContext(), Window::CreatePeer( parent, bits, unoName ), this ) ) \ + , other_par( new other_par##Impl( Window::GetPeer() ) ) \ + { \ + } + +#define IMPL_IMPL(t, parent) \ + class t##Impl : public parent##Impl \ + { \ + public: \ + t##Impl( Context *context, PeerHandle const& peer, Window *window ) \ + : parent##Impl( context, peer, window ) \ + { \ + } \ + }; + + +} // namespace layout + +#endif /* LAYOUT_VCL_WRAPPER_HXX */ diff --git a/toolkit/source/vclcompat/wbutton.cxx b/toolkit/source/vclcompat/wbutton.cxx deleted file mode 100644 index 9268e5ee4770..000000000000 --- a/toolkit/source/vclcompat/wbutton.cxx +++ /dev/null @@ -1,582 +0,0 @@ -/************************************************************************* - * - * 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: wbutton.cxx,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. - * - ************************************************************************/ - -#include "wrapper.hxx" - -#include <com/sun/star/awt/PosSize.hpp> -#include <com/sun/star/awt/XActionListener.hpp> -#include <com/sun/star/awt/XButton.hpp> -#include <com/sun/star/awt/XCheckBox.hpp> -#include <com/sun/star/awt/XRadioButton.hpp> -#include <com/sun/star/graphic/XGraphic.hpp> -#include <cppuhelper/implbase1.hxx> -#include <toolkit/awt/vclxwindow.hxx> -#include <toolkit/helper/convert.hxx> -#include <vcl/button.hxx> -#include <vcl/event.hxx> -#include <vcl/msgbox.hxx> -#include <vcl/svapp.hxx> -#include <vcl/window.hxx> - -#include <list> - -#include "layout/layoutcore.hxx" - -using namespace ::com::sun::star; - -namespace layout -{ - -class ImageImpl -{ - public: - css::uno::Reference< css::graphic::XGraphic > mxGraphic; - ImageImpl( const char *pName ) - : mxGraphic( layoutimpl::loadGraphic( pName ) ) - { - if ( !mxGraphic.is() ) - { - DBG_ERROR1( "ERROR: failed to load image: `%s'\n", pName ); - } - } -}; - -Image::Image( const char *pName ) - : pImpl( new ImageImpl( pName ) ) -{ -} - -Image::~Image() -{ - delete pImpl; -} - -class ButtonImpl : public ControlImpl - , public ::cppu::WeakImplHelper1< awt::XActionListener > - , public ::cppu::WeakImplHelper1< awt::XItemListener > -{ - Link maClickHdl; -protected: - // we add toggle hooks here to cut on code - Link maToggleHdl; -public: - uno::Reference< awt::XButton > mxButton; - ButtonImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : ControlImpl( pCtx, xPeer, pWindow ) - , mxButton( xPeer, uno::UNO_QUERY ) - { - mxButton->addActionListener( this ); - } - - ~ButtonImpl() - { - } - - virtual void Click() { /* make me pure virtual? */ }; - - void SetClickHdl( const Link& rLink ) - { - maClickHdl = rLink; - if ( !rLink ) - mxButton->removeActionListener( this ); - else - mxButton->addActionListener( this ); - } - - virtual void SAL_CALL disposing( const css::lang::EventObject& /* Source */ ) - throw (css::uno::RuntimeException) - { mxButton.clear(); } - - virtual void SAL_CALL actionPerformed( const css::awt::ActionEvent& /* rEvent */ ) - throw (css::uno::RuntimeException) - { - if ( !maClickHdl ) - Click(); - else - maClickHdl.Call( static_cast<Window *>( mpWindow ) ); - } - - virtual // HACK: doesn't need to be virtual... remove in future... - void SAL_CALL itemStateChanged( const css::awt::ItemEvent& /* rEvent */ ) - throw (css::uno::RuntimeException) - { - maToggleHdl.Call( static_cast<Window *>( mpWindow ) ); - } - - BOOL SetModeImage( css::uno::Reference< css::graphic::XGraphic > xGraph ) - { - setProperty( "Graphic", uno::Any( xGraph ) ); - return true; - } -}; - -void Button::SetText( const String& rStr ) -{ - if ( !getImpl().mxButton.is() ) - return; - getImpl().mxButton->setLabel( rStr ); -} - -void Button::SetClickHdl( const Link& rLink ) -{ - getImpl().SetClickHdl( rLink ); -} - -BOOL Button::SetModeImage( const Image& rImage ) -{ - return getImpl().SetModeImage( rImage.getImpl().mxGraphic ); -} - -void Button::SetImageAlign( ImageAlign eAlign ) -{ - getImpl().setProperty( "ImageAlign", uno::Any( (sal_Int16) eAlign ) ); -} - -void Button::Click() -{ -} - -DECL_GET_IMPL_IMPL( Button ); -DECL_CONSTRUCTOR_IMPLS( Button, Control, "button" ); - -class PushButtonImpl : public ButtonImpl -{ - public: - PushButtonImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : ButtonImpl( pCtx, xPeer, pWindow ) {} - - void SetToggleHdl( const Link& rLink ) - { - // XButton doesn't have an explicit event for Toggle. Anyway, it is a - // superset of the clicks: all clicks, and explicit toggles - maToggleHdl = rLink; - if ( !rLink ) - mxButton->removeActionListener( this ); - else - mxButton->addActionListener( this ); - } - - virtual void SAL_CALL actionPerformed( const css::awt::ActionEvent& rEvent ) - throw (css::uno::RuntimeException) - { - ButtonImpl::actionPerformed( rEvent ); - fireToggle(); - } - - inline void fireToggle() - { - maToggleHdl.Call( static_cast<Window *>( mpWindow ) ); - } -}; - -void PushButton::Check( BOOL bCheck ) -{ - getImpl().setProperty( "State", uno::Any( (sal_Int16) !!bCheck ) ); - // XButton doesn't have explicit toggle event - getImpl().fireToggle(); -} - -BOOL PushButton::IsChecked() const -{ - return !!( getImpl().getProperty( "State" ).get< sal_Int16 >() ); -} - -void PushButton::Toggle() -{ - Check( true ); -} - -void PushButton::SetToggleHdl( const Link& rLink ) -{ - getImpl().SetToggleHdl( rLink ); -} - -DECL_GET_IMPL_IMPL( PushButton ); -DECL_CONSTRUCTOR_IMPLS( PushButton, Button, "pushbutton" ); - - // HACK: put every radio button into a group :/ -static std::list< RadioButtonImpl*> mpRadioGroup; - -class RadioButtonImpl : public ButtonImpl -{ -public: - uno::Reference< awt::XRadioButton > mxRadioButton; - RadioButtonImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : ButtonImpl( pCtx, xPeer, pWindow ) - , mxRadioButton( xPeer, uno::UNO_QUERY ) - { - // TEMP: - mpRadioGroup.push_back( this ); - mxRadioButton->addItemListener( this ); - } - - ~RadioButtonImpl() - { - //mxRadioButton->removeItemListener( this ); - mpRadioGroup.pop_front(); - } - - void Check( BOOL bCheck ) - { - if ( !mxRadioButton.is() ) - return; - mxRadioButton->setState( !!bCheck ); - fireToggle(); - - if ( bCheck ) - unsetOthersGroup( this ); - } - - BOOL IsChecked() - { - if ( !mxRadioButton.is() ) - return FALSE; - return mxRadioButton->getState(); - } - - static void unsetOthersGroup( RadioButtonImpl* current ) - { - // set all others to false - for ( std::list< RadioButtonImpl*>::iterator i = mpRadioGroup.begin(); - i != mpRadioGroup.end(); i++ ) - { - if ( *i != current ) - ( *i )->Check( false ); - } - } - - void SetToggleHdl( const Link& rLink ) - { - maToggleHdl = rLink; -#if 0 - if ( !rLink ) - mxRadioButton->removeItemListener( this ); - else - mxRadioButton->addItemListener( this ); -#endif - } - - inline void fireToggle() - { - maToggleHdl.Call( static_cast<Window *>( mpWindow ) ); - } - -//HACK: temp - virtual void SAL_CALL itemStateChanged( const css::awt::ItemEvent& rEvent ) - throw (css::uno::RuntimeException) - { - if ( !!maToggleHdl ) - ButtonImpl::itemStateChanged( rEvent ); - - if ( IsChecked() ) - unsetOthersGroup( this ); - } -}; - -void RadioButton::Check( BOOL bCheck ) -{ - getImpl().Check( bCheck ); -} - -BOOL RadioButton::IsChecked() const -{ - return getImpl().IsChecked(); -} - -void RadioButton::SetToggleHdl( const Link& rLink ) -{ - getImpl().SetToggleHdl( rLink ); -} - -DECL_GET_IMPL_IMPL( RadioButton ); -#if 1 -DECL_CONSTRUCTOR_IMPLS( RadioButton, Button, "radiobutton" ); -#else //debugging aid -RadioButton::RadioButton( Context *pCtx, const char *pId, sal_uInt32 nId ) - : Button( new RadioButtonImpl( pCtx, pCtx->GetPeerHandle( pId, nId ), this ) ) -{ - printf( "%s: name=%s\n", __PRETTY_FUNCTION__, pId ); -} - -RadioButton::RadioButton( Window *pParent, WinBits nBits ) - : Button( new RadioButtonImpl( pParent->getContext(), Window::CreatePeer( pParent, nBits, "radiobutton" ), this ) ) -{ -} -#endif - -class CheckBoxImpl : public ButtonImpl -{ - public: - uno::Reference< awt::XCheckBox > mxCheckBox; - CheckBoxImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : ButtonImpl( pCtx, xPeer, pWindow ) - , mxCheckBox( xPeer, uno::UNO_QUERY ) {} - - void SetToggleHdl( const Link& rLink ) - { - maToggleHdl = rLink; - if ( !rLink ) - mxCheckBox->removeItemListener( this ); - else - mxCheckBox->addItemListener( this ); - } -}; - -void CheckBox::Check( BOOL bCheck ) -{ - if ( !getImpl().mxCheckBox.is() ) - return; - getImpl().mxCheckBox->setState( !!bCheck ); -} - -BOOL CheckBox::IsChecked() const -{ - if ( !getImpl().mxCheckBox.is() ) - return FALSE; - return getImpl().mxCheckBox->getState() != 0; -} - -void CheckBox::SetToggleHdl( const Link& rLink ) -{ - getImpl().SetToggleHdl( rLink ); -} - -DECL_GET_IMPL_IMPL( CheckBox ); -DECL_CONSTRUCTOR_IMPLS( CheckBox, Button, "checkbox" ); - -#define BUTTON_IMPL(t, parent, response) \ - class t##Impl : public parent##Impl \ - { \ - public: \ - t##Impl( Context *pCtx, PeerHandle const& xPeer, Window *pWindow ) \ - : parent##Impl( pCtx, xPeer, pWindow ) \ - { \ - } \ - void Click() \ - { \ - Dialog *d = static_cast<Dialog *>( mpCtx ); \ - d->EndDialog( response ); \ - } \ - } - -/* Common button types currently unavailable in OOo: */ -/* mpReset */ -/* mpApply */ -/* mpAction */ -#define RET_RESET 6 -#define RET_APPLY 7 -#define BUTTONID_RESET RET_RESET -#define BUTTONID_APPLY RET_APPLY - -BUTTON_IMPL( OKButton, PushButton, BUTTONID_OK ); -BUTTON_IMPL( CancelButton, PushButton, BUTTONID_CANCEL ); -BUTTON_IMPL( YesButton, PushButton, BUTTONID_YES ); -BUTTON_IMPL( NoButton, PushButton, BUTTONID_NO ); -BUTTON_IMPL( RetryButton, PushButton, BUTTONID_RETRY ); -BUTTON_IMPL( IgnoreButton, PushButton, BUTTONID_IGNORE ); -BUTTON_IMPL( ResetButton, PushButton, BUTTONID_RESET ); -BUTTON_IMPL( ApplyButton, PushButton, BUTTONID_APPLY ); /* Deprecated? */ -BUTTON_IMPL( HelpButton, PushButton, BUTTONID_HELP ); - -DECL_CONSTRUCTOR_IMPLS( OKButton, PushButton, "okbutton" ); -DECL_CONSTRUCTOR_IMPLS( CancelButton, PushButton, "cancelbutton" ); -DECL_CONSTRUCTOR_IMPLS( YesButton, PushButton, "yesbutton" ); -DECL_CONSTRUCTOR_IMPLS( NoButton, PushButton, "nobutton" ); -DECL_CONSTRUCTOR_IMPLS( RetryButton, PushButton, "retrybutton" ); -DECL_CONSTRUCTOR_IMPLS( IgnoreButton, PushButton, "ignorebutton" ); -DECL_CONSTRUCTOR_IMPLS( ResetButton, PushButton, "resetbutton" ); -DECL_CONSTRUCTOR_IMPLS( ApplyButton, PushButton, "applybutton" ); /* Deprecated? */ -DECL_CONSTRUCTOR_IMPLS( HelpButton, PushButton, "helpbutton" ); - -class AdvancedButtonImpl : public PushButtonImpl -{ -protected: - bool bAdvancedMode; - std::list< Window*> maAdvanced; - std::list< Window*> maSimple; - rtl::OUString mSimpleLabel; - rtl::OUString mAdvancedLabel; - - Window* Remove( std::list< Window*> lst, Window* w ) - { - for ( std::list< Window*>::iterator it = maAdvanced.begin(); - it != maAdvanced.end(); it++ ) - if ( *it == w ) - { - lst.erase( it ); - return *it; - } - return 0; - } - void redraw() - { - uno::Reference <awt::XWindow> ref( mxWindow, uno::UNO_QUERY ); - ::Window* window = VCLXWindow::GetImplementation( ref )->GetWindow(); - ::Window* parent = window->GetParent(); - - ::Rectangle r = Rectangle( parent->GetPosPixel(), - parent->GetSizePixel() ); - - parent->Invalidate( r, INVALIDATE_CHILDREN | INVALIDATE_NOCHILDREN ); - parent->SetPosSizePixel( 0, 0, r.nRight - r.nLeft, r.nBottom - r.nTop, - awt::PosSize::SIZE ); - } - -public: - AdvancedButtonImpl( Context *pCtx, PeerHandle const& xPeer, Window *pWindow ) - : PushButtonImpl( pCtx, xPeer, pWindow ) - , bAdvancedMode( false ) - // TODO: i18n - // Button::GetStandardText( BUTTON_ADVANCED ); - // Button::GetStandardText( BUTTON_SIMPLE ); - , mSimpleLabel( rtl::OUString::createFromAscii( "Advanced..." ) ) - , mAdvancedLabel( rtl::OUString::createFromAscii( "Simple..." ) ) - { - } - void Click() - { - bAdvancedMode = !bAdvancedMode; - if ( bAdvancedMode ) - advancedMode(); - else - simpleMode(); - } - void advancedMode() - { - // TODO: set symbol/image? - // SYMBOL_PAGEUP, SYMBOL_PAGEDOWN -#if 0 - // How to set images from here? - // XImageConsumer looks like a disaster - // Should move all this switching functionality to VCLXAdvancedButton? - /biek/home/janneke/vc/layout-cws/default_images/res/commandimagelist/ - sc_arrowshapes_down.png - sch_flowchartshapes.flowchart-extract.png - sch_flowchartshapes.flowchart-merge.png -#endif - mxButton->setLabel( mAdvancedLabel ); - for ( std::list< Window*>::iterator it = maAdvanced.begin(); - it != maAdvanced.end(); it++ ) - ( *it )->Show(); - for ( std::list< Window*>::iterator it = maSimple.begin(); - it != maSimple.end(); it++ ) - ( *it )->Hide(); - - redraw(); - } - - void simpleMode() - { - mxButton->setLabel( mSimpleLabel ); - for ( std::list< Window*>::iterator it = maAdvanced.begin(); - it != maAdvanced.end(); it++ ) - ( *it )->Hide(); - for ( std::list< Window*>::iterator it = maSimple.begin(); - it != maSimple.end(); it++ ) - ( *it )->Show(); - - redraw(); - } - void AddAdvanced( Window* w ) - { - maAdvanced.push_back( w ); - if ( !bAdvancedMode ) - w->Hide(); - } - void AddSimple( Window* w ) - { - maSimple.push_back( w ); - if ( bAdvancedMode ) - w->Hide(); - } - void RemoveAdvanced( Window* w ) - { - Remove( maAdvanced, w ); - } - void RemoveSimple( Window* w ) - { - Remove( maSimple, w ); - } -}; - -void AdvancedButton::AddAdvanced( Window* w ) -{ - getImpl().AddAdvanced( w ); -} - -void AdvancedButton::AddSimple( Window* w ) -{ - getImpl().AddSimple( w ); -} - -void AdvancedButton::RemoveAdvanced( Window* w ) -{ - getImpl().RemoveAdvanced( w ); -} - -void AdvancedButton::RemoveSimple( Window* w ) -{ - getImpl().RemoveSimple( w ); -} - -DECL_CONSTRUCTOR_IMPLS( AdvancedButton, PushButton, "advancedbutton" ); -DECL_GET_IMPL_IMPL( AdvancedButton ); - - -class MoreButtonImpl : public AdvancedButtonImpl -{ -public: - MoreButtonImpl( Context *pCtx, PeerHandle const& xPeer, Window *pWindow ) - : AdvancedButtonImpl( pCtx, xPeer, pWindow) - { - mAdvancedLabel = ::Button::GetStandardText( BUTTON_LESS ); - mSimpleLabel = ::Button::GetStandardText( BUTTON_MORE ); - } - void AddWindow( Window* w ) { AddAdvanced( w ); } - void RemoveWindow( Window* w ) { RemoveAdvanced( w ); } -}; - -// TODO -//BUTTON_IMPL( MoreButton, PushButton, 0 ); -DECL_CONSTRUCTOR_IMPLS( MoreButton, AdvancedButton, "morebutton" ); -DECL_GET_IMPL_IMPL( MoreButton ); - -void MoreButton::AddWindow( Window* w ) -{ - getImpl().AddWindow( w ); -} - -void MoreButton::RemoveWindow( Window* w ) -{ - getImpl().RemoveWindow( w ); -} - -} // namespace layout diff --git a/toolkit/source/vclcompat/wfield.cxx b/toolkit/source/vclcompat/wfield.cxx deleted file mode 100644 index 0d2284126e87..000000000000 --- a/toolkit/source/vclcompat/wfield.cxx +++ /dev/null @@ -1,627 +0,0 @@ -/************************************************************************* - * - * 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: wfield.cxx,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. - * - ************************************************************************/ - -#include "wrapper.hxx" - -#include <comphelper/processfactory.hxx> -#include <com/sun/star/awt/XMetricField.hpp> -#include <com/sun/star/awt/XCurrencyField.hpp> -#include <com/sun/star/awt/XTextComponent.hpp> -#include <com/sun/star/awt/XListBox.hpp> -#include <com/sun/star/awt/XComboBox.hpp> -#include <cppuhelper/implbase1.hxx> -#include <com/sun/star/awt/XActionListener.hpp> -#include <com/sun/star/awt/XItemListener.hpp> - -using namespace ::com::sun::star; - -namespace layout -{ - -class EditImpl : public ControlImpl, - public ::cppu::WeakImplHelper1< awt::XTextListener > -{ - Link maModifyHdl; -public: - uno::Reference< awt::XTextComponent > mxEdit; - EditImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : ControlImpl( pCtx, xPeer, pWindow ) - , mxEdit( xPeer, uno::UNO_QUERY ) - { - } - - virtual void SAL_CALL disposing( const css::lang::EventObject& /* Source */ ) - throw (css::uno::RuntimeException) - { - SetModifyHdl( Link() ); - mxEdit.clear(); - } - - void SetModifyHdl( const Link& rLink ) - { - if ( !mxEdit.is() ) - return; - maModifyHdl = rLink; - if ( !rLink ) - mxEdit->removeTextListener( this ); - else - mxEdit->addTextListener( this ); - } - - void SAL_CALL textChanged( const css::awt::TextEvent& /* rEvent */ ) - throw (css::uno::RuntimeException) - { - maModifyHdl.Call( mpWindow ); - } -}; - -void Edit::SetText( const XubString& rStr ) const -{ - if ( !getImpl().mxEdit.is() ) - return; - getImpl().mxEdit->setText( rStr ); -} - -XubString Edit::GetText() const -{ - if ( !getImpl().mxEdit.is() ) - return XubString(); - return XubString( getImpl().mxEdit->getText()); -} - -void Edit::SetModifyHdl( const Link& rLink ) -{ - getImpl().SetModifyHdl( rLink ); -} - -DECL_CONSTRUCTOR_IMPLS( Edit, Control, "edit" ); -DECL_GET_IMPL_IMPL( Edit ); - -// Window/Control/Edit/MultiLineEdit -class MultiLineEditImpl : public EditImpl -{ -public: - MultiLineEditImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : EditImpl( pCtx, xPeer, pWindow ) - { - } -}; - -DECL_CONSTRUCTOR_IMPLS( MultiLineEdit, Edit, "multilineedit" ); -DECL_GET_IMPL_IMPL( MultiLineEdit ); - -// Window/Control/Edit/SpinField -class SpinFieldImpl : public EditImpl -{ -public: - SpinFieldImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : EditImpl( pCtx, xPeer, pWindow ) - { - } -}; - -DECL_CONSTRUCTOR_IMPLS( SpinField, Edit, "spinfield" ); - -// Window/Control/Edit/SpinField/NumericField -class NumericFieldImpl : public SpinFieldImpl -{ -public: - NumericFieldImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : SpinFieldImpl( pCtx, xPeer, pWindow ) - { - } -}; - -// Window/Control/Edit/SpinField/MetricField -class MetricFieldImpl : public SpinFieldImpl -{ -public: - MetricFieldImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : SpinFieldImpl( pCtx, xPeer, pWindow ) - { - } -}; - -DECL_GET_IMPL_IMPL( SpinField ); -DECL_GET_IMPL_IMPL( NumericField ); -DECL_GET_IMPL_IMPL( MetricField ); - -// FormatterBase -class FormatterBaseImpl -{ -protected: - PeerHandle mxPeer; -public: - explicit FormatterBaseImpl( const PeerHandle &xPeer ) - : mxPeer( xPeer ) - { - }; -}; - -class NumericFormatterImpl : public FormatterBaseImpl -{ -public: - uno::Reference< awt::XCurrencyField > mxField; - explicit NumericFormatterImpl( const PeerHandle &xPeer ) - : FormatterBaseImpl( xPeer ) - , mxField( xPeer, uno::UNO_QUERY ) - { - } - - // FIXME: burn that CPU ! cut/paste from vclxwindows.cxx - double valueToDouble( sal_Int64 nValue ) - { - sal_Int16 nDigits = mxField->getDecimalDigits(); - double n = (double)nValue; - for ( sal_uInt16 d = 0; d < nDigits; d++ ) - n /= 10; - return n; - } // FIXME: burn that CPU ! cut/paste from vclxwindows.cxx - sal_Int64 doubleToValue( double nValue ) - { - sal_Int16 nDigits = mxField->getDecimalDigits(); - double n = nValue; - for ( sal_uInt16 d = 0; d < nDigits; d++ ) - n *= 10; - return (sal_Int64) n; - } -}; - -class MetricFormatterImpl : public FormatterBaseImpl -{ -public: - uno::Reference< awt::XMetricField > mxField; - explicit MetricFormatterImpl( const PeerHandle &xPeer ) - : FormatterBaseImpl( xPeer ) - , mxField( xPeer, uno::UNO_QUERY ) - { - } -}; - -// NumericFormatter - -NumericFormatter::NumericFormatter( FormatterBaseImpl *pImpl ) - : FormatterBase( pImpl ) -{ -} - -NumericFormatterImpl& NumericFormatter::getFormatImpl() const -{ - return *( static_cast<NumericFormatterImpl *>( mpFormatImpl ) ); -} - -#define SET_IMPL(vclmethod, idlmethod) \ - void NumericFormatter::vclmethod( sal_Int64 nValue ) \ - { \ - if ( !getFormatImpl().mxField.is() ) \ - return; \ - getFormatImpl().mxField->idlmethod( getFormatImpl().valueToDouble( nValue ) ); \ - } - -SET_IMPL( SetMin, setMin ) -SET_IMPL( SetMax, setMax ) -SET_IMPL( SetLast, setLast ) -SET_IMPL( SetFirst, setFirst ) -SET_IMPL( SetValue, setValue ) -SET_IMPL( SetSpinSize, setSpinSize ) - -sal_Int64 NumericFormatter::GetValue() const -{ - if ( !getFormatImpl().mxField.is() ) - return 0; - return getFormatImpl().doubleToValue( getFormatImpl().mxField->getValue() ); -} - -#undef SET_IMPL - -DECL_CONSTRUCTOR_IMPLS_2( NumericField, SpinField, NumericFormatter, "numericfield" ); - -// MetricFormatter - -MetricFormatter::MetricFormatter( FormatterBaseImpl *pImpl ) - : FormatterBase( pImpl ) -{ -} -MetricFormatterImpl& MetricFormatter::getFormatImpl() const -{ return *( static_cast<MetricFormatterImpl *>( mpFormatImpl ) ); } - -#define MetricUnitVclToUno(a) ((sal_uInt16)(a)) - -#define SET_IMPL(vclmethod, idlmethod) \ - void MetricFormatter::vclmethod( sal_Int64 nValue, FieldUnit nUnit ) \ - { \ - if ( !getFormatImpl().mxField.is() ) \ - return; \ - getFormatImpl().mxField->idlmethod( nValue, MetricUnitVclToUno( nUnit ) ); \ - } - -SET_IMPL( SetMin, setMin ) -SET_IMPL( SetMax, setMax ) -SET_IMPL( SetLast, setLast ) -SET_IMPL( SetFirst, setFirst ) -SET_IMPL( SetValue, setValue ) - -#undef SET_IMPL - -void MetricFormatter::SetSpinSize( sal_Int64 nValue ) -{ - if ( !getFormatImpl().mxField.is() ) - return; - getFormatImpl().mxField->setSpinSize( nValue ); -} - -sal_Int64 MetricFormatter::GetValue( FieldUnit nUnit ) const -{ - if ( !getFormatImpl().mxField.is() ) - return 0; - return getFormatImpl().mxField->getValue( MetricUnitVclToUno( nUnit ) ); -} - -DECL_CONSTRUCTOR_IMPLS_2( MetricField, SpinField, MetricFormatter, "metricfield" ); - -// Window/Control/Edit/ComboBox -class ComboBoxImpl : public EditImpl, - public ::cppu::WeakImplHelper1< awt::XActionListener >, - public ::cppu::WeakImplHelper1< awt::XItemListener > -{ - Link maClickHdl, maSelectHdl; -public: - uno::Reference< awt::XComboBox > mxComboBox; - ComboBoxImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : EditImpl( pCtx, xPeer, pWindow ), - mxComboBox( xPeer, uno::UNO_QUERY ) - { - } - - USHORT InsertEntry(const XubString& rStr, USHORT nPos) - { - if ( nPos == COMBOBOX_APPEND ) - nPos = GetEntryCount(); - mxComboBox->addItem( rtl::OUString( rStr ), nPos ); - return nPos; - } - - void RemoveEntry( USHORT nPos ) - { - mxComboBox->removeItems( nPos, 1 ); - } - - USHORT GetEntryPos( const XubString& rStr ) const - { - uno::Sequence< rtl::OUString> aItems( mxComboBox->getItems() ); - rtl::OUString rKey( rStr ); - for ( unsigned int i = 0; aItems.getLength(); i++ ) - { - if ( aItems[ i ] == rKey ) - return sal::static_int_cast< USHORT >( i ); - } - return COMBOBOX_ENTRY_NOTFOUND; - } - - XubString GetEntry( USHORT nPos ) const - { - return XubString( mxComboBox->getItem( nPos ) ); - } - - USHORT GetEntryCount() const - { - return mxComboBox->getItemCount(); - } - - void SetClickHdl( const Link& rLink ) - { - maClickHdl = rLink; - if ( !rLink ) - mxComboBox->removeActionListener( this ); - else - mxComboBox->addActionListener( this ); - } - - void SetSelectHdl( const Link& rLink ) - { - maSelectHdl = rLink; - if ( !rLink ) - mxComboBox->removeItemListener( this ); - else - mxComboBox->addItemListener( this ); - } - - virtual void SAL_CALL disposing( const css::lang::EventObject& /* Source */ ) - throw (css::uno::RuntimeException) - { - mxComboBox.clear(); - } - - virtual void SAL_CALL actionPerformed( const css::awt::ActionEvent& /* rEvent */ ) - throw (css::uno::RuntimeException) - { - ComboBox* pComboBox = static_cast<ComboBox*>( mpWindow ); - if ( !pComboBox ) - return; - maClickHdl.Call( pComboBox ); - } - - virtual void SAL_CALL itemStateChanged( const css::awt::ItemEvent& /* rEvent */ ) - throw (css::uno::RuntimeException) - { - ComboBox* pComboBox = static_cast<ComboBox*>( mpWindow ); - if ( !pComboBox ) - return; - maSelectHdl.Call( pComboBox ); - } -}; - -USHORT ComboBox::InsertEntry( const XubString &rStr, USHORT nPos ) -{ - return getImpl().InsertEntry( rStr, nPos ); -} - -void ComboBox::RemoveEntry( const XubString& rStr ) -{ - getImpl().RemoveEntry( GetEntryPos( rStr ) ); -} - -void ComboBox::RemoveEntry( USHORT nPos ) -{ - getImpl().RemoveEntry( nPos ); -} - -void ComboBox::Clear() -{ - uno::Sequence< rtl::OUString> aNoItems; - getImpl().setProperty( "StringItemList", uno::Any( aNoItems ) ); -} - -USHORT ComboBox::GetEntryPos( const XubString& rStr ) const -{ - return getImpl().GetEntryPos( rStr ); -} - -XubString ComboBox::GetEntry( USHORT nPos ) const -{ - rtl::OUString rItem = getImpl().mxComboBox->getItem( nPos ); - return XubString( rItem ); -} - -USHORT ComboBox::GetEntryCount() const -{ - return getImpl().GetEntryCount(); -} - -void ComboBox::SetClickHdl( const Link& rLink ) -{ - getImpl().SetClickHdl( rLink ); -} - -void ComboBox::SetSelectHdl( const Link& rLink ) -{ - getImpl().SetSelectHdl( rLink ); -} - -DECL_CONSTRUCTOR_IMPLS( ComboBox, Edit, "combobox" ); -DECL_GET_IMPL_IMPL( ComboBox ); - -// Window/Control/ListBox -class ListBoxImpl : public ControlImpl, - public ::cppu::WeakImplHelper1< awt::XActionListener >, - public ::cppu::WeakImplHelper1< awt::XItemListener > -{ - Link maClickHdl, maSelectHdl; -public: - uno::Reference< awt::XListBox > mxListBox; - ListBoxImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : ControlImpl( pCtx, xPeer, pWindow ), - mxListBox( xPeer, uno::UNO_QUERY ) - { - } - - USHORT InsertEntry(const XubString& rStr, USHORT nPos) - { - if ( nPos == LISTBOX_APPEND ) - nPos = mxListBox->getItemCount(); - mxListBox->addItem( rtl::OUString( rStr ), nPos ); - return nPos; - } - - void RemoveEntry( USHORT nPos ) - { - mxListBox->removeItems( nPos, 1 ); - } - - USHORT RemoveEntry(const XubString& rStr, USHORT nPos) - { - if ( nPos == LISTBOX_APPEND ) - nPos = mxListBox->getItemCount(); - mxListBox->addItem( rtl::OUString( rStr ), nPos ); - return nPos; - } - - USHORT GetEntryPos( const XubString& rStr ) const - { - uno::Sequence< rtl::OUString> aItems( mxListBox->getItems() ); - rtl::OUString rKey( rStr ); - for ( unsigned int i = 0; aItems.getLength(); i++ ) - { - if ( aItems[ i ] == rKey ) - return sal::static_int_cast< USHORT >( i ); - } - return LISTBOX_ENTRY_NOTFOUND; - } - - XubString GetEntry( USHORT nPos ) const - { - return mxListBox->getItem( nPos ); - } - - USHORT GetEntryCount() const - { - return mxListBox->getItemCount(); - } - - void SelectEntryPos( USHORT nPos, BOOL bSelect ) - { - mxListBox->selectItemPos( nPos, bSelect ); - } - - USHORT GetSelectEntryCount() const - { - return sal::static_int_cast< USHORT >( mxListBox->getSelectedItems().getLength() ); - } - - USHORT GetSelectEntryPos( USHORT nSelIndex ) const - { - USHORT nSelected = 0; - if ( mxListBox->isMutipleMode() ) - { - uno::Sequence< short > aItems( mxListBox->getSelectedItemsPos() ); - if ( nSelIndex < aItems.getLength() ) - nSelected = aItems[ nSelIndex ]; - } - else - nSelected = mxListBox->getSelectedItemPos(); - return nSelected; - } - - void SetClickHdl( const Link& rLink ) - { - maClickHdl = rLink; - if ( !rLink ) - mxListBox->removeActionListener( this ); - else - mxListBox->addActionListener( this ); - } - - void SetSelectHdl( const Link& rLink ) - { - maSelectHdl = rLink; - if ( !rLink ) - mxListBox->removeItemListener( this ); - else - mxListBox->addItemListener( this ); - } - - virtual void SAL_CALL disposing( const css::lang::EventObject& /* Source */ ) - throw (css::uno::RuntimeException) - { - mxListBox.clear(); - } - - void SAL_CALL actionPerformed( const css::awt::ActionEvent& /* rEvent */ ) - throw (css::uno::RuntimeException) - { - maClickHdl.Call( mpWindow ); - } - - void SAL_CALL itemStateChanged( const css::awt::ItemEvent& /* rEvent */ ) - throw (css::uno::RuntimeException) - { - ListBox* pListBox = static_cast<ListBox*>( mpWindow ); - if ( !pListBox ) - return; - maSelectHdl.Call( pListBox ); - } -}; - -USHORT ListBox::InsertEntry(const XubString& rStr, USHORT nPos) -{ - return getImpl().InsertEntry(rStr, nPos); -} - -void ListBox::RemoveEntry( USHORT nPos ) -{ - return getImpl().RemoveEntry( nPos ); -} - -void ListBox::RemoveEntry( const XubString& rStr ) -{ - return getImpl().RemoveEntry( GetEntryPos( rStr ) ); -} - -void ListBox::Clear() -{ - uno::Sequence< rtl::OUString> aNoItems; - getImpl().setProperty( "StringItemList", uno::Any( aNoItems ) ); -} - -USHORT ListBox::GetEntryPos( const XubString& rStr ) const -{ - return getImpl().GetEntryPos( rStr ); -} - -XubString ListBox::GetEntry( USHORT nPos ) const -{ - return getImpl().GetEntry( nPos ); -} - -USHORT ListBox::GetEntryCount() const -{ - return getImpl().GetEntryCount(); -} - -void ListBox::SelectEntryPos( USHORT nPos, BOOL bSelect ) -{ - getImpl().SelectEntryPos( nPos, bSelect ); -} - -void ListBox::SelectEntry( const XubString& rStr, BOOL bSelect ) -{ - SelectEntryPos( GetEntryPos( rStr ), bSelect ); -} - -USHORT ListBox::GetSelectEntryCount() const -{ - return getImpl().GetSelectEntryCount(); -} - -USHORT ListBox::GetSelectEntryPos( USHORT nSelIndex ) const -{ - return getImpl().GetSelectEntryPos( nSelIndex ); -} - -XubString ListBox::GetSelectEntry( USHORT nSelIndex ) const -{ - return GetEntry( GetSelectEntryPos( nSelIndex ) ); -} - -void ListBox::SetSelectHdl( const Link& rLink ) -{ - getImpl().SetSelectHdl( rLink ); -} - -void ListBox::SetClickHdl( const Link& rLink ) -{ - getImpl().SetClickHdl( rLink ); -} - -DECL_CONSTRUCTOR_IMPLS( ListBox, Control, "listbox" ); -DECL_GET_IMPL_IMPL( ListBox ); - -} // namespace layout diff --git a/toolkit/source/vclcompat/wrapper.cxx b/toolkit/source/vclcompat/wrapper.cxx deleted file mode 100644 index 77e6c6c7fdb0..000000000000 --- a/toolkit/source/vclcompat/wrapper.cxx +++ /dev/null @@ -1,569 +0,0 @@ -/************************************************************************* - * - * 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: wrapper.cxx,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. - * - ************************************************************************/ - -#include "wrapper.hxx" - -#include <com/sun/star/graphic/XGraphic.hpp> -#include <com/sun/star/awt/XFixedText.hpp> -#include <com/sun/star/awt/XDialog2.hpp> -#include <com/sun/star/awt/XProgressBar.hpp> -#include <com/sun/star/awt/WindowAttribute.hpp> -#include <com/sun/star/awt/VclWindowPeerAttribute.hpp> -#include <comphelper/processfactory.hxx> -#include <vcl/window.hxx> -#include <toolkit/awt/vclxwindow.hxx> - -#include <layout/layoutcore.hxx> -#include <layout/factory.hxx> -#include <layout/root.hxx> -#include <vcl/image.hxx> - -using namespace ::com::sun::star; - -namespace layout -{ - -// Context bits ... -class ContextImpl -{ - uno::Reference< awt::XLayoutRoot > mxRoot; - uno::Reference< container::XNameAccess > mxNameAccess; - PeerHandle mxTopLevel; - -public: - ContextImpl( char const *pPath ) - { - uno::Sequence< uno::Any > aParams( 1 ); - aParams[0] <<= rtl::OUString( pPath, strlen( pPath ), RTL_TEXTENCODING_UTF8 ); - - uno::Reference< lang::XSingleServiceFactory > xFactory( - comphelper::createProcessComponent( - rtl::OUString::createFromAscii( "com.sun.star.awt.Layout" ) ), - uno::UNO_QUERY ); - if ( !xFactory.is() ) - { - throw uno::RuntimeException( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Layout engine not installed" ) ), - uno::Reference< uno::XInterface >() ); - } - mxRoot = uno::Reference< awt::XLayoutRoot >( - xFactory->createInstanceWithArguments( aParams ), - uno::UNO_QUERY ); - - mxNameAccess = uno::Reference< container::XNameAccess >( mxRoot, uno::UNO_QUERY ); - } - - ~ContextImpl() - { - } - - PeerHandle getByName( const rtl::OUString &rName ) - { - uno::Any val = mxNameAccess->getByName( rName ); - PeerHandle xRet; - val >>= xRet; - return xRet; - } - PeerHandle getTopLevel() { return mxTopLevel; } - void setTopLevel( PeerHandle xToplevel ) { mxTopLevel = xToplevel; } - PeerHandle getRoot() { return mxRoot; } -}; - -Context::Context( const char *pPath ) - : pImpl( new ContextImpl( pPath ) ) -{ -} -Context::~Context() -{ - delete pImpl; - pImpl = NULL; -} - -void Context::setToplevel( PeerHandle xToplevel ) -{ - pImpl->setTopLevel( xToplevel ); -} - -PeerHandle Context::getToplevel() -{ - return pImpl->getTopLevel(); -} -PeerHandle Context::getRoot() -{ - return pImpl->getRoot(); -} - -PeerHandle Context::GetPeerHandle( const char *pId, sal_uInt32 nId ) const -{ - PeerHandle xHandle; - xHandle = pImpl->getByName( rtl::OUString( pId, strlen( pId ), RTL_TEXTENCODING_UTF8 ) ); - if ( !xHandle.is() ) - { - DBG_ERROR1( "Failed to fetch widget '%s'", pId ); - } - - if ( nId != 0 ) - { - rtl::OString aStr = rtl::OString::valueOf( (sal_Int32) nId ); - xHandle = GetPeerHandle( aStr, 0 ); - } - return xHandle; -} - -// Window/Dialog -class DialogImpl : public WindowImpl -{ -public: - uno::Reference< awt::XDialog2 > mxDialog; - DialogImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : WindowImpl( pCtx, xPeer, pWindow ) - , mxDialog( xPeer, uno::UNO_QUERY ) - { - } -}; - -// Accessors -DECL_GET_IMPL_IMPL( Control ) -DECL_GET_IMPL_IMPL( Dialog ) - -Window::Window( WindowImpl *pImpl ) -: mpImpl( pImpl ) -{ -} - -Window::~Window() -{ - /* likely to be an UNO object - with floating references */ - mpImpl->wrapperGone(); - mpImpl = NULL; -} - -Context *Window::getContext() -{ - return this && mpImpl ? mpImpl->mpCtx : NULL; -} - -PeerHandle Window::GetPeer() -{ - if (!mpImpl) - return PeerHandle(); - return mpImpl->mxWindow; -} - -struct ToolkitVclPropsMap -{ - WinBits vclStyle; - long initAttr; - const char *propName; - - // the value to give the prop to enable/disable it -- not the most brilliant - // type declaration and storage, but does the work... properties are - // either a boolean or a short since they are either a directly wrappers for - // a WinBit, or aggregates related (like Align for WB_LEFT, _RIGHT and _CENTER). - bool isBoolean; - short enableProp, disableProp; -}; - -#define TYPE_BOOL true -#define TYPE_SHORT false -#define NOTYPE 0 -static const ToolkitVclPropsMap toolkitVclPropsMap[] = -{ - { WB_BORDER, awt::WindowAttribute::BORDER, "Border", TYPE_SHORT, 1, 0 }, - { WB_NOBORDER, awt::VclWindowPeerAttribute::NOBORDER, "Border", TYPE_SHORT, 0, 1 }, - { WB_SIZEABLE, awt::WindowAttribute::SIZEABLE, NULL, NOTYPE, 0, 0 }, - { WB_MOVEABLE, awt::WindowAttribute::MOVEABLE, NULL, NOTYPE, 0, 0 }, - { WB_CLOSEABLE, awt::WindowAttribute::CLOSEABLE, NULL, NOTYPE, 0, 0 }, - - { WB_HSCROLL, awt::VclWindowPeerAttribute::HSCROLL, NULL, NOTYPE, 0, 0 }, - { WB_VSCROLL, awt::VclWindowPeerAttribute::VSCROLL, NULL, NOTYPE, 0, 0 }, - { WB_LEFT, awt::VclWindowPeerAttribute::LEFT, "Align", TYPE_SHORT, 0, 0 }, - { WB_CENTER, awt::VclWindowPeerAttribute::CENTER, "Align", TYPE_SHORT, 1, 0 }, - { WB_RIGHT, awt::VclWindowPeerAttribute::RIGHT, "Align", TYPE_SHORT, 2, 0 }, - { WB_SPIN, awt::VclWindowPeerAttribute::SPIN, NULL, NOTYPE, 0, 0 }, - { WB_SORT, awt::VclWindowPeerAttribute::SORT, NULL, NOTYPE, 0, 0 }, - { WB_DROPDOWN, awt::VclWindowPeerAttribute::DROPDOWN, "Dropdown", TYPE_BOOL, 1, 0 }, - { WB_DEFBUTTON, awt::VclWindowPeerAttribute::DEFBUTTON, "DefaultButton", TYPE_BOOL, 1, 0 }, - { WB_READONLY, awt::VclWindowPeerAttribute::READONLY, NULL, NOTYPE, 0, 0 }, - { WB_CLIPCHILDREN, awt::VclWindowPeerAttribute::CLIPCHILDREN, NULL, NOTYPE, 0, 0 }, - { WB_GROUP, awt::VclWindowPeerAttribute::GROUP, NULL, NOTYPE, 0, 0 }, - - { WB_OK, awt::VclWindowPeerAttribute::OK, NULL, NOTYPE, 0, 0 }, - { WB_OK_CANCEL, awt::VclWindowPeerAttribute::OK_CANCEL, NULL, NOTYPE, 0, 0 }, - { WB_YES_NO, awt::VclWindowPeerAttribute::YES_NO, NULL, NOTYPE, 0, 0 }, - { WB_YES_NO_CANCEL, awt::VclWindowPeerAttribute::YES_NO_CANCEL, NULL, NOTYPE, 1, 0 }, - { WB_RETRY_CANCEL, awt::VclWindowPeerAttribute::RETRY_CANCEL, NULL, NOTYPE, 1, 0 }, - { WB_DEF_OK, awt::VclWindowPeerAttribute::DEF_OK, NULL, NOTYPE, 0, 0 }, - { WB_DEF_CANCEL, awt::VclWindowPeerAttribute::DEF_CANCEL, NULL, NOTYPE, 1, 0 }, - { WB_DEF_RETRY, awt::VclWindowPeerAttribute::DEF_RETRY, NULL, NOTYPE, 0, 0 }, - { WB_DEF_YES, awt::VclWindowPeerAttribute::DEF_YES, NULL, NOTYPE, 0, 0 }, - { WB_DEF_NO, awt::VclWindowPeerAttribute::DEF_NO, NULL, NOTYPE, 0, 0 }, - - { WB_AUTOHSCROLL, awt::VclWindowPeerAttribute::AUTOHSCROLL, "AutoHScroll", TYPE_BOOL, 1, 0 }, - { WB_AUTOVSCROLL, awt::VclWindowPeerAttribute::AUTOVSCROLL, "AutoVScroll", TYPE_BOOL, 1, 0 }, - - { WB_WORDBREAK, 0, "MultiLine", TYPE_BOOL, 1, 0 }, - { WB_NOPOINTERFOCUS, 0, "FocusOnClick", TYPE_BOOL, 1, 0 }, - { WB_TOGGLE, 0, "Toggle", TYPE_BOOL, 1, 0 }, - { WB_REPEAT, 0, "Repeat", TYPE_BOOL, 1, 0 }, - { WB_NOHIDESELECTION, 0, "HideInactiveSelection", TYPE_BOOL, 1, 0 }, -}; -#undef TYPE_BOOL -#undef TYPE_SHORT -#undef NOTYPE - -static const int toolkitVclPropsMapLen = - sizeof( toolkitVclPropsMap ) / sizeof( ToolkitVclPropsMap ); - -void Window::SetStyle( WinBits nStyle ) -{ - uno::Reference< awt::XVclWindowPeer > xPeer = mpImpl->mxVclPeer; - for ( int i = 0; i < toolkitVclPropsMapLen; i++ ) - { - if ( toolkitVclPropsMap[ i ].propName ) - { - short nValue; - if ( nStyle & toolkitVclPropsMap[ i ].vclStyle ) - nValue = toolkitVclPropsMap[ i ].enableProp; - else - nValue = toolkitVclPropsMap[ i ].disableProp; - uno::Any aValue; - if ( toolkitVclPropsMap[ i ].isBoolean ) - aValue = uno::makeAny( (bool) nValue ); - else - aValue = uno::makeAny( (short) nValue ); - mpImpl->setProperty( toolkitVclPropsMap[ i ].propName, aValue ); - } - } -} - -WinBits Window::GetStyle() -{ - uno::Reference< awt::XVclWindowPeer > xPeer = mpImpl->mxVclPeer; - WinBits ret = 0; - for ( int i = 0; i < toolkitVclPropsMapLen; i++ ) - { - if ( toolkitVclPropsMap[ i ].propName ) - { - short nValue = 0; - if ( toolkitVclPropsMap[ i ].isBoolean ) - { - bool bValue = false; - mpImpl->getProperty( toolkitVclPropsMap[ i ].propName ) >>= bValue; - nValue = bValue ? 1 : 0; - } - else - mpImpl->getProperty( toolkitVclPropsMap[ i ].propName ) >>= nValue; - if ( nValue == toolkitVclPropsMap[ i ].enableProp ) - ret |= toolkitVclPropsMap[i].vclStyle; - } - } - return ret; -} - -/* Unpleasant way to get an xToolkit pointer ... */ -uno::Reference< awt::XToolkit > getToolkit() -{ - static uno::Reference< awt::XToolkit > xToolkit; - if (!xToolkit.is()) - { - // Urgh ... - xToolkit = uno::Reference< awt::XToolkit >( - ::comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.Toolkit" ) ) ), - uno::UNO_QUERY ); - if ( !xToolkit.is() ) - throw uno::RuntimeException( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "failed to create toolkit!") ), - uno::Reference< uno::XInterface >() ); - } - return xToolkit; -} - -PeerHandle Window::CreatePeer( Window *pParent, WinBits nStyle, const char *pName) -{ - - long nWinAttrbs = 0; - for ( int i = 0; i < toolkitVclPropsMapLen; i++ ) - if ( nStyle & toolkitVclPropsMap[ i ].vclStyle ) - nWinAttrbs |= toolkitVclPropsMap[ i ].initAttr; - - return layoutimpl::createWidget( getToolkit(), pParent->GetPeer(), - rtl::OUString::createFromAscii( pName ), nWinAttrbs ); -} - -void Window::Enable( bool bEnable ) -{ - if ( !getImpl().mxWindow.is() ) - return; - getImpl().mxWindow->setEnable( bEnable ); -} - -void Window::Show( BOOL bVisible ) -{ - if ( !getImpl().mxWindow.is() ) - return; - getImpl().mxWindow->setVisible( bVisible ); -} - -void Window::GrabFocus() -{ - if ( !getImpl().mxWindow.is() ) - return; - getImpl().mxWindow->setFocus(); -} - -Dialog::Dialog( Window *pParent, const char *pXMLPath, const char *pId, sal_uInt32 nId ) - : Context( pXMLPath ) - , Window( new DialogImpl( this, Context::GetPeerHandle( pId, nId ), this ) ) -{ - if ( pParent ) - SetParent( pParent ); -} - -Dialog::Dialog( ::Window *pParent, const char *pXMLPath, const char *pId, sal_uInt32 nId ) - : Context( pXMLPath ) - , Window( new DialogImpl( this, Context::GetPeerHandle( pId, nId ), this ) ) -{ - if ( pParent ) - SetParent( pParent ); -} - -void Dialog::SetParent( ::Window *pParent ) -{ - uno::Reference <awt::XWindow> ref( GetPeer(), uno::UNO_QUERY ); - ::Window *window = VCLXWindow::GetImplementation( ref )->GetWindow(); - window->SetParent( pParent ); -} - -void Dialog::SetParent( Window *pParent ) -{ - uno::Reference <awt::XWindow> parentRef( pParent->GetPeer(), uno::UNO_QUERY ); - ::Window *parentWindow = VCLXWindow::GetImplementation( parentRef )->GetWindow(); - SetParent( parentWindow ); -} - -short Dialog::Execute() -{ - if ( !getImpl().mxDialog.is() ) - return -1; - return getImpl().mxDialog->execute(); -} - -void Dialog::EndDialog( long nResult ) -{ - if ( !getImpl().mxDialog.is() ) - return; - getImpl().mxDialog->endDialog( nResult ); -} - -void Dialog::SetText( const String& rStr ) -{ - if ( !getImpl().mxDialog.is() ) - return; - getImpl().mxDialog->setTitle( rStr ); -} - -class FixedLineImpl : public ControlImpl -{ -public: - FixedLineImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : ControlImpl( pCtx, xPeer, pWindow ) - { - } -}; - -DECL_CONSTRUCTOR_IMPLS( FixedLine, Control, "hfixedline" ); -DECL_GET_IMPL_IMPL( FixedLine ) - -bool FixedLine::IsEnabled() -{ - //FIXME - return true; -} - -class FixedTextImpl : public ControlImpl -{ -public: - uno::Reference< awt::XFixedText > mxFixedText; - FixedTextImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : ControlImpl( pCtx, xPeer, pWindow ) - , mxFixedText( xPeer, uno::UNO_QUERY ) - { - } - - virtual void SAL_CALL disposing( const css::lang::EventObject& /* Source */ ) - throw (css::uno::RuntimeException) - { - mxFixedText.clear(); - } -}; - -DECL_CONSTRUCTOR_IMPLS( FixedText, Control, "fixedtext" ); -DECL_GET_IMPL_IMPL( FixedText ) - -void FixedText::SetText( const String& rStr ) -{ - if ( !getImpl().mxFixedText.is() ) - return; - getImpl().mxFixedText->setText( rStr ); -} - -class FixedInfoImpl : public FixedTextImpl -{ -public: - FixedInfoImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : FixedTextImpl( pCtx, xPeer, pWindow ) - { - } -}; - -DECL_CONSTRUCTOR_IMPLS( FixedInfo, FixedText, "fixedinfo" ); -DECL_GET_IMPL_IMPL( FixedInfo ); - -class ProgressBarImpl : public ControlImpl -{ -public: - uno::Reference< awt::XProgressBar > mxProgressBar; - ProgressBarImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : ControlImpl( pCtx, xPeer, pWindow ) - , mxProgressBar( xPeer, uno::UNO_QUERY ) - { - } - - virtual void SAL_CALL disposing( const css::lang::EventObject& /* Source */ ) - throw (css::uno::RuntimeException) - { - mxProgressBar.clear(); - } -}; - - -class FixedImageImpl: public ControlImpl -{ -public: - uno::Reference< graphic::XGraphic > mxGraphic; - FixedImageImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow) -// const char *pName ) - : ControlImpl( pCtx, xPeer, pWindow ) - //, mxGraphic( layoutimpl::loadGraphic( pName ) ) - , mxGraphic( xPeer, uno::UNO_QUERY ) - { - if ( !mxGraphic.is() ) - { - DBG_ERROR( "ERROR: failed to load image: `%s'" /*, pName*/ ); - } -#if 0 - else - getImpl().mxGraphic->...(); -#endif - } -}; - -DECL_CONSTRUCTOR_IMPLS( FixedImage, Control, "fixedimage" ); -DECL_GET_IMPL_IMPL( FixedImage ) - -void FixedImage::setImage( ::Image const& i ) -{ - (void) i; - if ( !getImpl().mxGraphic.is() ) - return; - //FIXME: hack moved to proplist - //getImpl().mxGraphic = -} - -#if 0 - - FixedImage::FixedImage( const char *pName ) - : pImpl( new FixedImageImpl( pName ) ) -{ -} - -FixedImage::~FixedImage() -{ - delete pImpl; -} - -#endif - - -DECL_CONSTRUCTOR_IMPLS( ProgressBar, Control, "ProgressBar" ); -#if 0 -ProgressBar::ProgressBar( Context *pCtx, const char *pId, sal_uInt32 nId ) - : Control( new ProgressBarImpl( pCtx, pCtx->GetPeerHandle( pId, nId ), this ) ) -{ -} -ProgressBar::ProgressBar( Window *pParent, WinBits nBits) -// : Control( new ProgressBarImpl( pParent->getContext(), Window::CreatePeer( pParent, nBits, "ProgressBar" ), this ) ) - : Control( new ProgressBarImpl( pParent->getContext(), Window::CreatePeer( pParent, nBits, "progressbar" ), this ) ) -{ -} -#endif - -DECL_GET_IMPL_IMPL( ProgressBar ) - - -void ProgressBar::SetForegroundColor( css::util::Color color ) -{ - if ( !getImpl().mxProgressBar.is() ) - return; - getImpl().mxProgressBar->setForegroundColor( color ); -} - -void ProgressBar::SetBackgroundColor( css::util::Color color ) -{ - if ( !getImpl().mxProgressBar.is() ) - return; - getImpl().mxProgressBar->setBackgroundColor( color ); -} - -void ProgressBar::SetValue( sal_Int32 i ) -{ - if ( !getImpl().mxProgressBar.is() ) - return; - getImpl().mxProgressBar->setValue( i ); -} - -void ProgressBar::SetRange( sal_Int32 min, sal_Int32 max ) -{ - if ( !getImpl().mxProgressBar.is() ) - return; - getImpl().mxProgressBar->setRange( min, max ); -} - -sal_Int32 ProgressBar::GetValue() -{ - if ( !getImpl().mxProgressBar.is() ) - return 0; - return getImpl().mxProgressBar->getValue(); -} - -} // namespace layout diff --git a/toolkit/source/vclcompat/wrapper.hxx b/toolkit/source/vclcompat/wrapper.hxx deleted file mode 100644 index 9135aa1148ce..000000000000 --- a/toolkit/source/vclcompat/wrapper.hxx +++ /dev/null @@ -1,136 +0,0 @@ -/************************************************************************* - * - * 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: wrapper.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 WRAPPER_HXX -#define WRAPPER_HXX - -#include <layout/layout.hxx> -#include <com/sun/star/uno/Reference.hxx> -#include <com/sun/star/awt/XWindow.hpp> -#include <com/sun/star/awt/XVclWindowPeer.hpp> - -#include <cstring> - -namespace css = com::sun::star; - -namespace layout -{ - -class WindowImpl -{ - public: - Window *mpWindow; - Context *mpCtx; - css::uno::Reference< css::awt::XWindow > mxWindow; - css::uno::Reference< css::awt::XVclWindowPeer > mxVclPeer; - - WindowImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : mpWindow ( pWindow ) - , mpCtx ( pCtx ) - , mxWindow ( xPeer, css::uno::UNO_QUERY ) - , mxVclPeer( xPeer, css::uno::UNO_QUERY ) - { - } - - virtual ~WindowImpl() - { - } - - void wrapperGone() - { - mpWindow = NULL; - mpCtx = NULL; - if ( mxWindow.is() ) - { - css::uno::Reference< css::lang::XComponent > xComp( mxWindow, css::uno::UNO_QUERY ); - mxWindow.clear(); - if ( xComp.is() ) - xComp->dispose(); - } - } - - css::uno::Any getProperty( const char *pName ) - { - if ( !this || !mxVclPeer.is() ) - return css::uno::Any(); - return mxVclPeer->getProperty - ( rtl::OUString( pName, strlen( pName ), RTL_TEXTENCODING_ASCII_US ) ); - } - void setProperty( const char *pName, css::uno::Any aAny ) - { - if ( !this || !mxVclPeer.is() ) - return; - mxVclPeer->setProperty - ( rtl::OUString( pName, strlen( pName ), RTL_TEXTENCODING_ASCII_US ), aAny ); - } -}; - -class ControlImpl : public WindowImpl -{ - public: - ControlImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow ) - : WindowImpl( pCtx, xPeer, pWindow ) {} -}; - -inline WindowImpl &Window::getImpl() const -{ return *(static_cast< WindowImpl * >( mpImpl )); } - -// Helpers for defining boiler-plate constructors ... -// Could in-line in top-level but not with safe static_casts. -#define DECL_GET_IMPL_IMPL(t) \ - inline t##Impl &t::getImpl() const \ - { \ - return *(static_cast<t##Impl *>(mpImpl)); \ - } -#define DECL_CONSTRUCTOR_IMPLS(t,par,unoName) \ - t::t( Context *pCtx, const char *pId, sal_uInt32 nId ) \ - : par( new t##Impl( pCtx, pCtx->GetPeerHandle( pId, nId ), this ) ) \ - { \ - } \ - t::t( Window *pParent, WinBits nBits) \ - : par( new t##Impl( pParent->getContext(), Window::CreatePeer( pParent, nBits, unoName ), this ) ) \ - { \ - } -#define DECL_CONSTRUCTOR_IMPLS_2(t,win_par,other_par,unoName) \ - t::t( Context *pCtx, const char *pId, sal_uInt32 nId ) \ - : win_par( new t##Impl( pCtx, pCtx->GetPeerHandle( pId, nId ), this ) ) \ - , other_par( new other_par##Impl( Window::GetPeer() ) ) \ - { \ - } \ - t::t( Window *pParent, WinBits nBits ) \ - : win_par( new t##Impl( pParent->getContext(), Window::CreatePeer( pParent, nBits, unoName ), this ) ) \ - , other_par( new other_par##Impl( Window::GetPeer() ) ) \ - { \ - } - -} // namespace layout - -#endif // WRAPPER_HXX diff --git a/toolkit/src2xml/source/boxer.py b/toolkit/src2xml/source/boxer.py index c697ec8f1c52..1b716d757299 100644 --- a/toolkit/src2xml/source/boxer.py +++ b/toolkit/src2xml/source/boxer.py @@ -9,11 +9,11 @@ class DlgLayoutBuilder(object): def addWidget (self, elem): x, y = int(elem.getAttr('x')), int(elem.getAttr('y')) - if self.rows.has_key(y): - self.rows[y][x] = elem - else: - self.rows[y] = {} - self.rows[y][x] = elem + self.rows[y] = self.rows.get (y, {}) + while self.rows[y].has_key(x): + y += 1 + self.rows[y] = self.rows.get (y, {}) + self.rows[y][x] = elem def build (self): root = Element('vbox') @@ -53,6 +53,8 @@ class Boxer(object): newnode = Element(dlgnode.name) newnode.clone(dlgnode) + if dlgnode.name == 'string': + return newnode newnode.setAttr("xmlns", "http://openoffice.org/2007/layout") newnode.setAttr("xmlns:cnt", "http://openoffice.org/2007/layout/container") mx = DlgLayoutBuilder(newnode) diff --git a/toolkit/src2xml/source/src2xml.py b/toolkit/src2xml/source/src2xml.py index a2a7714b963d..b03c5e61ede1 100644 --- a/toolkit/src2xml/source/src2xml.py +++ b/toolkit/src2xml/source/src2xml.py @@ -127,7 +127,6 @@ def convert (file_name, options): lexer.includeDirs = options.include_path lexer.stopOnHeader = options.stopOnHeader lexer.debugMacro = options.debug_macro -# lexer.debug = True if options.debug_lexer: lexer.debug = True lexer.tokenize() @@ -145,8 +144,8 @@ def convert (file_name, options): if options.debug_parser: parser.debug = True root = parser.parse() - print root.dump() - return + s = root.dump() + return s # Parse the tokens. root = parser.parse() @@ -174,13 +173,18 @@ def post_process (s): """Make output directly usable by layout module.""" s = re.sub ('(</?)([a-z]+)-([a-z]+)-([a-z]+)', r'\1\2\3\4', s) s = re.sub ('(</?)([a-z]+)-([a-z]+)', r'\1\2\3', s) - s = re.sub ('(<(radiobutton|(fixed(info|text)))[^>]*) text=', r'\1 label=', s) + s = re.sub ('(<(checkbox|(cancel|help|ignore|ok|push|more|no|radio|reset|retry|yes)button|(fixed(info|text)))[^>]*) text=', r'\1 label=', s) s = re.sub (' (height|width|x|y)="[0-9]*"', '', s) + s = re.sub (' (label|text|title)="', r' _\1="', s) + s = re.sub ('&([^m][^p]*[^;]*)', r'&\1', s) + s = re.sub (' hide="(TRUE|true|1)"', ' show="false"', s) s = s.replace ('<modaldialog', '<modaldialog sizeable="true"') s = s.replace (' rid=', ' id=') s = s.replace (' border="true"', ' has_border="true"') - s = s.replace (' def-button="true"', ' default="true"') + s = s.replace (' def-button="true"', ' defbutton="true"') + s = s.replace (' drop-down="', ' dropdown="') + s = s.replace (' tab-stop="', ' tabstop="') return s XML_HEADER = '''<?xml version="1.0" encoding="UTF-8"?> diff --git a/toolkit/uiconfig/layout/delzip b/toolkit/uiconfig/layout/delzip new file mode 100644 index 000000000000..7b4d68d70fca --- /dev/null +++ b/toolkit/uiconfig/layout/delzip @@ -0,0 +1 @@ +empty
\ No newline at end of file diff --git a/toolkit/uiconfig/layout/makefile.mk b/toolkit/uiconfig/layout/makefile.mk new file mode 100644 index 000000000000..f0fe9159fc04 --- /dev/null +++ b/toolkit/uiconfig/layout/makefile.mk @@ -0,0 +1,62 @@ +#************************************************************************* +# +# OpenOffice.org - a multi-platform office productivity suite +# +# $RCSfile$ +# +# $Revision$ +# +# last change: $Author$ $Date$ +# +# The Contents of this file are made available subject to +# the terms of GNU Lesser General Public License Version 2.1. +# +# +# GNU Lesser General Public License Version 2.1 +# ============================================= +# Copyright 2005 by Sun Microsystems, Inc. +# 901 San Antonio Road, Palo Alto, CA 94303, USA +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License version 2.1, as published by the Free Software Foundation. +# +# This library 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 for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, +# MA 02110-1301 USA +# +#************************************************************************* + +PRJ=../.. +PRJNAME=toolkit +TARGET=layout + +.INCLUDE : settings.mk + +.IF "$(ENABLE_LAYOUT)" == "TRUE" + +all: ALLTAR + +XML_FILES=\ + message-box.xml\ + tab-dialog.xml\ + +# + +.INCLUDE : layout.mk + +.ELSE # ENABLE_LAYOUT != TRUE +all .PHONY: +.ENDIF # ENABLE_LAYOUT != TRUE + +.INCLUDE : target.mk + +localize.sdf: + echo '#empty' | cat - > $@ + rm -f *-$@ diff --git a/toolkit/uiconfig/layout/message-box.xml b/toolkit/uiconfig/layout/message-box.xml new file mode 100644 index 000000000000..61305e443fa3 --- /dev/null +++ b/toolkit/uiconfig/layout/message-box.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated xml files are generated from this template by + transex3/layout/tralay. !--> + +<modaldialog xmlns="http://openoffice.org/2007/layout" + xmlns:cnt="http://openoffice.org/2007/layout/container" + id="message-box" _title="" optimumsize="true" + has_border="true" sizeable="true" moveable="true" closeable="true"> + <vbox border="5" spacing="5"> + <hbox border="5" spacing="20"> + <align cnt:expand="false" cnt:fill="true"> + <fixedimage id="FI_ERROR" cnt:expand="false" cnt:v-align="0.5" cnt:v-fill="0" graphic="res/commandimagelist/msgbox-error.png" /> + </align> + <align cnt:expand="false" cnt:fill="true"> + <fixedimage id="FI_INFO" cnt:expand="false" cnt:v-align="0.5" cnt:v-fill="0" graphic="res/commandimagelist/msgbox-info.png" /> + </align> + <align cnt:expand="false" cnt:fill="true"> + <fixedimage id="FI_QUERY" cnt:expand="false" cnt:v-align="0.5" cnt:v-fill="0" graphic="res/commandimagelist/msgbox-query.png" /> + </align> + <align cnt:expand="false" cnt:fill="true"> + <fixedimage id="FI_WARNING" cnt:expand="false" cnt:v-align="0.5" cnt:v-fill="0" graphic="res/commandimagelist/msgbox-warning.png" /> + </align> + <align cnt:expand="false" cnt:fill="true"> + <fixedtext id="FT_MESSAGE" _label="FT-LABEL" cnt:v-align="0.5" cnt:v-fill="0" /> + </align> + <flow/> + </hbox> + <dialogbuttonhbox border="0" spacing="5"> + <flow/> + <!-- deprecoted vcl/MsgBox compatibility !--> + <retrybutton id="BTN_RETRY" /> + <ignorebutton id="BTN_IGNORE" /> + + <yesbutton id="BTN_YES"/> + <cancelbutton id="BTN_CANCEL"/> + <helpbutton id="BTN_HELP"/> + <nobutton id="BTN_NO" xlabel="~Alternate"/> + </dialogbuttonhbox> + </vbox> +</modaldialog> diff --git a/toolkit/uiconfig/layout/tab-dialog.xml b/toolkit/uiconfig/layout/tab-dialog.xml new file mode 100644 index 000000000000..da75f03e9df5 --- /dev/null +++ b/toolkit/uiconfig/layout/tab-dialog.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<dialog xmlns="http://openoffice.org/2007/layout" + xmlns:cnt="http://openoffice.org/2007/layout/container" + _title="layout::TabDialog" optimumsize="true" + id="tab-dialog" + has_border="true" sizeable="true" moveable="true"> + <vbox spacing="5" border="5"> + <tabcontrol id="ID_TABCONTROL"/> + <dialogbuttonhbox border="5" spacing="5" cnt:expand="false"> + <flow/> + <okbutton defbutton="true" id="BTN_OK" show="false"/> + <pushbutton id="BTN_USER" _label="<User>" show="false"/> + <cancelbutton id="BTN_CANCEL" show="false"/> + <helpbutton id="BTN_HELP" show="false"/> + <resetbutton id="BTN_RESET" show="false"/> + <pushbutton id="BTN_BASEFMT" _label="<Base Format>" show="false"/> + </dialogbuttonhbox> + </vbox> +</dialog> diff --git a/toolkit/util/makefile.mk b/toolkit/util/makefile.mk index a52922f2bfe4..d6a1e5f15c65 100644 --- a/toolkit/util/makefile.mk +++ b/toolkit/util/makefile.mk @@ -54,17 +54,15 @@ LIB1FILES= $(SLB)$/awt.lib \ $(SLB)$/tree.lib \ $(SLB)$/controls.lib \ $(SLB)$/helper.lib\ - $(SLB)$/layoutcore.lib \ - $(SLB)$/vclcompat.lib + $(SLB)$/layout-core.lib \ + $(SLB)$/layout-vcl.lib SHL1TARGET= tk$(DLLPOSTFIX) SHL1IMPLIB= itk SHL1USE_EXPORTS=name SHL1STDLIBS=\ - $(VOSLIB) \ $(VCLLIB) \ - $(SOTLIB) \ $(UNOTOOLSLIB) \ $(TOOLSLIB) \ $(COMPHELPERLIB) \ diff --git a/toolkit/util/makefile.pmk b/toolkit/util/makefile.pmk index 8bb9f5d4bc28..720cb4b913fa 100644 --- a/toolkit/util/makefile.pmk +++ b/toolkit/util/makefile.pmk @@ -33,11 +33,8 @@ CDEFS += -DTOOLKIT_DLLIMPLEMENTATION VISIBILITY_HIDDEN=TRUE -# FIXME: sprinkle some TOOLKIT_DLLPUBLIC +CFLAGS+=-I$(PRJ)/source -CFLAGS+=-I$(PRJ)/inc/layout .IF "$(ENABLE_LAYOUT)" == "TRUE" -CFLAGS+=-DENABLE_LAYOUT=1 -DTEST_LAYOUT=1 -.ELSE -CFLAGS+=-DENABLE_LAYOUT=0 +CFLAGS+=-DTEST_LAYOUT=1 .ENDIF # ENABLE_LAYOUT == TRUE diff --git a/toolkit/workben/layout/.gitignore b/toolkit/workben/layout/.gitignore new file mode 100644 index 000000000000..142ba57c1444 --- /dev/null +++ b/toolkit/workben/layout/.gitignore @@ -0,0 +1,4 @@ +/de +/en-US +/nl +/ja
\ No newline at end of file diff --git a/toolkit/workben/layout/README b/toolkit/workben/layout/README new file mode 100644 index 000000000000..3b83bbfc00cd --- /dev/null +++ b/toolkit/workben/layout/README @@ -0,0 +1,43 @@ +Testing workbench and editor for Layout engine. + +* Configure using --enable-layout. + +* [d]make all + +* export OOO_INSTALL_PREFIX=$(pwd)/ooo-layout + +* [d]make install DESTDIR=$OOO_INSTALL_PREFIX + +* Compile test program in toolkit/workben/layout + + cd toolkit/workben/layout && dmake all + +* FIXME: New three layer install/rpath feature needs these workarounds +| +| test -d $OOO_INSTALL_PREFIX/openoffice.org3 && export OOO_PREFIX_BRAND=$OOO_INSTALL_PREFIX/openoffice.org3 || export OOO_PREFIX_BRAND=$OOO_INSTALL_PREFIX +| cp -f ../..$INPATH/lib/libtkx.so $OOO_PREFIX/openoffice.org/basis3.0/program +| export LD_LIBRARY_PATH=$OOO_PREFIX_BRAND/basis-link/program:$OOO_PREFIX_BRAND/basis-link/ure-link/lib +| +| (see source/layout/helper.cxx) + +* Run it on any .xml file + + ../../$INPATH/bin/test [--inst $OOO_INSTALL_PREFIX] zoom.xml + +* Run it for specific dialogs, see test.cxx + + ../../$INPATH/bin/test [--inst $OOO_INSTALL_PREFIX] --test zoom + ../../$INPATH/bin/test [--inst $OOO_INSTALL_PREFIX] --test wordcount + +* Or source refresh in workben/layout, do something like + + cd toolkit/workben/layout && . ./refresh [--inst $OOO_INSTALL_PREFIX] + +Integration into OOo: + +* After instaling, run + + cd ooo-cvs/program + ./soffice.bin + + Start a [Writer] document and choose View/Zoom or Extra/Word count. diff --git a/toolkit/workben/layout/TEST b/toolkit/workben/layout/TEST new file mode 100755 index 000000000000..8a04a6628da8 --- /dev/null +++ b/toolkit/workben/layout/TEST @@ -0,0 +1,11 @@ +#! /bin/sh +for d in $(cd ../../../../.. && pwd)/ooo-svn /usr/lib/ooo3/; do + if test -d $d; then + export OOO_INSTALL_PREFIX=$d + break + fi +done +export SAL_ALLOW_LINKOO_SYMLINKS=1 +test -d $OOO_INSTALL_PREFIX/openoffice.org3 && export OOO_PREFIX_BRAND=$OOO_INSTALL_PREFIX/openoffice.org3 || export OOO_PREFIX_BRAND=$OOO_INSTALL_PREFIX +export LD_LIBRARY_PATH="$OOO_PREFIX_BRAND/basis-link/program:$OOO_PREFIX_BRAND/basis-link/ure-link/lib" +../../unx*.pro/bin/test "$@" diff --git a/toolkit/workben/layout/align-test.xml b/toolkit/workben/layout/align-test.xml new file mode 100644 index 000000000000..60c34b4655a5 --- /dev/null +++ b/toolkit/workben/layout/align-test.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated xml files are generated from this template by + transex3/layout/tralay. !--> + +<dialog xmlns="http://openoffice.org/2007/layout" + xmlns:cnt="http://openoffice.org/2007/layout/container" + title="Align Test" optimumsize="true" has_border="true" sizeable="true" moveable="true"> + <vbox spacing="5" border="5"> + <fixedline/> + <hbox spacing="0" border="0"> + <vbox spacing="5" border="5"> + <fixedline _text="X" cnt:expand="false"/> + <pushbutton label="foo"/> + <pushbutton label="foo"/> + <pushbutton label="foo"/> + <pushbutton label="foo"/> + <pushbutton label="foo"/> + <pushbutton label="foo"/> + <pushbutton label="foo"/> + </vbox> + <vbox spacing="5" border="5"> + <fixedline _text="X" cnt:expand="false"/> + <pushbutton label="bar"/> + </vbox> + </hbox> + <fixedline/> + <min-size cnt:spacing="0" min-width="200"/> + </vbox> +</dialog> diff --git a/toolkit/workben/layout/boxtest.xml b/toolkit/workben/layout/boxtest.xml index 60b714d7d894..24ead837c057 100644 --- a/toolkit/workben/layout/boxtest.xml +++ b/toolkit/workben/layout/boxtest.xml @@ -4,6 +4,8 @@ xmlns:cnt="http://openoffice.org/2007/layout/container" title="Box Test" optimumsize="true" has_border="true" sizeable="true" moveable="true"> <vbox> + <table> + <vbox> <hbox cnt:expand="false" cnt:fill="false"> <pushbutton label="XML Left" cnt:expand="false" cnt:fill="false"/> @@ -28,5 +30,7 @@ <pushbutton label="XML Right" cnt:expand="true" cnt:fill="true"/> </hbox> + </vbox> + </table> </vbox> </dialog> diff --git a/toolkit/workben/layout/editor.cxx b/toolkit/workben/layout/editor.cxx index 0ef31560b69f..dd218de40da7 100644 --- a/toolkit/workben/layout/editor.cxx +++ b/toolkit/workben/layout/editor.cxx @@ -32,43 +32,41 @@ #include "editor.hxx" #undef NDEBUG + +/* #include <assert.h> #include <stdio.h> #include <string.h> +*/ -#include <vector> +#include <cassert> +#include <cstdio> +#include <cstring> #include <list> -#include <rtl/strbuf.hxx> -#include <rtl/ustrbuf.hxx> - -using namespace layout::css; - -using rtl::OUString; +#include <vector> -#include <com/sun/star/awt/XWindow.hpp> -#include <com/sun/star/awt/XWindowPeer.hpp> -#include <com/sun/star/awt/XVclWindowPeer.hpp> +#include <com/sun/star/awt/WindowAttribute.hpp> #include <com/sun/star/awt/XLayoutConstrains.hpp> #include <com/sun/star/awt/XLayoutContainer.hpp> -#include <com/sun/star/awt/WindowAttribute.hpp> - #include <com/sun/star/awt/XToolkit.hpp> +#include <com/sun/star/awt/XVclWindowPeer.hpp> +#include <com/sun/star/awt/XWindow.hpp> +#include <com/sun/star/awt/XWindowPeer.hpp> +#include <rtl/strbuf.hxx> +#include <rtl/ustrbuf.hxx> #include <toolkit/helper/property.hxx> - #include <vcl/lstbox.h> -// FIXME: -//#define FILEDLG +using namespace layout::css; -// somewhat of a hack unfortunately ... -#include "layout/layoutcore.hxx" -#include "root.hxx" -#include "helper.hxx" +using rtl::OUString; -//** Utilities +// FIXME: +//#define FILEDLG -#define OUSTRING_CSTR( str ) \ - rtl::OUStringToOString( str, RTL_TEXTENCODING_ASCII_US ).getStr() +#include <layout/core/helper.hxx> +#include <layout/core/root.hxx> +#include <layout/core/helper.hxx> // TODO: automatically generated struct WidgetSpec { @@ -94,19 +92,6 @@ static const WidgetSpec WIDGETS_SPECS[] = { }; const int WIDGETS_SPECS_LEN = sizeof (WIDGETS_SPECS) / sizeof (WidgetSpec); -// TEMP: from helper -namespace layoutimpl { - - typedef std::list< std::pair< rtl::OUString, rtl::OUString > > PropList; - - css::uno::Reference< css::awt::XLayoutConstrains > - createWidget( css::uno::Reference< css::awt::XToolkit > xToolkit, - css::uno::Reference< css::uno::XInterface > xParent, - const rtl::OUString &rName, long nProps, bool bToplevel ); - - uno::Any anyFromString (const rtl::OUString &value, const uno::Type &type); -} - using namespace layout; using namespace layoutimpl; namespace css = ::com::sun::star; @@ -136,9 +121,9 @@ static rtl::OUString anyToString (uno::Any value) bool val = value.get<sal_Bool>(); return rtl::OUString( val ? "1" : "0", 1, RTL_TEXTENCODING_ASCII_US ); /* if ( val ) - return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "true" ) ); - else - return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "false" ) );*/ + return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "true" ) ); + else + return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "false" ) );*/ } default: break; @@ -155,8 +140,9 @@ static inline double anyToDecimal (uno::Any value) /* XLayoutContainer/XLayoutConstrains are a bit of a hasle to work with. Let's wrap them. */ -class Widget : public layoutimpl::LayoutWidget { -friend class EditorRoot; +class Widget : public layoutimpl::LayoutWidget +{ + friend class EditorRoot; Widget *mpParent; std::vector< Widget *> maChildren; @@ -173,7 +159,7 @@ public: // to be used to wrap the root Widget( uno::Reference< awt::XLayoutConstrains > xImport, const char *label ) - : mpParent( 0 ), mbForeign( true ) + : mpParent( 0 ), mbForeign( true ) { mxWidget = xImport; mxContainer = uno::Reference< awt::XLayoutContainer >( mxWidget, uno::UNO_QUERY ); @@ -197,17 +183,17 @@ public: Widget( rtl::OUString id, uno::Reference< awt::XToolkit > xToolkit, uno::Reference< awt::XLayoutContainer > xParent, rtl::OUString unoName, long nAttrbs ) - : mpParent( 0 ), mbForeign( false ), mrId( id ), - mnOriAttrbs( nAttrbs ) + : mpParent( 0 ), mbForeign( false ), mrId( id ), + mnOriAttrbs( nAttrbs ) { - while ( xParent.is() && !uno::Reference< awt::XWindow >( xParent, uno::UNO_QUERY ).is() ) - { - uno::Reference< awt::XLayoutContainer > xContainer( xParent, uno::UNO_QUERY ); - assert( xContainer.is() ); - xParent = uno::Reference< awt::XLayoutContainer >( xContainer->getParent(), uno::UNO_QUERY ); - } + while ( xParent.is() && !uno::Reference< awt::XWindow >( xParent, uno::UNO_QUERY ).is() ) + { + uno::Reference< awt::XLayoutContainer > xContainer( xParent, uno::UNO_QUERY ); + assert( xContainer.is() ); + xParent = uno::Reference< awt::XLayoutContainer >( xContainer->getParent(), uno::UNO_QUERY ); + } - mxWidget = layoutimpl::createWidget( xToolkit, xParent, unoName, nAttrbs ); + mxWidget = WidgetFactory::createWidget( xToolkit, xParent, unoName, nAttrbs ); assert( mxWidget.is() ); mxContainer = uno::Reference< awt::XLayoutContainer >( mxWidget, uno::UNO_QUERY ); @@ -225,14 +211,14 @@ public: // TODO: disable editing of text fields, check boxes selected, etc... #if 0 uno::Reference< awt::XVclWindowPeer> xVclPeer( mxWidget, uno::UNO_QUERY ) - if ( xVclPeer.is() ) // XVclWindowPeer ignores missing / incorrect properties + if ( xVclPeer.is() ) // XVclWindowPeer ignores missing / incorrect properties //FIXME: it looks odd on widgets like NumericField seeing text which is deleted // when you interact with it... We can avoid it for those widgets, by doing a getProp // of "Text" and check if it is empty or not. - xVclPeer->setProperty( rtl::OUString::createFromAscii( "Text" ), - uno::makeAny( rtl::OUString::createFromAscii( "new widget" ) ) ); + xVclPeer->setProperty( rtl::OUString::createFromAscii( "Text" ), + uno::makeAny( rtl::OUString::createFromAscii( "new widget" ) ) ); #endif // store original properties @@ -365,9 +351,14 @@ public: { beans::Property prop = it.next(); rtl::OUString name( prop.Name ); - rtl::OUString value( pChild->getProperty( name, CONTAINER_PROPERTY ) ); - std::pair< rtl::OUString, rtl::OUString > pair( name, value ); - pChild->maOriChildProps.push_back( pair ); + try { + rtl::OUString value( pChild->getProperty( name, CONTAINER_PROPERTY ) ); + std::pair< rtl::OUString, rtl::OUString > pair( name, value ); + pChild->maOriChildProps.push_back( pair ); + } catch ( beans::UnknownPropertyException &rEx ) { + fprintf (stderr, "ERROR: widget reports that it has a property it cannot return: '%s' this normally means that someone screwed up their PROPERTY_SET_INFO macro usage.\n", + rtl::OUStringToOString (rEx.Message, RTL_TEXTENCODING_UTF8).getStr()); + } } } @@ -402,7 +393,7 @@ public: std::vector< Widget *> aChildChildren = pChild->maChildren; for ( std::vector< Widget *>::const_iterator it = aChildChildren.begin(); - it != aChildChildren.end(); it++ ) + it != aChildChildren.end(); it++ ) pChild->removeChild( *it ); for ( std::vector< Widget *>::const_iterator it = aChildChildren.begin(); @@ -410,10 +401,10 @@ public: if ( !addChild( *it ) ) { // failure for ( std::vector< Widget *>::const_iterator jt = aChildChildren.begin(); - jt != it; jt++ ) + jt != it; jt++ ) removeChild( *jt ); for ( std::vector< Widget *>::const_iterator jt = aChildChildren.begin(); - jt != aChildChildren.end(); jt++ ) + jt != aChildChildren.end(); jt++ ) pChild->addChild( *jt ); return false; } @@ -433,7 +424,7 @@ public: { int i = 0; for ( std::vector< Widget *>::const_iterator it = maChildren.begin(); - it != maChildren.end(); it++, i++ ) + it != maChildren.end(); it++, i++ ) if ( *it == pChild ) break; return i; @@ -507,7 +498,7 @@ public: case CONTAINER_PROPERTY: if ( mpParent ) rValue = anyToString( layoutimpl::prophlp::getProperty( - mpParent->mxContainer->getChildProperties( mxWidget ), rPropName ) ); + mpParent->mxContainer->getChildProperties( mxWidget ), rPropName ) ); break; case WINBITS_PROPERTY: // TODO @@ -554,7 +545,7 @@ public: int nPropIt; PropertyIterator( Widget *pWidget, PropertyKind rKind ) - : mrKind( rKind ), nPropIt( 0 ) + : mrKind( rKind ), nPropIt( 0 ) { switch ( rKind ) { @@ -596,10 +587,10 @@ public: beans::Property next() { /* rtl::OUString propName, propValue; - propName = maProps[ nPropIt ]; - propValue = getProperty( propName, mrKind, false); - nPropIt++; - return std::pair< rtl::OUString, rtl::OUString > propPair( propName, propValue );*/ + propName = maProps[ nPropIt ]; + propValue = getProperty( propName, mrKind, false); + nPropIt++; + return std::pair< rtl::OUString, rtl::OUString > propPair( propName, propValue );*/ return maProps[ nPropIt++ ]; } }; @@ -611,13 +602,13 @@ class EditorRoot : public layoutimpl::LayoutRoot { public: EditorRoot( const uno::Reference< lang::XMultiServiceFactory >& xFactory, Widget *pParent ) - : layoutimpl::LayoutRoot( xFactory ), mpParent( pParent ) + : layoutimpl::LayoutRoot( xFactory ), mpParent( pParent ) { } // generation virtual layoutimpl::LayoutWidget *create( rtl::OUString id, const rtl::OUString unoName, - long attrbs, uno::Reference< awt::XLayoutContainer > xParent ) + long attrbs, uno::Reference< awt::XLayoutContainer > xParent ) { if ( unoName.compareToAscii( "dialog" ) == 0 ) return mpParent; @@ -637,126 +628,126 @@ public: /* Working with the layout in 1D, as if it was a flat list. */ namespace FlatLayout { - Widget *next( Widget *pWidget ) - { - Widget *pNext; - pNext = pWidget->down(); - if ( pNext ) return pNext; - pNext = pWidget->next(); - if ( pNext ) return pNext; - for ( Widget *pUp = pWidget->up(); pUp != NULL; pUp = pUp->up() ) - if ( (pNext = pUp->next()) != NULL ) - return pNext; - return NULL; - } +Widget *next( Widget *pWidget ) +{ + Widget *pNext; + pNext = pWidget->down(); + if ( pNext ) return pNext; + pNext = pWidget->next(); + if ( pNext ) return pNext; + for ( Widget *pUp = pWidget->up(); pUp != NULL; pUp = pUp->up() ) + if ( (pNext = pUp->next()) != NULL ) + return pNext; + return NULL; +} /* - Widget *prev( Widget *pWidget ) - { - Widget *pPrev; - pPrev = pWidget->prev(); - if ( !pPrev ) - return pWidget->up(); - - Widget *pBottom = pPrev->down(); - if ( pBottom ) - { - while ( pBottom->down() || pBottom->next() ) - { - for ( Widget *pNext = pBottom->next(); pNext; pNext = pNext->next() ) - pBottom = pNext; - Widget *pDown = pBottom->down(); - if ( pDown ) - pBottom = pDown; - } - return pBottom; - } - return pPrev; - } + Widget *prev( Widget *pWidget ) + { + Widget *pPrev; + pPrev = pWidget->prev(); + if ( !pPrev ) + return pWidget->up(); + + Widget *pBottom = pPrev->down(); + if ( pBottom ) + { + while ( pBottom->down() || pBottom->next() ) + { + for ( Widget *pNext = pBottom->next(); pNext; pNext = pNext->next() ) + pBottom = pNext; + Widget *pDown = pBottom->down(); + if ( pDown ) + pBottom = pDown; + } + return pBottom; + } + return pPrev; + } */ - bool moveWidget( Widget *pWidget, bool up /*or down*/ ) - { - // Keep child parent&pos for in case of failure - Widget *pOriContainer = pWidget->up(); - unsigned int oriChildPos = pOriContainer->getChildPos( pWidget ); - - // Get parent&sibling before removing it, since relations get cut - Widget *pSibling = up ? pWidget->prev() : pWidget->next(); - Widget *pContainer = pWidget->up(); - if ( !pContainer ) - return false; +bool moveWidget( Widget *pWidget, bool up /*or down*/ ) +{ + // Keep child parent&pos for in case of failure + Widget *pOriContainer = pWidget->up(); + unsigned int oriChildPos = pOriContainer->getChildPos( pWidget ); + + // Get parent&sibling before removing it, since relations get cut + Widget *pSibling = up ? pWidget->prev() : pWidget->next(); + Widget *pContainer = pWidget->up(); + if ( !pContainer ) + return false; - // try to swap with parent or child - // We need to allow for this at least for the root node... - if ( !pSibling ) + // try to swap with parent or child + // We need to allow for this at least for the root node... + if ( !pSibling ) + { + if ( up ) + { + if ( pContainer->swapWithChild( pWidget ) ) + return true; + } + else { - if ( up ) - { - if ( pContainer->swapWithChild( pWidget ) ) - return true; - } - else - { // TODO: this is a nice feature, but we probably want to do it explicitely... #if 0 - if ( pWidget->down() && pWidget->swapWithChild( pWidget->down() ) ) - return true; + if ( pWidget->down() && pWidget->swapWithChild( pWidget->down() ) ) + return true; #endif - } } + } - pContainer->removeChild( pWidget ); - - // if has up sibling -- append to it, else swap with it - if ( pSibling ) - { - if ( pSibling->addChild( pWidget, up ? 0xffff : 0 ) ) - return true; + pContainer->removeChild( pWidget ); - unsigned int childPos = pContainer->getChildPos( pSibling ); - if ( pContainer->addChild( pWidget, childPos + (up ? 0 : 1) ) ) - return true; // should always be succesful - } - // go through parents -- try to get prepended to them - else - { - for ( ; pContainer && pContainer->up(); pContainer = pContainer->up() ) - { - unsigned int childPos = pContainer->up()->getChildPos( pContainer ); - if ( pContainer->up()->addChild( pWidget, childPos + (up ? 0 : 1) ) ) - return true; - } - } + // if has up sibling -- append to it, else swap with it + if ( pSibling ) + { + if ( pSibling->addChild( pWidget, up ? 0xffff : 0 ) ) + return true; - // failed -- try to get it to its old position - if ( !pOriContainer->addChild( pWidget, oriChildPos ) ) + unsigned int childPos = pContainer->getChildPos( pSibling ); + if ( pContainer->addChild( pWidget, childPos + (up ? 0 : 1) ) ) + return true; // should always be succesful + } + // go through parents -- try to get prepended to them + else + { + for ( ; pContainer && pContainer->up(); pContainer = pContainer->up() ) { - // a parent should never reject a child back. but if it ever - // happens, just kill it, we don't run an orphanate here ;P - delete pWidget; - return true; + unsigned int childPos = pContainer->up()->getChildPos( pContainer ); + if ( pContainer->up()->addChild( pWidget, childPos + (up ? 0 : 1) ) ) + return true; } - return false; } - // NOTE: root is considered to be number -1 - Widget *get( Widget *pRoot, int nb ) + // failed -- try to get it to its old position + if ( !pOriContainer->addChild( pWidget, oriChildPos ) ) { - Widget *it; - for ( it = pRoot; it != NULL && nb >= 0; it = next( it ) ) - nb--; - return it; + // a parent should never reject a child back. but if it ever + // happens, just kill it, we don't run an orphanate here ;P + delete pWidget; + return true; } + return false; +} - int get( Widget *pRoot, Widget *pWidget ) - { - int nRet = -1; - Widget *it; - for ( it = pRoot; it != NULL && it != pWidget; it = next( it ) ) - nRet++; - return nRet; - } +// NOTE: root is considered to be number -1 +Widget *get( Widget *pRoot, int nb ) +{ + Widget *it; + for ( it = pRoot; it != NULL && nb >= 0; it = next( it ) ) + nb--; + return it; +} + +int get( Widget *pRoot, Widget *pWidget ) +{ + int nRet = -1; + Widget *it; + for ( it = pRoot; it != NULL && it != pWidget; it = next( it ) ) + nRet++; + return nRet; +} } //** PropertiesList widget @@ -774,7 +765,7 @@ class PropertiesList : public layout::Table DECL_LINK( FlagToggledHdl, layout::CheckBox* ); AnyWidget( Widget *pWidget, rtl::OUString aPropName, Widget::PropertyKind aPropKind ) - : mpWidget( pWidget ), maPropName( aPropName ), maPropKind( aPropKind ) + : mpWidget( pWidget ), maPropName( aPropName ), maPropKind( aPropKind ) { mpFlag = 0; mbBlockFlagCallback = false; @@ -852,7 +843,7 @@ class PropertiesList : public layout::Table AnyEdit( Widget *pWidget, rtl::OUString aPropName, Widget::PropertyKind aPropKind, layout::Window *pWinParent ) - : AnyWidget( pWidget, aPropName, aPropKind ), layout::HBox( 0, false ), mpWinParent( pWinParent ) + : AnyWidget( pWidget, aPropName, aPropKind ), layout::HBox( 0, false ), mpWinParent( pWinParent ) { mpEdit = NULL; mpExpand = new layout::PushButton( pWinParent, WB_TOGGLE ); @@ -880,7 +871,7 @@ class PropertiesList : public layout::Table if ( mpEdit ) { text = mpEdit->GetText(); -printf("Remove mpEdit and expand\n"); + printf("Remove mpEdit and expand\n"); Remove( mpEdit ); Remove( mpExpand ); delete mpEdit; @@ -974,7 +965,7 @@ printf("Remove mpEdit and expand\n"); { AnyInteger( Widget *pWidget, rtl::OUString aPropName, Widget::PropertyKind aPropKind, Window *pWinParent ) - : AnyWidget( pWidget, aPropName, aPropKind ), NumericField( pWinParent, WB_SPIN|WB_BORDER ) + : AnyWidget( pWidget, aPropName, aPropKind ), NumericField( pWinParent, WB_SPIN|WB_BORDER ) { load(); SetModifyHdl( LINK( this, AnyInteger, ApplyPropertyHdl ) ); @@ -1003,7 +994,7 @@ printf("Remove mpEdit and expand\n"); { AnyFloat( Widget *pWidget, rtl::OUString aPropName, Widget::PropertyKind aPropKind, Window *pWinParent ) - : AnyInteger( pWidget, aPropName, aPropKind, pWinParent ) + : AnyInteger( pWidget, aPropName, aPropKind, pWinParent ) {} virtual void store() @@ -1016,7 +1007,7 @@ printf("Remove mpEdit and expand\n"); { AnyCheckBox( Widget *pWidget, rtl::OUString aPropName, Widget::PropertyKind aPropKind, layout::Window *pWinParent ) - : AnyWidget( pWidget, aPropName, aPropKind ), layout::CheckBox( pWinParent ) + : AnyWidget( pWidget, aPropName, aPropKind ), layout::CheckBox( pWinParent ) { // adding some whitespaces to make the hit area larger // SetText( String::CreateFromAscii( "" ) ); @@ -1060,7 +1051,7 @@ printf("Remove mpEdit and expand\n"); { AnyListBox( Widget *pWidget, rtl::OUString aPropName, Widget::PropertyKind aPropKind, Window *pWinParent ) - : AnyWidget( pWidget, aPropName, aPropKind ), layout::ListBox( pWinParent, WB_DROPDOWN ) + : AnyWidget( pWidget, aPropName, aPropKind ), layout::ListBox( pWinParent, WB_DROPDOWN ) { SetSelectHdl( LINK( this, AnyWidget, ApplyPropertyHdl ) ); } @@ -1084,7 +1075,7 @@ printf("Remove mpEdit and expand\n"); { AnyAlign( Widget *pWidget, rtl::OUString aPropName, Widget::PropertyKind aPropKind, Window *pWinParent ) - : AnyListBox( pWidget, aPropName, aPropKind, pWinParent ) + : AnyListBox( pWidget, aPropName, aPropKind, pWinParent ) { InsertEntry( XubString::CreateFromAscii( "Left" ) ); InsertEntry( XubString::CreateFromAscii( "Center" ) ); @@ -1100,7 +1091,7 @@ printf("Remove mpEdit and expand\n"); { AnyComboBox( Widget *pWidget, rtl::OUString aPropName, Widget::PropertyKind aPropKind, Window *pWinParent ) - : AnyWidget( pWidget, aPropName, aPropKind ), layout::ComboBox( pWinParent, WB_DROPDOWN ) + : AnyWidget( pWidget, aPropName, aPropKind ), layout::ComboBox( pWinParent, WB_DROPDOWN ) { SetModifyHdl( LINK( this, AnyComboBox, ApplyPropertyHdl ) ); } @@ -1124,7 +1115,7 @@ printf("Remove mpEdit and expand\n"); { AnyFontStyle( Widget *pWidget, rtl::OUString aPropName, Widget::PropertyKind aPropKind, Window *pWinParent ) - : AnyComboBox( pWidget, aPropName, aPropKind, pWinParent ) + : AnyComboBox( pWidget, aPropName, aPropKind, pWinParent ) { InsertEntry( XubString::CreateFromAscii( "Bold" ) ); InsertEntry( XubString::CreateFromAscii( "Italic" ) ); @@ -1138,71 +1129,71 @@ printf("Remove mpEdit and expand\n"); layout::CheckBox *mpFlag; AnyWidget *mpValue; - public: - PropertyEntry( layout::Window *pWinParent, AnyWidget *pAnyWidget ) + public: + PropertyEntry( layout::Window *pWinParent, AnyWidget *pAnyWidget ) + { + mpLabel = new layout::FixedText( pWinParent ); { - mpLabel = new layout::FixedText( pWinParent ); - { - // append ':' to aPropName - rtl::OUStringBuffer buf( pAnyWidget->maPropName ); - buf.append( sal_Unicode (':') ); - mpLabel->SetText( buf.makeStringAndClear() ); - } - mpValue = pAnyWidget; - mpFlag = new layout::CheckBox( pWinParent ); - mpFlag->SetToggleHdl( LINK( mpValue, AnyWidget, FlagToggledHdl ) ); - mpValue->mpFlag = mpFlag; + // append ':' to aPropName + rtl::OUStringBuffer buf( pAnyWidget->maPropName ); + buf.append( sal_Unicode (':') ); + mpLabel->SetText( buf.makeStringAndClear() ); } + mpValue = pAnyWidget; + mpFlag = new layout::CheckBox( pWinParent ); + mpFlag->SetToggleHdl( LINK( mpValue, AnyWidget, FlagToggledHdl ) ); + mpValue->mpFlag = mpFlag; + } - ~PropertyEntry() - { + ~PropertyEntry() + { #if DEBUG_PRINT fprintf(stderr, "REMOVING label, flag and value\n"); #endif - delete mpLabel; - delete mpFlag; - delete mpValue; - } + delete mpLabel; + delete mpFlag; + delete mpValue; + } - // Use this factory rather than the constructor -- check for NULL - static PropertyEntry *construct( Widget *pWidget, rtl::OUString aPropName, - Widget::PropertyKind aPropKind, sal_uInt16 nType, - layout::Window *pWinParent ) - { - AnyWidget *pAnyWidget; - switch (nType) { - case uno::TypeClass_STRING: - if ( aPropName.compareToAscii( "FontStyleName" ) == 0 ) - { - pAnyWidget = new AnyFontStyle( pWidget, aPropName, aPropKind, pWinParent ); - break; - } - pAnyWidget = new AnyEdit( pWidget, aPropName, aPropKind, pWinParent ); - break; - case uno::TypeClass_SHORT: - if ( aPropName.compareToAscii( "Align" ) == 0 ) - { - pAnyWidget = new AnyAlign( pWidget, aPropName, aPropKind, pWinParent ); - break; - } - // otherwise, treat as any other number... - case uno::TypeClass_LONG: - case uno::TypeClass_UNSIGNED_LONG: - pAnyWidget = new AnyInteger( pWidget, aPropName, aPropKind, pWinParent ); - break; - case uno::TypeClass_FLOAT: - case uno::TypeClass_DOUBLE: - pAnyWidget = new AnyFloat( pWidget, aPropName, aPropKind, pWinParent ); + // Use this factory rather than the constructor -- check for NULL + static PropertyEntry *construct( Widget *pWidget, rtl::OUString aPropName, + Widget::PropertyKind aPropKind, sal_uInt16 nType, + layout::Window *pWinParent ) + { + AnyWidget *pAnyWidget; + switch (nType) { + case uno::TypeClass_STRING: + if ( aPropName.compareToAscii( "FontStyleName" ) == 0 ) + { + pAnyWidget = new AnyFontStyle( pWidget, aPropName, aPropKind, pWinParent ); break; - case uno::TypeClass_BOOLEAN: - pAnyWidget = new AnyCheckBox( pWidget, aPropName, aPropKind, pWinParent ); + } + pAnyWidget = new AnyEdit( pWidget, aPropName, aPropKind, pWinParent ); + break; + case uno::TypeClass_SHORT: + if ( aPropName.compareToAscii( "Align" ) == 0 ) + { + pAnyWidget = new AnyAlign( pWidget, aPropName, aPropKind, pWinParent ); break; - default: - return NULL; - } - return new PropertyEntry( pWinParent, pAnyWidget ); + } + // otherwise, treat as any other number... + case uno::TypeClass_LONG: + case uno::TypeClass_UNSIGNED_LONG: + pAnyWidget = new AnyInteger( pWidget, aPropName, aPropKind, pWinParent ); + break; + case uno::TypeClass_FLOAT: + case uno::TypeClass_DOUBLE: + pAnyWidget = new AnyFloat( pWidget, aPropName, aPropKind, pWinParent ); + break; + case uno::TypeClass_BOOLEAN: + pAnyWidget = new AnyCheckBox( pWidget, aPropName, aPropKind, pWinParent ); + break; + default: + return NULL; } - }; + return new PropertyEntry( pWinParent, pAnyWidget ); + } + }; layout::Window *mpParentWindow; @@ -1249,12 +1240,12 @@ printf("Remove mpEdit and expand\n"); return true; } while ( min <= max ); return false; - } + } public: PropertiesList( layout::Dialog *dialog ) - : layout::Table( dialog, "properties-box" ) - , mpParentWindow( dialog ), mpSeparator( 0 ) + : layout::Table( dialog, "properties-box" ) + , mpParentWindow( dialog ), mpSeparator( 0 ) { } @@ -1318,7 +1309,7 @@ public: Container::Clear(); for ( std::list< PropertyEntry* >::iterator it = maPropertiesList.begin(); - it != maPropertiesList.end(); it++) + it != maPropertiesList.end(); it++) delete *it; maPropertiesList.clear(); @@ -1378,14 +1369,14 @@ IMPL_LINK( PropertiesList::PropertyEntry::AnyEdit, ExpandEditHdl, layout::PushBu class SortListBox { // For a manual sort ListBox; asks for a ListBox and Up/Down/Remove // buttons to wrap -DECL_LINK( ItemSelectedHdl, layout::ListBox* ); -DECL_LINK( UpPressedHdl, layout::Button* ); -DECL_LINK( DownPressedHdl, layout::Button* ); -DECL_LINK( RemovePressedHdl, layout::Button* ); -layout::PushButton *mpUpButton, *mpDownButton, *mpRemoveButton; + DECL_LINK( ItemSelectedHdl, layout::ListBox* ); + DECL_LINK( UpPressedHdl, layout::Button* ); + DECL_LINK( DownPressedHdl, layout::Button* ); + DECL_LINK( RemovePressedHdl, layout::Button* ); + layout::PushButton *mpUpButton, *mpDownButton, *mpRemoveButton; protected: -layout::ListBox *mpListBox; + layout::ListBox *mpListBox; virtual void upPressed( USHORT nPos ) { @@ -1431,8 +1422,8 @@ layout::ListBox *mpListBox; public: SortListBox( layout::ListBox *pListBox, layout::PushButton *pUpButton, layout::PushButton *pDownButton, layout::PushButton *pRemoveButton ) - : mpUpButton( pUpButton), mpDownButton( pDownButton), mpRemoveButton( pRemoveButton ), - mpListBox( pListBox ) + : mpUpButton( pUpButton), mpDownButton( pDownButton), mpRemoveButton( pRemoveButton ), + mpListBox( pListBox ) { mpListBox->SetSelectHdl( LINK( this, SortListBox, ItemSelectedHdl ) ); @@ -1516,10 +1507,10 @@ public: Widget *mpRootWidget; LayoutTree( layout::Dialog *dialog ) - : SortListBox( new layout::ListBox( dialog, "layout-tree" ), - new layout::PushButton( dialog, "layout-up-button" ), - new layout::PushButton( dialog, "layout-down-button" ), - new layout::PushButton( dialog, "layout-remove-button" ) ) + : SortListBox( new layout::ListBox( dialog, "layout-tree" ), + new layout::PushButton( dialog, "layout-up-button" ), + new layout::PushButton( dialog, "layout-down-button" ), + new layout::PushButton( dialog, "layout-remove-button" ) ) { layout::PeerHandle handle = dialog->GetPeerHandle( "preview-box" ); uno::Reference< awt::XLayoutConstrains > xWidget( handle, uno::UNO_QUERY ); @@ -1617,7 +1608,7 @@ public: for ( int kind = 0; kind < 2; kind++ ) { Widget::PropertyKind wKind = kind == 0 ? Widget::WINDOW_PROPERTY - : Widget::CONTAINER_PROPERTY; + : Widget::CONTAINER_PROPERTY; Widget::PropertyIterator it( i, wKind ); while ( it.hasNext() ) { @@ -1629,16 +1620,16 @@ public: if ( prop.Type.getTypeClass() == uno::TypeClass_BOOLEAN ) { if ( value.compareToAscii( "0" ) ) - value = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("false") ); + value = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("false") ); else - value = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("true") ); + value = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("true") ); } if ( value.getLength() > 0 ) printf("%s%s=\"%s\" ", - kind == 0 ? "" : "cnt:", - OUSTRING_CSTR( toXMLNaming( prop.Name ) ), OUSTRING_CSTR( value ) - ); + kind == 0 ? "" : "cnt:", + OUSTRING_CSTR( toXMLNaming( prop.Name ) ), OUSTRING_CSTR( value ) + ); } } @@ -1719,7 +1710,7 @@ class EditorImpl : public LayoutTree::Listener public: EditorImpl( layout::Dialog *dialog, - // we should probable open this channel (or whatever its called) ourselves + // we should probable open this channel (or whatever its called) ourselves uno::Reference< lang::XMultiServiceFactory > xMSF ); virtual ~EditorImpl(); @@ -1754,7 +1745,7 @@ EditorImpl::EditorImpl( layout::Dialog *dialog, mpLayoutTree->setListener( this ); /* if ( xImport.is() ) - mpLayoutTree->getWidget( -1 )->addChild( new Widget( xImport, "import" ) );*/ + mpLayoutTree->getWidget( -1 )->addChild( new Widget( xImport, "import" ) );*/ // create buttons layout::Container aWidgets( dialog, "create-widget" ); @@ -1797,7 +1788,7 @@ EditorImpl::~EditorImpl() delete mpPropertiesList; delete mpLayoutTree; for ( std::list< layout::PushButton * >::const_iterator i = maCreateButtons.begin(); - i != maCreateButtons.end(); i++) + i != maCreateButtons.end(); i++) delete *i; delete pImportButton; delete pExportButton; @@ -1808,14 +1799,14 @@ EditorImpl::~EditorImpl() void EditorImpl::loadFile( const rtl::OUString &aTestFile ) { -fprintf( stderr, "TEST: layout instance\n" ); + fprintf( stderr, "TEST: layout instance\n" ); uno::Reference< awt::XLayoutRoot > xRoot ( new EditorRoot( mxFactory, mpLayoutTree->mpRootWidget ) ); /* -mxMSF->createInstance - ( ::rtl::OUString::createFromAscii( "com.sun.star.awt.Layout" ) ), - uno::UNO_QUERY ); + mxMSF->createInstance + ( ::rtl::OUString::createFromAscii( "com.sun.star.awt.Layout" ) ), + uno::UNO_QUERY ); */ if ( !xRoot.is() ) { @@ -1877,13 +1868,13 @@ void EditorImpl::widgetSelected( Widget *pWidget ) if ( !pWidget || pWidget->isContainer() ) { for ( std::list< layout::PushButton *>::const_iterator it = maCreateButtons.begin(); - it != maCreateButtons.end(); it++) + it != maCreateButtons.end(); it++) (*it)->Enable(); } else { for ( std::list< layout::PushButton *>::const_iterator it = maCreateButtons.begin(); - it != maCreateButtons.end(); it++) + it != maCreateButtons.end(); it++) (*it)->Disable(); } @@ -1894,7 +1885,7 @@ IMPL_LINK( EditorImpl, CreateWidgetHdl, layout::Button *, pBtn ) { int i = 0; for ( std::list< layout::PushButton *>::const_iterator it = maCreateButtons.begin(); - it != maCreateButtons.end(); it++, i++ ) + it != maCreateButtons.end(); it++, i++ ) { if ( pBtn == *it ) break; diff --git a/toolkit/workben/layout/empty.xml b/toolkit/workben/layout/empty.xml new file mode 100644 index 000000000000..a8408e55719e --- /dev/null +++ b/toolkit/workben/layout/empty.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated xml files are generated from this template by + transex3/layout/tralay. !--> + +<dialog xmlns="http://openoffice.org/2007/layout" + xmlns:cnt="http://openoffice.org/2007/layout/container" + title="Empty Test" optimumsize="true" has_border="true" sizeable="true" moveable="true"> + <vbox spacing="1" border="10"> + <min-size min-width="200"/> + <fixedline height="1"/> + <vbox spacing="10"> + <vbox show="false"/> + <vbox show="false"/> + <vbox show="false"/> + <vbox show="false"/> + <vbox show="false"/> + <vbox show="false"/> + <vbox show="false"/> + <vbox show="false"/> + <vbox show="false"/> + <vbox show="false"/> + </vbox> + <fixedline height="1"/> + </vbox> +</dialog> diff --git a/toolkit/workben/layout/insert-sheet.xml b/toolkit/workben/layout/insert-sheet.xml new file mode 100644 index 000000000000..2350da9aec77 --- /dev/null +++ b/toolkit/workben/layout/insert-sheet.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated XML files are generated from this template by + transex3/layout/tralay. !--> + +<modaldialog sizeable="true" closeable="true" moveable="true" output-size="true" id="RID_SCDLG_INSERT_TABLE" sv-look="true" _title="Insert Sheet" xmlns="http://openoffice.org/2007/layout" xmlns:cnt="http://openoffice.org/2007/layout/container"> + <vbox spacing="5" border="5"> + <fixedline id="FL_POSITION" _text="Position"/> + <hbox> + <vbox cnt:padding="13" spacing="5"> + <radiobutton radiogroup="insert-sheet-position" id="RB_BEFORE" tabstop="true" _label="B~efore current sheet"/> + <radiobutton radiogroup="insert-sheet-position" id="RB_BEHIND" tabstop="true" _label="~After current sheet"/> + </vbox> + </hbox> + <fixedline id="FL_TABLE" _text="Sheet"/> + <hbox> + <vbox cnt:padding="13" spacing="5"> + <radiobutton radiogroup="insert-sheet-source" id="RB_NEW" _label="~New sheet"/> + <hbox> + <vbox cnt:padding="13" spacing="5" cnt:fill="false" cnt:expand="false"> + <fixedtext id="FT_COUNT" _label="N~o. of sheets"/> + <fixedtext id="FT_NAME" _label="Na~me"/> + </vbox> + <vbox> + <hbox> + <numericfield has_border="true" maximum="256" minimum="1" repeat="true" id="NF_COUNT" spin="true" spin-size="1" tabstop="true" value="1" cnt:fill="true" cnt:expand="false"/> + </hbox> + <edit has_border="true" id="ED_TABNAME" cnt:fill="true" cnt:expand="true"/> + </vbox> + </hbox> + </vbox> + </hbox> + <hbox> + <vbox cnt:padding="13" spacing="5"> + <radiobutton radiogroup="insert-sheet-source" id="RB_FROMFILE" _label="~From file"/> + <hbox> + <vbox cnt:padding="13" spacing="5"> + <hbox> + <multilistbox auto-hscroll="true" has_border="true" id="LB_TABLES" simple-mode="true" string-item-list=" : : : : " cnt:fill="true" cnt:expand="true"/> + <vbox cnt:fill="false" cnt:expand="false" spacing="5"> + <pushbutton id="BTN_BROWSE" _label="~Browse..." cnt:expand="false"/> + <checkbox id="CB_LINK" _label="Lin~k" cnt:expand="false"/> + <flow/> + </vbox> + </hbox> + <fixedtext id="FT_PATH" label="FT-PATH"/> + </vbox> + </hbox> + </vbox> + </hbox> + <dialogbuttonhbox border="5" spacing="5"> + <okbutton defbutton="true" id="BTN_OK"/> + <cancelbutton id="BTN_CANCEL"/> + <helpbutton id="BTN_HELP"/> + </dialogbuttonhbox> + </vbox> +</modaldialog> diff --git a/toolkit/workben/layout/makefile.mk b/toolkit/workben/layout/makefile.mk index a7f1a8dfcb97..0741a210d2e3 100644 --- a/toolkit/workben/layout/makefile.mk +++ b/toolkit/workben/layout/makefile.mk @@ -40,21 +40,18 @@ ENABLE_EXCEPTIONS=TRUE .IF "$(ENABLE_LAYOUT)" == "TRUE" -CFLAGS += -I$(PRJ)/source/layout - # Allow zoom and wordcount to be built without depending on svx,sv,sfx2 -CFLAGS += -I../$(PRJ)/svx/inc -I../$(PRJ)/svtools/inc -I../$(PRJ)/sfx2/inc +CFLAGS += -I../$(PRJ)/svx/inc -I../$(PRJ)/svtools/inc -I../$(PRJ)/sfx2/inc -I../$(PRJ)/sc/inc -I../$(PRJ)/sc/source/ui/inc -I../$(PRJ)/sw/inc .INCLUDE : $(PRJ)$/util$/makefile.pmk -CFLAGS += -DENABLE_LAYOUT=1 -DTEST_LAYOUT=1 - .IF "$(COMNAME)" == "gcc3" CFLAGS+=-Wall -Wno-non-virtual-dtor .ENDIF CXXFILES=\ editor.cxx \ + plugin.cxx \ recover.cxx \ wordcountdialog.cxx \ test.cxx \ @@ -62,8 +59,11 @@ CXXFILES=\ OBJFILES=\ $(OBJ)$/editor.obj \ + $(OBJ)$/plugin.obj \ $(OBJ)$/recover.obj \ $(OBJ)$/test.obj \ + $(OBJ)$/tpsort.obj \ + $(OBJ)$/sortdlg.obj \ $(OBJ)$/wordcountdialog.obj \ $(OBJ)$/zoom.obj @@ -77,28 +77,39 @@ APP1STDLIBS= \ $(CPPUHELPERLIB) \ $(SALLIB) \ $(XMLSCRIPTLIB) \ - $(TKLIB) + $(TKLIB) \ + $(SVXLIB) \ + $(ISCLIB) \ +# svtools = $(INCCOM)/svtools -all: $(svtools) ALLTAR +default: ALLTAR -.INCLUDE : target.mk +.INCLUDE : target.mk XML_FILES=\ + insert-sheet.xml\ + message-box.xml\ + move-copy-sheet.xml\ recover.xml\ + sort-options.xml\ + string-input.xml\ + tab-dialog.xml\ wordcount.xml\ zoom.xml\ TRALAY=$(AUGMENT_LIBRARY_PATH) tralay XML_LANGS=$(alllangiso) -#ALL_XMLS=$(foreach,i,$(XML_LANGS) $(foreach,j,$(XML_FILES) $i/$j)) -ALLTAR: $(foreach,i,$(XML_FILES) en-US/$i) +ALLTAR: localize.sdf $(BIN)/testrc $(svtools) $(foreach,i,$(XML_FILES) en-US/$i) $(XML_LANGS:f:t"/%.xml ")/%.xml: %.xml $(TRALAY) -m localize.sdf -o . -l $(XML_LANGS:f:t" -l ") $< rm -rf en-US +$(BIN)/%: %.in + cp $< $@ + $(svtools): # FIXME: there's a bug in svtools layout or usage # Include files are in svtools/inc, but are referenced as <svtools/..> @@ -109,14 +120,35 @@ $(svtools): ln -sf ..$/$(PRJ)$/svtools$/inc $(INCCOM)$/svtools dist .PHONY : + cp -pv message-box.xml $(PRJ)/uiconfig/layout + cp -pv tab-dialog.xml $(PRJ)/uiconfig/layout $(SHELL) ./un-test.sh zoom.cxx > ../$(PRJ)/svx/source/dialog/zoom.cxx $(SHELL) ./un-test.sh zoom.hxx > ../$(PRJ)/svx/source/dialog/zoom.hxx touch ../$(PRJ)/svx/source/dialog/dlgfact.cxx + cp -pv zoom.xml ../$(PRJ)/svx/uiconfig/layout $(SHELL) ./un-test.sh wordcountdialog.cxx > ../$(PRJ)/sw/source/ui/dialog/wordcountdialog.cxx $(SHELL) ./un-test.sh wordcountdialog.hxx > ../$(PRJ)/sw/source/ui/inc/wordcountdialog.hxx touch ../$(PRJ)/sw/source/ui/dialog/swdlgfact.cxx -# FIXME: broken setup + cp -pv wordcount.xml ../$(PRJ)/sw/uiconfig/layout + # FIXME: broken setup ln -sf ../inc/wordcountdialog.hxx ../$(PRJ)/sw/source/ui/dialog/wordcountdialog.hxx + $(SHELL) ./un-test.sh tpsort.cxx > ../$(PRJ)/sc/source/ui/dbgui/tpsort.cxx + $(SHELL) ./un-test.sh tpsort.hxx > ../$(PRJ)/sc/source/ui/inc/tpsort.hxx + $(SHELL) ./un-test.sh sortdlg.cxx > ../$(PRJ)/sc/source/ui/dbgui/sortdlg.cxx + $(SHELL) ./un-test.sh sortdlg.hxx > ../$(PRJ)/sc/source/ui/inc/sortdlg.hxx + touch ../$(PRJ)/sc/source/ui/attrdlg/scdlgfact.cxx + touch ../$(PRJ)/sc/source/ui/view/cellsh2.cxx + cp -pv insert-sheet.xml ../$(PRJ)/sc/uiconfig/layout + cp -pv move-copy-sheet.xml ../$(PRJ)/sc/uiconfig/layout + cp -pv sort-options.xml ../$(PRJ)/sc/uiconfig/layout + cp -pv string-input.xml ../$(PRJ)/sc/uiconfig/layout + +localize.sdf: $(PRJ)/../svx/source/dialog/localize.sdf $(PRJ)/../sw/source/ui/dialog/localize.sdf $(PRJ)/../sc/source/ui/src/localize.sdf + grep sortdlg.src $(PRJ)/../sc/source/ui/src/localize.sdf | awk -F'\t' '{{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "layout", "sc\\uiconfig\\layout\\sort-options.xml", $$3, "layout", $$6 "_label", "", "", $$8, "0", $$10, $$11, $$12, "", $$14, $$15}}' | sed -e 's/\(\(FL\|STR\)_[^\t]*\)_label/\1_text/' -e 's/\t_label/\tRID_SCDLG_SORT_title/' > sort-options-$@ + grep wordcountdialog.src $(PRJ)/../sw/source/ui/dialog/localize.sdf | awk -F'\t' '{{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "layout", "sw\\uiconfig\\layout\\wordcount.xml", $$3, "layout", $$6 "_label", "", "", $$8, "0", $$10, $$11, $$12, "", $$14, $$15}}' | sed -e 's/\(\(FL\|STR\)_[^\t]*\)_label/\1_text/' -e 's/\t_label/\tDLG_WORDCOUNT_title/' > wordcount-$@ + grep zoom.src $(PRJ)/source/dialog/localize.sdf | awk -F'\t' '{{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "layout", "svx\\uiconfig\\layout\\zoom.xml", $$3, "layout", $$6 "_label", "", "", $$8, "0", $$10, $$11, $$12, "", $$14, $$15}}' | sed -e 's/\(\(FL\|STR\)_[^\t]*\)_label/\1_text/' -e 's/\t_label/\tRID_SVXDLG_ZOOM_title/' > zoom-$@ + echo '#empty' | cat - sort-options-$@ wordcount-$@ zoom-$@ > $@ + rm -f *-$@ .ELSE # ENABLE_LAYOUT != TRUE all .PHONY: diff --git a/toolkit/workben/layout/message-box.xml b/toolkit/workben/layout/message-box.xml new file mode 100644 index 000000000000..61305e443fa3 --- /dev/null +++ b/toolkit/workben/layout/message-box.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated xml files are generated from this template by + transex3/layout/tralay. !--> + +<modaldialog xmlns="http://openoffice.org/2007/layout" + xmlns:cnt="http://openoffice.org/2007/layout/container" + id="message-box" _title="" optimumsize="true" + has_border="true" sizeable="true" moveable="true" closeable="true"> + <vbox border="5" spacing="5"> + <hbox border="5" spacing="20"> + <align cnt:expand="false" cnt:fill="true"> + <fixedimage id="FI_ERROR" cnt:expand="false" cnt:v-align="0.5" cnt:v-fill="0" graphic="res/commandimagelist/msgbox-error.png" /> + </align> + <align cnt:expand="false" cnt:fill="true"> + <fixedimage id="FI_INFO" cnt:expand="false" cnt:v-align="0.5" cnt:v-fill="0" graphic="res/commandimagelist/msgbox-info.png" /> + </align> + <align cnt:expand="false" cnt:fill="true"> + <fixedimage id="FI_QUERY" cnt:expand="false" cnt:v-align="0.5" cnt:v-fill="0" graphic="res/commandimagelist/msgbox-query.png" /> + </align> + <align cnt:expand="false" cnt:fill="true"> + <fixedimage id="FI_WARNING" cnt:expand="false" cnt:v-align="0.5" cnt:v-fill="0" graphic="res/commandimagelist/msgbox-warning.png" /> + </align> + <align cnt:expand="false" cnt:fill="true"> + <fixedtext id="FT_MESSAGE" _label="FT-LABEL" cnt:v-align="0.5" cnt:v-fill="0" /> + </align> + <flow/> + </hbox> + <dialogbuttonhbox border="0" spacing="5"> + <flow/> + <!-- deprecoted vcl/MsgBox compatibility !--> + <retrybutton id="BTN_RETRY" /> + <ignorebutton id="BTN_IGNORE" /> + + <yesbutton id="BTN_YES"/> + <cancelbutton id="BTN_CANCEL"/> + <helpbutton id="BTN_HELP"/> + <nobutton id="BTN_NO" xlabel="~Alternate"/> + </dialogbuttonhbox> + </vbox> +</modaldialog> diff --git a/toolkit/workben/layout/move-copy-sheet.xml b/toolkit/workben/layout/move-copy-sheet.xml new file mode 100644 index 000000000000..3d26db1aa73d --- /dev/null +++ b/toolkit/workben/layout/move-copy-sheet.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated XML files are generated from this template by + transex3/layout/tralay. !--> + +<modaldialog sizeable="true" closeable="true" help-id="FID_TAB_MOVE" moveable="true" output-size="true" id="RID_SCDLG_MOVETAB" sv-look="true" _title="Move/Copy Sheet" xmlns="http://openoffice.org/2007/layout" xmlns:cnt="http://openoffice.org/2007/layout/container"> + <vbox spacing="5" border="5"> + <string id="STR_NEWDOC" _text="- new document -"/> + <fixedtext id="FT_DEST" _label="To ~document"/> + <listbox has_border="true" dropdown="true" id="LB_DEST" tabstop="true"/> + <fixedtext id="FT_INSERT" _label="~Insert before"/> + <listbox has_border="true" id="LB_INSERT" tabstop="true" string-item-list=" : : : : " /> + <checkbox id="BTN_COPY" tabstop="true" _label="~Copy"/> + <dialogbuttonhbox border="5" spacing="5"> + <flow/> + <cancelbutton id="BTN_CANCEL" tabstop="true"/> + <helpbutton id="BTN_HELP" tabstop="true"/> + <okbutton defbutton="true" id="BTN_OK" tabstop="true"/> + </dialogbuttonhbox> + </vbox> +</modaldialog> diff --git a/toolkit/workben/layout/number-format.xml b/toolkit/workben/layout/number-format.xml new file mode 100644 index 000000000000..6f4c61d01b3e --- /dev/null +++ b/toolkit/workben/layout/number-format.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated XML files are generated from this template by + transex3/layout/tralay. !--> + +<tabpage help-id="HID_NUMBERFORMAT" show="false" id="RID_SVXPAGE_NUMBERFORMAT" _title="Number Format" _text="Number Format" xmlns="http://openoffice.org/2007/layout" xmlns:cnt="http://openoffice.org/2007/layout/container" sizeable="true"> + <!-- + <imagelist prefix="nu" id="IL_ICON"> + <maskcolor blue="0xFFFF" green="0x0000" red="0xFFFF" type="Color"/> + <idlist none="IID_INFO"/> + <idcount none="3"/> + </imagelist> + <imagelist prefix="nuh" id="IL_ICON_HC"> + <maskcolor blue="0xFFFF" green="0x0000" red="0xFFFF" type="Color"/> + <idlist none="IID_INFO"/> + <idcount none="3"/> + </imagelist> + !--> + <vbox spacing="5" border="5"> + <string id="STR_EUROPE" _text="Europe"/> + <string id="STR_AUTO_ENTRY" _text="Automatic"/> + <hbox spacing="5"> + <vbox spacing="5" cnt:fill="true" cnt:expand="true"> + <fixedtext id="FT_CATEGORY" _label="~Category"/> + <listbox line-count="8" auto-hscroll="true" has_border="true" id="LB_CATEGORY" _string-item-list="All:User-defined:Number:Percent:Currency:Date:Time:Scientific:Fraction:Boolean Value:Text"/> + <flow/> + </vbox> + <vbox spacing="5" cnt:fill="true" cnt:expand="true"> + <fixedtext id="FT_FORMAT" _label="F~ormat"/> + <listbox has_border="true" line-count="7" dropdown="true" id="LB_CURRENCY" tabstop="true" _string-item-list="Automatically" cnt:expand="false" cnt:fill="false"/> + <svxfontlistbox line-count="7" dropdown="false" has_border="true" help-id="HID_NUMBERFORMAT_LB_FORMAT" id="LB_FORMAT" tabstop="true" string-item-list=" : : : : : : : : : : : : : : : "/> + </vbox> + <vbox spacing="5" cnt:fill="true" cnt:expand="true"> + <fixedtext id="FT_LANGUAGE" _label="~Language" cnt:expand="false" cnt:fill="false"/> + <svxlanguagebox has_border="true" dropdown="true" id="LB_LANGUAGE" sort="true" string-item-list="Dutch:" cnt:expand="false" cnt:fill="false"/> + <checkbox id="CB_SOURCEFORMAT" show="false" _label="So~urce format" cnt:expand="false" cnt:fill="false"/> + <flow cnt:expand="true" cnt:fill="true"/> + <window has_border="true" help-id="HID_NUMBERFORMAT_WND_NUMBER_PREVIEW" id="WND_NUMBER_PREVIEW" sv-look="true"/> + </vbox> + </hbox> + <fixedline id="FL_OPTIONS" _text="Options"/> + <hbox> + <vbox cnt:padding="13" spacing="5"> + <hbox spacing="5"> + <vbox spacing="5" cnt:fill="false" cnt:expand="false"> + <fixedtext id="FT_DECIMALS" _label="~Decimal places"/> + <fixedtext id="FT_LEADZEROES" _label="Leading ~zeroes"/> + </vbox> + <vbox spacing="5" cnt:fill="false" cnt:expand="false"> + <numericfield has_border="true" first="0" last="15" minimum="0" value="2" maximum="20" repeat="true" id="ED_DECIMALS" spin="true" spin-size="1" strict-format="true" cnt:expand="false"/> + <numericfield has_border="true" first="0" last="15" minimum="0" value="1" maximum="20" repeat="true" id="ED_LEADZEROES" spin="true" spin-size="1" strict-format="true" cnt:fill="false"/> + </vbox> + <vbox spacing="5" cnt:fill="false" cnt:expand="false"> + <checkbox id="BTN_NEGRED" _label="~Negative numbers red"/> + <checkbox id="BTN_THOUSAND" _label="~Thousands separator"/> + </vbox> + </hbox> + </vbox> + </hbox> + <fixedtext id="FT_EDFORMAT" _label="~Format code"/> + <hbox spacing="5" cnt:expand="false"> + <edit has_border="true" id="ED_FORMAT"/> + <imagebutton cnt:expand="false" cnt:fill="false" help-id="HID_NUMBERFORMAT_TBI_ADD" quick-help-text="Add" id="IB_ADD" sv-look="true" graphic="svx/res/nu01.png"/> + <imagebutton cnt:expand="false" help-id="HID_NUMBERFORMAT_TBI_INFO" quick-help-text="Edit Comment" id="IB_INFO" sv-look="true" graphic="svx/res/nu03.png"/> + <imagebutton cnt:expand="false" help-id="HID_NUMBERFORMAT_TBI_REMOVE" quick-help-text="Remove" id="IB_REMOVE" sv-look="true" graphic="svx/res/nu02.png"/> + </hbox> + <fixedtext no-label="true" show="false" id="FT_COMMENT" word-break="true" cnt:expand="false"/> + <edit has_border="true" show="false" id="ED_COMMENT" cnt:expand="false"/> + </vbox> +</tabpage> diff --git a/toolkit/workben/layout/plugin.cxx b/toolkit/workben/layout/plugin.cxx new file mode 100644 index 000000000000..28dafc2bba78 --- /dev/null +++ b/toolkit/workben/layout/plugin.cxx @@ -0,0 +1,73 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile$ + * + * $Revision$ + * + * last change: $Author$ $Date$ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +#define _LAYOUT_PLUGIN_CXX + +#include "plugin.hxx" + +#include <com/sun/star/awt/XDialog2.hpp> +#include <dialcontrol.hxx> +#include <toolkit/awt/vclxwindow.hxx> + +#include <layout/layout-pre.hxx> + +using namespace com::sun::star; + +#define LAYOUT_RES(x) #x + +#undef ModalDialog +#define ModalDialog( parent, id ) Dialog( parent, "plugin.xml", id ) + +PluginDialog::PluginDialog( Window* pParent ) + : ModalDialog( pParent, LAYOUT_RES( RID_DLG_PLUGIN ) ) + , aHeaderImage( this, LAYOUT_RES( FI_HEADER ) ) + , aHeaderText( this, LAYOUT_RES( FT_HEADER ) ) + , aHeaderLine( this, LAYOUT_RES( FL_HEADER ) ) + , aPlugin( this, LAYOUT_RES( PL_DIAL ), +// FIXME: width=, height=, are not recognized as properties. +// new svx::DialControl( LAYOUT_DIALOG_PARENT, Size( 0, 0 ), 0 ) ) + new svx::DialControl( LAYOUT_DIALOG_PARENT, Size( 80, 80 ), 0 ) ) + //, aDialControl( static_cast<svx::DialControl&> ( aPlugin.GetPlugin() ) ) + , aDialControl( static_cast<svx::DialControl&> ( *aPlugin.mpPlugin ) ) + , aOKBtn( this, LAYOUT_RES( BTN_OK ) ) + , aCancelBtn( this, LAYOUT_RES( BTN_CANCEL ) ) + , aHelpBtn( this, LAYOUT_RES( BTN_HELP ) ) +{ + aDialControl.SetRotation( 425 ); +} + +PluginDialog::~PluginDialog() +{ +} diff --git a/canvas/source/cairo/postx.h b/toolkit/workben/layout/plugin.hxx index ca8f610f78ec..4fe8edf36dc9 100644 --- a/canvas/source/cairo/postx.h +++ b/toolkit/workben/layout/plugin.hxx @@ -2,11 +2,11 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: postx.h,v $ + * $RCSfile$ * - * $Revision: 1.4 $ + * $Revision$ * - * last change: $Author: kz $ $Date: 2008-06-30 12:59:14 $ + * last change: $Author$ $Date$ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -32,50 +32,34 @@ * MA 02111-1307 USA * ************************************************************************/ +#ifndef _LAYOUT_PLUGIN_HXX +#define _LAYOUT_PLUGIN_HXX -#ifndef _POSTX_H -#define _POSTX_H +#include <layout/layout.hxx> +#include <layout/layout-pre.hxx> -#if defined __cplusplus +namespace svx { +class DialControl; } -#endif -/* X-Types */ -#undef Window -#undef BYTE -#undef INT8 -#undef INT64 -#undef BOOL -#undef Font -#undef Cursor -#undef String -#undef KeyCode -#undef Region -#undef Icon -#undef Time -#undef Boolean +class PluginDialog : public ModalDialog +{ +private: + FixedImage aHeaderImage; + FixedText aHeaderText; + FixedLine aHeaderLine; + Plugin aPlugin; + svx::DialControl& aDialControl; + OKButton aOKBtn; + CancelButton aCancelBtn; + HelpButton aHelpBtn; -#undef Min -#undef Max -#undef DestroyAll -#undef Success +public: + PluginDialog( Window* pParent ); + ~PluginDialog(); +}; -#undef Printer -/* #undef FontInfo */ -#undef Orientation +#include <layout/layout-post.hxx> -#undef GetToken -#undef ReleaseToken -#undef InitializeToken -#undef NextRequest - -#ifdef KeyPress -#if KeyPress != 2 -Error KeyPress must be Equal 2 -#endif -#undef KeyPress -#endif -#define XLIB_KeyPress 2 - -#endif +#endif /* _LAYOUT_PLUGIN_HXX */ diff --git a/toolkit/workben/layout/plugin.xml b/toolkit/workben/layout/plugin.xml new file mode 100644 index 000000000000..c5f1b2abe040 --- /dev/null +++ b/toolkit/workben/layout/plugin.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated xml files are generated from this template by + transex3/layout/tralay. !--> + +<modaldialog xmlns="http://openoffice.org/2007/layout" + xmlns:cnt="http://openoffice.org/2007/layout/container" + id="RID_DLG_PLUGIN" _title="Plugin Test" optimumsize="true" + help-id="SID_ATTR_PLUGIN" + has_border="true" sizeable="true" moveable="true"> + <vbox spacing="5" border="5"> + <hbox spacing="5" cnt:expand="false"> + <fixedimage id="FI_HEADER" cnt:expand="false" graphic="res/commandimagelist/sc_apply.png" /> + <fixedtext id="FT_HEADER" _label="Plugin Test"/> + </hbox> + <fixedline id="FL_HEADER"/> + <hbox> + <flow cnt:padding="80"/> + <plugin id="PL_DIAL" width="80" height="80"/> + </hbox> + <dialogbuttonhbox border="5" spacing="5"> + <flow/> + <okbutton defbutton="true" id="BTN_OK"/> + <cancelbutton id="BTN_CANCEL" /> + <helpbutton id="BTN_HELP"/> + </dialogbuttonhbox> + </vbox> +</modaldialog> + diff --git a/toolkit/workben/layout/recover.cxx b/toolkit/workben/layout/recover.cxx index d5bd542b36ac..c9a826688dc9 100644 --- a/toolkit/workben/layout/recover.cxx +++ b/toolkit/workben/layout/recover.cxx @@ -55,6 +55,13 @@ using namespace com::sun::star; #include <layout/layout-pre.hxx> +#if ENABLE_LAYOUT +#undef SVX_RES +#define SVX_RES(x) #x +#undef SfxModalDialog +#define SfxModalDialog( parent, id ) Dialog( parent, "recover.xml", id ) +#endif /* ENABLE_LAYOUT */ + #if TEST_LAYOUT SvxRecoverDialog::SvxRecoverDialog( Window* pParent ) #else /* !TEST_LAYOUT */ diff --git a/toolkit/workben/layout/recover.hxx b/toolkit/workben/layout/recover.hxx index dabaa863e511..0d0eee278e6b 100644 --- a/toolkit/workben/layout/recover.hxx +++ b/toolkit/workben/layout/recover.hxx @@ -35,7 +35,7 @@ #include <vcl/button.hxx> #include <vcl/field.hxx> #include <vcl/fixed.hxx> -#include <box.hxx> +#include <layout/core/box.hxx> #include <layout/layout-pre.hxx> class SvxRecoverDialog : public SfxModalDialog diff --git a/toolkit/workben/layout/recover.xml b/toolkit/workben/layout/recover.xml index a065c7d9243b..b7387b687de2 100644 --- a/toolkit/workben/layout/recover.xml +++ b/toolkit/workben/layout/recover.xml @@ -58,7 +58,7 @@ LINE TEST"/> <checkbox id="CH_LOGFILE" _label="Open additional text document to display the restore logfile"/> <dialogbuttonhbox border="5" spacing="5"> <flow/> - <okbutton id="BTN_OK" _label="Restore"/> + <okbutton defbutton="true" id="BTN_OK" _label="Restore"/> <cancelbutton id="BTN_CANCEL" /> <helpbutton id="BTN_HELP"/> </dialogbuttonhbox> diff --git a/toolkit/workben/layout/refresh b/toolkit/workben/layout/refresh index de2652ce2810..796999549c36 100644 --- a/toolkit/workben/layout/refresh +++ b/toolkit/workben/layout/refresh @@ -1,3 +1,7 @@ echo "source me ..." test -n "${INPATH}" && rm -Rf ../../${INPATH} -build debug=true && cp ../../${INPATH}/lib/*.so ../../../solver/680/${INPATH}/lib && dmake debug=true && ../../${INPATH}/bin/test "$@" +build debug=true\ + && cp ../../${INPATH}/lib/*.so ../../../solver/300/${INPATH}/lib \ + && cp -f ../..$INPATH/lib/libtkx.so $OOO_INSTALL_PREFIX/openoffice.org/basis3.0/program \ + && dmake debug=true \ + && ../../${INPATH}/bin/test "$@" diff --git a/toolkit/workben/layout/simple-paragraph.cxx b/toolkit/workben/layout/simple-paragraph.cxx index a7e60f83d3fa..c3f54a35f963 100644 --- a/toolkit/workben/layout/simple-paragraph.cxx +++ b/toolkit/workben/layout/simple-paragraph.cxx @@ -37,12 +37,12 @@ // include --------------------------------------------------------------- -#include <stdio.h> +#include <cstdio> #include <tools/shl.hxx> #include <sfx2/objsh.hxx> #include <vcl/msgbox.hxx> -#include <stdio.h> +#include <cstdio> namespace SVX { #include <svx/paraprev.hxx> // Preview diff --git a/toolkit/workben/layout/sort-options.xml b/toolkit/workben/layout/sort-options.xml new file mode 100644 index 000000000000..a409ac2d530a --- /dev/null +++ b/toolkit/workben/layout/sort-options.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated XML files are generated from this template by + transex3/layout/tralay. !--> + +<tabpage help-id="HID_SCPAGE_SORT_OPTIONS" + id="RID_SCPAGE_SORT_OPTIONS" + sv-look="true" xmlns="http://openoffice.org/2007/layout" xmlns:cnt="http://openoffice.org/2007/layout/container" + optimumsize="true" + sizeable="true" moveable="true"> + <vbox spacing="4" border="5"> + <string id="STR_COL_LABEL" _text="Range contains column la~bels"/> + <string id="STR_ROW_LABEL" _text="Range contains ~row labels"/> + <string id="SCSTR_UNDEFINED" _text="- undefined -"/> + <vbox spacing="4" border="5"> + <checkbox id="BTN_CASESENSITIVE" tabstop="true" _label="Case ~sensitive"/> + <checkbox id="BTN_LABEL" tabstop="true"/> + <checkbox id="BTN_FORMATS" tabstop="true" _label="Include ~formats"/> + <checkbox id="BTN_NATURALSORT" tabstop="true" _label="Enable ~natural sort"/> + <checkbox id="BTN_COPYRESULT" tabstop="true" _label="~Copy sort results to:"/> + <hbox> + <listbox has_border="true" dropdown="true" id="LB_OUTAREA" tabstop="true"/> + <edit has_border="true" disable="true" id="ED_OUTAREA" tabstop="true"/> + </hbox> + <checkbox id="BTN_SORT_USER" tabstop="true" _label="Custom sort ~order"/> + <listbox has_border="true" disable="true" dropdown="true" id="LB_SORT_USER" tabstop="true"/> + <hbox> + <fixedtext id="FT_LANGUAGE" _label="~Language"/> + <fixedtext id="FT_ALGORITHM" _label="O~ptions"/> + </hbox> + <hbox> + <svxlanguagebox has_border="true" dropdown="true" id="LB_LANGUAGE" sort="true" tabstop="true" _string-item-list="Default"/> + <listbox has_border="true" dropdown="true" id="LB_ALGORITHM" tabstop="true"/> + </hbox> + <fixedline id="FL_DIRECTION" _text="Direction"/> + <radiobutton id="BTN_TOP_DOWN" radiogroup="sort-options" tabstop="true" _label="~Top to bottom (sort rows)"/> + <radiobutton id="BTN_LEFT_RIGHT" radiogroup="sort-options" tabstop="true" _label="L~eft to right (sort columns)"/> + </vbox> + </vbox> +</tabpage> diff --git a/toolkit/workben/layout/sortdlg.cxx b/toolkit/workben/layout/sortdlg.cxx new file mode 100644 index 000000000000..9666e5a39124 --- /dev/null +++ b/toolkit/workben/layout/sortdlg.cxx @@ -0,0 +1,73 @@ +/************************************************************************* + * + * 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: sortdlg.cxx,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. + * + ************************************************************************/ + +#if !TEST_LAYOUT +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sc.hxx" +#endif /*! TEST_LAYOUT */ + +#undef SC_DLLIMPLEMENTATION + + + +#include "tpsort.hxx" +#include "sortdlg.hxx" +#include "scresid.hxx" +#include "sortdlg.hrc" + +#if !LAYOUT_SFX_TABDIALOG_BROKEN +#include <layout/layout-pre.hxx> +#endif + +ScSortDlg::ScSortDlg( Window* pParent, + const SfxItemSet* pArgSet ) : + SfxTabDialog( pParent, + ScResId( RID_SCDLG_SORT ), + pArgSet ), + bIsHeaders ( FALSE ), + bIsByRows ( FALSE ) + +{ +#if LAYOUT_SFX_TABDIALOG_BROKEN + AddTabPage( TP_FIELDS, ScTabPageSortFields::Create, 0 ); + AddTabPage( TP_OPTIONS, ScTabPageSortOptions::Create, 0 ); +#else /* !LAYOUT_SFX_TABDIALOG_BROKEN */ + String fields = rtl::OUString::createFromAscii ("fields"); + AddTabPage( TP_FIELDS, fields, ScTabPageSortFields::Create, 0, FALSE, TAB_APPEND); + String options = rtl::OUString::createFromAscii ("options"); + AddTabPage( TP_OPTIONS, options, ScTabPageSortOptions::Create, 0, FALSE, TAB_APPEND); +#endif /* !LAYOUT_SFX_TABDIALOG_BROKEN */ + FreeResource(); +} + +__EXPORT ScSortDlg::~ScSortDlg() +{ +} + diff --git a/toolkit/workben/layout/sortdlg.hrc b/toolkit/workben/layout/sortdlg.hrc new file mode 100644 index 000000000000..4bf07ad3f59a --- /dev/null +++ b/toolkit/workben/layout/sortdlg.hrc @@ -0,0 +1,91 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: sortdlg.hrc,v $ + * + * $Revision: 1.4 $ + * + * last change: $Author: rt $ $Date: 2005/09/08 21:51:32 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + + +#include "sc.hrc" // -> RID_SCDLG_SORT + // -> RID_SCPAGE_SORT_FIELDS + // -> RID_SCPAGE_SORT_OPTIONS + // -> SCSTR_NONAME + // -> SCSTR_UNDEFINED + // -> SCSTR_FIELD + +/* +#define RID_SCDLG_SORT 256 +#define RID_SCPAGE_SORT_FIELDS 257 +#define RID_SCPAGE_SORT_OPTIONS 258 +*/ + +#define TP_FIELDS 1 +#define TP_OPTIONS 2 + +// TP_SORT_FIELDS: +#define FL_SORT1 1 +#define FL_SORT2 2 +#define FL_SORT3 3 +#define LB_SORT1 4 +#define LB_SORT2 5 +#define LB_SORT3 6 +#define BTN_UP1 7 +#define BTN_UP2 8 +#define BTN_UP3 9 +#define BTN_DOWN1 10 +#define BTN_DOWN2 11 +#define BTN_DOWN3 12 + +// TP_SORT_OPTIONS: +#define FL_DIRECTION 1 +#define LB_SORT_USER 2 +#define LB_OUTAREA 3 +#define ED_OUTAREA 4 +//#define FT_AREA_LABEL 5 +//#define FT_AREA 6 +#define BTN_SORT_USER 7 +#define BTN_CASESENSITIVE 8 +#define BTN_LABEL 9 +#define BTN_FORMATS 10 +#define BTN_COPYRESULT 11 +#define BTN_TOP_DOWN 12 +#define BTN_LEFT_RIGHT 13 +#define STR_COL_LABEL 14 +#define STR_ROW_LABEL 15 +#define FT_LANGUAGE 16 +#define LB_LANGUAGE 17 +#define FT_ALGORITHM 18 +#define LB_ALGORITHM 19 +#define BTN_NATURALSORT 20 + + + + diff --git a/toolkit/workben/layout/sortdlg.hxx b/toolkit/workben/layout/sortdlg.hxx new file mode 100644 index 000000000000..2be123f091ab --- /dev/null +++ b/toolkit/workben/layout/sortdlg.hxx @@ -0,0 +1,76 @@ +/************************************************************************* + * + * 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: sortdlg.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 SC_SORTDLG_HXX +#define SC_SORTDLG_HXX + +#include <sfx2/tabdlg.hxx> + +#if TEST_LAYOUT +#define LAYOUT_SFX_TABDIALOG_BROKEN 0 +#else /* !TEST_LAYOUT */ +#ifndef LAYOUT_SFX_TABDIALOG_BROKEN +#define LAYOUT_SFX_TABDIALOG_BROKEN 1 +#endif /* !LAYOUT_SFX_TABDIALOG_BROKEN */ +#endif /* !TEST_LAYOUT */ + +#if !LAYOUT_SFX_TABDIALOG_BROKEN +#include <sfx2/layout.hxx> +#include <layout/layout-pre.hxx> +#endif + +class ScSortDlg : public SfxTabDialog +{ +public: + ScSortDlg( Window* pParent, + const SfxItemSet* pArgSet ); + ~ScSortDlg(); + + void SetHeaders( BOOL bHeaders ); + void SetByRows ( BOOL bByRows ); + BOOL GetHeaders() const; + BOOL GetByRows () const; + + +private: + BOOL bIsHeaders; + BOOL bIsByRows; +}; + +inline void ScSortDlg::SetHeaders( BOOL bHeaders ) { bIsHeaders = bHeaders; } +inline void ScSortDlg::SetByRows ( BOOL bByRows ) { bIsByRows = bByRows; } +inline BOOL ScSortDlg::GetHeaders() const { return bIsHeaders; } +inline BOOL ScSortDlg::GetByRows () const { return bIsByRows; } + +#if !LAYOUT_SFX_TABDIALOG_BROKEN +#include <layout/layout-post.hxx> +#endif + +#endif // SC_SORTDLG_HXX diff --git a/toolkit/workben/layout/sortdlg.src b/toolkit/workben/layout/sortdlg.src new file mode 100644 index 000000000000..06453e54fd29 --- /dev/null +++ b/toolkit/workben/layout/sortdlg.src @@ -0,0 +1,325 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: sortdlg.src,v $ + * + * $Revision: 1.41 $ + * + * last change: $Author: ihi $ $Date: 2007/04/19 16:48:19 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ +#include "sortdlg.hrc" +TabPage RID_SCPAGE_SORT_FIELDS +{ + Hide = TRUE ; + SVLook = TRUE ; + HelpId = HID_SCPAGE_SORT_FIELDS ; + Size = MAP_APPFONT ( 260 , 185 ) ; + ListBox LB_SORT1 + { + Border = TRUE ; + Pos = MAP_APPFONT ( 12 , 19 ) ; + Size = MAP_APPFONT ( 154 , 90 ) ; + TabStop = TRUE ; + DropDown = TRUE ; + }; + RadioButton BTN_UP1 + { + Pos = MAP_APPFONT ( 172 , 14 ) ; + Size = MAP_APPFONT ( 79 , 10 ) ; + Text [ en-US ] = "~Ascending" ; + TabStop = TRUE ; + }; + RadioButton BTN_DOWN1 + { + Pos = MAP_APPFONT ( 172 , 28 ) ; + Size = MAP_APPFONT ( 79 , 10 ) ; + Text [ en-US ] = "~Descending" ; + TabStop = TRUE ; + }; + FixedLine FL_SORT1 + { + Pos = MAP_APPFONT ( 6 , 3 ) ; + Size = MAP_APPFONT ( 248 , 8 ) ; + Text [ en-US ] = "Sort ~by" ; + }; + ListBox LB_SORT2 + { + Border = TRUE ; + Pos = MAP_APPFONT ( 12 , 60 ) ; + Size = MAP_APPFONT ( 154 , 90 ) ; + TabStop = TRUE ; + DropDown = TRUE ; + }; + RadioButton BTN_UP2 + { + Pos = MAP_APPFONT ( 172 , 55 ) ; + Size = MAP_APPFONT ( 79 , 10 ) ; + Text [ en-US ] = "A~scending" ; + TabStop = TRUE ; + }; + RadioButton BTN_DOWN2 + { + Pos = MAP_APPFONT ( 172 , 69 ) ; + Size = MAP_APPFONT ( 79 , 10 ) ; + Text [ en-US ] = "D~escending" ; + TabStop = TRUE ; + }; + FixedLine FL_SORT2 + { + Pos = MAP_APPFONT ( 6 , 44 ) ; + Size = MAP_APPFONT ( 248 , 8 ) ; + Text [ en-US ] = "Then b~y" ; + }; + ListBox LB_SORT3 + { + Border = TRUE ; + Pos = MAP_APPFONT ( 12 , 101 ) ; + Size = MAP_APPFONT ( 154 , 90 ) ; + TabStop = TRUE ; + DropDown = TRUE ; + }; + RadioButton BTN_UP3 + { + Pos = MAP_APPFONT ( 172 , 96 ) ; + Size = MAP_APPFONT ( 79 , 10 ) ; + Text [ en-US ] = "As~cending" ; + TabStop = TRUE ; + }; + RadioButton BTN_DOWN3 + { + Pos = MAP_APPFONT ( 172 , 110 ) ; + Size = MAP_APPFONT ( 79 , 10 ) ; + Text [ en-US ] = "Desce~nding" ; + TabStop = TRUE ; + }; + FixedLine FL_SORT3 + { + Pos = MAP_APPFONT ( 6 , 85 ) ; + Size = MAP_APPFONT ( 248 , 8 ) ; + Text [ en-US ] = "T~hen by" ; + }; +}; +TabPage RID_SCPAGE_SORT_OPTIONS +{ + Hide = TRUE ; + SVLook = TRUE ; + HelpId = HID_SCPAGE_SORT_OPTIONS ; + Pos = MAP_APPFONT ( 0 , 0 ) ; + Size = MAP_APPFONT ( 260 , 185 ) ; + CheckBox BTN_CASESENSITIVE + { + Pos = MAP_APPFONT ( 12 , 6 ) ; + Size = MAP_APPFONT ( 242 , 10 ) ; + Text [ en-US ] = "Case ~sensitive" ; + TabStop = TRUE ; + }; + CheckBox BTN_LABEL + { + Pos = MAP_APPFONT ( 12 , 20 ) ; + Size = MAP_APPFONT ( 242 , 10 ) ; + TabStop = TRUE ; + }; + String STR_COL_LABEL + { + Text [ en-US ] = "Range contains column la~bels" ; + }; + String STR_ROW_LABEL + { + Text [ en-US ] = "Range contains ~row labels" ; + }; + CheckBox BTN_FORMATS + { + Pos = MAP_APPFONT ( 12 , 34 ) ; + Size = MAP_APPFONT ( 242 , 10 ) ; + Text [ en-US ] = "Include ~formats" ; + TabStop = TRUE ; + }; + CheckBox BTN_NATURALSORT + { + Pos = MAP_APPFONT ( 12 , 48 ) ; + Size = MAP_APPFONT ( 242 , 10 ) ; + Text [ de ] = "Enable ~natural sort" ; + Text [ en-US ] = "Enable ~natural sort" ; + Text [ cs ] = "Aktivovat přirozené třídění" ; + Text [ sk ] = "Aktivovať prirodzené triedenie" ; + TabStop = TRUE ; + Text [ x-comment ] = " " ; + }; + CheckBox BTN_COPYRESULT + { + Pos = MAP_APPFONT ( 12 , 62 ) ; + Size = MAP_APPFONT ( 242 , 10 ) ; + Text [ en-US ] = "~Copy sort results to:" ; + TabStop = TRUE ; + }; + ListBox LB_OUTAREA + { + Border = TRUE ; + Pos = MAP_APPFONT ( 20 , 73 ) ; + Size = MAP_APPFONT ( 93 , 90 ) ; + TabStop = TRUE ; + DropDown = TRUE ; + }; + Edit ED_OUTAREA + { + Disable = TRUE ; + Border = TRUE ; + Pos = MAP_APPFONT ( 119 , 73 ) ; + Size = MAP_APPFONT ( 132 , 12 ) ; + TabStop = TRUE ; + }; + CheckBox BTN_SORT_USER + { + Pos = MAP_APPFONT ( 12 , 89 ) ; + Size = MAP_APPFONT ( 242 , 10 ) ; + Text [ en-US ] = "Custom sort ~order" ; + TabStop = TRUE ; + }; + ListBox LB_SORT_USER + { + Disable = TRUE ; + Border = TRUE ; + Pos = MAP_APPFONT ( 20 , 100 ) ; + Size = MAP_APPFONT ( 231 , 90 ) ; + TabStop = TRUE ; + DropDown = TRUE ; + }; + FixedText FT_LANGUAGE + { + Pos = MAP_APPFONT ( 12 , 118 ) ; + Size = MAP_APPFONT ( 101 , 8 ) ; + Text [ en-US ] = "~Language"; + }; + ListBox LB_LANGUAGE + { + Border = TRUE ; + Pos = MAP_APPFONT ( 12 , 129 ) ; + Size = MAP_APPFONT ( 101 , 90 ) ; + TabStop = TRUE ; + DropDown = TRUE ; + Sort = TRUE ; + }; + FixedText FT_ALGORITHM + { + Pos = MAP_APPFONT ( 119 , 118 ) ; + Size = MAP_APPFONT ( 132 , 8 ) ; + Text [ en-US ] = "O~ptions"; + }; + ListBox LB_ALGORITHM + { + Border = TRUE ; + Pos = MAP_APPFONT ( 119 , 129 ) ; + Size = MAP_APPFONT ( 132 , 90 ) ; + TabStop = TRUE ; + DropDown = TRUE ; + }; + FixedLine FL_DIRECTION + { + Pos = MAP_APPFONT ( 6 , 147 ) ; + Size = MAP_APPFONT ( 248 , 8 ) ; + Text [ en-US ] = "Direction" ; + }; + RadioButton BTN_TOP_DOWN + { + Pos = MAP_APPFONT ( 12 , 158 ) ; + Size = MAP_APPFONT ( 242 , 10 ) ; + Text [ en-US ] = "~Top to bottom (sort rows)" ; + TabStop = TRUE ; + }; + RadioButton BTN_LEFT_RIGHT + { + Pos = MAP_APPFONT ( 12 , 172 ) ; + Size = MAP_APPFONT ( 242 , 10 ) ; + Text [ en-US ] = "L~eft to right (sort columns)" ; + TabStop = TRUE ; + }; +/* + FixedText FT_AREA_LABEL + { + Pos = MAP_APPFONT ( 6 , 171 ) ; + Size = MAP_APPFONT ( 248 , 8 ) ; + Text [ en-US ] = "Data area:" ; + }; +*/ +}; +TabDialog RID_SCDLG_SORT +{ + OutputSize = TRUE ; + SVLook = TRUE ; + Size = MAP_APPFONT ( 220 , 175 ) ; + Text [ en-US ] = "Sort" ; + Moveable = TRUE ; + Closeable = FALSE ; + TabControl 1 + { + OutputSize = TRUE ; + Pos = MAP_APPFONT ( 0 , 0 ) ; + Size = MAP_APPFONT ( 210 , 170 ) ; + PageList = + { + PageItem + { + Identifier = TP_FIELDS ; + PageResID = TP_FIELDS ; + Text [ en-US ] = "Sort Criteria" ; + }; + PageItem + { + Identifier = TP_OPTIONS ; + PageResID = TP_OPTIONS ; + Text [ en-US ] = "Options" ; + }; + }; + }; + OKButton 1 + { + Pos = MAP_APPFONT ( 3 , 157 ) ; + Size = MAP_APPFONT ( 40 , 12 ) ; + TabStop = TRUE ; + }; + CancelButton 1 + { + Pos = MAP_APPFONT ( 49 , 157 ) ; + Size = MAP_APPFONT ( 40 , 12 ) ; + TabStop = TRUE ; + }; + PushButton 1 + { + Pos = MAP_APPFONT ( 137 , 157 ) ; + Size = MAP_APPFONT ( 40 , 12 ) ; + TabStop = TRUE ; + }; + HelpButton 1 + { + Pos = MAP_APPFONT ( 94 , 157 ) ; + Size = MAP_APPFONT ( 40 , 12 ) ; + TabStop = TRUE ; + }; +}; + + diff --git a/toolkit/workben/layout/sortdlg.xml b/toolkit/workben/layout/sortdlg.xml new file mode 100644 index 000000000000..ce45a60ff1ee --- /dev/null +++ b/toolkit/workben/layout/sortdlg.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated XML files are generated from this template by + transex3/layout/tralay. !--> + +<tabpage help-id="HID_SCPAGE_SORT_FIELDS" hide="true" id="RID_SCPAGE_SORT_FIELDS" sv-look="true" xmlns="http://openoffice.org/2007/layout" xmlns:cnt="http://openoffice.org/2007/layout/container"> + <vbox> + <fixedline id="FL_SORT1" text="Sort ~by"/> + <radiobutton id="BTN_UP1" tabstop="true" label="~Ascending"/> + <listbox has_border="true" dropdown="true" id="LB_SORT1" tabstop="true"/> + <radiobutton id="BTN_DOWN1" tabstop="true" label="~Descending"/> + <fixedline id="FL_SORT2" text="Then b~y"/> + <radiobutton id="BTN_UP2" tabstop="true" label="A~scending"/> + <listbox has_border="true" dropdown="true" id="LB_SORT2" tabstop="true"/> + <radiobutton id="BTN_DOWN2" tabstop="true" label="D~escending"/> + <fixedline id="FL_SORT3" text="T~hen by"/> + <radiobutton id="BTN_UP3" tabstop="true" label="As~cending"/> + <listbox has_border="true" dropdown="true" id="LB_SORT3" tabstop="true"/> + <radiobutton id="BTN_DOWN3" tabstop="true" label="Desce~nding"/> + </vbox> +</tabpage> +<tabpage help-id="HID_SCPAGE_SORT_OPTIONS" hide="true" id="RID_SCPAGE_SORT_OPTIONS" sv-look="true" xmlns="http://openoffice.org/2007/layout" xmlns:cnt="http://openoffice.org/2007/layout/container"> + <string id="STR_COL_LABEL" text="Range contains column la~bels"/> + <string id="STR_ROW_LABEL" text="Range contains ~row labels"/> + <vbox> + <checkbox id="BTN_CASESENSITIVE" tabstop="true" label="Case ~sensitive"/> + <checkbox id="BTN_LABEL" tabstop="true"/> + <checkbox id="BTN_FORMATS" tabstop="true" label="Include ~formats"/> + <checkbox id="BTN_NATURALSORT" tabstop="true" label=" "/> + <checkbox id="BTN_COPYRESULT" tabstop="true" label="~Copy sort results to:"/> + <hbox> + <listbox has_border="true" dropdown="true" id="LB_OUTAREA" tabstop="true"/> + <edit has_border="true" disable="true" id="ED_OUTAREA" tabstop="true"/> + </hbox> + <checkbox id="BTN_SORT_USER" tabstop="true" label="Custom sort ~order"/> + <listbox has_border="true" disable="true" dropdown="true" id="LB_SORT_USER" tabstop="true"/> + <hbox> + <fixedtext id="FT_LANGUAGE" label="~Language"/> + <fixedtext id="FT_ALGORITHM" label="O~ptions"/> + </hbox> + <hbox> + <listbox has_border="true" dropdown="true" id="LB_LANGUAGE" sort="true" tabstop="true"/> + <listbox has_border="true" dropdown="true" id="LB_ALGORITHM" tabstop="true"/> + </hbox> + <fixedline id="FL_DIRECTION" text="Direction"/> + <radiobutton id="BTN_TOP_DOWN" tabstop="true" label="~Top to bottom (sort rows)"/> + <radiobutton id="BTN_LEFT_RIGHT" tabstop="true" label="L~eft to right (sort columns)"/> + </vbox> +</tabpage> +<tabdialog closeable="false" moveable="true" output-size="true" id="RID_SCDLG_SORT" sv-look="true" text="Sort" xmlns="http://openoffice.org/2007/layout" xmlns:cnt="http://openoffice.org/2007/layout/container"> + <vbox> + <tabcontrol output-size="true" id="1"> + <pagelist> + <pageitem identifier="TP_FIELDS" page-res-id="TP_FIELDS" text="Sort Criteria"/> + <pageitem identifier="TP_OPTIONS" page-res-id="TP_OPTIONS" text="Options"/> + </pagelist> + </tabcontrol> + <hbox> + <okbutton defbutton="true" id="1" tabstop="true"/> + <cancelbutton id="1" tabstop="true"/> + <helpbutton id="1" tabstop="true"/> + <pushbutton id="1" tabstop="true"/> + </hbox> + </vbox> +</tabdialog> diff --git a/toolkit/workben/layout/string-input.xml b/toolkit/workben/layout/string-input.xml new file mode 100644 index 000000000000..b1aed5197c17 --- /dev/null +++ b/toolkit/workben/layout/string-input.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated XML files are generated from this template by + transex3/layout/tralay. !--> + +<modaldialog sizeable="true" closeable="false" moveable="true" output-size="true" id="RID_SCDLG_STRINPUT" sv-look="true" xmlns="http://openoffice.org/2007/layout" xmlns:cnt="http://openoffice.org/2007/layout/container" title="Insert String"> + <vbox spacing="5" border="5"> + <fixedtext id="FT_LABEL" label="FT-LABEL"/> + <edit has_border="true" id="ED_INPUT" tabstop="true"/> + <dialogbuttonhbox border="5" spacing="5"> + <okbutton defbutton="true" id="BTN_OK" tabstop="true"/> + <cancelbutton id="BTN_CANCEL" tabstop="true"/> + <helpbutton id="BTN_HELP" tabstop="true"/> + </dialogbuttonhbox> + </vbox> +</modaldialog> diff --git a/toolkit/workben/layout/tab-dialog.xml b/toolkit/workben/layout/tab-dialog.xml new file mode 100644 index 000000000000..da75f03e9df5 --- /dev/null +++ b/toolkit/workben/layout/tab-dialog.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<dialog xmlns="http://openoffice.org/2007/layout" + xmlns:cnt="http://openoffice.org/2007/layout/container" + _title="layout::TabDialog" optimumsize="true" + id="tab-dialog" + has_border="true" sizeable="true" moveable="true"> + <vbox spacing="5" border="5"> + <tabcontrol id="ID_TABCONTROL"/> + <dialogbuttonhbox border="5" spacing="5" cnt:expand="false"> + <flow/> + <okbutton defbutton="true" id="BTN_OK" show="false"/> + <pushbutton id="BTN_USER" _label="<User>" show="false"/> + <cancelbutton id="BTN_CANCEL" show="false"/> + <helpbutton id="BTN_HELP" show="false"/> + <resetbutton id="BTN_RESET" show="false"/> + <pushbutton id="BTN_BASEFMT" _label="<Base Format>" show="false"/> + </dialogbuttonhbox> + </vbox> +</dialog> diff --git a/toolkit/workben/layout/tabcontrol.xml b/toolkit/workben/layout/tabcontrol.xml index 106489a457a9..2986f1f9e0d9 100644 --- a/toolkit/workben/layout/tabcontrol.xml +++ b/toolkit/workben/layout/tabcontrol.xml @@ -1,18 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <dialog xmlns="http://openoffice.org/2007/layout" - xmlns:cnt="http://openoffice.org/2007/layout/container" - title="TabControl Test" optimumsize="true" - has_border="true" sizeable="true" moveable="true"> + xmlns:cnt="http://openoffice.org/2007/layout/container" + title="TabControl Test" optimumsize="true" + has_border="true" sizeable="true" moveable="true"> <vbox> - <tabcontrol> - <pushbutton label="Child 1" cnt:title="Page 1" /> - <edit has_border="true" text="Child 2" cnt:title="Page 2" /> - <vbox cnt:title="Page 3"> - <pushbutton label="Child 3"/> - <edit has_border="true" text="Child 4" /> - </vbox> - </tabcontrol> - <okbutton cnt:expand="false" /> + <tabcontrol> + <pushbutton label="Child 1" cnt:title="Page 1" /> + <edit has_border="true" text="Child 2" cnt:title="Page 2" /> + <vbox cnt:title="Page 3"> + <pushbutton label="Child 3"/> + <edit has_border="true" text="Child 4" /> + </vbox> + </tabcontrol> + <okbutton cnt:expand="false" /> </vbox> </dialog> diff --git a/toolkit/workben/layout/test.cxx b/toolkit/workben/layout/test.cxx index b98eaff2fc80..1bd9603fc5ac 100644 --- a/toolkit/workben/layout/test.cxx +++ b/toolkit/workben/layout/test.cxx @@ -30,7 +30,6 @@ ************************************************************************/ #include <vcl/svapp.hxx> -//#include <transex3/vosapp.hxx> // This works and was used before for standalone test, not sure why // we'd want it. @@ -38,29 +37,41 @@ #include "uno.hxx" #include <cstdio> -#include <osl/file.h> +#include <cstdlib> +#include <sys/stat.h> -#include <rtl/ustring.hxx> +#include <com/sun/star/xml/sax/SAXException.hpp> +#include <comphelper/processfactory.hxx> #include <cppuhelper/bootstrap.hxx> - -#include <ucbhelper/contentbroker.hxx> +#include <rtl/ustring.hxx> #include <ucbhelper/configurationkeys.hxx> +#include <ucbhelper/contentbroker.hxx> -#include <comphelper/processfactory.hxx> -#include <com/sun/star/xml/sax/SAXException.hpp> +#define SORT_DLG 1 /* requires sfx2, svx to be compiled */ +#if SORT_DLG +#include "scitems.hxx" +#include "uiitems.hxx" +#endif /* SORT_DLG */ #include "editor.hxx" -#include "wordcountdialog.hxx" +#include "plugin.hxx" #undef _LAYOUT_POST_HXX -#include "zoom.hxx" +#include "recover.hxx" #undef _LAYOUT_POST_HXX -#include "recover.hxx" +#if SORT_DLG +#include "sortdlg.hxx" +#undef _LAYOUT_POST_HXX +#endif /* SORT_DLG */ + +#include "wordcountdialog.hxx" +#undef _LAYOUT_POST_HXX + +#include "zoom.hxx" #undef _LAYOUT_POST_HXX -//#undef SW_WORDCOUNTDIALOG_HXX #include <layout/layout-pre.hxx> using namespace ::rtl; @@ -68,38 +79,6 @@ using namespace ::cppu; using namespace ::com::sun::star; using namespace ::com::sun::star::uno; -Reference< XComponentContext > createInitialComponentContext( - OUString const & inst_dir ) -{ - Reference< XComponentContext > xContext; - - try - { - OUString file_url; - oslFileError rc = osl_getFileURLFromSystemPath( - inst_dir.pData, &file_url.pData ); - OSL_ASSERT( osl_File_E_None == rc ); - (void) rc; // quiet warning - - OUString unorc = file_url + OUString( - OUString::createFromAscii( "/program/" SAL_CONFIGFILE( "uno" )) ); - - return defaultBootstrap_InitialComponentContext( unorc ); - } - - catch( Exception& rExc ) - { - OString aStr( OUStringToOString( rExc.Message, - RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( 0, aStr.getStr() ); - } - - return xContext; -} - - -// ----------------------------------------------------------------------- - class LayoutTest : public Application { Reference< XComponentContext > mxContext; @@ -115,7 +94,7 @@ public: void RunEditor(); void RunFiles(); void ExceptionalMain(); - void IInit(); + void Init(); void InitUCB(); void LoadFile( OUString const &aName ); void Main(); @@ -124,18 +103,29 @@ public: static void usage() { - fprintf (stderr, "usage: test [--inst inst_dir] [DIALOG.XML]... | --test [DIALOG.XML]\n" ); + fprintf (stderr, "usage: test [--inst OOO_INSTALL_PREFIX] [DIALOG.XML]... | --test [DIALOG.XML]\n" ); exit( 2 ); } +static uno::Reference< lang::XSingleServiceFactory > get_factory( char const *service ) +{ + uno::Reference< lang::XSingleServiceFactory > xFactory( + comphelper::createProcessComponent( + rtl::OUString::createFromAscii( service ) ), uno::UNO_QUERY ); + + if ( !xFactory.is() ) + fprintf( stderr, "error loading: %s\n", service ); + return xFactory; +} + +#define GET_FACTORY(x) get_factory( #x ) + void LayoutTest::LoadFile( const OUString &aTestFile ) { fprintf( stderr, "TEST: layout instance\n" ); - uno::Reference< lang::XSingleServiceFactory > xFactory( - comphelper::createProcessComponent( - rtl::OUString::createFromAscii( "com.sun.star.awt.Layout" ) ), - uno::UNO_QUERY ); + uno::Reference< lang::XSingleServiceFactory > xFactory + = GET_FACTORY( com.sun.star.awt.Layout ); if ( !xFactory.is() ) { fprintf( stderr, "Layout engine not installed\n" ); @@ -155,40 +145,51 @@ void LayoutTest::LoadFile( const OUString &aTestFile ) fprintf( stderr, "TEST: file loaded\n" ); } -// Nurgh ... void LayoutTest::InitUCB() { OUString aEmpty; - Sequence< Any > aArgs(6); + Sequence< Any > aArgs( 6 ); aArgs[0] - <<= OUString::createFromAscii(UCB_CONFIGURATION_KEY1_LOCAL); + <<= OUString::createFromAscii( UCB_CONFIGURATION_KEY1_LOCAL ); aArgs[1] - <<= OUString::createFromAscii(UCB_CONFIGURATION_KEY2_OFFICE); + <<= OUString::createFromAscii( UCB_CONFIGURATION_KEY2_OFFICE ); aArgs[2] <<= OUString::createFromAscii( "PIPE" ); aArgs[3] <<= aEmpty; aArgs[4] <<= OUString::createFromAscii( "PORTAL" ); aArgs[5] <<= aEmpty; - if (! ::ucbhelper::ContentBroker::initialize( mxMSF, aArgs ) ) + if ( !::ucbhelper::ContentBroker::initialize( mxMSF, aArgs ) ) + { fprintf( stderr, "Failed to init content broker\n" ); + fprintf( stderr, "arg[0]: %s\n", UCB_CONFIGURATION_KEY1_LOCAL ); + fprintf( stderr, "arg[1]: %s\n", UCB_CONFIGURATION_KEY2_OFFICE ); + } +} + +static void support_upstream_brand_prefix () +{ + if ( char const* inst = getenv( "OOO_INSTALL_PREFIX" ) ) + { + char const *brand_prefix = "/openoffice.org3"; + OUString brand_dir = OUString::createFromAscii( inst ) + + OUString::createFromAscii( brand_prefix ); + struct stat stat_info; + if ( !stat ( OUSTRING_CSTR( brand_dir ), &stat_info ) ) + { + OSL_TRACE( "Appending %s to OOO_INSTALL_PREFIX", brand_prefix ); + setenv( "OOO_INSTALL_PREFIX", OUSTRING_CSTR( brand_dir ), 1 ); + } + } } -#define INIT_ENV_VOODOO( installDir ) \ - /* Unless you do this, obviously you don't deserve to have anything work */ \ - OString aCfg = "CFG_INIFILE=file://" \ - + OUStringToOString( installDir, RTL_TEXTENCODING_UTF8 ) \ - + "/program/configmgrrc"; \ - putenv( (char *)aCfg.getStr() ); \ - /* Unless you do this, obviously you don't want your paths to be correct & \ - hence no images.zip location is possible. */ \ - OString aBaseInst = "BaseInstallation=file://" \ - + OUStringToOString( installDir, RTL_TEXTENCODING_UTF8 ); \ - putenv( (char *)aBaseInst.getStr() ); \ - -void LayoutTest::IInit() +void LayoutTest::Init() { - INIT_ENV_VOODOO( mInstallDir ); - mxContext = createInitialComponentContext( mInstallDir ); + ParseCommandLine(); + setenv( "OOO_INSTALL_PREFIX", OUSTRING_CSTR( mInstallDir ), 0 ); + support_upstream_brand_prefix (); + OSL_TRACE( "OOO_INSTALL_PREFIX=%s", getenv( "OOO_INSTALL_PREFIX" ) ); + + mxContext = defaultBootstrap_InitialComponentContext(); mxMSF = new UnoBootstrapLayout( Reference< lang::XMultiServiceFactory >( mxContext->getServiceManager(), UNO_QUERY ) ); ::comphelper::setProcessServiceFactory( mxMSF ); InitUCB(); @@ -196,6 +197,7 @@ void LayoutTest::IInit() void LayoutTest::ParseCommandLine() { + printf ("%s\n", __PRETTY_FUNCTION__); for ( sal_uInt16 i = 0; i < GetCommandLineParamCount(); i++ ) { OUString aParam = OUString( GetCommandLineParam( i ) ); @@ -206,6 +208,7 @@ void LayoutTest::ParseCommandLine() if ( i >= GetCommandLineParamCount() - 1) usage(); mInstallDir = GetCommandLineParam( ++i ); + setenv( "OOO_INSTALL_PREFIX", OUSTRING_CSTR( mInstallDir ), 1 ); } else if ( aParam.equalsAscii( "--test" ) ) { @@ -234,32 +237,77 @@ void LayoutTest::RunEditor() editor.Execute(); } -void RunDialog( layout::Dialog& dialog ) +short RunDialog( Dialog& dialog ) { dialog.Show(); - dialog.Execute(); - fprintf( stderr, "1st execute exited" ); - dialog.Execute(); - fprintf( stderr, "2nd execute exited" ); + short result = dialog.Execute(); + fprintf( stderr, "Done: dialog execute exited:%d\n", result); + return result; } +#undef Dialog +short RunDialog( ::Dialog& dialog ) +{ + dialog.Show(); + short result = dialog.Execute(); + fprintf( stderr, "Done: dialog execute exited:%d\n", result); + return result; +} + +#if SORT_DLG +static void LoadSC() +{ + get_factory( "com.sun.star.comp.sfx2.DocumentTemplates" ); + get_factory( "com.sun.star.comp.Calc.SpreadsheetDocument" ); + GET_FACTORY( com.sun.star.i18n.Transliteration.l10n ); +} +#endif /* SORT_DLG */ + void TestDialog( OUString const& name ) { - if ( name.equalsAscii( "zoom" ) ) + if ( 0 ) + ; + else if ( name.equalsAscii( "plugin" ) ) { - SvxZoomDialog zoom( 0 ); - RunDialog( zoom ); + PluginDialog plugin ( 0 ); + RunDialog( plugin ); } - else if ( name.equalsAscii( "wordcount" ) ) + else if ( name.equalsAscii( "query" ) ) { - SwWordCountDialog words ( 0 ); - RunDialog( words ); + QueryBox query ( 0, "Do you want to do?", "do"); + RunDialog( query ); + } + else if ( name.equalsAscii( "query-compat" ) ) + { + QueryBox query ( 0, + WinBits( WB_YES_NO | WB_DEF_YES ), +// WinBits( WB_ABORT_RETRY_IGNORE ), + OUString::createFromAscii ("Do you want to do?")); + RunDialog( query ); } else if ( name.equalsAscii( "recover" ) ) { SvxRecoverDialog recover ( 0 ); RunDialog( recover ); } +#if SORT_DLG + else if ( name.equalsAscii( "sort" ) ) + { + LoadSC(); + ScSortDlg sort (0, 0); + RunDialog( sort ); + } +#endif /* SORT_DLG */ + else if ( name.equalsAscii( "wordcount" ) ) + { + SwWordCountDialog words ( 0 ); + RunDialog( words ); + } + else if ( name.equalsAscii( "zoom" ) ) + { + SvxZoomDialog zoom( 0 ); + RunDialog( zoom ); + } } void LayoutTest::RunFiles() @@ -274,10 +322,6 @@ void LayoutTest::RunFiles() void LayoutTest::ExceptionalMain() { - ParseCommandLine(); - IInit(); - INIT_ENV_VOODOO( mInstallDir ); - if ( mTestDialog.getLength() ) TestDialog( mTestDialog ); else if ( mEditMode ) @@ -323,4 +367,4 @@ LayoutTest::LayoutTest( char const* installDir ) { } -LayoutTest lt( "/usr/local/lib/ooo" ); +LayoutTest layout_test( "/usr/local/lib/ooo" ); diff --git a/toolkit/workben/layout/testrc.in b/toolkit/workben/layout/testrc.in new file mode 100644 index 000000000000..00ae5eb3cd5e --- /dev/null +++ b/toolkit/workben/layout/testrc.in @@ -0,0 +1,12 @@ +OOO_INSTALL_PREFIX_URL=file://${OOO_INSTALL_PREFIX} +OOO_BASIS_URL=${OOO_INSTALL_PREFIX_URL}/basis-link +OOO_BASIS_BIN_URL=${OOO_BASIS_URL}/program +OOO_URE_URL=${OOO_BASIS_URL}/ure-link +# +#CFG_INIFILE=${OOO_BASIS_BIN_URL}/configmgrrc +#BaseInstallation=${OOO_BASIS_URL} +BRAND_BASE_DIR=${OOO_INSTALL_PREFIX_URL} +OOO_BASE_DIR=${OOO_BASIS_URL} +# +UNO_TYPES=${OOO_URE_URL}/share/misc/types.rdb ${OOO_BASIS_BIN_URL}/offapi.rdb +UNO_SERVICES=${OOO_URE_URL}/share/misc/services.rdb ${OOO_BASIS_BIN_URL}/services.rdb diff --git a/toolkit/workben/layout/tpsort.cxx b/toolkit/workben/layout/tpsort.cxx new file mode 100644 index 000000000000..3463eff4efab --- /dev/null +++ b/toolkit/workben/layout/tpsort.cxx @@ -0,0 +1,1108 @@ +/************************************************************************* + * + * 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: tpsort.cxx,v $ + * $Revision: 1.14 $ + * + * 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. + * + ************************************************************************/ + +#if !TEST_LAYOUT +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sc.hxx" +#endif /* !TEST_LAYOUT */ + +#undef SC_DLLIMPLEMENTATION + + + +#include <vcl/msgbox.hxx> +#include <i18npool/mslangid.hxx> +#include <svtools/collatorres.hxx> +#include <unotools/collatorwrapper.hxx> +#include <unotools/localedatawrapper.hxx> +#include <comphelper/processfactory.hxx> + +#include "scitems.hxx" +#include "uiitems.hxx" +#include "viewdata.hxx" +#include "document.hxx" +#include "global.hxx" +#include "dbcolect.hxx" +#include "userlist.hxx" +#include "rangeutl.hxx" +#include "scresid.hxx" +#include "sc.hrc" // -> Slot IDs +#include "globstr.hrc" + +#include "sortdlg.hxx" +#include "sortdlg.hrc" + +#define _TPSORT_CXX +#include "tpsort.hxx" +#undef _TPSORT_CXX + +using namespace com::sun::star; + +// STATIC DATA ----------------------------------------------------------- + +static USHORT pSortRanges[] = +{ + SID_SORT, + SID_SORT, + 0 +}; + +// ----------------------------------------------------------------------- + +/* + * Da sich Einstellungen auf der zweiten TabPage (Optionen) auf + * die erste TabPage auswirken, muss es die Moeglichkeit geben, + * dies der jeweils anderen Seite mitzuteilen. + * + * Im Moment wird dieses Problem ueber zwei Datenmember des TabDialoges + * geloest. Wird eine Seite Aktiviert/Deaktiviert, so gleicht sie diese + * Datenmember mit dem eigenen Zustand ab (->Activate()/Deactivate()). + * + * 31.01.95: + * Die Klasse SfxTabPage bietet mittlerweile ein Verfahren an: + * + * virtual BOOL HasExchangeSupport() const; -> return TRUE; + * virtual void ActivatePage(const SfxItemSet &); + * virtual int DeactivatePage(SfxItemSet * = 0); + * + * muss noch geaendert werden! + */ + +//======================================================================== +//======================================================================== +// Sortierkriterien-Tabpage: + +ScTabPageSortFields::ScTabPageSortFields( Window* pParent, + const SfxItemSet& rArgSet ) + + : SfxTabPage ( pParent, + ScResId( RID_SCPAGE_SORT_FIELDS ), + rArgSet ), + // + aFlSort1 ( this, ScResId( FL_SORT1 ) ), + aLbSort1 ( this, ScResId( LB_SORT1 ) ), + aBtnUp1 ( this, ScResId( BTN_UP1 ) ), + aBtnDown1 ( this, ScResId( BTN_DOWN1 ) ), + // + aFlSort2 ( this, ScResId( FL_SORT2 ) ), + aLbSort2 ( this, ScResId( LB_SORT2 ) ), + aBtnUp2 ( this, ScResId( BTN_UP2 ) ), + aBtnDown2 ( this, ScResId( BTN_DOWN2 ) ), + // + aFlSort3 ( this, ScResId( FL_SORT3 ) ), + aLbSort3 ( this, ScResId( LB_SORT3 ) ), + aBtnUp3 ( this, ScResId( BTN_UP3 ) ), + aBtnDown3 ( this, ScResId( BTN_DOWN3 ) ), + + aStrUndefined ( ScResId( SCSTR_UNDEFINED ) ), + aStrColumn ( ScResId( SCSTR_COLUMN ) ), + aStrRow ( ScResId( SCSTR_ROW ) ), + // +#if !TEST_LAYOUT + nWhichSort ( rArgSet.GetPool()->GetWhich( SID_SORT ) ), +#else /* TEST_LAYOUT */ + nWhichSort ( 0 ), +#endif /* TEST_LAYOUT */ + pDlg ( (ScSortDlg*)(GetParent()->GetParent()) ), + pViewData ( NULL ), +#if !TEST_LAYOUT + rSortData ( ((const ScSortItem&) + rArgSet.Get( nWhichSort )). + GetSortData() ), +#else /* TEST_LAYOUT */ + rSortData ( *new ScSortParam() ), +#endif /* TEST_LAYOUT */ + nFieldCount ( 0 ), + bHasHeader ( FALSE ), + bSortByRows ( FALSE ) +{ + Init(); + FreeResource(); + SetExchangeSupport(); +} + +// ----------------------------------------------------------------------- + +__EXPORT ScTabPageSortFields::~ScTabPageSortFields() +{ +} + +// ----------------------------------------------------------------------- + +void ScTabPageSortFields::Init() +{ +#if !TEST_LAYOUT + const ScSortItem& rSortItem = (const ScSortItem&) + GetItemSet().Get( nWhichSort ); + + pViewData = rSortItem.GetViewData(); + + DBG_ASSERT( pViewData, "ViewData not found!" ); +#endif /* !TEST_LAYOUT */ + + nFieldArr[0] = 0; + nFirstCol = 0; + nFirstRow = 0; + + aLbSort1.SetSelectHdl( LINK( this, ScTabPageSortFields, SelectHdl ) ); + aLbSort2.SetSelectHdl( LINK( this, ScTabPageSortFields, SelectHdl ) ); + aLbSort3.SetSelectHdl( LINK( this, ScTabPageSortFields, SelectHdl ) ); + aLbSort1.Clear(); + aLbSort2.Clear(); + aLbSort3.Clear(); + + aSortLbArr[0] = &aLbSort1; + aSortLbArr[1] = &aLbSort2; + aSortLbArr[2] = &aLbSort3; + aDirBtnArr[0][0] = &aBtnUp1; + aDirBtnArr[0][1] = &aBtnDown1; + aDirBtnArr[1][0] = &aBtnUp2; + aDirBtnArr[1][1] = &aBtnDown2; + aDirBtnArr[2][0] = &aBtnUp3; + aDirBtnArr[2][1] = &aBtnDown3; + aFlArr[0] = &aFlSort1; + aFlArr[1] = &aFlSort2; + aFlArr[2] = &aFlSort3; +} + +//------------------------------------------------------------------------ + +USHORT* __EXPORT ScTabPageSortFields::GetRanges() +{ + return pSortRanges; +} + +// ----------------------------------------------------------------------- + +SfxTabPage* __EXPORT ScTabPageSortFields::Create( Window* pParent, + const SfxItemSet& rArgSet ) +{ + return ( new ScTabPageSortFields( pParent, rArgSet ) ); +} + +// ----------------------------------------------------------------------- + +void __EXPORT ScTabPageSortFields::Reset( const SfxItemSet& /* rArgSet */ ) +{ + bSortByRows = rSortData.bByRow; + bHasHeader = rSortData.bHasHeader; + + if ( aLbSort1.GetEntryCount() == 0 ) + FillFieldLists(); + + // Selektieren der ListBoxen: + + if ( rSortData.bDoSort[0] ) + { + for ( USHORT i=0; i<3; i++ ) + { + if ( rSortData.bDoSort[i] ) + { + aSortLbArr[i]->SelectEntryPos( + GetFieldSelPos( rSortData.nField[i] ) ); + + (rSortData.bAscending[i]) + ? aDirBtnArr[i][0]->Check() // Up + : aDirBtnArr[i][1]->Check(); // Down + } + else + { + aSortLbArr[i]->SelectEntryPos( 0 ); // "keiner" selektieren + aDirBtnArr[i][0]->Check(); // Up + } + } + + EnableField( 1 ); + EnableField( 2 ); + EnableField( 3 ); + if ( aLbSort1.GetSelectEntryPos() == 0 ) + DisableField( 2 ); + if ( aLbSort2.GetSelectEntryPos() == 0 ) + DisableField( 3 ); + } + else + { + aLbSort1.SelectEntryPos( 1 ); + aLbSort2.SelectEntryPos( 0 ); + aLbSort3.SelectEntryPos( 0 ); + aBtnUp1.Check(); + aBtnUp2.Check(); + aBtnUp3.Check(); + EnableField ( 1 ); + EnableField ( 2 ); + DisableField( 3 ); + } + + if ( pDlg ) + { + pDlg->SetByRows ( bSortByRows ); + pDlg->SetHeaders( bHasHeader ); + } +} + +// ----------------------------------------------------------------------- + +BOOL __EXPORT ScTabPageSortFields::FillItemSet( SfxItemSet& rArgSet ) +{ + ScSortParam theSortData = rSortData; + if (pDlg) + { + const SfxItemSet* pExample = pDlg->GetExampleSet(); + const SfxPoolItem* pItem; + if ( pExample && pExample->GetItemState( nWhichSort, TRUE, &pItem ) == SFX_ITEM_SET ) + theSortData = ((const ScSortItem*)pItem)->GetSortData(); + } + + USHORT nSort1Pos = aLbSort1.GetSelectEntryPos(); + USHORT nSort2Pos = aLbSort2.GetSelectEntryPos(); + USHORT nSort3Pos = aLbSort3.GetSelectEntryPos(); + + DBG_ASSERT( (nSort1Pos <= SC_MAXFIELDS) + && (nSort2Pos <= SC_MAXFIELDS) + && (nSort3Pos <= SC_MAXFIELDS), + "Array-Range Fehler!" ); + + if ( nSort1Pos == LISTBOX_ENTRY_NOTFOUND ) nSort1Pos = 0; + if ( nSort2Pos == LISTBOX_ENTRY_NOTFOUND ) nSort2Pos = 0; + if ( nSort3Pos == LISTBOX_ENTRY_NOTFOUND ) nSort3Pos = 0; + + if ( nSort1Pos > 0 ) + { + theSortData.bDoSort[0] = (nSort1Pos > 0); + theSortData.bDoSort[1] = (nSort2Pos > 0); + theSortData.bDoSort[2] = (nSort3Pos > 0); + + // wenn auf Optionen-Seite "OK" gewaehlt wurde und + // dabei die Sortierrichtung umgestellt wurde, so + // wird das erste Feld der jeweiligen Richtung als + // Sortierkriterium gewaehlt (steht in nFieldArr[0]): + if ( bSortByRows != pDlg->GetByRows() ) + { + theSortData.nField[0] = + theSortData.nField[1] = + theSortData.nField[2] = ( bSortByRows ? + static_cast<SCCOLROW>(nFirstRow) : + static_cast<SCCOLROW>(nFirstCol) ); + } + else + { + theSortData.nField[0] = nFieldArr[nSort1Pos]; + theSortData.nField[1] = nFieldArr[nSort2Pos]; + theSortData.nField[2] = nFieldArr[nSort3Pos]; + } + + theSortData.bAscending[0] = aBtnUp1.IsChecked(); + theSortData.bAscending[1] = aBtnUp2.IsChecked(); + theSortData.bAscending[2] = aBtnUp3.IsChecked(); + // bHasHeader ist in ScTabPageSortOptions::FillItemSet, wo es hingehoert + } + else + { + theSortData.bDoSort[0] = + theSortData.bDoSort[1] = + theSortData.bDoSort[2] = FALSE; + } + + rArgSet.Put( ScSortItem( SCITEM_SORTDATA, NULL, &theSortData ) ); + + return TRUE; +} + +// ----------------------------------------------------------------------- + +// fuer Datenaustausch ohne Dialog-Umweg: (! noch zu tun !) +// void ScTabPageSortFields::ActivatePage( const SfxItemSet& rSet ) + +void __EXPORT ScTabPageSortFields::ActivatePage() +{ + if ( pDlg ) + { + if ( bHasHeader != pDlg->GetHeaders() + || bSortByRows != pDlg->GetByRows() ) + { + USHORT nCurSel1 = aLbSort1.GetSelectEntryPos(); + USHORT nCurSel2 = aLbSort2.GetSelectEntryPos(); + USHORT nCurSel3 = aLbSort3.GetSelectEntryPos(); + + bHasHeader = pDlg->GetHeaders(); + bSortByRows = pDlg->GetByRows(); + FillFieldLists(); + aLbSort1.SelectEntryPos( nCurSel1 ); + aLbSort2.SelectEntryPos( nCurSel2 ); + aLbSort3.SelectEntryPos( nCurSel3 ); + } + } +} + +// ----------------------------------------------------------------------- + +int __EXPORT ScTabPageSortFields::DeactivatePage( SfxItemSet* pSetP ) +{ + if ( pDlg ) + { + if ( bHasHeader != pDlg->GetHeaders() ) + pDlg->SetHeaders( bHasHeader ); + + if ( bSortByRows != pDlg->GetByRows() ) + pDlg->SetByRows( bSortByRows ); + } + + if ( pSetP ) + FillItemSet( *pSetP ); + + return SfxTabPage::LEAVE_PAGE; +} + +// ----------------------------------------------------------------------- + +void ScTabPageSortFields::DisableField( USHORT nField ) +{ + nField--; + + if ( nField<=2 ) + { + aSortLbArr[nField] ->Disable(); + aDirBtnArr[nField][0]->Disable(); + aDirBtnArr[nField][1]->Disable(); + aFlArr[nField] ->Disable(); + } +} + +// ----------------------------------------------------------------------- + +void ScTabPageSortFields::EnableField( USHORT nField ) +{ + nField--; + + if ( nField<=2 ) + { + aSortLbArr[nField] ->Enable(); + aDirBtnArr[nField][0]->Enable(); + aDirBtnArr[nField][1]->Enable(); + aFlArr[nField] ->Enable(); + } +} + +// ----------------------------------------------------------------------- + +void ScTabPageSortFields::FillFieldLists() +{ + if ( pViewData ) + { + ScDocument* pDoc = pViewData->GetDocument(); + + if ( pDoc ) + { + aLbSort1.Clear(); + aLbSort2.Clear(); + aLbSort3.Clear(); + aLbSort1.InsertEntry( aStrUndefined, 0 ); + aLbSort2.InsertEntry( aStrUndefined, 0 ); + aLbSort3.InsertEntry( aStrUndefined, 0 ); + + SCCOL nFirstSortCol = rSortData.nCol1; + SCROW nFirstSortRow = rSortData.nRow1; + SCTAB nTab = pViewData->GetTabNo(); + USHORT i = 1; + + if ( bSortByRows ) + { + String aFieldName; + SCCOL nMaxCol = rSortData.nCol2; + SCCOL col; + + for ( col=nFirstSortCol; col<=nMaxCol && i<SC_MAXFIELDS; col++ ) + { + pDoc->GetString( col, nFirstSortRow, nTab, aFieldName ); + if ( !bHasHeader || (aFieldName.Len() == 0) ) + { + aFieldName = aStrColumn; + aFieldName += ' '; + aFieldName += ColToAlpha( col ); + } + nFieldArr[i] = col; + aLbSort1.InsertEntry( aFieldName, i ); + aLbSort2.InsertEntry( aFieldName, i ); + aLbSort3.InsertEntry( aFieldName, i ); + i++; + } + } + else + { + String aFieldName; + SCROW nMaxRow = rSortData.nRow2; + SCROW row; + + for ( row=nFirstSortRow; row<=nMaxRow && i<SC_MAXFIELDS; row++ ) + { + pDoc->GetString( nFirstSortCol, row, nTab, aFieldName ); + if ( !bHasHeader || (aFieldName.Len() == 0) ) + { + aFieldName = aStrRow; + aFieldName += ' '; + aFieldName += String::CreateFromInt32( row+1 ); + } + nFieldArr[i] = row; + aLbSort1.InsertEntry( aFieldName, i ); + aLbSort2.InsertEntry( aFieldName, i ); + aLbSort3.InsertEntry( aFieldName, i ); + i++; + } + } + nFieldCount = i; + } + } +} + +//------------------------------------------------------------------------ + +USHORT ScTabPageSortFields::GetFieldSelPos( SCCOLROW nField ) +{ + USHORT nFieldPos = 0; + BOOL bFound = FALSE; + + for ( USHORT n=1; n<nFieldCount && !bFound; n++ ) + { + if ( nFieldArr[n] == nField ) + { + nFieldPos = n; + bFound = TRUE; + } + } + + return nFieldPos; +} + +// ----------------------------------------------------------------------- +// Handler: +//--------- + +IMPL_LINK( ScTabPageSortFields, SelectHdl, ListBox *, pLb ) +{ + String aSelEntry = pLb->GetSelectEntry(); + + if ( pLb == &aLbSort1 ) + { + if ( aSelEntry == aStrUndefined ) + { + aLbSort2.SelectEntryPos( 0 ); + aLbSort3.SelectEntryPos( 0 ); + + if ( aFlSort2.IsEnabled() ) + DisableField( 2 ); + + if ( aFlSort3.IsEnabled() ) + DisableField( 3 ); + } + else + { + if ( !aFlSort2.IsEnabled() ) + EnableField( 2 ); + } + } + else if ( pLb == &aLbSort2 ) + { + if ( aSelEntry == aStrUndefined ) + { + aLbSort3.SelectEntryPos( 0 ); + if ( aFlSort3.IsEnabled() ) + DisableField( 3 ); + } + else + { + if ( !aFlSort3.IsEnabled() ) + EnableField( 3 ); + } + } + return 0; +} + +//======================================================================== +// Sortieroptionen-Tabpage: +//======================================================================== + +#include <layout/layout-pre.hxx> + +#if ENABLE_LAYOUT +#undef ScResId +#define ScResId(x) #x +#undef SfxTabPage +#define SfxTabPage( parent, id, args ) SfxTabPage( parent, "sort-options.xml", id, &args ) +#endif /* ENABLE_LAYOUT */ + +ScTabPageSortOptions::ScTabPageSortOptions( Window* pParent, + const SfxItemSet& rArgSet ) + + : SfxTabPage ( pParent, + ScResId( RID_SCPAGE_SORT_OPTIONS ), + rArgSet ), + // + aBtnCase ( this, ScResId( BTN_CASESENSITIVE ) ), + aBtnHeader ( this, ScResId( BTN_LABEL ) ), + aBtnFormats ( this, ScResId( BTN_FORMATS ) ), + aBtnCopyResult ( this, ScResId( BTN_COPYRESULT ) ), + aBtnNaturalSort ( this, ScResId( BTN_NATURALSORT ) ), + aLbOutPos ( this, ScResId( LB_OUTAREA ) ), + aEdOutPos ( this, ScResId( ED_OUTAREA ) ), + aBtnSortUser ( this, ScResId( BTN_SORT_USER ) ), + aLbSortUser ( this, ScResId( LB_SORT_USER ) ), + aFtLanguage ( this, ScResId( FT_LANGUAGE ) ), + aLbLanguage ( this, ScResId( LB_LANGUAGE ) ), + aFtAlgorithm ( this, ScResId( FT_ALGORITHM ) ), + aLbAlgorithm ( this, ScResId( LB_ALGORITHM ) ), + aLineDirection ( this, ScResId( FL_DIRECTION ) ), + aBtnTopDown ( this, ScResId( BTN_TOP_DOWN ) ), + aBtnLeftRight ( this, ScResId( BTN_LEFT_RIGHT ) ), +// aFtAreaLabel ( this, ScResId( FT_AREA_LABEL ) ), +// aFtArea ( this, ScResId( FT_AREA ) ), + // +#if ENABLE_LAYOUT +#undef this +#undef ScResId +#define ScResId(x) this, #x +#endif /* ENABLE_LAYOUT */ + aStrRowLabel ( ScResId( STR_ROW_LABEL ) ), + aStrColLabel ( ScResId( STR_COL_LABEL ) ), + aStrUndefined ( ScResId( SCSTR_UNDEFINED ) ), + aStrNoName ( ScGlobal::GetRscString(STR_DB_NONAME) ), + // +#if !TEST_LAYOUT + nWhichSort ( rArgSet.GetPool()->GetWhich( SID_SORT ) ), + rSortData ( ((const ScSortItem&) + rArgSet.Get( nWhichSort )).GetSortData() ), +#else /* TEST_LAYOUT */ + nWhichSort ( 0 ), + rSortData ( *new ScSortParam() ), +#endif /* TEST_LAYOUT */ + pViewData ( NULL ), + pDoc ( NULL ), + pDlg ( (ScSortDlg*)(GetParent() ? GetParent()->GetParent() : 0 ) ), + pColRes ( NULL ), + pColWrap ( NULL ) +{ +#if TEST_LAYOUT + (void) rArgSet; +#endif /* TEST_LAYOUT */ + Init(); + FreeResource(); + SetExchangeSupport(); +} + +// ----------------------------------------------------------------------- + +__EXPORT ScTabPageSortOptions::~ScTabPageSortOptions() +{ +#if !TEST_LAYOUT + USHORT nEntries = aLbOutPos.GetEntryCount(); + + for ( USHORT i=1; i<nEntries; i++ ) + delete (String*)aLbOutPos.GetEntryData( i ); +#endif /* !TEST_LAYOUT */ + + delete pColRes; + delete pColWrap; //! not if from document +} + +// ----------------------------------------------------------------------- + +void ScTabPageSortOptions::Init() +{ +// aStrAreaLabel = aFtAreaLabel.GetText(); +// aStrAreaLabel.Append( (sal_Unicode) ' ' ); + + // CollatorRessource has user-visible names for sort algorithms + pColRes = new CollatorRessource(); + + //! use CollatorWrapper from document? + pColWrap = new CollatorWrapper( comphelper::getProcessServiceFactory() ); + +#if !TEST_LAYOUT + const ScSortItem& rSortItem = (const ScSortItem&) + GetItemSet().Get( nWhichSort ); +#endif /* !TEST_LAYOUT */ + + aLbOutPos.SetSelectHdl ( LINK( this, ScTabPageSortOptions, SelOutPosHdl ) ); + aBtnCopyResult.SetClickHdl( LINK( this, ScTabPageSortOptions, EnableHdl ) ); + aBtnSortUser.SetClickHdl ( LINK( this, ScTabPageSortOptions, EnableHdl ) ); + aBtnTopDown.SetClickHdl ( LINK( this, ScTabPageSortOptions, SortDirHdl ) ); + aBtnLeftRight.SetClickHdl ( LINK( this, ScTabPageSortOptions, SortDirHdl ) ); + aLbLanguage.SetSelectHdl ( LINK( this, ScTabPageSortOptions, FillAlgorHdl ) ); + +#if !TEST_LAYOUT + pViewData = rSortItem.GetViewData(); +#endif /* TEST_LAYOUT */ + pDoc = pViewData ? pViewData->GetDocument() : NULL; + + DBG_ASSERT( pViewData, "ViewData not found! :-/" ); + +#if !TEST_LAYOUT + if ( pViewData && pDoc ) + { + String theArea; + ScDBCollection* pDBColl = pDoc->GetDBCollection(); + String theDbArea; + String theDbName = aStrNoName; + const SCTAB nCurTab = pViewData->GetTabNo(); + const ScAddress::Convention eConv = pDoc->GetAddressConvention(); +#endif /* !TEST_LAYOUT */ + + aLbOutPos.Clear(); + aLbOutPos.InsertEntry( aStrUndefined, 0 ); + aLbOutPos.Disable(); + +#if !TEST_LAYOUT + ScAreaNameIterator aIter( pDoc ); + String aName; + ScRange aRange; + String aRefStr; + while ( aIter.Next( aName, aRange ) ) + { + USHORT nInsert = aLbOutPos.InsertEntry( aName ); + + aRange.aStart.Format( aRefStr, SCA_ABS_3D, pDoc, eConv ); + aLbOutPos.SetEntryData( nInsert, new String( aRefStr ) ); + } +#endif /* !TEST_LAYOUT */ + + aLbOutPos.SelectEntryPos( 0 ); + aEdOutPos.SetText( EMPTY_STRING ); + +#if !TEST_LAYOUT + /* + * Ueberpruefen, ob es sich bei dem uebergebenen + * Bereich um einen Datenbankbereich handelt: + */ + + ScAddress aScAddress( rSortData.nCol1, rSortData.nRow1, nCurTab ); + ScRange( aScAddress, + ScAddress( rSortData.nCol2, rSortData.nRow2, nCurTab ) + ).Format( theArea, SCR_ABS, pDoc, eConv ); + + if ( pDBColl ) + { + ScDBData* pDBData + = pDBColl->GetDBAtArea( nCurTab, + rSortData.nCol1, rSortData.nRow1, + rSortData.nCol2, rSortData.nRow2 ); + if ( pDBData ) + { + pDBData->GetName( theDbName ); + aBtnHeader.Check( pDBData->HasHeader() ); + } + } + + theArea.AppendAscii(RTL_CONSTASCII_STRINGPARAM(" (")); + theArea += theDbName; + theArea += ')'; + + //aFtArea.SetText( theArea ); + //theArea.Insert( aStrAreaLabel, 0 ); + //aFtAreaLabel.SetText( theArea ); + + aBtnHeader.SetText( aStrColLabel ); + } +#endif /* TEST_LAYOUT */ + + FillUserSortListBox(); + + // get available languages + + aLbLanguage.SetLanguageList( LANG_LIST_ALL | LANG_LIST_ONLY_KNOWN, FALSE ); + aLbLanguage.InsertLanguage( LANGUAGE_SYSTEM ); +} + +//------------------------------------------------------------------------ + +USHORT* __EXPORT ScTabPageSortOptions::GetRanges() +{ + return pSortRanges; +} + +// ----------------------------------------------------------------------- + +#if ENABLE_LAYOUT +#undef SfxTabPage +#endif /* ENABLE_LAYOUT */ +SfxTabPage* __EXPORT ScTabPageSortOptions::Create( + Window* pParent, + const SfxItemSet& rArgSet ) +{ + return ( new ScTabPageSortOptions( pParent, rArgSet ) ); +} + +// ----------------------------------------------------------------------- + +void __EXPORT ScTabPageSortOptions::Reset( const SfxItemSet& /* rArgSet */ ) +{ + if ( rSortData.bUserDef ) + { + aBtnSortUser.Check( TRUE ); + aLbSortUser.Enable(); + aLbSortUser.SelectEntryPos( rSortData.nUserIndex ); + } + else + { + aBtnSortUser.Check( FALSE ); + aLbSortUser.Disable(); + aLbSortUser.SelectEntryPos( 0 ); + } + + aBtnCase.Check ( rSortData.bCaseSens ); + aBtnFormats.Check ( rSortData.bIncludePattern ); + aBtnHeader.Check ( rSortData.bHasHeader ); + aBtnNaturalSort.Check ( rSortData.bNaturalSort ); + + if ( rSortData.bByRow ) + { + aBtnTopDown.Check(); + aBtnHeader.SetText( aStrColLabel ); + } + else + { + aBtnLeftRight.Check(); + aBtnHeader.SetText( aStrRowLabel ); + } + + LanguageType eLang = MsLangId::convertLocaleToLanguage( rSortData.aCollatorLocale ); + if ( eLang == LANGUAGE_DONTKNOW ) + eLang = LANGUAGE_SYSTEM; + aLbLanguage.SelectLanguage( eLang ); + FillAlgorHdl( &aLbLanguage ); // get algorithms, select default + if ( rSortData.aCollatorAlgorithm.Len() ) + aLbAlgorithm.SelectEntry( pColRes->GetTranslation( rSortData.aCollatorAlgorithm ) ); + + if ( pDoc && !rSortData.bInplace ) + { + String aStr; + USHORT nFormat = (rSortData.nDestTab != pViewData->GetTabNo()) + ? SCR_ABS_3D + : SCR_ABS; + + theOutPos.Set( rSortData.nDestCol, + rSortData.nDestRow, + rSortData.nDestTab ); + + theOutPos.Format( aStr, nFormat, pDoc, pDoc->GetAddressConvention() ); + aBtnCopyResult.Check(); + aLbOutPos.Enable(); + aEdOutPos.Enable(); + aEdOutPos.SetText( aStr ); + EdOutPosModHdl( &aEdOutPos ); + aEdOutPos.GrabFocus(); + aEdOutPos.SetSelection( Selection( 0, SELECTION_MAX ) ); + } + else + { + aBtnCopyResult.Check( FALSE ); + aLbOutPos.Disable(); + aEdOutPos.Disable(); + aEdOutPos.SetText( EMPTY_STRING ); + } +} + +// ----------------------------------------------------------------------- + +BOOL __EXPORT ScTabPageSortOptions::FillItemSet( SfxItemSet& rArgSet ) +{ + ScSortParam theSortData = rSortData; + if (pDlg) + { + const SfxItemSet* pExample = pDlg->GetExampleSet(); + const SfxPoolItem* pItem; + if ( pExample && pExample->GetItemState( nWhichSort, TRUE, &pItem ) == SFX_ITEM_SET ) + theSortData = ((const ScSortItem*)pItem)->GetSortData(); + } + + theSortData.bByRow = aBtnTopDown.IsChecked(); + theSortData.bHasHeader = aBtnHeader.IsChecked(); + theSortData.bCaseSens = aBtnCase.IsChecked(); + theSortData.bNaturalSort = aBtnNaturalSort.IsChecked(); + theSortData.bIncludePattern = aBtnFormats.IsChecked(); + theSortData.bInplace = !aBtnCopyResult.IsChecked(); + theSortData.nDestCol = theOutPos.Col(); + theSortData.nDestRow = theOutPos.Row(); + theSortData.nDestTab = theOutPos.Tab(); + theSortData.bUserDef = aBtnSortUser.IsChecked(); + theSortData.nUserIndex = (aBtnSortUser.IsChecked()) + ? aLbSortUser.GetSelectEntryPos() + : 0; + + // get locale + LanguageType eLang = aLbLanguage.GetSelectLanguage(); + theSortData.aCollatorLocale = MsLangId::convertLanguageToLocale( eLang, false ); + + // get algorithm + String sAlg; + if ( eLang != LANGUAGE_SYSTEM ) + { + uno::Sequence<rtl::OUString> aAlgos = pColWrap->listCollatorAlgorithms( + theSortData.aCollatorLocale ); + USHORT nSel = aLbAlgorithm.GetSelectEntryPos(); + if ( nSel < aAlgos.getLength() ) + sAlg = aAlgos[nSel]; + } + theSortData.aCollatorAlgorithm = sAlg; + +#if !TEST_LAYOUT + rArgSet.Put( ScSortItem( SCITEM_SORTDATA, &theSortData ) ); +#endif /* TEST_LAYOUT */ + return TRUE; +} + +// ----------------------------------------------------------------------- + +// fuer Datenaustausch ohne Dialog-Umweg: (! noch zu tun !) +// void ScTabPageSortOptions::ActivatePage( const SfxItemSet& rSet ) +void __EXPORT ScTabPageSortOptions::ActivatePage() +{ + if ( pDlg ) + { + if ( aBtnHeader.IsChecked() != pDlg->GetHeaders() ) + { + aBtnHeader.Check( pDlg->GetHeaders() ); + } + + if ( aBtnTopDown.IsChecked() != pDlg->GetByRows() ) + { + aBtnTopDown.Check( pDlg->GetByRows() ); + aBtnLeftRight.Check( !pDlg->GetByRows() ); + } + + aBtnHeader.SetText( (pDlg->GetByRows()) + ? aStrColLabel + : aStrRowLabel ); + } +} + +// ----------------------------------------------------------------------- + +int __EXPORT ScTabPageSortOptions::DeactivatePage( SfxItemSet* pSetP ) +{ + BOOL bPosInputOk = TRUE; + + if ( aBtnCopyResult.IsChecked() ) + { + String thePosStr = aEdOutPos.GetText(); + ScAddress thePos; + xub_StrLen nColonPos = thePosStr.Search( ':' ); + + if ( STRING_NOTFOUND != nColonPos ) + thePosStr.Erase( nColonPos ); + + if ( pViewData ) + { + // visible table is default for input without table + // must be changed to GetRefTabNo when sorting has RefInput! + thePos.SetTab( pViewData->GetTabNo() ); + } + + USHORT nResult = thePos.Parse( thePosStr, pDoc, pDoc->GetAddressConvention() ); + + bPosInputOk = ( SCA_VALID == (nResult & SCA_VALID) ); + + if ( !bPosInputOk ) + { +#if !ENABLE_LAYOUT + ErrorBox( this, WinBits( WB_OK | WB_DEF_OK ), + ScGlobal::GetRscString( STR_INVALID_TABREF ) + ).Execute(); +#endif /* ENABLE_LAYOUT */ + aEdOutPos.GrabFocus(); + aEdOutPos.SetSelection( Selection( 0, SELECTION_MAX ) ); + theOutPos.Set(0,0,0); + } + else + { + aEdOutPos.SetText( thePosStr ); + theOutPos = thePos; + } + } + + if ( pDlg && bPosInputOk ) + { + pDlg->SetHeaders( aBtnHeader.IsChecked() ); + pDlg->SetByRows ( aBtnTopDown.IsChecked() ); + } + + if ( pSetP && bPosInputOk ) + FillItemSet( *pSetP ); + + return bPosInputOk ? SfxTabPage::LEAVE_PAGE : SfxTabPage::KEEP_PAGE; +} + +// ----------------------------------------------------------------------- + +void ScTabPageSortOptions::FillUserSortListBox() +{ + ScUserList* pUserLists = ScGlobal::GetUserList(); + + aLbSortUser.Clear(); + if ( pUserLists ) + { + USHORT nCount = pUserLists->GetCount(); + if ( nCount > 0 ) + for ( USHORT i=0; i<nCount; i++ ) + aLbSortUser.InsertEntry( (*pUserLists)[i]->GetString() ); + } +} + +// ----------------------------------------------------------------------- +// Handler: + +IMPL_LINK( ScTabPageSortOptions, EnableHdl, CheckBox *, pBox ) +{ + if ( pBox == &aBtnCopyResult ) + { + if ( pBox->IsChecked() ) + { + aLbOutPos.Enable(); + aEdOutPos.Enable(); + aEdOutPos.GrabFocus(); + } + else + { + aLbOutPos.Disable(); + aEdOutPos.Disable(); + } + } + else if ( pBox == &aBtnSortUser ) + { + if ( pBox->IsChecked() ) + { + aLbSortUser.Enable(); + aLbSortUser.GrabFocus(); + } + else + aLbSortUser.Disable(); + } + return 0; +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( ScTabPageSortOptions, SelOutPosHdl, ListBox *, pLb ) +{ + if ( pLb == &aLbOutPos ) + { + String aString; + USHORT nSelPos = aLbOutPos.GetSelectEntryPos(); + + if ( nSelPos > 0 ) + aString = *(String*)aLbOutPos.GetEntryData( nSelPos ); + + aEdOutPos.SetText( aString ); + } + return 0; +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( ScTabPageSortOptions, SortDirHdl, RadioButton *, pBtn ) +{ + if ( pBtn == &aBtnTopDown ) + { + aBtnHeader.SetText( aStrColLabel ); + } + else if ( pBtn == &aBtnLeftRight ) + { + aBtnHeader.SetText( aStrRowLabel ); + } + return 0; +} + +// ----------------------------------------------------------------------- + +void __EXPORT ScTabPageSortOptions::EdOutPosModHdl( Edit* pEd ) +{ + if ( pEd == &aEdOutPos ) + { + String theCurPosStr = aEdOutPos.GetText(); + USHORT nResult = ScAddress().Parse( theCurPosStr, pDoc, pDoc->GetAddressConvention() ); + + if ( SCA_VALID == (nResult & SCA_VALID) ) + { + String* pStr = NULL; + BOOL bFound = FALSE; + USHORT i = 0; + USHORT nCount = aLbOutPos.GetEntryCount(); + + for ( i=2; i<nCount && !bFound; i++ ) + { + pStr = (String*)aLbOutPos.GetEntryData( i ); + bFound = (theCurPosStr == *pStr); + } + + if ( bFound ) + aLbOutPos.SelectEntryPos( --i ); + else + aLbOutPos.SelectEntryPos( 0 ); + } + } +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( ScTabPageSortOptions, FillAlgorHdl, void *, EMPTYARG ) +{ + aLbAlgorithm.SetUpdateMode( FALSE ); + aLbAlgorithm.Clear(); + + LanguageType eLang = aLbLanguage.GetSelectLanguage(); + if ( eLang == LANGUAGE_SYSTEM ) + { + // for LANGUAGE_SYSTEM no algorithm can be selected because + // it wouldn't necessarily exist for other languages + // -> leave list box empty if LANGUAGE_SYSTEM is selected + aFtAlgorithm.Enable( FALSE ); // nothing to select + aLbAlgorithm.Enable( FALSE ); // nothing to select + } + else + { + lang::Locale aLocale( MsLangId::convertLanguageToLocale( eLang )); + uno::Sequence<rtl::OUString> aAlgos = pColWrap->listCollatorAlgorithms( aLocale ); + + long nCount = aAlgos.getLength(); + const rtl::OUString* pArray = aAlgos.getConstArray(); + for (long i=0; i<nCount; i++) + { + String sAlg = pArray[i]; + String sUser = pColRes->GetTranslation( sAlg ); + aLbAlgorithm.InsertEntry( sUser, LISTBOX_APPEND ); + } + aLbAlgorithm.SelectEntryPos( 0 ); // first entry is default + aFtAlgorithm.Enable( nCount > 1 ); // enable only if there is a choice + aLbAlgorithm.Enable( nCount > 1 ); // enable only if there is a choice + } + + aLbAlgorithm.SetUpdateMode( TRUE ); + return 0; +} + + diff --git a/toolkit/workben/layout/tpsort.hxx b/toolkit/workben/layout/tpsort.hxx new file mode 100644 index 000000000000..bb8b30e396df --- /dev/null +++ b/toolkit/workben/layout/tpsort.hxx @@ -0,0 +1,220 @@ +/************************************************************************* + * + * 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: tpsort.hxx,v $ + * $Revision: 1.9 $ + * + * 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 SC_TPSORT_HXX +#define SC_TPSORT_HXX + + +#include <sfx2/tabdlg.hxx> +#include <vcl/edit.hxx> +#include <vcl/fixed.hxx> +#include <vcl/lstbox.hxx> +#include <svtools/stdctrl.hxx> +#include <svx/langbox.hxx> + + +#include "global.hxx" +#include "address.hxx" + +//------------------------------------------------------------------------ + +// +1 because one field is reserved for the "- undefined -" entry +#define SC_MAXFIELDS MAXCOLCOUNT+1 + +class ScViewData; +class ScSortDlg; +struct ScSortParam; + +//======================================================================== +// Kriterien (Sort Criteria) + +class ScTabPageSortFields : public SfxTabPage +{ +public: + ScTabPageSortFields( Window* pParent, + const SfxItemSet& rArgSet ); + ~ScTabPageSortFields(); + + static SfxTabPage* Create ( Window* pParent, + const SfxItemSet& rArgSet ); + static USHORT* GetRanges (); + virtual BOOL FillItemSet ( SfxItemSet& rArgSet ); + virtual void Reset ( const SfxItemSet& rArgSet ); + +protected: +// fuer Datenaustausch (sollte noch umgestellt werden!) +// virtual void ActivatePage ( const SfxItemSet& rSet ); + using SfxTabPage::ActivatePage; + using SfxTabPage::DeactivatePage; + virtual void ActivatePage (); + virtual int DeactivatePage ( SfxItemSet* pSet = 0); + +private: + FixedLine aFlSort1; + ListBox aLbSort1; + RadioButton aBtnUp1; + RadioButton aBtnDown1; + + FixedLine aFlSort2; + ListBox aLbSort2; + RadioButton aBtnUp2; + RadioButton aBtnDown2; + + FixedLine aFlSort3; + ListBox aLbSort3; + RadioButton aBtnUp3; + RadioButton aBtnDown3; + + String aStrUndefined; + String aStrColumn; + String aStrRow; + + const USHORT nWhichSort; + ScSortDlg* pDlg; + ScViewData* pViewData; + const ScSortParam& rSortData; + SCCOLROW nFieldArr[SC_MAXFIELDS]; + USHORT nFieldCount; + SCCOL nFirstCol; + SCROW nFirstRow; + BOOL bHasHeader; + BOOL bSortByRows; + + ListBox* aSortLbArr[3]; + RadioButton* aDirBtnArr[3][2]; + FixedLine* aFlArr[3]; + +#ifdef _TPSORT_CXX +private: + void Init (); + void DisableField ( USHORT nField ); + void EnableField ( USHORT nField ); + void FillFieldLists (); + USHORT GetFieldSelPos ( SCCOLROW nField ); + + // Handler ------------------------ + DECL_LINK( SelectHdl, ListBox * ); +#endif +}; + +//======================================================================== +// Sortieroptionen (Sort Options) + +class ScDocument; +class ScRangeData; +class CollatorRessource; +class CollatorWrapper; + +#include <sfx2/layout.hxx> +#include <layout/layout-pre.hxx> + +class ScTabPageSortOptions : public SfxTabPage +{ +public: + ScTabPageSortOptions( Window* pParent, + const SfxItemSet& rArgSet ); + ~ScTabPageSortOptions(); + +#undef SfxTabPage +#define SfxTabPage ::SfxTabPage + static SfxTabPage* Create ( Window* pParent, + const SfxItemSet& rArgSet ); + static USHORT* GetRanges (); + virtual BOOL FillItemSet ( SfxItemSet& rArgSet ); + virtual void Reset ( const SfxItemSet& rArgSet ); + +protected: +// fuer Datenaustausch (sollte noch umgestellt werden!) +// virtual void ActivatePage ( const SfxItemSet& rSet ); + using SfxTabPage::ActivatePage; + using SfxTabPage::DeactivatePage; + virtual void ActivatePage (); + virtual int DeactivatePage ( SfxItemSet* pSet = 0); + +private: + + CheckBox aBtnCase; + CheckBox aBtnHeader; + CheckBox aBtnFormats; + CheckBox aBtnCopyResult; + + CheckBox aBtnNaturalSort; + ListBox aLbOutPos; + Edit aEdOutPos; + + CheckBox aBtnSortUser; + ListBox aLbSortUser; + + FixedText aFtLanguage; + SvxLanguageBox aLbLanguage; + FixedText aFtAlgorithm; + ListBox aLbAlgorithm; + + FixedLine aLineDirection; + RadioButton aBtnTopDown; + RadioButton aBtnLeftRight; + +// FixedText aFtAreaLabel; +// FixedInfo aFtArea; + LocalizedString aStrRowLabel; + LocalizedString aStrColLabel; + LocalizedString aStrUndefined; + String aStrNoName; + String aStrAreaLabel; + + const USHORT nWhichSort; + const ScSortParam& rSortData; + ScViewData* pViewData; + ScDocument* pDoc; + ScSortDlg* pDlg; + ScAddress theOutPos; + + CollatorRessource* pColRes; + CollatorWrapper* pColWrap; + +#ifdef _TPSORT_CXX +private: + void Init (); + void FillUserSortListBox (); + void FillOutPosList (); + + // Handler ------------------------ + DECL_LINK( EnableHdl, CheckBox * ); + DECL_LINK( SelOutPosHdl, ListBox * ); + void EdOutPosModHdl ( Edit* pEd ); + DECL_LINK( SortDirHdl, RadioButton * ); + DECL_LINK( FillAlgorHdl, void * ); +#endif +}; + +#include <layout/layout-post.hxx> + +#endif // SC_TPSORT_HXX + diff --git a/toolkit/workben/layout/uno.hxx b/toolkit/workben/layout/uno.hxx index 890341deccdf..a449429338fc 100644 --- a/toolkit/workben/layout/uno.hxx +++ b/toolkit/workben/layout/uno.hxx @@ -32,13 +32,13 @@ #ifndef _LAYOUT_UNO_HXX #define _LAYOUT_UNO_HXX -#include <stdio.h> +#include <cstdio> #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include "root.hxx" -#include "factory.hxx" +#include <layout/core/root.hxx> +#include <layout/core/factory.hxx> #if LAYOUT_WEAK #include <cppuhelper/implbase1.hxx> diff --git a/toolkit/workben/layout/wordcount-plain.xml b/toolkit/workben/layout/wordcount-plain.xml index cf31a7614840..a7c34fe5a16f 100644 --- a/toolkit/workben/layout/wordcount-plain.xml +++ b/toolkit/workben/layout/wordcount-plain.xml @@ -22,7 +22,7 @@ </hbox> <fixedline height="8" id="FL_BOTTOM" width="158" x="6" y="77"/> <hbox> - <okbutton def-button="true" height="14" id="PB_OK" width="50" x="61" y="88"/> + <okbutton defbutton="true" height="14" id="PB_OK" width="50" x="61" y="88"/> <helpbutton height="14" id="PB_HELP" width="50" x="114" y="88"/> </hbox> </vbox> diff --git a/toolkit/workben/layout/wordcount-tight.xml b/toolkit/workben/layout/wordcount-tight.xml index 009113f6cdcf..a9f6a7a09393 100644 --- a/toolkit/workben/layout/wordcount-tight.xml +++ b/toolkit/workben/layout/wordcount-tight.xml @@ -28,7 +28,7 @@ <fixedline cnt:padding="1" id="FL_BOTTOM"/> <hbox border="5"> <flow homogeneous="true"/> - <okbutton id="PB_OK" cnt:expand="false" default="true"/> + <okbutton id="PB_OK" cnt:expand="false" defbutton="true"/> <helpbutton id="PB_HELP" cnt:expand="false"/> </hbox> </vbox> diff --git a/toolkit/workben/layout/wordcount.xml b/toolkit/workben/layout/wordcount.xml index c8f8092e3698..fa9d44f896ad 100644 --- a/toolkit/workben/layout/wordcount.xml +++ b/toolkit/workben/layout/wordcount.xml @@ -7,12 +7,12 @@ xmlns:cnt="http://openoffice.org/2007/layout/container" help-id="HID_DLG_WORDCOUNT" id="DLG_WORDCOUNT" - sizeable="true" moveable="true" optimumsize="true" + sizeable="true" moveable="true" optimumsize="true" closeable="true" has_border="true" sv-look="true" _title="Word Count"> - <vbox border="5" spacing="5"> + <vbox border="12" spacing="6"> <fixedline id="FL_CURRENT" _text="Current selection"/> <hbox> - <vbox cnt:padding="13" spacing="5"> + <vbox cnt:padding="12" spacing="6"> <hbox> <fixedtext id="FT_CURRENTWORD" _label="Words:"/> <flow cnt:padding="60"/> @@ -25,11 +25,11 @@ </hbox> </vbox> </hbox> - <!-- if we could do cnt:cnt:padding="-13" here, we would not have to close - and reope the hbox/vbox thing !--> + <!-- if we could do cnt:cnt:padding="-12" here, we would not have to close + and reopen the hbox/vbox thing !--> <fixedline id="FL_DOC" _text="Whole document"/> <hbox> - <vbox cnt:padding="13" spacing="5"> + <vbox cnt:padding="12" spacing="6"> <hbox> <fixedtext id="FT_DOCWORD" _label="Words:"/> <fixedtext id="FI_DOCWORD" right="true" _label="000"/> @@ -41,9 +41,9 @@ </vbox> </hbox> <fixedline cnt:padding="1" id="FL_BOTTOM"/> - <dialogbuttonhbox spacing="5"> + <dialogbuttonhbox spacing="12"> <flow/> - <okbutton id="PB_OK"/> + <okbutton defbutton="true" id="PB_OK"/> <helpbutton id="PB_HELP"/> </dialogbuttonhbox> </vbox> diff --git a/toolkit/workben/layout/wordcountdialog.cxx b/toolkit/workben/layout/wordcountdialog.cxx index 87bca710aabf..49aa2f9ae7a7 100644 --- a/toolkit/workben/layout/wordcountdialog.cxx +++ b/toolkit/workben/layout/wordcountdialog.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: wordcountdialog.cxx,v $ - * $Revision: 1.4 $ + * $Revision: 1.10 $ * * This file is part of OpenOffice.org. * @@ -47,6 +47,15 @@ #include <wordcountdialog.hrc> #endif /* !TEST_LAYOUT */ +#if ENABLE_LAYOUT +#undef SW_RES +#define SW_RES(x) #x +#undef SfxModalDialog +#define SfxModalDialog( parent, id ) Dialog( parent, "wordcount.xml", id ) +#define SW_WORDCOUNTDIALOG_HRC +#include <helpid.h> +#endif /* ENABLE_LAYOUT */ + /*-- 06.04.2004 16:05:55--------------------------------------------------- -----------------------------------------------------------------------*/ @@ -73,6 +82,9 @@ SwWordCountDialog::SwWordCountDialog(Window* pParent) : #pragma warning (default : 4355) #endif { +#if ENABLE_LAYOUT + SetHelpId (HID_DLG_WORDCOUNT); +#endif /* ENABLE_LAYOUT */ FreeResource(); } /*-- 06.04.2004 16:05:56--------------------------------------------------- @@ -84,17 +96,12 @@ SwWordCountDialog::~SwWordCountDialog() /*-- 06.04.2004 16:05:57--------------------------------------------------- -----------------------------------------------------------------------*/ -void SwWordCountDialog::SetValues(const SwDocStat& -#if !TEST_LAYOUT - rCurrent, -#endif - , const SwDocStat& -#if !TEST_LAYOUT - rDoc -#endif - ) +void SwWordCountDialog::SetValues(const SwDocStat& rCurrent, const SwDocStat& rDoc) { -#if !TEST_LAYOUT +#if TEST_LAYOUT + (void) rCurrent; + (void) rDoc; +#else /* !TEST_LAYOUT */ aCurrentWordFI.SetText( String::CreateFromInt32(rCurrent.nWord )); aCurrentCharacterFI.SetText(String::CreateFromInt32(rCurrent.nChar )); aDocWordFI.SetText( String::CreateFromInt32(rDoc.nWord )); diff --git a/toolkit/workben/layout/wordcountdialog.hxx b/toolkit/workben/layout/wordcountdialog.hxx index 50c43459d12d..b19b3cca8c94 100644 --- a/toolkit/workben/layout/wordcountdialog.hxx +++ b/toolkit/workben/layout/wordcountdialog.hxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: wordcountdialog.hxx,v $ - * $Revision: 1.3 $ + * $Revision: 1.5 $ * * This file is part of OpenOffice.org. * diff --git a/toolkit/workben/layout/zoom-indent.xml b/toolkit/workben/layout/zoom-indent.xml index 7389780a3a9d..bd5853acdce4 100644 --- a/toolkit/workben/layout/zoom-indent.xml +++ b/toolkit/workben/layout/zoom-indent.xml @@ -33,7 +33,7 @@ </hbox> </vbox> <vbox border="6" spacing="4"> - <okbutton id="OkButton" cnt:expand="false" default="true"/> + <okbutton id="OkButton" cnt:expand="false" defbutton="true"/> <cancelbutton id="CancelButton" cnt:expand="false"/> <helpbutton id="HelpButton" cnt:expand="false"/> </vbox> diff --git a/toolkit/workben/layout/zoom-plain.xml b/toolkit/workben/layout/zoom-plain.xml index 30b72a3e564f..c8383b8767a7 100644 --- a/toolkit/workben/layout/zoom-plain.xml +++ b/toolkit/workben/layout/zoom-plain.xml @@ -3,7 +3,7 @@ <modaldialog sizeable="true" height="142" help-id="SID_ATTR_ZOOM" moveable="true" output-size="true" id="RID_SVXDLG_ZOOM" sv-look="true" text="Zoom" width="160" xmlns="http://openoffice.org/2007/layout" xmlns:cnt="http://openoffice.org/2007/layout/container"> <vbox> <fixedline height="8" id="FL_ZOOM" text="Zoom factor" width="92" x="6" y="3"/> - <okbutton def-button="true" height="14" id="BTN_ZOOM_OK" width="50" x="104" y="6"/> + <okbutton defbutton="true" height="14" id="BTN_ZOOM_OK" width="50" x="104" y="6"/> <radiobutton height="10" id="BTN_WHOLE_PAGE" width="80" x="12" y="14"/> <cancelbutton height="14" id="BTN_ZOOM_CANCEL" width="50" x="104" y="23"/> <radiobutton height="10" id="BTN_PAGE_WIDTH" width="80" x="12" y="27"/> diff --git a/toolkit/workben/layout/zoom.cxx b/toolkit/workben/layout/zoom.cxx index 6717f831b509..39fcb5e94401 100644 --- a/toolkit/workben/layout/zoom.cxx +++ b/toolkit/workben/layout/zoom.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: zoom.cxx,v $ - * $Revision: 1.4 $ + * $Revision: 1.12 $ * * This file is part of OpenOffice.org. * @@ -51,9 +51,9 @@ #define _SVX_ZOOM_CXX #include <svx/dialogs.hrc> -#if !ENABLE_LAYOUT +#if !TEST_LAYOUT #include "zoom.hrc" -#endif /* !ENABLE_LAYOUT */ +#endif /* !TEST_LAYOUT */ #include "zoom.hxx" #if TEST_LAYOUT @@ -114,6 +114,13 @@ struct SvxViewLayoutItem : public LAYOUT_SfxPoolItem #include <layout/layout-pre.hxx> +#if ENABLE_LAYOUT +#undef SVX_RES +#define SVX_RES(x) #x +#undef SfxModalDialog +#define SfxModalDialog( parent, id ) Dialog( parent, "zoom.xml", id ) +#endif /* ENABLE_LAYOUT */ + // static ---------------------------------------------------------------- static USHORT pRanges[] = @@ -284,6 +291,9 @@ SvxZoomDialog::SvxZoomDialog( Window* pParent, const SfxItemSet& rCoreSet ) : bModified ( FALSE ) { +#if ENABLE_LAYOUT + SetHelpId (SID_ATTR_ZOOM); +#endif /* ENABLE_LAYOUT */ Link aLink = LINK( this, SvxZoomDialog, UserHdl ); a100Btn.SetClickHdl( aLink ); aOptimalBtn.SetClickHdl( aLink ); diff --git a/canvas/source/cairo/prex.h b/toolkit/workben/layout/zoom.hrc index 6f1289fe9e5e..3f0f979bd4ae 100644 --- a/canvas/source/cairo/prex.h +++ b/toolkit/workben/layout/zoom.hrc @@ -2,11 +2,11 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: prex.h,v $ + * $RCSfile: zoom.hrc,v $ * * $Revision: 1.4 $ * - * last change: $Author: kz $ $Date: 2008-06-30 12:58:44 $ + * last change: $Author: kz $ $Date: 2008/03/07 15:16:57 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -32,55 +32,30 @@ * MA 02111-1307 USA * ************************************************************************/ - -#ifndef _PREX_H -#define _PREX_H - -#define Window XLIB_Window -#define BYTE XLIB_BYTE -#define INT8 XLIB_INT8 -#define INT64 XLIB_INT64 -#define BOOL XLIB_BOOL -#define Font XLIB_Font -#define Cursor XLIB_Cursor -#define String XLIB_String -#define KeyCode XLIB_KeyCode -#define Region XLIB_Region -#define Icon XLIB_Icon -#define Time XLIB_Time -#define Region XLIB_Region -#define Boolean XLIB_Boolean - -#if defined __cplusplus -extern "C" { -#endif - -#if defined(LINUX) || defined(FREEBSD) || defined(MACOSX) // should really check for xfree86 or for X11R6.1 and higher -#define __XKeyboardExtension__ 1 -#else -#define __XKeyboardExtension__ 0 -#endif - -#include <X11/X.h> -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <X11/StringDefs.h> -#include <X11/extensions/Xrender.h> -#if __XKeyboardExtension__ -#include <X11/XKBlib.h> -#endif -typedef unsigned long Pixel; - -#undef DestroyAll -#define DestroyAll XLIB_DestroyAll -#define XLIB_DestroyAll 0 -#undef String -#define String XLIB_String - -#undef KeyCode -#define KeyCode XLIB_KeyCode //undef in intrinsics - -#define __Ol_OlXlibExt_h__ +#ifndef _SVX_ZOOM_HRC +#define _SVX_ZOOM_HRC + +// defines ------------------------------------------------------------------ + +#define FL_ZOOM 14 +#define BTN_OPTIMAL 15 +#define BTN_WHOLE_PAGE 16 +#define BTN_PAGE_WIDTH 17 +#define BTN_100 18 +#define BTN_USER 19 +#define ED_USER 20 + +#define FL_VIEWLAYOUT 21 +#define BTN_AUTOMATIC 22 +#define BTN_SINGLE 23 +#define BTN_COLUMNS 24 +#define ED_COLUMNS 25 +#define CHK_BOOK 26 + +#define FL_BOTTOM 27 +#define BTN_ZOOM_OK 28 +#define BTN_ZOOM_CANCEL 29 +#define BTN_ZOOM_HELP 30 #endif diff --git a/toolkit/workben/layout/zoom.hxx b/toolkit/workben/layout/zoom.hxx index b865a9b8fc9e..f16e08d558aa 100644 --- a/toolkit/workben/layout/zoom.hxx +++ b/toolkit/workben/layout/zoom.hxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: zoom.hxx,v $ - * $Revision: 1.4 $ + * $Revision: 1.6 $ * * This file is part of OpenOffice.org. * diff --git a/toolkit/workben/layout/zoom.xml b/toolkit/workben/layout/zoom.xml index 78e30ee11dfd..5cc376168a27 100644 --- a/toolkit/workben/layout/zoom.xml +++ b/toolkit/workben/layout/zoom.xml @@ -7,20 +7,20 @@ xmlns:cnt="http://openoffice.org/2007/layout/container" id="RID_SVXDLG_ZOOM" _title="Zoom & View Layout" optimumsize="true" help-id="SID_ATTR_ZOOM" - has_border="true" sizeable="true" moveable="true"> - <vbox spacing="5" border="5"> + has_border="true" sizeable="true" moveable="true" closeable="true"> + <vbox spacing="0" border="12"> <hbox spacing="0" border="0"> - <vbox spacing="5" border="5"> - <fixedline id="FL_ZOOM" _text="Zoom factor" cnt:expand="true"/> - <radiobutton radiogroup="zoom" id="BTN_OPTIMAL" _label="Optimal"/> - <radiobutton radiogroup="zoom" id="BTN_WHOLE_PAGE" _label="Whole Page"/> - <radiobutton radiogroup="zoom" id="BTN_PAGE_WIDTH" _label="Page Width"/> - <radiobutton radiogroup="zoom" id="BTN_100" _label="100 %"/> + <vbox spacing="6" border="0"> + <fixedline id="FL_ZOOM" _text="Zoom factor" cnt:expand="false"/> + <radiobutton radiogroup="zoom-factor" id="BTN_OPTIMAL" _label="Optimal"/> + <radiobutton radiogroup="zoom-factor" id="BTN_WHOLE_PAGE" _label="Whole Page"/> + <radiobutton radiogroup="zoom-factor" id="BTN_PAGE_WIDTH" _label="Page Width"/> + <radiobutton radiogroup="zoom-factor" id="BTN_100" _label="100 %"/> <hbox cnt:expand="false" cnt:fill="true"> <align cnt:expand="false" cnt:fill="true"> - <radiobutton cnt:v-align="0.5" cnt:v-fill="0" radiogroup="zoom" id="BTN_USER" _label="Variable"/> + <radiobutton cnt:v-align="0.5" cnt:v-fill="0" radiogroup="zoom-factor" id="BTN_USER" _label="Variable"/> </align> - <flow cnt:padding="10" cnt:expand="false"/> + <flow cnt:padding="12" cnt:expand="false"/> <metricfield id="ED_USER" value-step="1" repeat="true" has_border="true" spin="true" _text="100%" unit="11" custom-unit-text="%" @@ -28,15 +28,16 @@ cnt:expand="false"/> </hbox> </vbox> - <vbox spacing="5" border="5"> - <fixedline id="FL_VIEWLAYOUT" _text="View layout" cnt:expand="true"/> - <radiobutton radiogroup="zoom" id="BTN_AUTOMATIC" _label="~Automatic"/> - <radiobutton radiogroup="zoom" id="BTN_SINGLE" _label="~Single page"/> + <flow/> + <vbox spacing="6" border="0"> + <fixedline id="FL_VIEWLAYOUT" _text="View layout" cnt:expand="false"/> + <radiobutton radiogroup="zoom-layout" id="BTN_AUTOMATIC" _label="~Automatic"/> + <radiobutton radiogroup="zoom-layout" id="BTN_SINGLE" _label="~Single page"/> <hbox cnt:expand="false" cnt:fill="true"> <align cnt:expand="false" cnt:fill="true"> - <radiobutton cnt:v-align="0.5" cnt:v-fill="0" radiogroup="zoom" id="BTN_COLUMNS" _label="~Columns"/> + <radiobutton cnt:v-align="0.5" cnt:v-fill="0" radiogroup="zoom-layout" id="BTN_COLUMNS" _label="~Columns"/> </align> - <flow cnt:padding="10" cnt:expand="false"/> + <flow cnt:padding="12" cnt:expand="false"/> <metricfield id="ED_COLUMNS" value-step="1" repeat="true" has_border="true" spin="true" _text="100%" @@ -45,15 +46,15 @@ spin-value="1" cnt:expand="false"/> </hbox> - <hbox><flow cnt:expand="false" cnt:padding="10"/><checkbox id="CHK_BOOK" _label="~Book mode"/></hbox> + <hbox><flow cnt:expand="false" cnt:padding="12"/><checkbox id="CHK_BOOK" _label="~Book mode"/></hbox> </vbox> </hbox> - <fixedline cnt:padding="1" id="FL_BOTTOM"/> - <dialogbuttonhbox border="5" spacing="5"> + <fixedline cnt:padding="6" id="FL_BOTTOM"/> + <dialogbuttonhbox border="0" spacing="12"> <flow/> - <okbutton id="BTN_ZOOM_OK"/> + <okbutton defbutton="true" id="BTN_ZOOM_OK"/> <cancelbutton id="BTN_ZOOM_CANCEL"/> - <helpbutton id="BTN_ZOOM_HELP"/> + <helpbutton id="BTN_ZOOM_HELP"/> </dialogbuttonhbox> </vbox> </modaldialog> diff --git a/toolkit/workben/no_localization b/toolkit/workben/no_localization new file mode 100644 index 000000000000..3ce3aa0ec048 --- /dev/null +++ b/toolkit/workben/no_localization @@ -0,0 +1 @@ +Touch me to prevent that the localisation process extracts strings #i85733# diff --git a/tools/bootstrp/addexes2/makefile.mk b/tools/bootstrp/addexes2/makefile.mk index 343dd39c8c71..cd006a35ddd8 100644 --- a/tools/bootstrp/addexes2/makefile.mk +++ b/tools/bootstrp/addexes2/makefile.mk @@ -43,7 +43,7 @@ TARGETTYPE=CUI APP1TARGET= mkunroll APP1OBJS= $(OBJ)$/mkfilt.obj -APP1STDLIBS= $(SALLIB) $(VOSLIB) $(TOOLSLIB) $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) +APP1STDLIBS= $(SALLIB) $(VOSLIB) $(TOOLSLIB) .IF "$(OS)"=="LINUX" APP1STDLIBS+=-lpthread .ENDIF diff --git a/tools/bootstrp/makefile.mk b/tools/bootstrp/makefile.mk index eca32dbd0503..60bfc57bf96b 100644 --- a/tools/bootstrp/makefile.mk +++ b/tools/bootstrp/makefile.mk @@ -88,6 +88,8 @@ APP2OBJS= $(OBJ)$/rscdep.obj APP2LIBS= $(LB)$/$(TARGET).lib $(LB)$/$(TARGET1).lib APP2STDLIBS= $(SALLIB) $(VOSLIB) $(TOOLSLIB) $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(I18NISOLANGLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) APP2RPATH= NONE +APP2RPATH= NONE +APP2RPATH= NONE APP3TARGET= so_checksum APP3OBJS= $(OBJ)$/md5.obj \ diff --git a/tools/bootstrp/md5.cxx b/tools/bootstrp/md5.cxx index bca89725fac2..a234f278cc9d 100644 --- a/tools/bootstrp/md5.cxx +++ b/tools/bootstrp/md5.cxx @@ -44,8 +44,62 @@ #define FILE_OPEN_READ "r" #endif +// Extended calc_md5_checksum to recognize Windows executables and libraries. To +// create the same md5 checksum for a (code/data) identical file it ignores a different +// date and header checksum. Please see crashrep/source/win32/soreport.cpp +// where the same method is also used. The crash reporter uses the MD5 +// checksums to transfer them to the crash database. You have to make sure that both +// methods use the same algorithm otherwise there could be problems with stack reports. + +void normalize_pe_image(sal_uInt8* buffer, size_t nBufferSize) +{ + const int OFFSET_PE_OFFSET = 0x3c; + const int OFFSET_COFF_TIMEDATESTAMP = 4; + const int PE_SIGNATURE_SIZE = 4; + const int COFFHEADER_SIZE = 20; + const int OFFSET_PE_OPTIONALHEADER_CHECKSUM = 64; + + // Check the header part of the file buffer + if (buffer[0] == sal_uInt8('M') && buffer[1] == sal_uInt8('Z')) + { + unsigned long PEHeaderOffset = (long)buffer[OFFSET_PE_OFFSET]; + if (PEHeaderOffset < nBufferSize-4) + { + if ( buffer[PEHeaderOffset+0] == sal_uInt8('P') && + buffer[PEHeaderOffset+1] == sal_uInt8('E') && + buffer[PEHeaderOffset+2] == 0 && + buffer[PEHeaderOffset+3] == 0 ) + { + PEHeaderOffset += PE_SIGNATURE_SIZE; + if (PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP < nBufferSize-4) + { + // Set timedatestamp and checksum fields to a normalized + // value to enforce the same MD5 checksum for identical + // Windows executables/libraries. + buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP+0] = 0; + buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP+1] = 0; + buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP+2] = 0; + buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP+3] = 0; + } + + if (PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM < nBufferSize-4) + { + // Set checksum to a normalized value + buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM] = 0; + buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM+1] = 0; + buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM+2] = 0; + buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM+3] = 0; + } + } + } + } +} + rtlDigestError calc_md5_checksum( const char *filename, ByteString &aChecksum ) { + const size_t BUFFER_SIZE = 0x1000; + const size_t MINIMAL_SIZE = 512; + sal_uInt8 checksum[RTL_DIGEST_LENGTH_MD5]; rtlDigestError error = rtl_Digest_E_None; @@ -58,11 +112,19 @@ rtlDigestError calc_md5_checksum( const char *filename, ByteString &aChecksum ) if ( digest ) { size_t nBytesRead; - sal_uInt8 buffer[0x1000]; + sal_uInt8 buffer[BUFFER_SIZE]; + bool bHeader(true); while ( rtl_Digest_E_None == error && 0 != (nBytesRead = fread( buffer, 1, sizeof(buffer), fp )) ) { + if (bHeader) + { + bHeader = false; + if (nBytesRead >= MINIMAL_SIZE && buffer[0] == sal_uInt8('M') && buffer[1] == sal_uInt8('Z') ) + normalize_pe_image(buffer, nBytesRead); + } + error = rtl_digest_updateMD5( digest, buffer, nBytesRead ); } diff --git a/vcl/unx/inc/postx.h b/tools/inc/tools/postx.h index 68a2c3a31cf8..68a2c3a31cf8 100644 --- a/vcl/unx/inc/postx.h +++ b/tools/inc/tools/postx.h diff --git a/vcl/unx/inc/prex.h b/tools/inc/tools/prex.h index 131e628efe2e..705e33ca5188 100644 --- a/vcl/unx/inc/prex.h +++ b/tools/inc/tools/prex.h @@ -50,7 +50,7 @@ extern "C" { #endif -#if defined(LINUX) || defined(FREEBSD) // should really check for xfree86 or for X11R6.1 and higher +#if defined(LINUX) || defined(FREEBSD) || defined(MACOSX) // should really check for xfree86 or for X11R6.1 and higher #define __XKeyboardExtension__ 1 #else #define __XKeyboardExtension__ 0 diff --git a/tools/prj/d.lst b/tools/prj/d.lst index 660afffc37e9..e8fde61686a4 100644 --- a/tools/prj/d.lst +++ b/tools/prj/d.lst @@ -31,6 +31,9 @@ mkdir: %_DEST%\inc%_EXT%\bootstrp ..\inc\tools\postwin.h %_DEST%\inc%_EXT%\tools\postwin.h ..\inc\tools\prewin.h %_DEST%\inc%_EXT%\tools\prewin.h +..\inc\tools\postx.h %_DEST%\inc%_EXT%\tools\postx.h +..\inc\tools\prex.h %_DEST%\inc%_EXT%\tools\prex.h + ..\inc\tools\agapi.hxx %_DEST%\inc%_EXT%\tools\agapi.hxx ..\inc\tools\agapi.hxx %_DEST%\inc%_EXT%\tools\agapi.hxx ..\inc\tools\agitem.hxx %_DEST%\inc%_EXT%\tools\agitem.hxx diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx index e3484aee4e2d..2aff0d734bf6 100644 --- a/tools/source/fsys/urlobj.cxx +++ b/tools/source/fsys/urlobj.cxx @@ -1523,8 +1523,15 @@ bool INetURLObject::convertRelToAbs(rtl::OUString const & rTheRelURIRef, else if (pEnd - q >= 2 && q[0] == '\\' && q[1] == '\\') { q += 2; - if (scanDomain(q, pEnd) > 0 && (q == pEnd || *q == '\\')) + sal_Int32 n = rtl_ustr_indexOfChar_WithLength( + q, pEnd - q, '\\'); + sal_Unicode const * qe = n == -1 ? pEnd : q + n; + if (parseHostOrNetBiosName( + q, qe, bOctets, ENCODE_ALL, RTL_TEXTENCODING_DONTKNOW, + true, NULL)) + { bFSys = true; // 1st + } } if (bFSys) { diff --git a/tools/source/generic/poly.cxx b/tools/source/generic/poly.cxx index 21024f081383..5cca29b3066e 100644 --- a/tools/source/generic/poly.cxx +++ b/tools/source/generic/poly.cxx @@ -1004,8 +1004,8 @@ void Polygon::GetSimple( Polygon& rResult ) const rResult = Polygon( (USHORT)aPointVector.size() ); ::std::vector< Point >::iterator aIter( aPointVector.begin() ), aEnd( aPointVector.end() ); Point* pPointArray = rResult.mpImplPolygon->mpPointAry; - - while( aIter != aEnd ) + USHORT nPoints = rResult.mpImplPolygon->mnPoints; + while( nPoints-- && aIter != aEnd ) *pPointArray++ = *aIter++; } } diff --git a/tools/util/makefile.mk b/tools/util/makefile.mk index dcc712fec552..546ef29a449a 100644 --- a/tools/util/makefile.mk +++ b/tools/util/makefile.mk @@ -82,12 +82,10 @@ LIB1FILES+= \ $(SLB)$/misc.lib .IF "$(OS)"=="MACOSX" -SHL1STDLIBS += $(UCBHELPERLIB) \ - $(CPPULIB) \ +SHL1STDLIBS += $(CPPULIB) \ $(ZLIB3RDLIB) .ELSE SHL1STDLIBS += $(ZLIB3RDLIB) \ - $(UCBHELPERLIB) \ $(CPPULIB) .ENDIF diff --git a/tools/workben/urltest.cxx b/tools/workben/urltest.cxx index 542297eb4bd6..a232f8ebdd93 100644 --- a/tools/workben/urltest.cxx +++ b/tools/workben/urltest.cxx @@ -799,6 +799,25 @@ main() bSuccess = false; } } + { + bool bWasAbsolute; + if (!rtl::OUString(INetURLObject(rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "file:///"))). + smartRel2Abs( + rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "\\\\unc_host\\path")), + bWasAbsolute). + GetMainURL(INetURLObject::NO_DECODE)). + equalsAsciiL( + RTL_CONSTASCII_STRINGPARAM("file://unc_host/path")) + || !bWasAbsolute) + { + printf("BAD smartRel2Abs(\"\\\\unc_host\\path\")\n"); + bSuccess = false; + } + } } if (true) diff --git a/transex3/inc/export.hxx b/transex3/inc/export.hxx index 89c1cf548947..3d7eee8e1eaf 100644 --- a/transex3/inc/export.hxx +++ b/transex3/inc/export.hxx @@ -510,7 +510,9 @@ private: SvFileStream aErrLog; ByteStringSet aLanguageSet; MergeDataHashMap aMap; - std::vector<ByteString> aLanguages; + ByteStringHashMap aLanguageMap; + std::vector<ByteString> aLanguageList; + ByteStringHashMap aFilenames; public: diff --git a/transex3/java/receditor/java/transex3/controller/EditorController.java b/transex3/java/receditor/java/transex3/controller/EditorController.java index 85dd4fbe4dfe..38462d665304 100644 --- a/transex3/java/receditor/java/transex3/controller/EditorController.java +++ b/transex3/java/receditor/java/transex3/controller/EditorController.java @@ -10,11 +10,9 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; -import java.util.ArrayList; import java.lang.Runtime; import java.util.*; -import javax.swing.JFrame; import javax.swing.ListSelectionModel; import javax.swing.WindowConstants; import javax.swing.event.*; diff --git a/transex3/java/receditor/java/transex3/model/ResourceFile.java b/transex3/java/receditor/java/transex3/model/ResourceFile.java index d8ea679948ce..51fabb3a4b7a 100644 --- a/transex3/java/receditor/java/transex3/model/ResourceFile.java +++ b/transex3/java/receditor/java/transex3/model/ResourceFile.java @@ -1,7 +1,6 @@ package transex3.model; import java.util.*; -import java.io.*; public class ResourceFile { Vector sdfStrings = new Vector(); diff --git a/transex3/java/receditor/java/transex3/view/Editor.java b/transex3/java/receditor/java/transex3/view/Editor.java index b9a9aa929e66..f46a82a11a2b 100644 --- a/transex3/java/receditor/java/transex3/view/Editor.java +++ b/transex3/java/receditor/java/transex3/view/Editor.java @@ -1,10 +1,6 @@ package transex3.view; import javax.swing.*; -import javax.swing.event.*; -import javax.swing.table.*; import java.awt.*; -import java.awt.event.*; -//import java.awt.Event.*; public class Editor extends JFrame{ Object[] columnnames = { "File" , "GID" , "LID" , "String" }; diff --git a/transex3/layout/makefile.mk b/transex3/layout/makefile.mk index daa9d569508b..9864b46242b2 100644 --- a/transex3/layout/makefile.mk +++ b/transex3/layout/makefile.mk @@ -65,7 +65,6 @@ APP1OBJS = $(OBJFILES) APP1STDLIBS =\ $(TOOLSLIB)\ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) \ $(EXPATASCII3RDLIB)\ $(VOSLIB)\ $(CPPULIB) \ diff --git a/transex3/prj/d.lst b/transex3/prj/d.lst index 7bd8e7d3e72d..54d1ab156205 100644 --- a/transex3/prj/d.lst +++ b/transex3/prj/d.lst @@ -28,6 +28,7 @@ mkdir: %_DEST%\inc%_EXT%\transex3 ..\scripts\localize.pl %_DEST%\bin%_EXT%\localize.pl ..\scripts\localize %_DEST%\bin%_EXT%\localize +..\scripts\fast_merge.pl %_DEST%\bin%_EXT%\fast_merge.pl ..\inc\export.hxx %_DEST%\inc%_EXT%\transex3\export.hxx ..\inc\transex3\directory.hxx %_DEST%\inc%_EXT%\transex3\directory.hxx diff --git a/transex3/scripts/fast_merge.pl b/transex3/scripts/fast_merge.pl new file mode 100644 index 000000000000..266c1c0801e8 --- /dev/null +++ b/transex3/scripts/fast_merge.pl @@ -0,0 +1,348 @@ +: +eval 'exec perl -wS $0 ${1+"$@"}' + if 0; +#************************************************************************* +# +# OpenOffice.org - a multi-platform office productivity suite +# +# $RCSfile: fast_merge.pl,v $ +# +# $Revision: 1.1.2.2 $ +# +# last change: $Author: ihi $ $Date: 2007/07/20 10:37:53 $ +# +# The Contents of this file are made available subject to +# the terms of GNU Lesser General Public License Version 2.1. +# +# +# GNU Lesser General Public License Version 2.1 +# ============================================= +# Copyright 2005 by Sun Microsystems, Inc. +# 901 San Antonio Road, Palo Alto, CA 94303, USA +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License version 2.1, as published by the Free Software Foundation. +# +# This library 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 for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# +#************************************************************************* + +use strict; +use Class::Struct; +use Getopt::Long; +use File::Temp; +use File::Path; + +my @files; +my @file_names; +my $module_name = ''; +my @current; +my @buffer; +my $last_file; +my $last_path; +my $last_localize_file; +my $first_run = "1"; +my $sdf_filename; +my $merge_dir; +my $WIN; +my $state = "none"; + +if ( defined $ENV{USE_SHELL} && $ENV{USE_SHELL} eq '4nt' ) { $WIN = 'TRUE'; } +else { $WIN = ''; } + +$SIG{INT} = 'inthandler'; +$SIG{QUIT} = 'quithandler'; + +struct ( sdf_obj => +{ + module => '$', + file => '$', + dir => '$', + FILEHANDLE => '$', + line => '$', + endoffile => '$' +} +); + +parse_options(); +my $lock_file = $merge_dir."/lock.mk"; +$lock_file =~ s/\//\\/g , if ( $WIN ) ; +acquire_lock(); +read_sdf_file_names(); +init(); +my $reference; +my $path ; +my $localize_file; +while( hasLines() ) +{ + @current = (); + foreach ( @files ) + { + push @current , $_; + } + + $reference = getNextIdentifier( ); + + @current = (); + foreach ( @files ) + { + if( $_->module eq $reference->module && $_->dir eq $reference->dir ) + { + push @current , $_ ; + } + } + write_lines(); +} +if( $#current+1 ne 0 ) +{ + ( $path , $localize_file ) = make_paths(); + add_to_buffer(); + write_buffer( $path , $localize_file ); +} +release_lock(); +exit( 0 ); + +########################################################################################## +sub acquire_lock +{ + if( -e $lock_file ){ + $state = "blocked"; + print "WARNING: Lock file '$lock_file' 'found, waiting ....\n"; + my $cnt = 0; + sleep 10 , while( -e $lock_file && $cnt++ < 180 ); + exit( 0 ); + }else + { + $state = "locked"; + print "Writing lock file '$lock_file'\n"; + open FILE, ">$lock_file" or die "Can't create lock file '$lock_file'"; + print FILE "L10N_LOCK=YES" ; + close ( FILE ); + } +} +sub release_lock +{ + print "Deleting lock file '$lock_file'\n"; + unlink $lock_file, if( -e $lock_file ); + $state = "none"; +} +sub inthandler +{ + release_lock() , if( $state eq "locked" ); + exit( -1 ); +} +sub quithandler +{ + release_lock() , if( $state eq "locked" ); + exit( 0 ); +} + +sub init +{ + foreach my $file ( @file_names ) + { + my $obj = new sdf_obj; + open my $FILEHANDLE , "<$file" or die "Can't open file '$file'"; + $obj->FILEHANDLE ( $FILEHANDLE ) ; + getNextSdfObj( $obj ); + push @files, $obj ; + print "Open file '$file'\n"; + } +} + +# get the next module/file +sub getNextIdentifier +{ + my @sorted = sort { + return $a->module.$a->dir cmp $b->module.$b->dir; + } @current ; + return shift @sorted; +} + +# update the obj with the next line +sub getNextSdfObj +{ + my $obj = shift; + my $line = readline ( $obj->FILEHANDLE ); + if ( $line eq undef ) + { + $obj->endoffile( "true" ); + } + else + { + $line =~ /^(([^\t]*)\t([^\t]*).*)/o ; + if( defined $1 && defined $2 && defined $3 ) + { + $obj->line ( $1 ); + $obj->module( $2 ); + $obj->file ( $3 ); + $obj->dir ( getDir( $3 ) ); + } + else + { + $obj->line ( "" ); + $obj->module( "" ); + $obj->file ( "" ); + $obj->dir ( "" ); + } + } + return $obj; +} +sub getNextSdfObjModule +{ + my $obj = shift; + while( !$obj->endoffile ) + { + my $line = readline ( $obj->FILEHANDLE ); + if ( $line eq undef ) + { + $obj->endoffile( "true" ); + } + else + { + $line =~ /^(([^\t]*)\t([^\t]*).*)/o ; + if( defined $1 && defined $2 && defined $3 ) + { + $obj->line ( $1 ); + $obj->module( $2 ); + $obj->file ( $3 ); + $obj->dir ( getDir( $3 ) ); + } + else + { + $obj->line ( "" ); + $obj->module( "" ); + $obj->file ( "" ); + $obj->dir ( "" ); + } + return $obj , if( $obj->module eq $module_name ) + } + } + #return $obj; +} +sub getDir +{ + my $path = shift ; + $path =~ s/\//\\/g; + my @tmp_path = split /\\/ , $path; + pop @tmp_path; + $path = join '\\' , @tmp_path; + return $path; +} + +sub hasLines +{ + my $hasLines = ""; + my @tmpfiles; + foreach ( @files ) + { + push @tmpfiles , $_, if( !$_->endoffile ); + } + @files = @tmpfiles; + return $#files+1; +} + +sub make_paths +{ + my $localizeFile = $merge_dir."\\".$current[ 0 ]->module."\\".$current[ 0 ]->file; + my $path = getDir( $localizeFile ); + if ( !$WIN ) { $path =~ s/\\/\//g; } + + $localizeFile = $path."\\localize.sdf"; + if ( !$WIN ) { $localizeFile =~ s/\\/\//g; } + + return ( $path , $localizeFile ); +} +sub write_lines +{ + if( $first_run ){ + add_to_buffer(); + my( $path , $localize_file ) = make_paths(); + $last_path = $path; + $last_localize_file = $localize_file; + mkpath $path; + write_buffer( $path , $localize_file ); + $first_run = ''; + } + else + { + return , if ( $#current+1 eq 0 ); + my( $path , $localize_file ) = make_paths(); + if( $path eq $last_path ) + { + add_to_buffer(); + } + else + { + mkpath $path; + write_buffer( $last_path , $last_localize_file ); + add_to_buffer(); + $last_path = $path; + $last_localize_file = $localize_file; + } + } +} +sub add_to_buffer +{ + my $plainline; + my $afile; + my $amodule; + foreach my $elem ( @current ) + { + do { + $amodule=$elem->module; + $afile=$elem->file; + $plainline=$elem->line; + push @buffer, $plainline; + getNextSdfObj( $elem ); + } while ( !$elem->endoffile && $amodule eq $elem->module && $afile eq $elem->file ); + } +} +sub write_buffer +{ + my $path = shift; + my $localize_file = shift; + my $cnt = $#buffer+1; + print "Write to $path $cnt lines\n"; + open FILE , ">>$localize_file" or die "Can't open file '$localize_file'\n"; + foreach ( @buffer ) + { + print FILE $_."\n"; + } + @buffer = (); +} +sub parse_options +{ + my $success = GetOptions( 'sdf_files=s' => \$sdf_filename , 'merge_dir=s' => \$merge_dir ); #, 'module=s' => \$module_name ); + if( ! ( $sdf_filename && $merge_dir && $success ) ) + { + usage(); + exit( -1 ); + } +} + +sub usage +{ + print "Usage: fast_merge -sdf_files <file containing sdf file names> -merge_dir <directory>\n" ; +} + +sub read_sdf_file_names +{ + open FILE , "<$sdf_filename" or die "Can't open file '$sdf_filename'\n"; + while ( <FILE> ) + { + push @file_names , split " " , $_ ; + } + close ( FILE ); +} + + diff --git a/transex3/scripts/localize b/transex3/scripts/localize deleted file mode 100755 index 74a75ecc3aee..000000000000 --- a/transex3/scripts/localize +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -if [ x${SOLARENV}x = xx ]; then - echo No environment found, please use 'setsolar' -exit 1 -fi - -# localize.pl calls localize_sl in solver bin directory which depends on dynamic -# libraries in solver lib directory but has no correct RPATH (or equivalent): -if [ "${OS?}" = MACOSX ]; then - export DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH+${DYLD_LIBRARY_PATH}:}${SOLARVERSION?}/${INPATH?}/lib${UPDMINOREXT} -else - export LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}${SOLARVERSION?}/${INPATH?}/lib${UPDMINOREXT} -fi - -if [ x${SOLARVER}x = xx -o x${UPDMINOR}x = xx ]; then - exec perl -w $SOLARVERSION/$INPATH/bin/localize.pl "$@" -else - exec perl -w $SOLARVERSION/$INPATH/bin.$UPDMINOR/localize.pl "$@" -fi - diff --git a/transex3/scripts/localize.pl b/transex3/scripts/localize.pl index b9e478ba66bd..10e8124027b1 100755 --- a/transex3/scripts/localize.pl +++ b/transex3/scripts/localize.pl @@ -13,7 +13,7 @@ eval 'exec perl -wS $0 ${1+"$@"}' # # $RCSfile: localize.pl,v $ # -# $Revision: 1.18 $ +# $Revision: 1.18.6.2 $ # # This file is part of OpenOffice.org. # @@ -39,10 +39,12 @@ use Getopt::Long; use IO::Handle; use File::Find; use File::Temp; +use File::Path; use File::Copy; use File::Glob qw(:glob csh_glob); use Cwd; +my $CVS_BINARY = "/usr/bin/cvs"; # ver 1.1 # #### module lookup @@ -61,16 +63,24 @@ BEGIN { use lib (@lib_dirs); #### globals #### -my $sdffile = ''; -my $no_sort = ''; -my $outputfile = ''; -my $mode = ''; -my $bVerbose="0"; -my $srcpath = ''; +my $sdffile = ''; +my $no_sort = ''; +my $create_dirs = ''; +my $multi_localize_files = ''; +my $module_to_merge = ''; +my $sort_sdf_before = ''; +my $outputfile = ''; +my $no_gsicheck = ''; +my $mode = ''; +my $bVerbose = "0"; +my $srcpath = ''; my $WIN; my $languages; #my %sl_modules; # Contains all modules where en-US and de is source language my $use_default_date = '0'; +my %is_ooo_module; +my %is_so_module; +my $DELIMITER; # ( leftpart ) ( rightpart ) # prj file dummy type gid lid helpid pform width lang text helptext qhelptext title timestamp @@ -82,21 +92,38 @@ my @sdfparticles; #### main #### parse_options(); +check_modules_scm(); if ( defined $ENV{USE_SHELL} && $ENV{USE_SHELL} eq '4nt' ) { $WIN = 'TRUE'; + $DELIMITER = "\\"; } else { $WIN = ''; + $DELIMITER = "/"; +} + +my $binpath = ''; +if( defined $ENV{UPDMINOREXT} ) +{ + $binpath = $ENV{SOLARVER}.$DELIMITER.$ENV{INPATH}.$DELIMITER."bin".$ENV{UPDMINOREXT}.$DELIMITER ; +} +else +{ + $binpath = $ENV{SOLARVER}.$DELIMITER.$ENV{INPATH}.$DELIMITER."bin".$DELIMITER ; } #%sl_modules = fetch_sourcelanguage_dirlist(); if ( $mode eq "merge" ) { - merge_gsicheck(); + if ( ! $no_gsicheck ){ + merge_gsicheck(); + } splitfile( $sdffile ); - unlink $sdffile; # remove temp file! + if ( ! $no_gsicheck ){ + unlink $sdffile; # remove temp file! + } } elsif( $mode eq "extract" ) { collectfiles( $outputfile ); @@ -126,6 +153,12 @@ sub splitfile{ open MYFILE , "< $sdffile" or die "Can't open '$sdffile'\n"; +# my %lang_hash; + my %string_hash_ooo; + my %string_hash_so; + my %so_modules; + $so_modules{ "extras_full" } = "TRUE"; + while( <MYFILE>){ if( /$sdf_regex/ ){ my $line = defined $_ ? $_ : ''; @@ -137,183 +170,187 @@ sub splitfile{ my $lang = defined $12 ? $12 : ''; my $plattform = defined $10 ? $10 : ''; my $helpid = defined $9 ? $9 : ''; - next if( $prj eq "binfilter" ); # Don't merge strings into binfilter module chomp( $line ); - $currentFile = $srcpath . '\\' . $prj . '\\' . $file; - if ( $WIN ) { $currentFile =~ s/\//\\/g; } - else { $currentFile =~ s/\\/\//g; } - - $cur_sdffile = $currentFile; - #if( $cur_sdffile =~ /\.$file_types[\s]*$/ ){ - if( $WIN ) { $cur_sdffile =~ s/\\[^\\]*\.$file_types[\s]*$/\\localize.sdf/; } - else { $cur_sdffile =~ s/\/[^\/]*\.$file_types[\s]*$/\/localize.sdf/; } - #} - - # Set default date - if( $line =~ /(.*)\t[^\t\$]*$/ ){ - $line = $1."\t".$default_date; - } - if( $start ){ - $start=''; - $lastFile = $currentFile; # ? - $last_sdffile = $cur_sdffile; - } - - if( $lang eq "en-US" ){} - elsif( $cur_sdffile eq $last_sdffile ) + if( is_openoffice_module( $prj ) ) { - $block{ "$prj\t$file\t$type\t$gid\t$lid\t$helpid\t$plattform\t$lang" } = $line ; + $string_hash_ooo { $lang }{ "$prj\t$file\t$type\t$gid\t$lid\t$helpid\t$plattform\t$lang" } = $line; } else { - writesdf( $lastFile , \%block ); - $lastFile = $currentFile; #? - $last_sdffile = $cur_sdffile; - %block = (); - #if( ! $lang eq "en-US" ) { - $block{ "$prj\t$file\t$type\t$gid\t$lid\t$helpid\t$plattform\t$lang" } = $line ; - #} - + $string_hash_so{ $lang }{ "$prj\t$file\t$type\t$gid\t$lid\t$helpid\t$plattform\t$lang" } = $line; } - } #else { print STDOUT "splitfile REGEX kaputt\n";} - + } } - writesdf( $lastFile , \%block ); - %block = (); close( MYFILE ); + if( !defined $ENV{SRC_ROOT} ){ + print "Error, no SRC_ROOT in env found.\n"; + exit( -1 ); + } + my $src_root = $ENV{SRC_ROOT}; + #print $WIN eq "TRUE" ? $src_root."\\l10n_so\n" : $src_root."/l10n_so\n"; + my $so_l10n_path = $WIN eq "TRUE" ? $src_root."\\l10n_so\\source" : $src_root."/l10n_so/source"; + my $ooo_l10n_path = $WIN eq "TRUE" ? $src_root."\\l10n\\source" : $src_root."/l10n/source"; + + #print "$so_l10n_path\n"; + #print "$ooo_l10n_path\n"; + + write_sdf( \%string_hash_so , $so_l10n_path ); + write_sdf( \%string_hash_ooo , $ooo_l10n_path ); + } -######################################################### +sub check_modules_scm +{ + #my @ooo_modules; + #my @so_modules; + my $src_path = $ENV{ SRC_ROOT } ; + my $last_dir = getcwd(); + chdir $src_path ; + my @modules = <*/.svn/entries>; + + foreach my $module ( @modules ) + { + #print "$module \n"; + if( open ( FILE , "<$module" ) ) + { + while( <FILE> ) + { -#sub fetch_sourcelanguage_dirlist + my @path = split ( "/" , $module ) ; + + if( /svn.services.openoffice.org/ ) + { + my $mod = $path[ 0 ]; + #push @ooo_modules , $mod; + $is_ooo_module{ $mod } = "true"; + # print "$module -> ooo "; + } + elsif ( /jumbo2.germany.sun.com/ ) + { + my $mod = $path[ 0 ]; + #push @so_modules , $mod; + # print "$module -> so "; + #$so_lookup_hash{ $mod } = "true"; + } + #else + #{ + # print "ERROR: Is $module a SO or OOo module? Can not parese the $module/.svn/entries file ... please check mwsfinnish/merge/splitsdf.pl line 280\n"; + # exit -1; + #} + } + } + } + chdir $last_dir ; + #print "OOO\n"; + #print @ooo_modules; + #print "\nSO\n"; + #print @so_modules; +} + + +#sub parse #{ -# -# my $working_path = getcwd(); -# my %sl_dirlist; -# -# chdir $srcpath; -# my @all_dirs = csh_glob( "*" ); -# -# foreach my $file ( @all_dirs ) -# { -# if( -d $file ) -# { -# my $module = $file; -# $file .= "/prj/l10n"; -# $file =~ s/\//\\/ , if( $WIN ) ; -# -# if( -f $file ) # Test file <module>/prj/l10n -# { -# $sl_dirlist{ $module } = 1; -# if( $bVerbose eq "1" ) { print STDOUT "$module: de and en-US source language detected\n"; } -# } -# } +# my $command = "$CVS_BINARY -d:pserver:anoncvs\@anoncvs.services.openoffice.org:/cvs co -c"; +# my $output = `$command`; +# my $rc = $? << 8; +# if ( $output eq "" || $rc < 0 ){ +# print STDERR "ERROR: Can not fetch cvs alias list, please login to the cvs server and press at the password prompt just return\ncvs -d:pserver:anoncvs\@anoncvs.services.openoffice.org:/cvs login\n"; +# exit ( -1 ); # } +# my @list = split /\n/ , $output ; +# foreach my $string( @list ) +# { # -# chdir $working_path; +# # print "Found '$1'\n" , if( $string =~ /^(\w*)/ && $1 ne "" ); # -# return %sl_dirlist; +# $is_ooo_module{ $1 } = "TRUE", if( $string =~ /^(\w*)/ && $1 ne "" ); +# } +# # foreach my $key( keys( %is_ooo_module ) ) +# #{ +# # print "$key\n"; +# #} #} +sub is_openoffice_module +{ + my $module = shift; + return "TRUE", if defined $is_ooo_module{ $module }; + return ""; +} -#sub has_two_sourcelanguages -#{ -# my $module = shift; -# return defined $sl_modules{ $module } ; -#} -sub writesdf{ - - my $lastFile = shift; - my $blockhash_ref = shift; - my $localizeFile = $lastFile; - my %index=(); - - if( $localizeFile =~ /\.$file_types[\s]*$/ ){ - if( $WIN ) { $localizeFile =~ s/\\[^\\]*\.$file_types[\s]*$/\\localize.sdf/; } - else { $localizeFile =~ s/\/[^\/]*\.$file_types[\s]*$/\/localize.sdf/; } - }else { - print STDERR "Strange filetype found '$localizeFile'\n"; - return; - } - if( $bVerbose ){ print STDOUT "$localizeFile\n"; } - if( open DESTFILE , "< $localizeFile" ){ +sub write_sdf +{ + my $string_hash = shift; + my $l10n_file = shift; - #or die "Can't open/create '\$localizeFile'"; + foreach my $lang( keys( %{ $string_hash } ) ) + { + my @sdf_file; - #### Build hash - while(<DESTFILE>){ - if( /$sdf_regex/ ){ - my $line = defined $_ ? $_ : ''; - my $prj = defined $3 ? $3 : ''; - my $file = defined $4 ? $4 : ''; - my $type = defined $6 ? $6 : ''; - my $gid = defined $7 ? $7 : ''; - my $lid = defined $8 ? $8 : ''; - my $lang = defined $12 ? $12 : ''; - my $plattform = defined $10 ? $10 : ''; - my $helpid = defined $9 ? $9 : ''; + # mkdir!!!! + my $current_l10n_file = $WIN eq "TRUE" ? $l10n_file."\\$lang\\localize.sdf" : $l10n_file."/$lang/localize.sdf"; + print "Writing '$current_l10n_file'\n"; + if( open DESTFILE , "< $current_l10n_file" ){ - chomp( $line ); - $index{ "$prj\t$file\t$type\t$gid\t$lid\t$helpid\t$plattform\t$lang" } = $line ; - - } #else { print STDOUT "writesdf REGEX kaputt $_\n";} + while(<DESTFILE>){ + if( /$sdf_regex/ ){ + my $line = defined $_ ? $_ : ''; + my $prj = defined $3 ? $3 : ''; + my $file = defined $4 ? $4 : ''; + my $type = defined $6 ? $6 : ''; + my $gid = defined $7 ? $7 : ''; + my $lid = defined $8 ? $8 : ''; + my $lang = defined $12 ? $12 : ''; + my $plattform = defined $10 ? $10 : ''; + my $helpid = defined $9 ? $9 : ''; + chomp( $line ); + if ( defined $string_hash->{ $lang }{ "$prj\t$file\t$type\t$gid\t$lid\t$helpid\t$plattform\t$lang" } ) + { + # Changed String! + push @sdf_file , $string_hash->{ $lang }{ "$prj\t$file\t$type\t$gid\t$lid\t$helpid\t$plattform\t$lang" } ; + $string_hash->{ $lang }{ "$prj\t$file\t$type\t$gid\t$lid\t$helpid\t$plattform\t$lang" } = undef; + } + else + { + # No new string + push @sdf_file , $line; + } + } + } } close( DESTFILE ); - } - #### Copy new strings - my @mykeys = keys( %{ $blockhash_ref } ); - my $isDirty = "FALSE"; - foreach my $key( @mykeys ){ - if( ! defined $index{ $key } ){ - # Add new entry - $index{ $key } = $blockhash_ref->{ $key} ; - $isDirty = "TRUE"; - }elsif( $index{ $key } ne $blockhash_ref->{ $key } ){ - # Overwrite old entry - $index{ $key } = $blockhash_ref->{ $key }; - $isDirty = "TRUE"; - }else { + #Now just append the enw strings + #FIXME!!! Implement insertion in the correct order + foreach my $key ( keys ( %{ $string_hash->{ $lang } } ) ) + { + push @sdf_file , $string_hash->{ $lang }{ $key } , if ( defined $string_hash->{ $lang }{ $key } ); + #print "WARNING: Not defined = ".$string_hash->{ $lang }{ $key }."\n", if( ! defined $string_hash->{ $lang }{ $key } ); } - } - #### Write file - - if( !$bVerbose ){ print STDOUT "."; } - if( $isDirty eq "TRUE" ){ - if( open DESTFILE , "+> $localizeFile" ){ + # Write the new file + my ( $TMPFILE , $tmpfile ) = File::Temp::tempfile(); + if( open DESTFILE , "+> $tmpfile " ){ print DESTFILE get_license_header(); - @mykeys = sort keys( %index ); - foreach my $key( @mykeys ){ - print DESTFILE ( $index{ $key } , "\n" ); + foreach my $string( @sdf_file ){ + print DESTFILE "$string\n"; } - close DESTFILE; - }else { - print STDOUT "WARNING: File $localizeFile is not writable , try to merge ...\n"; - my ( $TMPFILE , $tmpfile ) = File::Temp::tempfile(); - if( open DESTFILE , "+> $tmpfile " ){ - @mykeys = keys( %index ); - foreach my $key( @mykeys ){ - print DESTFILE ( $index{ $key } , "\n" ); - } - close DESTFILE; - if( move( $localizeFile , $localizeFile.".backup" ) ){ - if( copy( $tmpfile , $localizeFile ) ){ - unlink $localizeFile.".backup"; - } else { print STDERR "Can't open/create '$localizeFile', original file is renamed to $localizeFile.backup\n"; } - } else { print STDERR "Can't open/create '$localizeFile'\n"; } - }else{ - print STDERR "WARNING: Can't open/create '$localizeFile'\n"; - } - unlink $tmpfile; - } - } -# if( $no_sort eq '' ){ -# sort_outfile( $localizeFile ); -# } + close ( DESTFILE ); + if( move( $current_l10n_file , $current_l10n_file.".backup" ) ){ + if( copy( $tmpfile , $current_l10n_file ) ){ + unlink $l10n_file.".backup"; + } else { print STDERR "Can't open/create '$l10n_file', original file is renamed to $l10n_file.backup\n"; } + } else { print STDERR "Can't open/create '$l10n_file'\n"; } + }else{ + print STDERR "WARNING: Can't open/create '$l10n_file'\n"; + } + unlink $tmpfile; + } } +######################################################### + sub get_license_header{ return "#\n". @@ -398,6 +435,41 @@ sub wanted } } +sub add_paths +{ + my $langhash_ref = shift; + my $root_dir = $ENV{ SRC_ROOT }; + my $ooo_l10n_dir = "$root_dir"."$DELIMITER"."l10n"."$DELIMITER"."source"; + my $so_l10n_dir = "$root_dir"."$DELIMITER"."l10n_so"."$DELIMITER"."source"; + + if( -e $ooo_l10n_dir ) + { + foreach my $lang ( keys( %{ $langhash_ref } ) ) + { + my $loc_file = "$ooo_l10n_dir"."$DELIMITER"."$lang"."$DELIMITER"."localize.sdf"; + if( -e $loc_file ) + { + push @sdfparticles , "$ooo_l10n_dir"."$DELIMITER"."$lang"."$DELIMITER"."localize.sdf"; + } + else { print "WARNING: $loc_file not found ....\n"; } + } + } + else { die "ERROR: Can not find directory $ooo_l10n_dir!!!" } + if( -e $so_l10n_dir ) + { + foreach my $lang ( keys( %{ $langhash_ref } ) ) + { + my $loc_file = "$so_l10n_dir"."$DELIMITER"."$lang"."$DELIMITER"."localize.sdf"; + if( -e $loc_file ) + { + push @sdfparticles , "$ooo_l10n_dir"."$DELIMITER"."$lang"."$DELIMITER"."localize.sdf"; + } + else { #print "WARNING: $loc_file not found ....\n"; + } + } + + } +} sub collectfiles{ print STDOUT "### Localize\n"; my $localizehash_ref; @@ -408,14 +480,14 @@ sub collectfiles{ STDOUT->autoflush( 1 ); ### Search sdf particles - print STDOUT "### Searching sdf particles\n"; + #print STDOUT "### Searching sdf particles\n"; my $working_path = getcwd(); - chdir $srcpath; - find ( { wanted => \&wanted , follow => 1 }, getcwd() ); - chdir $working_path; - - my $nFound = $#sdfparticles +1; - print "\n $nFound files found !\n"; + #chdir $srcpath; + #find ( { wanted => \&wanted , follow => 1 }, getcwd() ); + #chdir $working_path; + add_paths( $langhash_ref ); + #my $nFound = $#sdfparticles +1; + #print "\n $nFound files found !\n"; my ( $LOCALIZEPARTICLE , $localizeSDF ) = File::Temp::tempfile(); close( $LOCALIZEPARTICLE ); @@ -425,18 +497,18 @@ sub collectfiles{ my ( $LOCALIZE_LOG , $my_localize_log ) = File::Temp::tempfile(); close( $LOCALIZE_LOG ); - ## Get the localize de,en-US extract + ## Get the localize en-US extract if( $bAll || $bUseLocalize ){ print "### Fetching source language strings\n"; my $command = ""; my $args = ""; if( $ENV{WRAPCMD} ){ - $command = "$ENV{WRAPCMD} localize_sl"; + $command = $ENV{WRAPCMD}.$binpath."localize_sl"; }else{ - $command = "localize_sl"; + $command = $binpath."localize_sl"; } - + print $command; # -e # if ( -x $command ){ if( $command ){ @@ -480,7 +552,8 @@ sub collectfiles{ } ## Get sdf particles - open ALLPARTICLES_MERGED , "+>> $particleSDF_merged" +#***************** + open ALLPARTICLES_MERGED , "+>> $particleSDF_merged" or die "Can't open $particleSDF_merged"; ## Fill fackback hash @@ -542,7 +615,7 @@ sub collectfiles{ } } close ALLPARTICLES_MERGED; - +#*************** # Hash of array my %output; @@ -1040,7 +1113,8 @@ sub parse_options{ my $merge; my $extract; my $success = GetOptions('f=s' => \$sdffile , 'l=s' => \$languages , 's=s' => \$srcpath , 'h' => \$help , 'v' => \$bVerbose , - 'm' => \$merge , 'e' => \$extract , 'x' => \$no_sort , 'd' => \$use_default_date ); + 'm' => \$merge , 'e' => \$extract , 'x' => \$no_sort , 'd' => \$use_default_date , 'c' => \$create_dirs , + 'n' => \$no_gsicheck ); $outputfile = $sdffile; #print STDOUT "DBG: lang = $languages\n"; @@ -1068,13 +1142,16 @@ sub parse_options{ if( $extract ){ $mode = "extract"; } else { $mode = "merge"; } } +#my $multi_localize_files = ''; h +#my $module_to_merge = ''; i +#my $sort_sdf_before = ''; g ######################################################### sub usage{ print STDERR "Usage: localize.pl\n"; print STDERR "Split or collect SDF files\n"; - print STDERR " merge: -m -f <sdffile> -l l1[=f1][,l2[=f2]][...] [ -s <sourceroot> ]\n"; + print STDERR " merge: -m -f <sdffile> -l l1[=f1][,l2[=f2]][...] [ -s <sourceroot> ] [ -c ]\n"; print STDERR " extract: -e -f <outputfile> -l <lang> [ -s <sourceroot> ] [-d]\n"; print STDERR "Options:\n"; print STDERR " -h help\n"; @@ -1085,6 +1162,11 @@ sub usage{ print STDERR " -s <sourceroot> Path to the modules, if no \$SRC_ROOT is set\n"; print STDERR " -l ( all | <isocode> | <isocode>=fallback ) comma seperated languages\n"; print STDERR " -d Use default date in extracted sdf file\n"; + print STDERR " -c Create needed directories\n"; + print STDERR " -g Sort sdf file before mergeing\n"; + print STDERR " -h File with localize.sdf's\n!"; + print STDERR " -n No gsicheck\n"; + print STDERR " -i Module to merge\n"; print STDERR " -v Verbose\n"; print STDERR "\nExample:\n"; print STDERR "\nlocalize -e -l en-US,pt-BR=en-US -f my.sdf\n( Extract en-US and pt-BR with en-US fallback )\n"; diff --git a/transex3/source/directory.cxx b/transex3/source/directory.cxx index 8963e8a238f7..a4a2abc70e0f 100644 --- a/transex3/source/directory.cxx +++ b/transex3/source/directory.cxx @@ -186,13 +186,15 @@ void Directory::readDirectory( const rtl::OUString& sFullpath ) if( sFullpath.getLength() < 1 ) return; rtl::OString sFullpathext = rtl::OUStringToOString( sFullpath , RTL_TEXTENCODING_UTF8 , sFullpath.getLength() ).getStr(); + //printf("%s\n",sFullpathext.getStr()); const char* path = sFullpathext.getStr(); // stat - if( lstat( path , &statbuf ) < 0 ){ printf("readerror 1 in Directory::readDirectory"); return; }// error } + if( stat( path , &statbuf ) < 0 ){ printf("warning: Can not stat %s" , path ); return; }// error } - //if( S_ISDIR(statbuf.st_mode ) == 0 && S_ISLNK(statbuf.st_mode )){ printf("readerror 2 in Directory::readDirectory"); return; }// error } return; // not dir - if( (dir = opendir( path ) ) == NULL ) {printf("readerror in %s \n",path); return; } // error } return; // error + if( S_ISDIR(statbuf.st_mode ) == 0 ) { return; }// error } return; // not dir + + if( (dir = opendir( path ) ) == NULL ) {printf("readerror 2 in %s \n",path); return; } // error } return; // error sFullpathext += rtl::OString( "/" ); diff --git a/transex3/source/localize.cxx b/transex3/source/localize.cxx index d5e0541e6a24..bcd45d7027a4 100644 --- a/transex3/source/localize.cxx +++ b/transex3/source/localize.cxx @@ -94,6 +94,24 @@ const char *PositiveList[] = { "chart2/source/controller/menu/MenuItems_tmpl.hrc", "chart2/source/controller/dialogs/res_ErrorBar_tmpl.hrc", "chart2/source/controller/dialogs/res_Trendline_tmpl.hrc", + "svx.link/inc/globlmn_tmpl.hrc", + "sw.link/source/ui/inc/swmn_tmpl.hrc", + "sw.link/source/ui/inc/swacc_tmpl.hrc", + "sw.link/source/ui/inc/toolbox_tmpl.hrc", + "offmgr.link/inc/offmenu_tmpl.hrc", + "offmgr.link/source/offapp/intro/intro_tmpl.hrc", + "dbaccess.link/source/ui/inc/toolbox_tmpl.hrc", + "svx.link/source/intro/intro_tmpl.hrc", + "dbaccess.link/source/ui/dlg/AutoControls_tmpl.hrc", + "svx.link/source/unodialogs/textconversiondlgs/chinese_direction_tmpl.hrc", + "chart2.link/source/controller/dialogs/res_DataLabel_tmpl.hrc", + "chart2.link/source/controller/dialogs/res_LegendPosition_tmpl.hrc", + "chart2.link/source/controller/dialogs/res_Statistic_tmpl.hrc", + "chart2.link/source/controller/dialogs/res_Titlesx_tmpl.hrc", + "chart2.link/source/controller/dialogs/res_SecondaryAxisCheckBoxes_tmpl.hrc", + "chart2.link/source/controller/menu/MenuItems_tmpl.hrc", + "chart2.link/source/controller/dialogs/res_ErrorBar_tmpl.hrc", + "chart2.link/source/controller/dialogs/res_Trendline_tmpl.hrc", "NULL" }; @@ -265,6 +283,7 @@ void SourceTreeLocalizer::WorkOnFile( const ByteString &rParameter, const ByteString &rIso ) /*****************************************************************************/ { + (void) rIso; // Remove me ;) String sFull( rFileName, RTL_TEXTENCODING_ASCII_US ); DirEntry aEntry( sFull ); ByteString sFileName( aEntry.GetName(), RTL_TEXTENCODING_ASCII_US ); @@ -286,37 +305,43 @@ void SourceTreeLocalizer::WorkOnFile( DirEntry aTemp( Export::GetTempFile()); ByteString sTempFile( aTemp.GetFull(), RTL_TEXTENCODING_ASCII_US ); - ByteString sExecutable( rExecutable ); + ByteString sDel; #if defined(WNT) || defined(OS2) - sExecutable += ".exe"; - String sPath( Export::GetEnv( "PATH" ), RTL_TEXTENCODING_ASCII_US ); + sDel=ByteString("\\"); #else - String sPath( Export::GetEnv( "LD_LIBRARY_PATH" ), RTL_TEXTENCODING_ASCII_US ); + sDel=ByteString("/"); #endif + ByteString sPath1( Export::GetEnv("SOLARVER") ); + ByteString sPath2( Export::GetEnv("INPATH") ); + ByteString sPath3( "bin" ); + ByteString sPath4( Export::GetEnv("UPDMINOREXT") ); + ByteString sExecutable( sPath1 ); + sExecutable += sDel ; + sExecutable += sPath2 ; + sExecutable += sDel; + sExecutable += sPath3 ; + sExecutable += sPath4 ; + sExecutable += sDel ; + sExecutable += rExecutable ; + + + ByteString sCommand( sExecutable ); + sCommand += " "; + sCommand += rParameter; + sCommand += " -p "; + sCommand += sPrj; + sCommand += " -r "; + sCommand += sRoot; + sCommand += " -i "; + sCommand += sFileName; + sCommand += " -o "; + sCommand += sTempFile; + if ( sLanguageRestriction.Len()) { + sCommand += " -l "; + sCommand += getSourceLanguages( sLanguageRestriction , sCommand ); + } - DirEntry aExecutable( String( sExecutable, RTL_TEXTENCODING_ASCII_US )); - aExecutable.Find( sPath ); - - ByteString sCommand( aExecutable.GetFull(), RTL_TEXTENCODING_ASCII_US ); - sCommand += " "; - sCommand += rParameter; - sCommand += " -p "; - sCommand += sPrj; - sCommand += " -r "; - sCommand += sRoot; - sCommand += " -i "; - sCommand += sFileName; - sCommand += " -o "; - sCommand += sTempFile; - if ( sLanguageRestriction.Len()) { - sCommand += " -l "; - sCommand += getSourceLanguages( sLanguageRestriction , sCommand ); - } - if ( rIso.Equals("iso") && sIsoCode99.Len()) { - sCommand += " -ISO99 "; - sCommand += sIsoCode99; - } - if( bQuiet2 ){ + if( bQuiet2 ){ sCommand +=" -QQ "; } //printf("DBG: %s\n",sCommand.GetBuffer()); diff --git a/transex3/source/makefile.mk b/transex3/source/makefile.mk index b26a6e0a82bb..68b94a5b58fa 100644 --- a/transex3/source/makefile.mk +++ b/transex3/source/makefile.mk @@ -84,7 +84,6 @@ APP1TARGET= transex3 APP1OBJS= $(OBJ)$/src_yy_wrapper.obj APP1STDLIBS+= \ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB)\ $(TOOLSLIB) \ $(VOSLIB) \ $(SALLIB) @@ -103,8 +102,8 @@ APP2RPATH= NONE .IF "$(OS)"!="MACOSX" .ENDIF -APP2STDLIBS+=$(SALLIB) $(EXPATASCII3RDLIB) $(TOOLSLIB) $(VOSLIB) \ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) +APP2STDLIBS+=$(SALLIB) $(EXPATASCII3RDLIB) $(TOOLSLIB) $(VOSLIB) + .IF "$(OS)"=="MACOSX" # static libs at end for OS X .ENDIF @@ -119,7 +118,6 @@ APP3RPATH= NONE .ENDIF APP3STDLIBS+= \ $(TOOLSLIB) \ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) \ $(VOSLIB) \ $(SALLIB) .IF "$(OS)"=="MACOSX" @@ -131,7 +129,6 @@ APP4TARGET= gsiconv APP4OBJS= $(OBJ)$/utf8conv.obj $(OBJ)$/gsiconv.obj APP4STDLIBS+= \ $(TOOLSLIB) \ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) \ $(VOSLIB) \ $(SALLIB) @@ -140,7 +137,6 @@ APP5TARGET= gsicheck APP5OBJS= $(OBJ)$/gsicheck.obj $(OBJ)$/tagtest.obj APP5STDLIBS+= \ $(TOOLSLIB) \ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) \ $(VOSLIB) \ $(SALLIB) @@ -154,7 +150,6 @@ APP6OBJS= $(OBJ)$/cfgmerge.obj $(OBJ)$/cfg_yy_wrapper.obj $(OBJ)$/hw2fw.obj $( APP6STDLIBS+= \ $(TOOLSLIB) \ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) \ $(VOSLIB) \ $(SALLIB) @@ -172,7 +167,6 @@ APP7RPATH= NONE APP7STDLIBS+= \ $(TOOLSLIB) \ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) \ $(VOSLIB) \ $(SALLIB) @@ -184,8 +178,7 @@ APP7STDLIBS+= \ APP8TARGET= txtconv #APP8STACK= 16000 APP8OBJS= $(OBJ)$/utf8conv.obj $(OBJ)$/txtconv.obj $(OBJ)$/hw2fw.obj -APP8STDLIBS=$(TOOLSLIB) $(SALLIB) $(VOSLIB) \ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) +APP8STDLIBS=$(TOOLSLIB) $(SALLIB) # localizer for l10n framework APP9TARGET= localize_sl @@ -194,7 +187,6 @@ EXCEPTIONSFILES= \ APP9OBJS= $(OBJ)$/localize.obj $(OBJ)$/utf8conv.obj $(OBJ)$/srciter.obj $(OBJ)$/export2.obj $(OBJ)$/file.obj $(OBJ)$/directory.obj APP9STDLIBS+= \ - $(BASEGFXLIB) $(UCBHELPERLIB) $(CPPULIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(SALHELPERLIB) $(I18NISOLANGLIB) \ $(TOOLSLIB) \ $(VOSLIB) \ $(SALLIB) diff --git a/transex3/source/merge.cxx b/transex3/source/merge.cxx index 3546d7e3accd..ee0f6f459655 100644 --- a/transex3/source/merge.cxx +++ b/transex3/source/merge.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: merge.cxx,v $ - * $Revision: 1.29 $ + * $Revision: 1.27.36.3 $ * * This file is part of OpenOffice.org. * @@ -210,38 +210,39 @@ MergeDataFile::MergeDataFile( const ByteString &rFileName, const ByteString& sFi ByteString sTEXT; ByteString sQHTEXT; ByteString sTITLE; + ByteString sHACK("HACK"); const ByteString sEmpty(""); if( !aInputStream.IsOpen() ) { - printf("ERROR : Can't open %s\n", rFileName.GetBuffer()); - exit( -1 ); + printf("Warning : Can't open %s\n", rFileName.GetBuffer()); + //exit( -1 ); + return; } while ( !aInputStream.IsEof()) { + xub_StrLen nToks; aInputStream.ReadLine( sLine ); sLine = sLine.Convert( RTL_TEXTENCODING_MS_1252, aCharSet ); - if ( sLine.GetTokenCount( '\t' ) == 15 ) { + nToks = sLine.GetTokenCount( '\t' ); + if ( nToks == 15 ) { // Skip all wrong filenames ByteString filename = sLine.GetToken( 1 , '\t' ); filename = filename.Copy( filename.SearchCharBackward( "\\" )+1 , filename.Len() ); if( sFile.Equals( sEmpty ) || ( !sFile.Equals( sEmpty ) && filename.Equals( sFile ) ) ) { - sTYP = sLine.GetToken( 3, '\t' ); - sGID = sLine.GetToken( 4, '\t' ); - sLID = sLine.GetToken( 5, '\t' ); - sPFO = sLine.GetToken( 7, '\t' ); - sPFO = ByteString("HACK"); - nLANG = sLine.GetToken( 9, '\t' ); - - sTEXT = sLine.GetToken( 10, '\t' ); - // printf("%s\n",sTEXT.GetBuffer()); - // Quote( sTEXT ); - // printf("%s\n",sTEXT.GetBuffer()); - - sQHTEXT = sLine.GetToken( 12, '\t' ); - sTITLE = sLine.GetToken( 13, '\t' ); + xub_StrLen rIdx = 0; + sTYP = sLine.GetToken( 3, '\t', rIdx ); + sGID = sLine.GetToken( 0, '\t', rIdx ); // 4 + sLID = sLine.GetToken( 0, '\t', rIdx ); // 5 + sPFO = sLine.GetToken( 1, '\t', rIdx ); // 7 + sPFO = sHACK; + nLANG = sLine.GetToken( 1, '\t', rIdx ); // 9 + sTEXT = sLine.GetToken( 0, '\t', rIdx ); // 10 + + sQHTEXT = sLine.GetToken( 1, '\t', rIdx ); // 12 + sTITLE = sLine.GetToken( 0, '\t', rIdx ); // 13 nLANG.EraseLeadingAndTrailingChars(); @@ -250,20 +251,22 @@ MergeDataFile::MergeDataFile( const ByteString &rFileName, const ByteString& sFi #else if ( !nLANG.EqualsIgnoreCaseAscii("en-US") ){ #endif - InsertEntry( sTYP, sGID, sLID, sPFO, nLANG, sTEXT, sQHTEXT, sTITLE , filename , bCaseSensitive ); - if( nLANG.Len() > 0 ){ - bool bFound = false; - for( unsigned int x = 0; x < aLanguages.size(); x++ ){ - if( aLanguages[ x ].Equals( nLANG ) ) - bFound = true; - } + ByteStringHashMap::const_iterator lit; + lit = aLanguageMap.find (nLANG); + ByteString aLANG; + if (lit == aLanguageMap.end()) { + aLANG = nLANG; + aLanguageMap.insert( ByteStringHashMap::value_type( aLANG, aLANG ) ); // Remember read languages for -l all switch - if( !bFound ) aLanguages.push_back( nLANG ); - } + aLanguageList.push_back( nLANG ); + } else + aLANG = lit->first; + + InsertEntry( sTYP, sGID, sLID, sPFO, aLANG, sTEXT, sQHTEXT, sTITLE , filename , bCaseSensitive ); } } } - else if ( sLine.GetTokenCount( '\t' ) == 10 ){ + else if ( nToks == 10 ) { printf("ERROR: File format is obsolete and no longer supported!\n"); } } @@ -286,7 +289,7 @@ ByteString MergeDataFile::Dump(){ ByteString sRet( "MergeDataFile\n" ); //sRet.Append( Export::DumpMap( "aLanguageSet" , aLanguageSet ) ); - //sRet.Append( Export::DumpMap( "aLanguages" , aLanguages ) ); + //sRet.Append( Export::DumpMap( "aLanguageList" , aLanguageList ) ); printf("MergeDataFile\n"); MergeDataHashMap::const_iterator idbg; for( idbg = aMap.begin() ; idbg != aMap.end(); ++idbg ){ @@ -318,7 +321,7 @@ void MergeDataFile::WriteError( const ByteString &rLine ) fprintf( stderr, "%s\n", rLine.GetBuffer()); } std::vector<ByteString> MergeDataFile::GetLanguages(){ - return aLanguages; + return aLanguageList; } /*****************************************************************************/ @@ -379,23 +382,32 @@ void MergeDataFile::InsertEntry( const ByteString &rLID, const ByteString &rPFO, const ByteString &nLANG, const ByteString &rTEXT, const ByteString &rQHTEXT, const ByteString &rTITLE , - const ByteString &rFilename , bool bCaseSensitive + const ByteString &rInFilename , bool bCaseSensitive ) /*****************************************************************************/ { MergeData *pData; BOOL bFound = FALSE; - // search for MergeData + // uniquify the filename to save memory. + ByteStringHashMap::const_iterator fit = aFilenames.find (rInFilename); + ByteString aFilename; + if (fit == aFilenames.end()) { + aFilename = rInFilename; + aFilenames.insert (ByteStringHashMap::value_type (aFilename, aFilename)); + } else + aFilename = fit->first; - ByteString sKey = CreateKey( rTYP , rGID , rLID , rFilename , bCaseSensitive ); - ByteString sKey2; + // search for MergeData - if( aMap.find( sKey ) != aMap.end() ){ - pData = aMap[ sKey ]; + ByteString sKey = CreateKey( rTYP , rGID , rLID , aFilename , bCaseSensitive ); + MergeDataHashMap::const_iterator mit; + mit = aMap.find( sKey ); + if( mit != aMap.end() ){ + pData = mit->second; }else{ - pData = new MergeData( rTYP, rGID, rLID , rFilename ); - aMap.insert( MergeDataHashMap::value_type( CreateKey( rTYP , rGID , rLID , rFilename , bCaseSensitive ) , pData ) ); + pData = new MergeData( rTYP, rGID, rLID, aFilename ); + aMap.insert( MergeDataHashMap::value_type( sKey, pData ) ); } bFound = FALSE; diff --git a/ucbhelper/inc/ucbhelper/simpleauthenticationrequest.hxx b/ucbhelper/inc/ucbhelper/simpleauthenticationrequest.hxx index e4190da641e5..ddb2e655de8b 100644 --- a/ucbhelper/inc/ucbhelper/simpleauthenticationrequest.hxx +++ b/ucbhelper/inc/ucbhelper/simpleauthenticationrequest.hxx @@ -33,6 +33,7 @@ #include <rtl/ref.hxx> #include <ucbhelper/interactionrequest.hxx> +#include <com/sun/star/ucb/AuthenticationRequest.hpp> #include "ucbhelper/ucbhelperdllapi.h" namespace ucbhelper { @@ -61,6 +62,14 @@ class UCBHELPER_DLLPUBLIC SimpleAuthenticationRequest : public ucbhelper::Intera rtl::Reference< ucbhelper::InteractionSupplyAuthentication > m_xAuthSupplier; +private: + void initialize( ::com::sun::star::ucb::AuthenticationRequest aRequest, + const sal_Bool & bCanSetRealm, + const sal_Bool & bCanSetUserName, + const sal_Bool & bCanSetPassword, + const sal_Bool & bCanSetAccount, + const sal_Bool & bAllowPersistentStoring ); + public: /** Specification whether some entity (realm, username, password, account) is either not applicable at all, has a fixed value, or is modifiable. @@ -94,6 +103,26 @@ public: * Constructor. * * @param rServerName contains a server name. + * @param rRealm contains a realm, if applicable. + * @param rUserName contains a username, if available (for instance from + * a previous try). + * @param rPassword contains a password, if available (for instance from + * a previous try). + * @param rAccount contains an account, if applicable. + * @param bAllowPersistentStoring specifies if the credentials should stored in the passowrd container persistently + */ + SimpleAuthenticationRequest( const rtl::OUString & rServerName, + const rtl::OUString & rRealm, + const rtl::OUString & rUserName, + const rtl::OUString & rPassword, + const rtl::OUString & rAccount, + const sal_Bool & bAllowPersistentStoring); + + + /** + * Constructor. + * + * @param rServerName contains a server name. * @param eRealmType specifies whether a realm is applicable and modifiable. * @param rRealm contains a realm, if applicable. @@ -120,6 +149,37 @@ public: const rtl::OUString & rAccount = rtl::OUString() ); + /** + * Constructor. + * + * @param rServerName contains a server name. + * @param eRealmType specifies whether a realm is applicable and + modifiable. + * @param rRealm contains a realm, if applicable. + * @param eUserNameType specifies whether a username is applicable and + modifiable. + * @param rUserName contains a username, if available (for instance from + * a previous try). + * @param ePasswordType specifies whether a password is applicable and + modifiable. + * @param rPassword contains a password, if available (for instance from + * a previous try). + * @param eAccountType specifies whether an account is applicable and + modifiable. + * @param rAccount contains an account, if applicable. + * @param bAllowPersistentStoring specifies if the credentials should stored in the passowrd container persistently + */ + SimpleAuthenticationRequest( const rtl::OUString & rServerName, + EntityType eRealmType, + const rtl::OUString & rRealm, + EntityType eUserNameType, + const rtl::OUString & rUserName, + EntityType ePasswordType, + const rtl::OUString & rPassword, + EntityType eAccountType, + const rtl::OUString & rAccount, + const sal_Bool & bAllowPersistentStoring); + /** * This method returns the supplier for the missing authentication data, * that, for instance can be used to query the password supplied by the diff --git a/ucbhelper/prj/build.lst b/ucbhelper/prj/build.lst index fb9e7d7ab45f..3f49d69c987f 100644 --- a/ucbhelper/prj/build.lst +++ b/ucbhelper/prj/build.lst @@ -1,4 +1,4 @@ -uh ucbhelper : offuh sal cppu cppuhelper salhelper NULL +uh ucbhelper : offuh sal cppu cppuhelper salhelper NULL uh ucbhelper usr1 - all uh_mkout NULL uh ucbhelper\inc nmake - all uh_inc NULL uh ucbhelper\source\client nmake - all uh_client uh_inc NULL diff --git a/ucbhelper/source/provider/simpleauthenticationrequest.cxx b/ucbhelper/source/provider/simpleauthenticationrequest.cxx index c70dc40db2f7..16570f7f012d 100644 --- a/ucbhelper/source/provider/simpleauthenticationrequest.cxx +++ b/ucbhelper/source/provider/simpleauthenticationrequest.cxx @@ -30,7 +30,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_ucbhelper.hxx" -#include <com/sun/star/ucb/AuthenticationRequest.hpp> +#include <com/sun/star/task/XMasterPasswordHandling.hpp> #include <ucbhelper/simpleauthenticationrequest.hxx> using namespace com::sun::star; @@ -44,7 +44,7 @@ SimpleAuthenticationRequest::SimpleAuthenticationRequest( const rtl::OUString & rPassword, const rtl::OUString & rAccount ) { - // Fill request... + // Fill request... ucb::AuthenticationRequest aRequest; // aRequest.Message = // OUString // aRequest.Context = // XInterface @@ -62,20 +62,73 @@ SimpleAuthenticationRequest::SimpleAuthenticationRequest( if ( aRequest.HasAccount ) aRequest.Account = rAccount; + initialize(aRequest, + sal_False, + sal_True, + sal_True, + aRequest.HasAccount, + sal_False); +} +//========================================================================= +SimpleAuthenticationRequest::SimpleAuthenticationRequest( + const rtl::OUString & rServerName, + const rtl::OUString & rRealm, + const rtl::OUString & rUserName, + const rtl::OUString & rPassword, + const rtl::OUString & rAccount, + const sal_Bool & bAllowPersistentStoring ) +{ + + // Fill request... + ucb::AuthenticationRequest aRequest; +// aRequest.Message = // OUString +// aRequest.Context = // XInterface + aRequest.Classification = task::InteractionClassification_ERROR; + aRequest.ServerName = rServerName; +// aRequest.Diagnostic = // OUString + aRequest.HasRealm = ( rRealm.getLength() > 0 ); + if ( aRequest.HasRealm ) + aRequest.Realm = rRealm; + aRequest.HasUserName = sal_True; + aRequest.UserName = rUserName; + aRequest.HasPassword = sal_True; + aRequest.Password = rPassword; + aRequest.HasAccount = ( rAccount.getLength() > 0 ); + if ( aRequest.HasAccount ) + aRequest.Account = rAccount; + + initialize(aRequest, + sal_False, + sal_True, + sal_True, + aRequest.HasAccount, + bAllowPersistentStoring); +} + +void SimpleAuthenticationRequest::initialize( + ucb::AuthenticationRequest aRequest, + const sal_Bool & bCanSetRealm, + const sal_Bool & bCanSetUserName, + const sal_Bool & bCanSetPassword, + const sal_Bool & bCanSetAccount, + const sal_Bool & bAllowPersistentStoring ) +{ setRequest( uno::makeAny( aRequest ) ); // Fill continuations... - uno::Sequence< ucb::RememberAuthentication > aRememberModes( 2 ); + uno::Sequence< ucb::RememberAuthentication > aRememberModes( bAllowPersistentStoring ? 3 : 2 ); aRememberModes[ 0 ] = ucb::RememberAuthentication_NO; aRememberModes[ 1 ] = ucb::RememberAuthentication_SESSION; + if (bAllowPersistentStoring) + aRememberModes[ 1 ] = ucb::RememberAuthentication_PERSISTENT; m_xAuthSupplier = new InteractionSupplyAuthentication( this, - sal_False, // bCanSetRealm - sal_True, // bCanSetUserName - sal_True, // bCanSetPassword - aRequest.HasAccount, // bCanSetAccount + bCanSetRealm, + bCanSetUserName, + bCanSetPassword, + bCanSetAccount, aRememberModes, // rRememberPasswordModes ucb::RememberAuthentication_SESSION, // eDefaultRememberPasswordMode aRememberModes, // rRememberAccountModes @@ -123,31 +176,51 @@ SimpleAuthenticationRequest::SimpleAuthenticationRequest( if ( aRequest.HasAccount ) aRequest.Account = rAccount; - setRequest( uno::makeAny( aRequest ) ); - - // Fill continuations... - uno::Sequence< ucb::RememberAuthentication > aRememberModes( 2 ); - aRememberModes[ 0 ] = ucb::RememberAuthentication_NO; - aRememberModes[ 1 ] = ucb::RememberAuthentication_SESSION; - - m_xAuthSupplier - = new InteractionSupplyAuthentication( - this, - eRealmType == ENTITY_MODIFY, // bCanSetRealm - eUserNameType == ENTITY_MODIFY, // bCanSetUserName - ePasswordType == ENTITY_MODIFY, // bCanSetPassword - eAccountType == ENTITY_MODIFY, // bCanSetAccount - aRememberModes, // rRememberPasswordModes - ucb::RememberAuthentication_SESSION, // eDefaultRememberPasswordMode - aRememberModes, // rRememberAccountModes - ucb::RememberAuthentication_SESSION // eDefaultRememberAccountMode - ); + initialize(aRequest, + eRealmType == ENTITY_MODIFY, + eUserNameType == ENTITY_MODIFY, + ePasswordType == ENTITY_MODIFY, + eAccountType == ENTITY_MODIFY, + sal_False); +} - uno::Sequence< - uno::Reference< task::XInteractionContinuation > > aContinuations( 3 ); - aContinuations[ 0 ] = new InteractionAbort( this ); - aContinuations[ 1 ] = new InteractionRetry( this ); - aContinuations[ 2 ] = m_xAuthSupplier.get(); +//========================================================================= +SimpleAuthenticationRequest::SimpleAuthenticationRequest( + const rtl::OUString & rServerName, + EntityType eRealmType, + const rtl::OUString & rRealm, + EntityType eUserNameType, + const rtl::OUString & rUserName, + EntityType ePasswordType, + const rtl::OUString & rPassword, + EntityType eAccountType, + const rtl::OUString & rAccount, + const sal_Bool & bAllowPersistentStoring ) +{ + // Fill request... + ucb::AuthenticationRequest aRequest; +// aRequest.Message = // OUString +// aRequest.Context = // XInterface + aRequest.Classification = task::InteractionClassification_ERROR; + aRequest.ServerName = rServerName; +// aRequest.Diagnostic = // OUString + aRequest.HasRealm = eRealmType != ENTITY_NA; + if ( aRequest.HasRealm ) + aRequest.Realm = rRealm; + aRequest.HasUserName = eUserNameType != ENTITY_NA; + if ( aRequest.HasUserName ) + aRequest.UserName = rUserName; + aRequest.HasPassword = ePasswordType != ENTITY_NA; + if ( aRequest.HasPassword ) + aRequest.Password = rPassword; + aRequest.HasAccount = eAccountType != ENTITY_NA; + if ( aRequest.HasAccount ) + aRequest.Account = rAccount; - setContinuations( aContinuations ); + initialize(aRequest, + eRealmType == ENTITY_MODIFY, + eUserNameType == ENTITY_MODIFY, + ePasswordType == ENTITY_MODIFY, + eAccountType == ENTITY_MODIFY, + bAllowPersistentStoring); } diff --git a/unotools/inc/unotools/accessiblerelationsethelper.hxx b/unotools/inc/unotools/accessiblerelationsethelper.hxx index 53802862ada2..e48850e3efc8 100644 --- a/unotools/inc/unotools/accessiblerelationsethelper.hxx +++ b/unotools/inc/unotools/accessiblerelationsethelper.hxx @@ -43,7 +43,7 @@ #include <com/sun/star/lang/XServiceName.hpp> #include <vos/mutex.hxx> #include <cppuhelper/implbase1.hxx> -#include <unotools/servicehelper.hxx> +#include <comphelper/servicehelper.hxx> class AccessibleRelationSetHelperImpl; diff --git a/unotools/inc/unotools/accessiblestatesethelper.hxx b/unotools/inc/unotools/accessiblestatesethelper.hxx index f256249c8e37..421a77b78f2b 100644 --- a/unotools/inc/unotools/accessiblestatesethelper.hxx +++ b/unotools/inc/unotools/accessiblestatesethelper.hxx @@ -42,7 +42,7 @@ #include <com/sun/star/lang/XServiceName.hpp> #include <vos/mutex.hxx> #include <cppuhelper/implbase1.hxx> -#include <unotools/servicehelper.hxx> +#include <comphelper/servicehelper.hxx> class AccessibleStateSetHelperImpl; diff --git a/unotools/inc/unotools/confignode.hxx b/unotools/inc/unotools/confignode.hxx index a50025a6ab50..580274004e1a 100644 --- a/unotools/inc/unotools/confignode.hxx +++ b/unotools/inc/unotools/confignode.hxx @@ -86,7 +86,7 @@ namespace utl const OConfigurationNode& operator=(const OConfigurationNode& _rSource); /// dtor - ~OConfigurationNode(); + ~OConfigurationNode() {} /** open a sub node @param _rPath access path of the to-be-opened sub node. May be a hierarchical path. diff --git a/unotools/inc/unotools/servicehelper.hxx b/unotools/inc/unotools/servicehelper.hxx deleted file mode 100644 index 596e6f946a7f..000000000000 --- a/unotools/inc/unotools/servicehelper.hxx +++ /dev/null @@ -1,108 +0,0 @@ -/************************************************************************* - * - * 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: servicehelper.hxx,v $ - * $Revision: 1.5 $ - * - * 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 _UTL_SERVICEHELPER_HXX_ -#define _UTL_SERVICEHELPER_HXX_ - -/** the UNO3_GETIMPLEMENTATION_* macros implement a static helper function - that gives access to your implementation for a given interface reference, - if possible. - - Example: - MyClass* pClass = MyClass::getImplementation( xRef ); - - Usage: - Put a UNO3_GETIMPLEMENTATION_DECL( classname ) inside your class - definitian and UNO3_GETIMPLEMENTATION_IMPL( classname ) inside - your cxx file. Your class must inherit ::com::sun::star::uno::XUnoTunnel - and export it with queryInterface. Implementation of XUnoTunnel is - done by this macro. -*/ -#define UNO3_GETIMPLEMENTATION_DECL( classname ) \ - static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId() throw(); \ - static classname* getImplementation( ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xInt ) throw(); \ - virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException); - -#define UNO3_GETIMPLEMENTATION_BASE_IMPL( classname ) \ -const ::com::sun::star::uno::Sequence< sal_Int8 > & classname::getUnoTunnelId() throw() \ -{ \ - static ::com::sun::star::uno::Sequence< sal_Int8 > * pSeq = 0; \ - if( !pSeq ) \ - { \ - ::osl::Guard< ::osl::Mutex > aGuard( ::osl::Mutex::getGlobalMutex() ); \ - if( !pSeq ) \ - { \ - static ::com::sun::star::uno::Sequence< sal_Int8 > aSeq( 16 ); \ - rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True ); \ - pSeq = &aSeq; \ - } \ - } \ - return *pSeq; \ -} \ -\ -classname* classname::getImplementation( uno::Reference< uno::XInterface > xInt ) throw() \ -{ \ - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XUnoTunnel > xUT( xInt, ::com::sun::star::uno::UNO_QUERY ); \ - if( xUT.is() ) \ - return reinterpret_cast<classname*>(sal::static_int_cast<sal_IntPtr>(xUT->getSomething( classname::getUnoTunnelId() ))); \ - else \ - return NULL; \ -} - -#define UNO3_GETIMPLEMENTATION_IMPL( classname )\ -UNO3_GETIMPLEMENTATION_BASE_IMPL(classname)\ -sal_Int64 SAL_CALL classname::getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw(::com::sun::star::uno::RuntimeException) \ -{ \ - if( rId.getLength() == 16 && 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(), \ - rId.getConstArray(), 16 ) ) \ - { \ - return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this)); \ - } \ - return 0; \ -} - -#define UNO3_GETIMPLEMENTATION2_IMPL( classname, baseclass )\ -UNO3_GETIMPLEMENTATION_BASE_IMPL(classname)\ -sal_Int64 SAL_CALL classname::getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw(::com::sun::star::uno::RuntimeException) \ -{ \ - if( rId.getLength() == 16 && 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(), \ - rId.getConstArray(), 16 ) ) \ - { \ - return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this)); \ - } \ - else \ - { \ - return baseclass::getSomething( rId ); \ - } \ -} - - -#endif // _UTL_SERVICEHELPER_HXX_ - diff --git a/unotools/source/config/confignode.cxx b/unotools/source/config/confignode.cxx index 56d0b1b06118..4b1b9fe272db 100644 --- a/unotools/source/config/confignode.cxx +++ b/unotools/source/config/confignode.cxx @@ -130,11 +130,6 @@ namespace utl } //------------------------------------------------------------------------ - OConfigurationNode::~OConfigurationNode() - { - } - - //------------------------------------------------------------------------ void OConfigurationNode::_disposing( const EventObject& _rSource ) { Reference< XComponent > xDisposingSource(_rSource.Source, UNO_QUERY); diff --git a/vcl/aqua/inc/salframeview.h b/vcl/aqua/inc/salframeview.h index e969cc8509a1..7fd4d96c4a45 100755 --- a/vcl/aqua/inc/salframeview.h +++ b/vcl/aqua/inc/salframeview.h @@ -108,6 +108,7 @@ -(void)sendMouseEventToFrame:(NSEvent*)pEvent button:(USHORT)nButton eventtype:(USHORT)nEvent; -(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode character: (sal_Unicode)aChar; -(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode character: (sal_Unicode)aChar modifiers: (unsigned int)nMod; +-(MacOSBOOL)sendKeyToFrameDirect: (USHORT)nKeyCode character: (sal_Unicode)aChar modifiers: (unsigned int)nMod; -(MacOSBOOL)sendSingleCharacter:(NSEvent*)pEvent; -(MacOSBOOL)handleKeyDownException:(NSEvent*)pEvent; /* diff --git a/vcl/aqua/inc/salgdi.h b/vcl/aqua/inc/salgdi.h index 476400f1564b..11abd6086ce7 100644 --- a/vcl/aqua/inc/salgdi.h +++ b/vcl/aqua/inc/salgdi.h @@ -157,6 +157,7 @@ public: void SetVirDevGraphics( CGLayerRef, CGContextRef, int nBitDepth = 0 ); void initResolution( NSWindow* ); + void copyResolution( AquaSalGraphics& ); void updateResolution(); bool IsWindowGraphics() const { return mbWindow; } @@ -348,6 +349,7 @@ public: virtual BOOL IsNativeControlSupported( ControlType nType, ControlPart nPart ); virtual SystemGraphicsData GetGraphicsData() const; + virtual SystemFontData GetSysFontData( int /* nFallbacklevel */ ) const; private: // differences between VCL, Quartz and kHiThemeOrientation coordinate systems diff --git a/vcl/aqua/inc/vclnsapp.h b/vcl/aqua/inc/vclnsapp.h index a5c339c238bd..fc637ff75a31 100755 --- a/vcl/aqua/inc/vclnsapp.h +++ b/vcl/aqua/inc/vclnsapp.h @@ -59,7 +59,6 @@ -(void)scrollbarSettingsChanged: (NSNotification*) pNotification; -(void)addFallbackMenuItem: (NSMenuItem*)pNewItem; -(void)removeFallbackMenuItem: (NSMenuItem*)pOldItem; --(void)getSystemVersionMajor:(unsigned *)major minor:(unsigned *)minor bugFix:(unsigned *)bugFix; -(void)addDockMenuItem: (NSMenuItem*)pNewItem; -(void)applicationWillBecomeActive: (NSNotification *)pNotification; -(void)applicationWillResignActive: (NSNotification *)pNotification; diff --git a/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm b/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm index 53472e6ae34d..e521e7362323 100644 --- a/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm +++ b/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm @@ -249,6 +249,8 @@ using namespace ::rtl; // empty } catch ( IndexOutOfBoundsException & e ) { // empty + } catch ( RuntimeException& ) { + // at least don't crash } return string; } diff --git a/vcl/aqua/source/a11y/aqua11yutil.mm b/vcl/aqua/source/a11y/aqua11yutil.mm index 6d12fbee7a91..44f95169ca68 100644 --- a/vcl/aqua/source/a11y/aqua11yutil.mm +++ b/vcl/aqua/source/a11y/aqua11yutil.mm @@ -51,7 +51,7 @@ using namespace ::com::sun::star::awt; +(Point)nsPointToVclPoint:(NSValue *)nsPoint { // VCL coordinates are in upper-left-notation, Cocoa likes it the Cartesian way (lower-left) NSRect screenRect = [ [ NSScreen mainScreen ] frame ]; - return Point ( [ nsPoint pointValue ].x, screenRect.size.height - [ nsPoint pointValue ].y ); + return Point ( static_cast<long>([ nsPoint pointValue ].x), static_cast<long>(screenRect.size.height - [ nsPoint pointValue ].y) ); } @end diff --git a/vcl/aqua/source/a11y/aqua11ywrapper.mm b/vcl/aqua/source/a11y/aqua11ywrapper.mm index 066748cc1525..99bcbd20f698 100644 --- a/vcl/aqua/source/a11y/aqua11ywrapper.mm +++ b/vcl/aqua/source/a11y/aqua11ywrapper.mm @@ -178,9 +178,11 @@ static MacOSBOOL isPopupMenuOpen = NO; -(Reference < XAccessible >)getFirstRadioButtonInGroup { Reference < XAccessibleRelationSet > rxAccessibleRelationSet = [ self accessibleContext ] -> getAccessibleRelationSet(); - AccessibleRelation relationMemberOf = rxAccessibleRelationSet -> getRelationByType ( AccessibleRelationType::MEMBER_OF ); - if ( relationMemberOf.RelationType == AccessibleRelationType::MEMBER_OF && relationMemberOf.TargetSet.hasElements() ) { - return Reference < XAccessible > ( relationMemberOf.TargetSet[0], UNO_QUERY ); + if( rxAccessibleRelationSet.is() ) + { + AccessibleRelation relationMemberOf = rxAccessibleRelationSet -> getRelationByType ( AccessibleRelationType::MEMBER_OF ); + if ( relationMemberOf.RelationType == AccessibleRelationType::MEMBER_OF && relationMemberOf.TargetSet.hasElements() ) + return Reference < XAccessible > ( relationMemberOf.TargetSet[0], UNO_QUERY ); } return Reference < XAccessible > (); } @@ -726,9 +728,15 @@ static MacOSBOOL isPopupMenuOpen = NO; if ( nativeSubrole != nil && ! [ nativeSubrole isEqualToString: @"" ] ) { [ attributeNames addObject: NSAccessibilitySubroleAttribute ]; } + try + { if ( [ self accessibleContext ] -> getAccessibleChildCount() > 0 ) { [ attributeNames addObject: NSAccessibilityChildrenAttribute ]; } + } + catch( DisposedException& ) {} + catch( RuntimeException& ) {} + if ( title != nil && ! [ title isEqualToString: @"" ] ) { [ attributeNames addObject: NSAccessibilityTitleAttribute ]; } @@ -984,7 +992,7 @@ Reference < XAccessibleContext > hitTestRunner ( Point point, Reference < XAcces } Reference < XAccessibleContext > hitChild; NSRect screenRect = [ [ NSScreen mainScreen ] frame ]; - Point hitPoint ( point.x , screenRect.size.height - point.y ); + Point hitPoint ( static_cast<long>(point.x) , static_cast<long>(screenRect.size.height - point.y) ); // check child windows first NSWindow * window = (NSWindow *) [ self accessibilityAttributeValue: NSAccessibilityWindowAttribute ]; NSArray * childWindows = [ window childWindows ]; diff --git a/vcl/aqua/source/app/saldata.cxx b/vcl/aqua/source/app/saldata.cxx index a70854306122..180f6a106459 100644 --- a/vcl/aqua/source/app/saldata.cxx +++ b/vcl/aqua/source/app/saldata.cxx @@ -93,7 +93,7 @@ SalData::~SalData() } osl_destroyThreadKey( s_aAutoReleaseKey ); - s_aAutoReleaseKey = NULL; + s_aAutoReleaseKey = 0; } if ( mpMainController ) [mpMainController release]; diff --git a/vcl/aqua/source/app/salinst.cxx b/vcl/aqua/source/app/salinst.cxx index b9d66d1e02d3..71bfb7953187 100644 --- a/vcl/aqua/source/app/salinst.cxx +++ b/vcl/aqua/source/app/salinst.cxx @@ -140,10 +140,6 @@ bool AquaSalInstance::isOnCommandLine( const rtl::OUString& rArg ) // returns an NSAutoreleasePool that must be released when the event loop begins static void initNSApp() { - SInt32 major = NULL; - SInt32 minor = NULL; - SInt32 bugFix = NULL; - // create our cocoa NSApplication [VCL_NSApplication sharedApplication]; @@ -176,7 +172,17 @@ static void initNSApp() object: nil ]; // get System Version and store the value in GetSalData()->mnSystemVersion - [NSApp getSystemVersionMajor: (unsigned int *)major minor:(unsigned int *)minor bugFix:(unsigned int *)bugFix ]; + OSErr err = noErr; + SInt32 systemVersion = VER_TIGER; // Initialize with minimal requirement + if( (err = Gestalt(gestaltSystemVersion, &systemVersion)) == noErr ) + { + GetSalData()->mnSystemVersion = systemVersion; +#if OSL_DEBUG_LEVEL > 1 + fprintf( stderr, "System Version %x\n", (unsigned int)systemVersion); +#endif + } + else + NSLog(@"Unable to obtain system version: %ld", (long)err); // Initialize Apple Remote GetSalData()->mpMainController = [[MainController alloc] init]; diff --git a/vcl/aqua/source/app/salsys.cxx b/vcl/aqua/source/app/salsys.cxx index 28acb47ccade..78b5defe6dd9 100644 --- a/vcl/aqua/source/app/salsys.cxx +++ b/vcl/aqua/source/app/salsys.cxx @@ -75,8 +75,8 @@ Rectangle AquaSalSystem::GetDisplayScreenPosSizePixel( unsigned int nScreen ) if( pScreen ) { NSRect aFrame = [pScreen frame]; - aRet = Rectangle( Point( aFrame.origin.x, aFrame.origin.y ), - Size( aFrame.size.width, aFrame.size.height ) ); + aRet = Rectangle( Point( static_cast<long int>(aFrame.origin.x), static_cast<long int>(aFrame.origin.y) ), + Size( static_cast<long int>(aFrame.size.width), static_cast<long int>(aFrame.size.height) ) ); } return aRet; } @@ -94,8 +94,8 @@ Rectangle AquaSalSystem::GetDisplayWorkAreaPosSizePixel( unsigned int nScreen ) if( pScreen ) { NSRect aFrame = [pScreen visibleFrame]; - aRet = Rectangle( Point( aFrame.origin.x, aFrame.origin.y ), - Size( aFrame.size.width, aFrame.size.height ) ); + aRet = Rectangle( Point( static_cast<long int>(aFrame.origin.x), static_cast<long int>(aFrame.origin.y) ), + Size( static_cast<long int>(aFrame.size.width), static_cast<long int>(aFrame.size.height) ) ); } return aRet; } diff --git a/vcl/aqua/source/app/vclnsapp.mm b/vcl/aqua/source/app/vclnsapp.mm index 9e933c7410b6..43d44c709c12 100755 --- a/vcl/aqua/source/app/vclnsapp.mm +++ b/vcl/aqua/source/app/vclnsapp.mm @@ -86,45 +86,52 @@ return; } } - - /* #i89611# - Cmd-Option-Space is for some reason not consumed by the menubar, - but also not by the input method (like e.g. Cmd-Space) and stays - without function. - - However MOD1 + MOD2 combinations are not used throughout OOo code - since they tend to clash with system shortcuts on all platforms so - we can skip this case here. - */ - // get information whether the event was handled; keyDown returns nothing - GetSalData()->maKeyEventAnswer[ pEvent ] = false; - bool bHandled = false; - - if( nModMask != (NSCommandKeyMask | NSAlternateKeyMask) ) + + /* + * #i98949# - Cmd-M miniaturize window, Cmd-Option-M miniaturize all windows + */ + if( [[pEvent charactersIgnoringModifiers] isEqualToString: @"m"] ) { - // dispatch to view directly to avoid the key event being consumed by the menubar - // popup windows do not get the focus, so they don't get these either - // simplest would be dispatch this to the key window always if it is without parent - // however e.g. in document we want the menu shortcut if e.g. the stylist has focus - if( pFrame->mpParent && (pFrame->mnStyle & SAL_FRAME_STYLE_FLOAT) == 0 ) + if ( nModMask == NSCommandKeyMask && ([pFrame->getWindow() styleMask] & NSMiniaturizableWindowMask) ) { - [[pKeyWin contentView] keyDown: pEvent]; - bHandled = GetSalData()->maKeyEventAnswer[ pEvent ]; + [pFrame->getWindow() performMiniaturize: nil]; + return; } - - // see whether the main menu consumes this event - // if not, we want to dispatch it ourselves. Unless we do this "trick" - // the main menu just beeps for an unknown or disabled key equivalent - // and swallows the event wholesale - NSMenu* pMainMenu = [NSApp mainMenu]; - if( ! bHandled && (pMainMenu == 0 || ! [pMainMenu performKeyEquivalent: pEvent]) ) + + if ( nModMask == ( NSCommandKeyMask | NSAlternateKeyMask ) ) { - [[pKeyWin contentView] keyDown: pEvent]; - bHandled = GetSalData()->maKeyEventAnswer[ pEvent ]; + [NSApp miniaturizeAll: nil]; + return; } - else - bHandled = true; // event handled already or main menu just handled it } + + // get information whether the event was handled; keyDown returns nothing + GetSalData()->maKeyEventAnswer[ pEvent ] = false; + bool bHandled = false; + + // dispatch to view directly to avoid the key event being consumed by the menubar + // popup windows do not get the focus, so they don't get these either + // simplest would be dispatch this to the key window always if it is without parent + // however e.g. in document we want the menu shortcut if e.g. the stylist has focus + if( pFrame->mpParent && (pFrame->mnStyle & SAL_FRAME_STYLE_FLOAT) == 0 ) + { + [[pKeyWin contentView] keyDown: pEvent]; + bHandled = GetSalData()->maKeyEventAnswer[ pEvent ]; + } + + // see whether the main menu consumes this event + // if not, we want to dispatch it ourselves. Unless we do this "trick" + // the main menu just beeps for an unknown or disabled key equivalent + // and swallows the event wholesale + NSMenu* pMainMenu = [NSApp mainMenu]; + if( ! bHandled && (pMainMenu == 0 || ! [pMainMenu performKeyEquivalent: pEvent]) ) + { + [[pKeyWin contentView] keyDown: pEvent]; + bHandled = GetSalData()->maKeyEventAnswer[ pEvent ]; + } + else + bHandled = true; // event handled already or main menu just handled it + GetSalData()->maKeyEventAnswer.erase( pEvent ); if( bHandled ) return; @@ -356,26 +363,6 @@ AquaSalMenu::removeFallbackMenuItem( pItem ); } -- (void)getSystemVersionMajor:(unsigned *)major - minor:(unsigned *)minor - bugFix:(unsigned *)bugFix -{ - OSErr err; - SInt32 systemVersion = VER_TIGER; // Initialize with minimal requirement - if ((err = Gestalt(gestaltSystemVersion, &systemVersion)) == noErr) - { - GetSalData()->mnSystemVersion = systemVersion; -#if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "System Version %x\n", (unsigned int)systemVersion); - fprintf( stderr, "Stored System Version %x\n", (unsigned int)GetSalData()->mnSystemVersion); -#endif - } - else - NSLog(@"Unable to obtain system version: %ld", (long)err); - - return; -} - -(void)addDockMenuItem: (NSMenuItem*)pNewItem { NSMenu* pDock = AquaSalInstance::GetDynamicDockMenu(); diff --git a/vcl/aqua/source/gdi/aquaprintview.mm b/vcl/aqua/source/gdi/aquaprintview.mm index 6099fbaed741..ba139da5f5a4 100755 --- a/vcl/aqua/source/gdi/aquaprintview.mm +++ b/vcl/aqua/source/gdi/aquaprintview.mm @@ -58,6 +58,9 @@ { NSSize aPaperSize = [mpInfoPrinter->getPrintInfo() paperSize]; int nWidth = (int)aPaperSize.width; + // #i101108# sanity check + if( nWidth < 1 ) + nWidth = 1; NSRect aRect = { { page % nWidth, page / nWidth }, aPaperSize }; return aRect; } @@ -71,7 +74,7 @@ -(void)drawRect: (NSRect)rect { NSPoint aPoint = [self locationOfPrintRect: rect]; - mpInfoPrinter->setStartPageOffset( rect.origin.x, rect.origin.y ); + mpInfoPrinter->setStartPageOffset( static_cast<int>(rect.origin.x), static_cast<int>(rect.origin.y) ); NSSize aPaperSize = [mpInfoPrinter->getPrintInfo() paperSize]; int nPage = (int)(aPaperSize.width * rect.origin.y + rect.origin.x); diff --git a/vcl/aqua/source/gdi/salatslayout.cxx b/vcl/aqua/source/gdi/salatslayout.cxx index f47920004f7a..7ecef01cf0d5 100755 --- a/vcl/aqua/source/gdi/salatslayout.cxx +++ b/vcl/aqua/source/gdi/salatslayout.cxx @@ -6,9 +6,6 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: salatslayout.cxx,v $ - * $Revision: 1.12 $ - * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify @@ -301,7 +298,7 @@ void ATSLayout::AdjustLayout( ImplLayoutArgs& rArgs ) int nPixelWidth = rArgs.mnLayoutWidth; if( !nPixelWidth && rArgs.mpDXArray ) { // for now we are only interested in the layout width - // TODO: account for individual logical widths + // TODO: use all mpDXArray elements for layouting nPixelWidth = rArgs.mpDXArray[ mnCharCount - 1 ]; // workaround for ATSUI not using trailing spaces for justification @@ -309,14 +306,21 @@ void ATSLayout::AdjustLayout( ImplLayoutArgs& rArgs ) int i = mnCharCount; while( (--i > 0) && IsSpacingGlyph( rArgs.mpStr[mnMinCharPos+i]|GF_ISCHAR ) ) mnTrailingSpaceWidth += rArgs.mpDXArray[i] - rArgs.mpDXArray[i-1]; + if( i <= 0 ) + return; + // #i91685# trailing letters are left aligned (right aligned for RTL) + mnTrailingSpaceWidth += rArgs.mpDXArray[i]; + if( i > 0 ) + mnTrailingSpaceWidth -= rArgs.mpDXArray[i-1]; + InitGIA(); // ensure valid mpCharWidths[] + mnTrailingSpaceWidth -= Fixed2Vcl( mpCharWidths[i] ); + // ignore trailing space for calculating the available width nOrigWidth -= mnTrailingSpaceWidth; nPixelWidth -= mnTrailingSpaceWidth; - // trailing spaces can be leftmost spaces in RTL-layouts + // in RTL-layouts trailing spaces are leftmost // TODO: use BiDi-algorithm to thoroughly check this assumption if( rArgs.mnFlags & SAL_LAYOUT_BIDI_RTL) mnBaseAdv = mnTrailingSpaceWidth; - - // TODO: use all mpDXArray elements for layouting } // return early if there is nothing to do if( !nPixelWidth ) @@ -424,8 +428,8 @@ void ATSLayout::DrawText( SalGraphics& rGraphics ) const if( rAquaGraphics.mnATSUIRotation != 0 ) { const double fRadians = rAquaGraphics.mnATSUIRotation * (M_PI/0xB40000); - nXOfsFixed = +rSubPortion.mnXOffset * cos( fRadians ); - nYOfsFixed = +rSubPortion.mnXOffset * sin( fRadians ); + nXOfsFixed = static_cast<Fixed>(static_cast<double>(+rSubPortion.mnXOffset) * cos( fRadians )); + nYOfsFixed = static_cast<Fixed>(static_cast<double>(+rSubPortion.mnXOffset) * sin( fRadians )); } // draw sub-portions @@ -738,6 +742,8 @@ int ATSLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) cons // get a quick overview on what could fit const long nPixelWidth = (nMaxWidth - (nCharExtra * mnCharCount)) / nFactor; + if( nPixelWidth <= 0 ) + return mnMinCharPos; // check assumptions DBG_ASSERT( !mnTrailingSpaceWidth, "ATSLayout::GetTextBreak() with nTSW!=0" ); diff --git a/vcl/aqua/source/gdi/salgdi.cxx b/vcl/aqua/source/gdi/salgdi.cxx index 661eb64b83ce..f8410a47dfd6 100644 --- a/vcl/aqua/source/gdi/salgdi.cxx +++ b/vcl/aqua/source/gdi/salgdi.cxx @@ -346,64 +346,80 @@ void AquaSalGraphics::updateResolution() void AquaSalGraphics::initResolution( NSWindow* pWin ) { - NSScreen* pScreen = nil; + // #i100617# read DPI only once; there is some kind of weird caching going on + // if the main screen changes + // FIXME: this is really unfortunate and needs to be investigated - /* #i91301# - many woes went into the try to have different resolutions - on different screens. The result of these trials is that OOo is not ready - for that yet, vcl and applications would need to be adapted. + SalData* pSalData = GetSalData(); + if( pSalData->mnDPIX == 0 || pSalData->mnDPIY == 0 ) + { + NSScreen* pScreen = nil; - Unfortunately this is not possible in the 3.0 timeframe. - So let's stay with one resolution for all Windows and VirtualDevices - which is the resolution of the main screen + /* #i91301# + many woes went into the try to have different resolutions + on different screens. The result of these trials is that OOo is not ready + for that yet, vcl and applications would need to be adapted. - This of course also means that measurements are exact only on the main screen. - For activating different resolutions again just comment out the two lines below. + Unfortunately this is not possible in the 3.0 timeframe. + So let's stay with one resolution for all Windows and VirtualDevices + which is the resolution of the main screen - if( pWin ) + This of course also means that measurements are exact only on the main screen. + For activating different resolutions again just comment out the two lines below. + + if( pWin ) pScreen = [pWin screen]; - */ - if( pScreen == nil ) - { - NSArray* pScreens = [NSScreen screens]; - if( pScreens ) - pScreen = [pScreens objectAtIndex: 0]; - } + */ + if( pScreen == nil ) + { + NSArray* pScreens = [NSScreen screens]; + if( pScreens ) + pScreen = [pScreens objectAtIndex: 0]; + } - mnRealDPIX = mnRealDPIY = 96; - if( pScreen ) - { - NSDictionary* pDev = [pScreen deviceDescription]; - if( pDev ) + mnRealDPIX = mnRealDPIY = 96; + if( pScreen ) { - NSNumber* pVal = [pDev objectForKey: @"NSScreenNumber"]; - if( pVal ) + NSDictionary* pDev = [pScreen deviceDescription]; + if( pDev ) { - // FIXME: casting a long to CGDirectDisplayID is evil, but - // Apple suggest to do it this way - const CGDirectDisplayID nDisplayID = (CGDirectDisplayID)[pVal longValue]; - const CGSize aSize = CGDisplayScreenSize( nDisplayID ); // => result is in millimeters - mnRealDPIX = static_cast<long>((CGDisplayPixelsWide( nDisplayID ) * 25.4) / aSize.width); - mnRealDPIY = static_cast<long>((CGDisplayPixelsHigh( nDisplayID ) * 25.4) / aSize.height); + NSNumber* pVal = [pDev objectForKey: @"NSScreenNumber"]; + if( pVal ) + { + // FIXME: casting a long to CGDirectDisplayID is evil, but + // Apple suggest to do it this way + const CGDirectDisplayID nDisplayID = (CGDirectDisplayID)[pVal longValue]; + const CGSize aSize = CGDisplayScreenSize( nDisplayID ); // => result is in millimeters + mnRealDPIX = static_cast<long>((CGDisplayPixelsWide( nDisplayID ) * 25.4) / aSize.width); + mnRealDPIY = static_cast<long>((CGDisplayPixelsHigh( nDisplayID ) * 25.4) / aSize.height); + } + else + { + DBG_ERROR( "no resolution found in device description" ); + } } else { - DBG_ERROR( "no resolution found in device description" ); + DBG_ERROR( "no device description" ); } } else { - DBG_ERROR( "no device description" ); + DBG_ERROR( "no screen found" ); } + + // for OSX any anisotropy reported for the display resolution is best ignored (e.g. TripleHead2Go) + mnRealDPIX = mnRealDPIY = (mnRealDPIX + mnRealDPIY + 1) / 2; + + pSalData->mnDPIX = mnRealDPIX; + pSalData->mnDPIY = mnRealDPIY; } else { - DBG_ERROR( "no screen found" ); + mnRealDPIX = pSalData->mnDPIX; + mnRealDPIY = pSalData->mnDPIY; } - // for OSX any anisotropy reported for the display resolution is best ignored (e.g. TripleHead2Go) - mnRealDPIX = mnRealDPIY = (mnRealDPIX + mnRealDPIY + 1) / 2; - mfFakeDPIScale = 1.0; } @@ -416,6 +432,16 @@ void AquaSalGraphics::GetResolution( long& rDPIX, long& rDPIY ) rDPIY = static_cast<long>(mfFakeDPIScale * mnRealDPIY); } +void AquaSalGraphics::copyResolution( AquaSalGraphics& rGraphics ) +{ + if( !rGraphics.mnRealDPIY && rGraphics.mbWindow && rGraphics.mpFrame ) + rGraphics.initResolution( rGraphics.mpFrame->mpWindow ); + + mnRealDPIX = rGraphics.mnRealDPIX; + mnRealDPIY = rGraphics.mnRealDPIY; + mfFakeDPIScale = rGraphics.mfFakeDPIScale; +} + // ----------------------------------------------------------------------- USHORT AquaSalGraphics::GetBitCount() @@ -948,6 +974,11 @@ bool AquaSalGraphics::drawPolyLine( const ::basegfx::B2DPolygon& rPolyLine, if( rLineWidths.getX() != rLineWidths.getY() ) return false; + // #i101491# Aqua does not support B2DLINEJOIN_NONE; return false to use + // the fallback (own geometry preparation) + if(basegfx::B2DLINEJOIN_NONE == eLineJoin) + return false; + // setup line attributes CGLineJoin aCGLineJoin = kCGLineJoinMiter; switch( eLineJoin ) { @@ -2298,6 +2329,43 @@ void AquaSalGraphics::FreeEmbedFontData( const void* pData, long nDataLen ) // ----------------------------------------------------------------------- +SystemFontData AquaSalGraphics::GetSysFontData( int /* nFallbacklevel */ ) const +{ + SystemFontData aSysFontData; + OSStatus err; + aSysFontData.nSize = sizeof( SystemFontData ); + + // NOTE: Native ATSU font fallbacks are used, not the VCL fallbacks. + ATSUFontID fontId; + err = ATSUGetAttribute( maATSUStyle, kATSUFontTag, sizeof(fontId), &fontId, 0 ); + if (err) fontId = 0; + aSysFontData.aATSUFontID = (void *) fontId; + + Boolean bFbold; + err = ATSUGetAttribute( maATSUStyle, kATSUQDBoldfaceTag, sizeof(bFbold), &bFbold, 0 ); + if (err) bFbold = FALSE; + aSysFontData.bFakeBold = (bool) bFbold; + + Boolean bFItalic; + err = ATSUGetAttribute( maATSUStyle, kATSUQDItalicTag, sizeof(bFItalic), &bFItalic, 0 ); + if (err) bFItalic = FALSE; + aSysFontData.bFakeItalic = (bool) bFItalic; + + ATSUVerticalCharacterType aVerticalCharacterType; + err = ATSUGetAttribute( maATSUStyle, kATSUVerticalCharacterTag, sizeof(aVerticalCharacterType), &aVerticalCharacterType, 0 ); + if (!err && aVerticalCharacterType == kATSUStronglyVertical) { + aSysFontData.bVerticalCharacterType = true; + } else { + aSysFontData.bVerticalCharacterType = false; + } + + aSysFontData.bAntialias = !mbNonAntialiasedText; + + return aSysFontData; +} + +// ----------------------------------------------------------------------- + SystemGraphicsData AquaSalGraphics::GetGraphicsData() const { SystemGraphicsData aRes; diff --git a/vcl/aqua/source/gdi/salgdiutils.cxx b/vcl/aqua/source/gdi/salgdiutils.cxx index 066268791b11..99a1629006d2 100755 --- a/vcl/aqua/source/gdi/salgdiutils.cxx +++ b/vcl/aqua/source/gdi/salgdiutils.cxx @@ -102,8 +102,8 @@ void AquaSalGraphics::SetVirDevGraphics( CGLayerRef xLayer, CGContextRef xContex else { const CGSize aSize = CGLayerGetSize( mxLayer ); - mnWidth = aSize.width; - mnHeight = aSize.height; + mnWidth = static_cast<int>(aSize.width); + mnHeight = static_cast<int>(aSize.height); } // prepare graphics for drawing @@ -219,7 +219,10 @@ void AquaSalGraphics::RefreshRect(float lX, float lY, float lWidth, float lHeigh { // update a little more around the designated rectangle // this helps with antialiased rendering - const Rectangle aVclRect( Point( lX-1, lY-1 ), Size( lWidth+2, lHeight+2) ); + const Rectangle aVclRect(Point(static_cast<long int>(lX-1), + static_cast<long int>(lY-1) ), + Size( static_cast<long int>(lWidth+2), + static_cast<long int>(lHeight+2) ) ); mpFrame->maInvalidRect.Union( aVclRect ); } } diff --git a/vcl/aqua/source/gdi/salnativewidgets.cxx b/vcl/aqua/source/gdi/salnativewidgets.cxx index 9f2c7c4fa3a7..6cd4e78a2d1a 100644 --- a/vcl/aqua/source/gdi/salnativewidgets.cxx +++ b/vcl/aqua/source/gdi/salnativewidgets.cxx @@ -612,7 +612,7 @@ BOOL AquaSalGraphics::drawNativeControl(ControlType nType, aPushInfo.animation.time.start = 0; aPushInfo.animation.time.current = 0; PushButtonValue* pPBVal = (PushButtonValue*)aValue.getOptionalVal(); - int nPaintHeight = rc.size.height; + int nPaintHeight = static_cast<int>(rc.size.height); if( pPBVal && pPBVal->mbBevelButton ) { @@ -1162,8 +1162,10 @@ BOOL AquaSalGraphics::drawNativeControl(ControlType nType, if( mxClipPath ) aRect = CGPathGetBoundingBox( mxClipPath ); if( aRect.size.width != 0 && aRect.size.height != 0 ) - buttonRect.Intersection( Rectangle( Point( aRect.origin.x, aRect.origin.y ), - Size( aRect.size.width, aRect.size.height ) ) ); + buttonRect.Intersection( Rectangle( Point( static_cast<long int>(aRect.origin.x), + static_cast<long int>(aRect.origin.y) ), + Size( static_cast<long int>(aRect.size.width), + static_cast<long int>(aRect.size.height) ) ) ); } RefreshRect( buttonRect.Left(), buttonRect.Top(), buttonRect.GetWidth(), buttonRect.GetHeight() ); diff --git a/vcl/aqua/source/gdi/salprn.cxx b/vcl/aqua/source/gdi/salprn.cxx index ef6258829261..b9a1f4ef7748 100644 --- a/vcl/aqua/source/gdi/salprn.cxx +++ b/vcl/aqua/source/gdi/salprn.cxx @@ -127,20 +127,27 @@ void AquaSalInfoPrinter::SetupPrinterGraphics( CGContextRef i_rContext ) const NSRect aImageRect = [mpPrintInfo imageablePageBounds]; if( mePageOrientation == ORIENTATION_PORTRAIT ) { + // move mirrored CTM back into paper double dX = 0, dY = aPaperSize.height; + // move CTM to reflect imageable area dX += aImageRect.origin.x; dY -= aPaperSize.height - aImageRect.size.height - aImageRect.origin.y; CGContextTranslateCTM( i_rContext, dX + mnStartPageOffsetX, dY - mnStartPageOffsetY ); + // scale to be top/down and reflect our "virtual" DPI CGContextScaleCTM( i_rContext, 0.1, -0.1 ); } else { + // move CTM to reflect imageable area + double dX = aImageRect.origin.x, dY = aPaperSize.height - aImageRect.size.height - aImageRect.origin.y; + CGContextTranslateCTM( i_rContext, -dX, -dY ); + // turn by 90 degree CGContextRotateCTM( i_rContext, M_PI/2 ); - double dX = aPaperSize.height, dY = -aPaperSize.width; - dY += aPaperSize.height - aImageRect.size.height - aImageRect.origin.y; - dX -= aImageRect.origin.x; - + // move turned CTM back into paper + dX = aPaperSize.height; + dY = -aPaperSize.width; CGContextTranslateCTM( i_rContext, dX + mnStartPageOffsetY, dY - mnStartPageOffsetX ); + // scale to be top/down and reflect our "virtual" DPI CGContextScaleCTM( i_rContext, -0.1, 0.1 ); } mpGraphics->SetPrinterGraphics( i_rContext, nDPIX, nDPIY, 1.0 ); @@ -187,8 +194,8 @@ static struct PaperSizeEntry { 420, 595, PAPER_A5 }, { 612, 792, PAPER_LETTER }, { 612, 1008, PAPER_LEGAL }, - { 728, 1032, PAPER_B4 }, - { 516, 729, PAPER_B5 }, + { 728, 1032, PAPER_B4_JIS }, + { 516, 729, PAPER_B5_JIS }, { 792, 1224, PAPER_TABLOID } }; @@ -216,8 +223,8 @@ static Paper recognizePaper( double i_fWidth, double i_fHeight ) case 595000842: aPaper = PAPER_A4; break; case 420000595: aPaper = PAPER_A5; break; case 612000792: aPaper = PAPER_LETTER; break; - case 728001032: aPaper = PAPER_B4; break; - case 516000729: aPaper = PAPER_B5; break; + case 728001032: aPaper = PAPER_B4_JIS; break; + case 516000729: aPaper = PAPER_B5_JIS; break; case 612001008: aPaper = PAPER_LEGAL; break; case 792001224: aPaper = PAPER_TABLOID; break; default: @@ -303,8 +310,12 @@ BOOL AquaSalInfoPrinter::SetData( ULONG i_nFlags, ImplJobSetup* io_pSetupData ) double width = 0, height = 0; if( io_pSetupData->mePaperFormat == PAPER_USER ) { - width = TenMuToPt( io_pSetupData->mnPaperWidth ); - height = TenMuToPt( io_pSetupData->mnPaperHeight ); + // #i101108# sanity check + if( io_pSetupData->mnPaperWidth && io_pSetupData->mnPaperHeight ) + { + width = TenMuToPt( io_pSetupData->mnPaperWidth ); + height = TenMuToPt( io_pSetupData->mnPaperHeight ); + } } else getPaperSize( width, height, io_pSetupData->mePaperFormat ); diff --git a/vcl/aqua/source/gdi/salvd.cxx b/vcl/aqua/source/gdi/salvd.cxx index 5ab2f27a8d42..4d25d5d8b63b 100644 --- a/vcl/aqua/source/gdi/salvd.cxx +++ b/vcl/aqua/source/gdi/salvd.cxx @@ -87,7 +87,7 @@ AquaSalVirtualDevice::AquaSalVirtualDevice( AquaSalGraphics* pGraphic, long nDX, if( pFrame && AquaSalFrame::isAlive( pFrame ) ) { mpGraphics->setGraphicsFrame( pFrame ); - mpGraphics->initResolution( pFrame->mpWindow ); + mpGraphics->copyResolution( *pGraphic ); } } @@ -228,8 +228,8 @@ void AquaSalVirtualDevice::GetSize( long& rWidth, long& rHeight ) if( mxLayer ) { const CGSize aSize = CGLayerGetSize( mxLayer ); - rWidth = aSize.width; - rHeight = aSize.height; + rWidth = static_cast<long>(aSize.width); + rHeight = static_cast<long>(aSize.height); } else { diff --git a/vcl/aqua/source/window/salframe.cxx b/vcl/aqua/source/window/salframe.cxx index 5db3ea68ab14..9c713ea26a52 100644 --- a/vcl/aqua/source/window/salframe.cxx +++ b/vcl/aqua/source/window/salframe.cxx @@ -520,8 +520,16 @@ void AquaSalFrame::SetClientSize( long nWidth, long nHeight ) void AquaSalFrame::GetClientSize( long& rWidth, long& rHeight ) { - rWidth = mbShown ? maGeometry.nWidth : 0; - rHeight = mbShown ? maGeometry.nHeight : 0; + if( mbShown || mbInitShow ) + { + rWidth = maGeometry.nWidth; + rHeight = maGeometry.nHeight; + } + else + { + rWidth = 0; + rHeight = 0; + } } // ----------------------------------------------------------------------- @@ -1174,7 +1182,10 @@ void AquaSalFrame::UpdateSettings( AllSettings& rSettings ) getAppleScrollBarVariant(); // set scrollbar size - aStyleSettings.SetScrollBarSize( [NSScroller scrollerWidth] ); + aStyleSettings.SetScrollBarSize( static_cast<long int>([NSScroller scrollerWidth]) ); + + // images in menus false for MacOSX + aStyleSettings.SetUseImagesInMenus( false ); rSettings.SetStyleSettings( aStyleSettings ); @@ -1192,7 +1203,15 @@ const SystemEnvData* AquaSalFrame::GetSystemData() const void AquaSalFrame::Beep( SoundType eSoundType ) { - NSBeep(); + switch( eSoundType ) + { + case SOUND_DISABLE: + // don't beep + break; + default: + NSBeep(); + break; + } } // ----------------------------------------------------------------------- @@ -1229,7 +1248,7 @@ void AquaSalFrame::SetPosSize(long nX, long nY, long nWidth, long nHeight, USHOR if( (nFlags & SAL_FRAME_POSSIZE_WIDTH) != 0 ) nX = mpParent->maGeometry.nWidth - nWidth-1 - nX; else - nX = mpParent->maGeometry.nWidth - aContentRect.size.width-1 - nX; + nX = mpParent->maGeometry.nWidth - static_cast<long int>( aContentRect.size.width-1) - nX; } NSRect aParentFrameRect = [mpParent->mpWindow frame]; aParentContentRect = [NSWindow contentRectForFrameRect: aParentFrameRect styleMask: mpParent->mnStyleMask]; diff --git a/vcl/aqua/source/window/salframeview.mm b/vcl/aqua/source/window/salframeview.mm index e291dae911cf..c7facd8c6c09 100755 --- a/vcl/aqua/source/window/salframeview.mm +++ b/vcl/aqua/source/window/salframeview.mm @@ -841,6 +841,16 @@ private: if( pUnmodifiedString && [pUnmodifiedString length] == 1 ) { + /* #i103102# key events with command and alternate don't make it through + interpretKeyEvents (why ?). Try to dispatch them here first, + if not successful continue normally + */ + if( (mpFrame->mnLastModifierFlags & (NSAlternateKeyMask | NSCommandKeyMask)) + == (NSAlternateKeyMask | NSCommandKeyMask) ) + { + if( [self sendSingleCharacter: mpLastEvent] ) + return YES; + } unichar keyChar = [pUnmodifiedString characterAtIndex: 0]; USHORT nKeyCode = ImplMapCharCode( keyChar ); @@ -1233,17 +1243,27 @@ private: mpLastSuperEvent = mpLastEvent; [NSApp performSelector:@selector(sendSuperEvent:) withObject: mpLastEvent]; mpLastSuperEvent = pLastSuperEvent; + + std::map< NSEvent*, bool >::iterator it = GetSalData()->maKeyEventAnswer.find( mpLastEvent ); + if( it != GetSalData()->maKeyEventAnswer.end() ) + it->second = true; } } } } --(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode character: (sal_Unicode)aChar +-(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode character: (sal_Unicode)aChar { return [self sendKeyInputAndReleaseToFrame: nKeyCode character: aChar modifiers: mpFrame->mnLastModifierFlags]; } --(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode character: (sal_Unicode)aChar modifiers: (unsigned int)nMod +-(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode character: (sal_Unicode)aChar modifiers: (unsigned int)nMod +{ + return [self sendKeyToFrameDirect: nKeyCode character: aChar modifiers: nMod] || + [self sendSingleCharacter: mpLastEvent]; +} + +-(MacOSBOOL)sendKeyToFrameDirect: (USHORT)nKeyCode character: (sal_Unicode)aChar modifiers: (unsigned int)nMod { YIELD_GUARD; @@ -1279,7 +1299,7 @@ private: // don't send unicodes in the private use area if( keyChar >= 0xf700 && keyChar < 0xf780 ) keyChar = 0; - MacOSBOOL bRet = [self sendKeyInputAndReleaseToFrame: nKeyCode character: keyChar]; + MacOSBOOL bRet = [self sendKeyToFrameDirect: nKeyCode character: keyChar modifiers: mpFrame->mnLastModifierFlags]; mbInKeyInput = false; return bRet; diff --git a/vcl/aqua/source/window/salmenu.cxx b/vcl/aqua/source/window/salmenu.cxx index 4fafbbdbb4cf..5c838701933c 100644 --- a/vcl/aqua/source/window/salmenu.cxx +++ b/vcl/aqua/source/window/salmenu.cxx @@ -651,11 +651,9 @@ void AquaSalMenu::SetItemImage( unsigned nPos, SalMenuItem* pSMI, const Image& r NSImage* pImage = CreateNSImage( rImage ); + [pSalMenuItem->mpMenuItem setImage: pImage]; if( pImage ) - { - [pSalMenuItem->mpMenuItem setImage: pImage]; [pImage release]; - } } void AquaSalMenu::SetItemText( unsigned i_nPos, SalMenuItem* i_pSalMenuItem, const XubString& i_rText ) @@ -894,7 +892,13 @@ Rectangle AquaSalMenu::GetMenuBarButtonRectPixel( USHORT i_nItemId, SalFrame* i_ aRect.origin.x -= i_pReferenceFrame->maGeometry.nX; aRect.origin.y -= i_pReferenceFrame->maGeometry.nY + aRect.size.height; - return Rectangle( Point( aRect.origin.x, aRect.origin.y ), Size( aRect.size.width, aRect.size.height ) ); + return Rectangle( Point(static_cast<long int>(aRect.origin.x), + static_cast<long int>(aRect.origin.y) + ), + Size( static_cast<long int>(aRect.size.width), + static_cast<long int>(aRect.size.height) + ) + ); } // ======================================================================= diff --git a/vcl/inc/vcl/ImageListProvider.hxx b/vcl/inc/vcl/ImageListProvider.hxx new file mode 100644 index 000000000000..03e0646af14d --- /dev/null +++ b/vcl/inc/vcl/ImageListProvider.hxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * 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: toolbox.hxx,v $ + * $Revision: 1.5 $ + * + * 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 _SV_IMAGELISTPROVIDER_HXX +#define _SV_IMAGELISTPROVIDER_HXX + +#include <sal/types.h> + +namespace com { namespace sun { namespace star { namespace lang { class IllegalArgumentException; }}}} + +class ImageList; + + +namespace vcl +{ + enum ImageListType + { + IMAGELISTTYPE_UNKNOWN = 0, + HIGHCONTRAST_NO = 1, + HIGHCONTRAST_YES = 2 + }; + + /* abstract */ class IImageListProvider + { + public: + virtual ImageList getImageList(ImageListType) SAL_THROW (( com::sun::star::lang::IllegalArgumentException )) = 0; + }; +} /* vcl */ + +#endif /* _SV_IMAGELISTPROVIDER_HXX */ diff --git a/vcl/inc/vcl/accel.h b/vcl/inc/vcl/accel.h index 6d1ffd0c28ce..b63adeae9a37 100644 --- a/vcl/inc/vcl/accel.h +++ b/vcl/inc/vcl/accel.h @@ -57,6 +57,6 @@ public: // ----------------- // in KEYCOD.CXX -void ImplGetKeyCode( KeyFuncType eFunc, USHORT& rCode1, USHORT& rCode2, USHORT& rCode3 ); +void ImplGetKeyCode( KeyFuncType eFunc, USHORT& rCode1, USHORT& rCode2, USHORT& rCode3, USHORT& rCode4 ); #endif // _SV_ACCEL_H diff --git a/vcl/inc/vcl/button.hxx b/vcl/inc/vcl/button.hxx index 7dda8702fb66..94df24a9cea7 100644 --- a/vcl/inc/vcl/button.hxx +++ b/vcl/inc/vcl/button.hxx @@ -103,6 +103,8 @@ public: void SetFocusRect( const Rectangle& rFocusRect ); const Rectangle& GetFocusRect() const; + void SetSmallSymbol (bool bSmall=true); + bool IsSmallSymbol () const; }; // -------------------- diff --git a/vcl/inc/vcl/cmdevt.hxx b/vcl/inc/vcl/cmdevt.hxx index fde8fe83b6f2..ac9f852cd54c 100644 --- a/vcl/inc/vcl/cmdevt.hxx +++ b/vcl/inc/vcl/cmdevt.hxx @@ -280,14 +280,17 @@ public: BOOL IsShift() const { return (mnCode & MODKEY_SHIFT) ? TRUE : FALSE; } BOOL IsMod1() const { return (mnCode & MODKEY_MOD1) ? TRUE : FALSE; } BOOL IsMod2() const { return (mnCode & MODKEY_MOD2) ? TRUE : FALSE; } + BOOL IsMod3() const { return (mnCode & MODKEY_MOD3) ? TRUE : FALSE; } BOOL IsLeftShift() const { return (mnCode & MODKEY_LSHIFT) ? TRUE : FALSE; } BOOL IsLeftMod1() const { return (mnCode & MODKEY_LMOD1) ? TRUE : FALSE; } BOOL IsLeftMod2() const { return (mnCode & MODKEY_LMOD2) ? TRUE : FALSE; } + BOOL IsLeftMod3() const { return (mnCode & MODKEY_LMOD3) ? TRUE : FALSE; } BOOL IsRightShift() const { return (mnCode & MODKEY_RSHIFT) ? TRUE : FALSE; } BOOL IsRightMod1() const { return (mnCode & MODKEY_RMOD1) ? TRUE : FALSE; } BOOL IsRightMod2() const { return (mnCode & MODKEY_RMOD2) ? TRUE : FALSE; } + BOOL IsRightMod3() const { return (mnCode & MODKEY_RMOD3) ? TRUE : FALSE; } }; inline CommandModKeyData::CommandModKeyData() diff --git a/vcl/inc/vcl/event.hxx b/vcl/inc/vcl/event.hxx index 20ad3aaaf608..04ba5f7a0abf 100644 --- a/vcl/inc/vcl/event.hxx +++ b/vcl/inc/vcl/event.hxx @@ -176,6 +176,8 @@ public: { return ((mnCode & KEY_MOD1) != 0); } BOOL IsMod2() const { return ((mnCode & KEY_MOD2) != 0); } + BOOL IsMod3() const + { return ((mnCode & KEY_MOD3) != 0); } }; inline MouseEvent::MouseEvent() diff --git a/vcl/inc/vcl/gdimtf.hxx b/vcl/inc/vcl/gdimtf.hxx index 62439d4d4613..c53460d35584 100644 --- a/vcl/inc/vcl/gdimtf.hxx +++ b/vcl/inc/vcl/gdimtf.hxx @@ -164,6 +164,14 @@ public: void Scale( double fScaleX, double fScaleY ); void Scale( const Fraction& rScaleX, const Fraction& rScaleY ); void Rotate( long nAngle10 ); + /* get the bound rect of the contained actions + * caveats: + * - clip actions will limit the contained actions, + * but the current clipregion of the passed OutputDevice will not + * - coordinates of actions will be transformed to preferred mapmode + * - the returned rectangle is relative to the preferred mapmode of the metafile + */ + Rectangle GetBoundRect( OutputDevice& i_rReference ); void Adjust( short nLuminancePercent = 0, short nContrastPercent = 0, short nChannelRPercent = 0, short nChannelGPercent = 0, diff --git a/vcl/inc/vcl/graph.hxx b/vcl/inc/vcl/graph.hxx index f56c55b7db42..9d70c67d3e55 100644 --- a/vcl/inc/vcl/graph.hxx +++ b/vcl/inc/vcl/graph.hxx @@ -53,6 +53,36 @@ class OutputDevice; class Font; class GfxLink; +class VCL_DLLPUBLIC GraphicConversionParameters +{ +private: + Size maSizePixel; // default is (0,0) + + // bitfield + unsigned mbUnlimitedSize : 1; // default is false + unsigned mbAntiAliase : 1; // default is false + unsigned mbSnapHorVerLines : 1; // default is false + +public: + GraphicConversionParameters( + const Size& rSizePixel = Size(), + bool bUnlimitedSize = false, + bool bAntiAliase = false, + bool bSnapHorVerLines = false) + : maSizePixel(rSizePixel), + mbUnlimitedSize(bUnlimitedSize), + mbAntiAliase(bAntiAliase), + mbSnapHorVerLines(bSnapHorVerLines) + { + } + + // data read access + const Size getSizePixel() const { return maSizePixel; } + bool getUnlimitedSize() const { return mbUnlimitedSize; } + bool getAntiAliase() const { return mbAntiAliase; } + bool getSnapHorVerLines() const { return mbSnapHorVerLines; } +}; + class VCL_DLLPUBLIC Graphic : public SvDataCopyStream { private: @@ -96,12 +126,14 @@ public: BOOL IsAlpha() const; BOOL IsAnimated() const; - Bitmap GetBitmap() const; - Bitmap GetBitmap( const Size* pSizePixel ) const; - BitmapEx GetBitmapEx() const; - BitmapEx GetBitmapEx( const Size* pSizePixel ) const; - Bitmap GetUnlimitedBitmap( const Size* pSizePixel ) const; - BitmapEx GetUnlimitedBitmapEx( const Size* pSizePixel ) const; + // #i102089# Access of Bitmap potentially will have to rasterconvert the Graphic + // if it is a MetaFile. To be able to control this conversion it is necessary to + // allow giving parameters which control AntiAliasing and LineSnapping of the + // MetaFile when played. Defaults will use a no-AAed, not snapped conversion as + // before. + Bitmap GetBitmap(const GraphicConversionParameters& rParameters = GraphicConversionParameters()) const; + BitmapEx GetBitmapEx(const GraphicConversionParameters& rParameters = GraphicConversionParameters()) const; + Animation GetAnimation() const; const GDIMetaFile& GetGDIMetaFile() const; diff --git a/vcl/inc/vcl/impgraph.hxx b/vcl/inc/vcl/impgraph.hxx index 34b61a5fe21c..3b36173891ae 100644 --- a/vcl/inc/vcl/impgraph.hxx +++ b/vcl/inc/vcl/impgraph.hxx @@ -55,6 +55,7 @@ struct ImpSwapInfo class OutputDevice; class GfxLink; struct ImpSwapFile; +class GraphicConversionParameters; class ImpGraphic { @@ -102,8 +103,8 @@ private: BOOL ImplIsAlpha() const; BOOL ImplIsAnimated() const; - Bitmap ImplGetBitmap( const Size* pSizePixel, BOOL bUnlimited ) const; - BitmapEx ImplGetBitmapEx( const Size* pSizePixel, BOOL bUnlimited ) const; + Bitmap ImplGetBitmap(const GraphicConversionParameters& rParameters) const; + BitmapEx ImplGetBitmapEx(const GraphicConversionParameters& rParameters) const; Animation ImplGetAnimation() const; const GDIMetaFile& ImplGetGDIMetaFile() const; diff --git a/vcl/inc/vcl/jobset.h b/vcl/inc/vcl/jobset.h index 5d08319a7e6c..9f3eefd507d5 100644 --- a/vcl/inc/vcl/jobset.h +++ b/vcl/inc/vcl/jobset.h @@ -61,7 +61,7 @@ struct ImplJobSetup String maDriver; // Driver-Name Orientation meOrientation; // Orientation USHORT mnPaperBin; // Papierschacht - Paper mePaperFormat; // Papierformat + Paper mePaperFormat; // Papierformat long mnPaperWidth; // Papierbreite in 100tel mm long mnPaperHeight; // Papierhoehe in 100tel mm ULONG mnDriverDataLen; // Laenge der systemabhaengigen Daten diff --git a/vcl/inc/vcl/keycod.hxx b/vcl/inc/vcl/keycod.hxx index 6c652a0e5307..cdd1ed35d80f 100644 --- a/vcl/inc/vcl/keycod.hxx +++ b/vcl/inc/vcl/keycod.hxx @@ -73,7 +73,7 @@ public: KeyCode( const ResId& rResId ); KeyCode( USHORT nKey, USHORT nModifier = 0 ) { nCode = nKey | nModifier; eFunc = KEYFUNC_DONTKNOW; } - KeyCode( USHORT nKey, BOOL bShift, BOOL bMod1, BOOL bMod2 ); + KeyCode( USHORT nKey, BOOL bShift, BOOL bMod1, BOOL bMod2, BOOL bMod3 ); KeyCode( KeyFuncType eFunction ); USHORT GetFullCode() const { return nCode; } @@ -112,7 +112,7 @@ public: BOOL operator !=( const KeyCode& rKeyCode ) const; }; -inline KeyCode::KeyCode( USHORT nKey, BOOL bShift, BOOL bMod1, BOOL bMod2 ) +inline KeyCode::KeyCode( USHORT nKey, BOOL bShift, BOOL bMod1, BOOL bMod2, BOOL bMod3 ) { nCode = nKey; if( bShift ) @@ -121,6 +121,8 @@ inline KeyCode::KeyCode( USHORT nKey, BOOL bShift, BOOL bMod1, BOOL bMod2 ) nCode |= KEY_MOD1; if( bMod2 ) nCode |= KEY_MOD2; + if( bMod3 ) + nCode |= KEY_MOD3; eFunc = KEYFUNC_DONTKNOW; } diff --git a/vcl/inc/vcl/keycodes.hxx b/vcl/inc/vcl/keycodes.hxx index d90e9923f0ad..66d8a87e27a2 100644 --- a/vcl/inc/vcl/keycodes.hxx +++ b/vcl/inc/vcl/keycodes.hxx @@ -176,9 +176,12 @@ #define MODKEY_RMOD1 0x0008 #define MODKEY_LMOD2 0x0010 #define MODKEY_RMOD2 0x0020 +#define MODKEY_LMOD3 0x0040 +#define MODKEY_RMOD3 0x0080 #define MODKEY_SHIFT (MODKEY_LSHIFT|MODKEY_RSHIFT) #define MODKEY_MOD1 (MODKEY_LMOD1|MODKEY_RMOD1) #define MODKEY_MOD2 (MODKEY_LMOD2|MODKEY_RMOD2) +#define MODKEY_MOD3 (MODKEY_LMOD3|MODKEY_RMOD3) // --------------- // - Mouse-Types - diff --git a/vcl/inc/vcl/lstbox.hxx b/vcl/inc/vcl/lstbox.hxx index eb904ddffab6..0bf281798674 100644 --- a/vcl/inc/vcl/lstbox.hxx +++ b/vcl/inc/vcl/lstbox.hxx @@ -57,6 +57,7 @@ private: BOOL mbDDAutoSize; Link maSelectHdl; Link maDoubleClickHdl; + USHORT mnLineCount; //#if 0 // _SOLAR__PRIVATE private: diff --git a/vcl/inc/vcl/outdev.hxx b/vcl/inc/vcl/outdev.hxx index c0bcfa35fae5..f4e42846dd5e 100644 --- a/vcl/inc/vcl/outdev.hxx +++ b/vcl/inc/vcl/outdev.hxx @@ -53,6 +53,8 @@ class ImplFontEntry; struct ImplObjStack; struct ImplKernPairData; struct SystemGraphicsData; +struct SystemFontData; +struct SystemTextLayoutData; class ImplFontCache; class ImplDevFontList; class ImplGetDevFontList; @@ -561,6 +563,20 @@ public: // tells whether this output device is RTL in an LTR UI or LTR in a RTL UI SAL_DLLPRIVATE bool ImplIsAntiparallel() const ; + // #i101491# + // Helper which holds the old line geometry creation and is extended to use AA when + // switched on. Advantage is that line geometry is only temporarily used for paint + SAL_DLLPRIVATE void ImpDrawPolyLineWithLineInfo(const Polygon& rPoly, const LineInfo& rLineInfo); + + // #i101491# + // Helper who implements the DrawPolyPolygon functionality for basegfx::B2DPolyPolygon + // without MetaFile processing + SAL_DLLPRIVATE void ImpDrawPolyPolygonWithB2DPolyPolygon(const basegfx::B2DPolyPolygon& rB2DPolyPoly); + + // #i101491# + // Helper who tries to use SalGDI's DrawPolyLine direct and returns it's bool. Contains no AA check. + SAL_DLLPRIVATE bool ImpTryDrawPolyLineDirect(const basegfx::B2DPolygon& rB2DPolygon, double fLineWidth, basegfx::B2DLineJoin eLineJoin); + protected: OutputDevice(); @@ -653,20 +669,20 @@ public: void GetKerningPairs( ULONG nPairs, KerningPair* pKernPairs ) const; BOOL GetTextBoundRect( Rectangle& rRect, - const String& rStr, xub_StrLen nBase = 0, xub_StrLen nIndex = 0, - xub_StrLen nLen = STRING_LEN ) const; + const String& rStr, xub_StrLen nBase = 0, xub_StrLen nIndex = 0, xub_StrLen nLen = STRING_LEN, + ULONG nLayoutWidth = 0, const sal_Int32* pDXArray = NULL ) const; BOOL GetTextOutline( PolyPolygon&, const String& rStr, xub_StrLen nBase = 0, xub_StrLen nIndex = 0, xub_StrLen nLen = STRING_LEN, BOOL bOptimize = TRUE, - const ULONG nWidth = 0, const sal_Int32* pDXArray = NULL ) const; + ULONG nLayoutWidth = 0, const sal_Int32* pDXArray = NULL ) const; BOOL GetTextOutlines( PolyPolyVector&, const String& rStr, xub_StrLen nBase = 0, xub_StrLen nIndex = 0, xub_StrLen nLen = STRING_LEN, BOOL bOptimize = TRUE, - const ULONG nWidth = 0, const sal_Int32* pDXArray = NULL ) const; + ULONG nLayoutWidth = 0, const sal_Int32* pDXArray = NULL ) const; BOOL GetTextOutlines( ::basegfx::B2DPolyPolygonVector&, const String& rStr, xub_StrLen nBase = 0, xub_StrLen nIndex = 0, xub_StrLen nLen = STRING_LEN, BOOL bOptimize = TRUE, - const ULONG nWidth = 0, const sal_Int32* pDXArray = NULL ) const; + ULONG nLayoutWidth = 0, const sal_Int32* pDXArray = NULL ) const; BOOL GetGlyphBoundRects( const Point& rOrigin, const String& rStr, int nIndex, int nLen, int nBase, MetricVector& rVector ); @@ -883,6 +899,12 @@ public: void SetFont( const Font& rNewFont ); const Font& GetFont() const { return maFont; } + + SystemFontData GetSysFontData( int nFallbacklevel ) const; + SystemTextLayoutData GetSysTextLayoutData( const Point& rStartPt, const XubString& rStr, + xub_StrLen nIndex = 0, xub_StrLen nLen = STRING_LEN, + const sal_Int32* pDXAry = NULL ) const; + void SetTextColor( const Color& rColor ); const Color& GetTextColor() const { return maTextColor; } void SetTextFillColor(); diff --git a/vcl/inc/vcl/pngread.hxx b/vcl/inc/vcl/pngread.hxx index 200b52eb6182..285af1407c1c 100644 --- a/vcl/inc/vcl/pngread.hxx +++ b/vcl/inc/vcl/pngread.hxx @@ -65,6 +65,8 @@ namespace vcl std::vector< sal_uInt8 > aData; }; const std::vector< ChunkData >& GetChunks() const; + + void SetIgnoreGammaChunk( sal_Bool b ); }; } diff --git a/vcl/inc/vcl/print.hxx b/vcl/inc/vcl/print.hxx index fdc7f2ba9c69..b9176f4106dc 100644 --- a/vcl/inc/vcl/print.hxx +++ b/vcl/inc/vcl/print.hxx @@ -330,17 +330,12 @@ public: USHORT GetPaperBin() const; BOOL SetPaper( Paper ePaper ); BOOL SetPaperSizeUser( const Size& rSize ); - Paper GetPaper() const; + Paper GetPaper() const; // returns number of available paper formats int GetPaperInfoCount() const; // returns info about paper format nPaper - const vcl::PaperInfo& GetPaperInfo( int nPaper ) const; - // sets current paper to format contained in rInfo - BOOL SetPaperFromInfo( const vcl::PaperInfo& rInfo ); - // gets info about paper fromat best matching current paper - const vcl::PaperInfo& GetCurrentPaperInfo() const; - + const PaperInfo& GetPaperInfo( int nPaper ) const; USHORT GetPaperBinCount() const; XubString GetPaperBinName( USHORT nPaperBin ) const; diff --git a/vcl/inc/vcl/prntypes.hxx b/vcl/inc/vcl/prntypes.hxx index 84ef320de20e..681f4f972a7c 100644 --- a/vcl/inc/vcl/prntypes.hxx +++ b/vcl/inc/vcl/prntypes.hxx @@ -33,6 +33,7 @@ #include <tools/string.hxx> #include <vcl/sv.h> +#include <i18npool/paper.hxx> // --------------- // - Duplex Mode - @@ -46,33 +47,6 @@ enum DuplexMode { DUPLEX_UNKNOWN, DUPLEX_OFF, DUPLEX_ON }; enum Orientation { ORIENTATION_PORTRAIT, ORIENTATION_LANDSCAPE }; -// --------- -// - Paper - -// --------- - -typedef USHORT Paper; -#define PAPER_A3 ((Paper)0) -#define PAPER_A4 ((Paper)1) -#define PAPER_A5 ((Paper)2) -#define PAPER_B4 ((Paper)3) -#define PAPER_B5 ((Paper)4) -#define PAPER_LETTER ((Paper)5) -#define PAPER_LEGAL ((Paper)6) -#define PAPER_TABLOID ((Paper)7) -#define PAPER_USER ((Paper)8) - -namespace vcl -{ -struct PaperInfo -{ - String m_aPaperName; // user readable name of paper - unsigned long m_nPaperWidth; // width in mm - unsigned long m_nPaperHeight; // height in mm - - PaperInfo() : m_nPaperWidth( 0 ), m_nPaperHeight( 0 ) {} -}; -} - // ------------------- // - QueueInfo-Types - // ------------------- diff --git a/vcl/inc/vcl/salgdi.hxx b/vcl/inc/vcl/salgdi.hxx index 2bbb44d67b42..5cf6e70f5114 100644 --- a/vcl/inc/vcl/salgdi.hxx +++ b/vcl/inc/vcl/salgdi.hxx @@ -57,6 +57,7 @@ struct FontSubsetInfo; class OutputDevice; class ServerFontLayout; struct SystemGraphicsData; +struct SystemFontData; namespace basegfx { class B2DVector; @@ -493,6 +494,7 @@ public: sal_uInt8 nTransparency, const OutputDevice *pOutDev ); virtual SystemGraphicsData GetGraphicsData() const = 0; + virtual SystemFontData GetSysFontData( int nFallbacklevel ) const = 0; }; #endif // _SV_SALGDI_HXX diff --git a/vcl/inc/vcl/salprn.hxx b/vcl/inc/vcl/salprn.hxx index a80c5873cbfb..2927215034b5 100644 --- a/vcl/inc/vcl/salprn.hxx +++ b/vcl/inc/vcl/salprn.hxx @@ -68,7 +68,7 @@ struct VCL_DLLPUBLIC SalPrinterQueueInfo class VCL_DLLPUBLIC SalInfoPrinter { public: - std::vector< vcl::PaperInfo > m_aPaperFormats; // all printer supported formats + std::vector< PaperInfo > m_aPaperFormats; // all printer supported formats bool m_bPapersInit; // set to true after InitPaperFormats bool m_bCompatMetrics; diff --git a/vcl/inc/vcl/settings.hxx b/vcl/inc/vcl/settings.hxx index 5ee27e3aeb31..a7cd61477519 100644 --- a/vcl/inc/vcl/settings.hxx +++ b/vcl/inc/vcl/settings.hxx @@ -139,7 +139,7 @@ private: ULONG mnMenuDelay; ULONG mnFollow; USHORT mnMiddleButtonAction; - BOOL mbNoWheelActionWithoutFocus; + USHORT mnWheelBehavior; BOOL mbAlign1; }; @@ -158,6 +158,10 @@ private: #define MOUSE_MIDDLE_AUTOSCROLL ((USHORT)1) #define MOUSE_MIDDLE_PASTESELECTION ((USHORT)2) +#define MOUSE_WHEEL_DISABLE ((USHORT)0) +#define MOUSE_WHEEL_FOCUS_ONLY ((USHORT)1) +#define MOUSE_WHEEL_ALWAYS ((USHORT)2) + class VCL_DLLPUBLIC MouseSettings { void CopyData(); @@ -257,10 +261,10 @@ public: USHORT GetMiddleButtonAction() const { return mpData->mnMiddleButtonAction; } - void SetNoWheelActionWithoutFocus( BOOL bAction ) - { CopyData(); mpData->mbNoWheelActionWithoutFocus = bAction; } - BOOL GetNoWheelActionWithoutFocus() const - { return mpData->mbNoWheelActionWithoutFocus; } + void SetWheelBehavior( USHORT nBehavior ) + { CopyData(); mpData->mnWheelBehavior = nBehavior; } + USHORT GetWheelBehavior() const + { return mpData->mnWheelBehavior; } const MouseSettings& operator =( const MouseSettings& rSet ); diff --git a/vcl/inc/vcl/sndstyle.hxx b/vcl/inc/vcl/sndstyle.hxx index 2fc568a5e86d..55255171ad9f 100644 --- a/vcl/inc/vcl/sndstyle.hxx +++ b/vcl/inc/vcl/sndstyle.hxx @@ -44,6 +44,6 @@ typedef USHORT SoundType; #define SOUND_ERROR ((SoundType)3) #define SOUND_QUERY ((SoundType)4) -#define SOUND_DISABLE (SOUND_DEFAULT) +#define SOUND_DISABLE ((SoundType)5) #endif // _SV_SNDSTYLE_HXX diff --git a/vcl/inc/vcl/syschild.hxx b/vcl/inc/vcl/syschild.hxx index 1d4d0fafd7aa..29610e653b9d 100644 --- a/vcl/inc/vcl/syschild.hxx +++ b/vcl/inc/vcl/syschild.hxx @@ -46,7 +46,7 @@ class VCL_DLLPUBLIC SystemChildWindow : public Window { private: using Window::ImplInit; - SAL_DLLPRIVATE void ImplInitSysChild( Window* pParent, WinBits nStyle, SystemWindowData *pData, BOOL bShow = TRUE ); + SAL_DLLPRIVATE void ImplInitSysChild( Window* pParent, WinBits nStyle, SystemWindowData *pData, BOOL bShow = FALSE ); // Copy assignment is forbidden and not implemented. SAL_DLLPRIVATE SystemChildWindow (const SystemChildWindow &); diff --git a/vcl/inc/vcl/sysdata.hxx b/vcl/inc/vcl/sysdata.hxx index d98a6373d6fc..2e2a5e80e761 100644 --- a/vcl/inc/vcl/sysdata.hxx +++ b/vcl/inc/vcl/sysdata.hxx @@ -31,10 +31,12 @@ #ifndef _SV_SYSDATA_HXX #define _SV_SYSDATA_HXX +#include <vector> + #ifdef QUARTZ // predeclare the native classes to avoid header/include problems typedef struct CGContext *CGContextRef; -typedef struct CGLayer *CGLayerRef; +typedef struct CGLayer *CGLayerRef; #ifdef __OBJC__ @class NSView; #else @@ -141,4 +143,50 @@ struct SystemWindowData #endif }; + +// -------------------- +// - SystemGlyphData - +// -------------------- + +struct SystemGlyphData +{ + unsigned long index; + double x; + double y; +}; + + +// -------------------- +// - SystemFontData - +// -------------------- + +struct SystemFontData +{ + unsigned long nSize; // size in bytes of this structure +#if defined( WNT ) + HFONT hFont; // native font object +#elif defined( QUARTZ ) + void* aATSUFontID; // native font object +#elif defined( UNX ) + void* nFontId; // native font id + int nFontFlags; // native font flags +#endif + bool bFakeBold; // Does this font need faking the bold style + bool bFakeItalic; // Does this font need faking the italic style + bool bAntialias; // Should this font be antialiased + bool bVerticalCharacterType; // Is the font using vertical character type +}; + +// -------------------- +// - SystemTextLayoutData - +// -------------------- + +struct SystemTextLayoutData +{ + unsigned long nSize; // size in bytes of this structure + std::vector<SystemGlyphData> rGlyphData; // glyph data + int orientation; // Text orientation + SystemFontData aSysFontData; // Font data for the text layout +}; + #endif // _SV_SYSDATA_HXX diff --git a/vcl/inc/vcl/tabctrl.hxx b/vcl/inc/vcl/tabctrl.hxx index b12d33d579a3..378459b9eadb 100644 --- a/vcl/inc/vcl/tabctrl.hxx +++ b/vcl/inc/vcl/tabctrl.hxx @@ -45,8 +45,10 @@ class PushButton; // - TabControl-Types - // -------------------- +#ifndef TAB_APPEND #define TAB_APPEND ((USHORT)0xFFFF) #define TAB_PAGE_NOTFOUND ((USHORT)0xFFFF) +#endif /* !TAB_APPEND */ // -------------- // - TabControl - diff --git a/vcl/inc/vcl/toolbox.h b/vcl/inc/vcl/toolbox.h index 10b5199929d2..52a0db40b226 100644 --- a/vcl/inc/vcl/toolbox.h +++ b/vcl/inc/vcl/toolbox.h @@ -37,6 +37,7 @@ #include <vcl/image.hxx> #include <vcl/toolbox.hxx> #include <vcl/controllayout.hxx> +#include <vcl/ImageListProvider.hxx> #include <vector> @@ -127,7 +128,9 @@ struct ToolBoxLayoutData : public ControlLayoutData std::vector< USHORT > m_aLineItemPositions; }; -} + +} /* namespace vcl */ + struct ImplToolBoxPrivateData { @@ -160,6 +163,10 @@ struct ImplToolBoxPrivateData Wallpaper maDisplayBackground; + // support for highcontrast + vcl::IImageListProvider* mpImageListProvider; + vcl::ImageListType meImageListType; + BOOL mbIsLocked:1, // keeps last lock state from ImplDockingWindowWrapper mbAssumeDocked:1, // only used during calculations to override current floating/popup mode mbAssumeFloating:1, diff --git a/vcl/inc/vcl/toolbox.hxx b/vcl/inc/vcl/toolbox.hxx index 463a2dffb07a..6e4c300ccc40 100644 --- a/vcl/inc/vcl/toolbox.hxx +++ b/vcl/inc/vcl/toolbox.hxx @@ -47,6 +47,11 @@ struct ImplToolBoxPrivateData; class ImplTrackRect; class PopupMenu; +namespace vcl +{ + class IImageListProvider; +} + // ------------------------- // - ToolBoxCustomizeEvent - // ------------------------- @@ -299,6 +304,7 @@ private: SAL_DLLPRIVATE ToolBox (const ToolBox &); SAL_DLLPRIVATE ToolBox& operator= (const ToolBox &); + SAL_DLLPRIVATE void ImplUpdateImageList(); // called if StateChanged public: SAL_DLLPRIVATE void ImplFloatControl( BOOL bStart, FloatingWindow* pWindow = NULL ); SAL_DLLPRIVATE void ImplDisableFlatButtons(); @@ -632,6 +638,8 @@ public: const Size& GetDefaultImageSize() const; void ChangeHighlight( USHORT nPos ); + + void SetImageListProvider(vcl::IImageListProvider* _pProvider); }; inline void ToolBox::CheckItem( USHORT nItemId, BOOL bCheck ) diff --git a/vcl/inc/vcl/window.hxx b/vcl/inc/vcl/window.hxx index 6f7c18ac2730..3f05383d4f80 100644 --- a/vcl/inc/vcl/window.hxx +++ b/vcl/inc/vcl/window.hxx @@ -983,6 +983,8 @@ public: void DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, BOOL bChecked, BOOL bDrawBorder, BOOL bDrawExtBorderOnly ); // the same, but fills a passed Color with a text color complementing the selection background void DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, BOOL bChecked, BOOL bDrawBorder, BOOL bDrawExtBorderOnly, Color* pSelectionTextColor ); + // support rounded edges in the selection rect + void DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, BOOL bChecked, BOOL bDrawBorder, BOOL bDrawExtBorderOnly, long nCornerRadius, Color* pSelectionTextColor, Color* pPaintColor ); void ShowTracking( const Rectangle& rRect, USHORT nFlags = SHOWTRACK_SMALL ); diff --git a/vcl/os2/inc/salgdi.h b/vcl/os2/inc/salgdi.h index 5e70f50ada79..1fb51f089100 100644 --- a/vcl/os2/inc/salgdi.h +++ b/vcl/os2/inc/salgdi.h @@ -328,6 +328,7 @@ public: virtual BOOL IsNativeControlSupported( ControlType nType, ControlPart nPart ); virtual SystemGraphicsData GetGraphicsData() const; + virtual SystemFontData GetSysFontData( int nFallbacklevel ) const; }; // Init/Deinit Graphics diff --git a/vcl/os2/source/gdi/salgdi3.cxx b/vcl/os2/source/gdi/salgdi3.cxx index 546f4bf2b7cd..573fa7336fb0 100644 --- a/vcl/os2/source/gdi/salgdi3.cxx +++ b/vcl/os2/source/gdi/salgdi3.cxx @@ -1754,3 +1754,21 @@ void Os2SalGraphics::DrawServerFontLayout( const ServerFontLayout& ) //-------------------------------------------------------------------------- +SystemFontData Os2SalGraphics::GetSysFontData( int nFallbacklevel ) const +{ + SystemFontData aSysFontData; + + if (nFallbacklevel >= MAX_FALLBACK) nFallbacklevel = MAX_FALLBACK - 1; + if (nFallbacklevel < 0 ) nFallbacklevel = 0; + + aSysFontData.nSize = sizeof( SystemFontData ); + aSysFontData.hFont = mhFonts[nFallbacklevel]; + aSysFontData.bFakeBold = false; + aSysFontData.bFakeItalic = false; + aSysFontData.bAntialias = true; + aSysFontData.bVerticalCharacterType = false; + + return aSysFontData; +} + +//-------------------------------------------------------------------------- diff --git a/vcl/prj/build.lst b/vcl/prj/build.lst index 8a894cba2e55..aea5211d074a 100644 --- a/vcl/prj/build.lst +++ b/vcl/prj/build.lst @@ -1,4 +1,4 @@ -vc vcl : apple_remote BOOST:boost rsc sot ucbhelper unotools ICU:icu i18npool i18nutil unoil ridljar X11_EXTENSIONS:x11_extensions offuh basegfx basebmp tools transex3 icc SO:print_header NULL +vc vcl : l10n apple_remote BOOST:boost rsc sot ucbhelper unotools ICU:icu i18npool i18nutil unoil ridljar X11_EXTENSIONS:x11_extensions offuh basegfx basebmp tools transex3 icc SO:print_header cpputools NULL vc vcl usr1 - all vc_mkout NULL vc vcl\inc nmake - all vc_inc NULL vc vcl\source\glyphs nmake - all vc_glyphs vc_inc NULL diff --git a/vcl/prj/d.lst b/vcl/prj/d.lst index 0ddc61170547..d9c14f46b8d1 100644 --- a/vcl/prj/d.lst +++ b/vcl/prj/d.lst @@ -146,10 +146,10 @@ mkdir: %_DEST%\inc%_EXT%\vcl\plug\vcl ..\inc\vcl\pngwrite.hxx %_DEST%\inc%_EXT%\vcl\pngwrite.hxx ..\inc\vcl\smartid.hxx %_DEST%\inc%_EXT%\vcl\smartid.hxx ..\inc\vcl\configsettings.hxx %_DEST%\inc%_EXT%\vcl\configsettings.hxx +..\inc\vcl\ImageListProvider.hxx %_DEST%\inc%_EXT%\vcl\ImageListProvider.hxx ..\inc\vcl\fontmanager.hxx %_DEST%\inc%_EXT%\vcl\fontmanager.hxx ..\inc\vcl\printerinfomanager.hxx %_DEST%\inc%_EXT%\vcl\printerinfomanager.hxx ..\inc\vcl\jobdata.hxx %_DEST%\inc%_EXT%\vcl\jobdata.hxx ..\inc\vcl\ppdparser.hxx %_DEST%\inc%_EXT%\vcl\ppdparser.hxx ..\inc\vcl\helper.hxx %_DEST%\inc%_EXT%\vcl\helper.hxx ..\inc\vcl\strhelper.hxx %_DEST%\inc%_EXT%\vcl\strhelper.hxx - diff --git a/vcl/source/app/dbggui.cxx b/vcl/source/app/dbggui.cxx index c8567264b9b9..36d0991c7640 100644 --- a/vcl/source/app/dbggui.cxx +++ b/vcl/source/app/dbggui.cxx @@ -1782,7 +1782,7 @@ void DbgDialogTest( Window* pWindow ) i++; } - delete pRectAry; + delete [] pRectAry; } // ======================================================================= diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx index 12213c25a64f..444f1f58c8fb 100644 --- a/vcl/source/app/settings.cxx +++ b/vcl/source/app/settings.cxx @@ -189,7 +189,7 @@ ImplMouseData::ImplMouseData() mnActionDelay = 250; mnMenuDelay = 150; mnFollow = MOUSE_FOLLOW_MENU | MOUSE_FOLLOW_DDLIST; - mbNoWheelActionWithoutFocus = FALSE; + mnWheelBehavior = MOUSE_WHEEL_FOCUS_ONLY; } // ----------------------------------------------------------------------- @@ -217,7 +217,7 @@ ImplMouseData::ImplMouseData( const ImplMouseData& rData ) mnActionDelay = rData.mnActionDelay; mnMenuDelay = rData.mnMenuDelay; mnFollow = rData.mnFollow; - mbNoWheelActionWithoutFocus = rData.mbNoWheelActionWithoutFocus; + mnWheelBehavior = rData.mnWheelBehavior; } // ----------------------------------------------------------------------- @@ -308,7 +308,7 @@ BOOL MouseSettings::operator ==( const MouseSettings& rSet ) const (mpData->mnActionDelay == rSet.mpData->mnActionDelay) && (mpData->mnMenuDelay == rSet.mpData->mnMenuDelay) && (mpData->mnFollow == rSet.mpData->mnFollow) && - (mpData->mbNoWheelActionWithoutFocus == rSet.mpData->mbNoWheelActionWithoutFocus) ) + (mpData->mnWheelBehavior == rSet.mpData->mnWheelBehavior ) ) return TRUE; else return FALSE; diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index 3a0c2af0e852..2e2342fc6fc8 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -794,6 +794,15 @@ void Button::DataChanged( const DataChangedEvent& rDCEvt ) } } +void Button::SetSmallSymbol (bool small) +{ + ImplSetSmallSymbol (small); +} + +bool Button::IsSmallSymbol () const +{ + return mpButtonData->mbSmallSymbol; +} // ======================================================================= @@ -1964,7 +1973,12 @@ Size PushButton::CalcMinimumSize( long nMaxWidth ) const Size aSize; if ( IsSymbol() ) - aSize = Size( 12, 12 ); + { + if ( IsSmallSymbol ()) + aSize = Size( 16, 12 ); + else + aSize = Size( 26, 24 ); + } else if ( IsImage() && ! (ImplGetButtonState() & BUTTON_DRAW_NOIMAGE) ) aSize = GetModeImage().GetSizePixel(); if ( PushButton::GetText().Len() && ! (ImplGetButtonState() & BUTTON_DRAW_NOTEXT) ) diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx index 42abe3fd248a..309acb404750 100644 --- a/vcl/source/control/combobox.cxx +++ b/vcl/source/control/combobox.cxx @@ -876,10 +876,19 @@ long ComboBox::Notify( NotifyEvent& rNEvt ) (rNEvt.GetCommandEvent()->GetCommand() == COMMAND_WHEEL) && (rNEvt.GetWindow() == mpSubEdit) ) { - if( ! GetSettings().GetMouseSettings().GetNoWheelActionWithoutFocus() || HasChildPathFocus() ) + USHORT nWheelBehavior( GetSettings().GetMouseSettings().GetWheelBehavior() ); + if ( ( nWheelBehavior == MOUSE_WHEEL_ALWAYS ) + || ( ( nWheelBehavior == MOUSE_WHEEL_FOCUS_ONLY ) + && HasChildPathFocus() + ) + ) + { nDone = mpImplLB->HandleWheelAsCursorTravel( *rNEvt.GetCommandEvent() ); + } else + { nDone = 0; // don't eat this event, let the default handling happen (i.e. scroll the context) + } } return nDone ? nDone : Edit::Notify( rNEvt ); diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx index 3834e4de8677..5f41a441c6a1 100644 --- a/vcl/source/control/edit.cxx +++ b/vcl/source/control/edit.cxx @@ -2903,8 +2903,8 @@ PopupMenu* Edit::CreatePopupMenu() pPopup->SetAccelKey( SV_MENU_EDIT_COPY, KeyCode( KEYFUNC_COPY ) ); pPopup->SetAccelKey( SV_MENU_EDIT_PASTE, KeyCode( KEYFUNC_PASTE ) ); pPopup->SetAccelKey( SV_MENU_EDIT_DELETE, KeyCode( KEYFUNC_DELETE ) ); - pPopup->SetAccelKey( SV_MENU_EDIT_SELECTALL, KeyCode( KEY_A, FALSE, TRUE, FALSE ) ); - pPopup->SetAccelKey( SV_MENU_EDIT_INSERTSYMBOL, KeyCode( KEY_S, TRUE, TRUE, FALSE ) ); + pPopup->SetAccelKey( SV_MENU_EDIT_SELECTALL, KeyCode( KEY_A, FALSE, TRUE, FALSE, FALSE ) ); + pPopup->SetAccelKey( SV_MENU_EDIT_INSERTSYMBOL, KeyCode( KEY_S, TRUE, TRUE, FALSE, FALSE ) ); return pPopup; } diff --git a/vcl/source/control/imgctrl.cxx b/vcl/source/control/imgctrl.cxx index e6930edeba95..6d4777013a73 100644 --- a/vcl/source/control/imgctrl.cxx +++ b/vcl/source/control/imgctrl.cxx @@ -103,13 +103,28 @@ void ImageControl::UserDraw( const UserDrawEvent& rUDEvt ) // nStyle |= IMAGE_DRAW_COLORTRANSFORM; } + if ( !*pBitmap ) + { + String sText( GetText() ); + if ( !sText.Len() ) + return; + + WinBits nWinStyle = GetStyle(); + USHORT nTextStyle = FixedText::ImplGetTextStyle( nWinStyle ); + if ( !IsEnabled() ) + nTextStyle |= TEXT_DRAW_DISABLE; + + DrawText( rUDEvt.GetRect(), sText, nTextStyle ); + return; + } + const Rectangle& rPaintRect = rUDEvt.GetRect(); const Size& rBitmapSize = maBmp.GetSizePixel(); if( nStyle & IMAGE_DRAW_COLORTRANSFORM ) { // only images support IMAGE_DRAW_COLORTRANSFORM - Image aImage( maBmp ); + Image aImage( *pBitmap ); if ( !!aImage ) { switch ( mnScaleMode ) @@ -153,29 +168,29 @@ void ImageControl::UserDraw( const UserDrawEvent& rUDEvt ) { case ImageScaleMode::None: { - maBmp.Draw( rUDEvt.GetDevice(), lcl_centerWithin( rPaintRect, rBitmapSize ) ); + pBitmap->Draw( rUDEvt.GetDevice(), lcl_centerWithin( rPaintRect, rBitmapSize ) ); } break; case ImageScaleMode::Isotropic: { const Size aPaintSize = lcl_calcPaintSize( rPaintRect, rBitmapSize ); - maBmp.Draw( rUDEvt.GetDevice(), - lcl_centerWithin( rPaintRect, aPaintSize ), - aPaintSize ); + pBitmap->Draw( rUDEvt.GetDevice(), + lcl_centerWithin( rPaintRect, aPaintSize ), + aPaintSize ); } break; case ImageScaleMode::Anisotropic: { - maBmp.Draw( rUDEvt.GetDevice(), - rPaintRect.TopLeft(), - rPaintRect.GetSize() ); + pBitmap->Draw( rUDEvt.GetDevice(), + rPaintRect.TopLeft(), + rPaintRect.GetSize() ); } break; default: - OSL_ENSURE( false, "ImageControl::UserDraw: unhandled scale mode!" ); + OSL_ENSURE( false, "ImageControl::UserDraw: unhandled scale mode!" ); break; } // switch ( mnScaleMode ) diff --git a/vcl/source/control/lstbox.cxx b/vcl/source/control/lstbox.cxx index 0accd17489c9..641665aacf6b 100644 --- a/vcl/source/control/lstbox.cxx +++ b/vcl/source/control/lstbox.cxx @@ -31,21 +31,21 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_vcl.hxx" -#ifndef _SV_RC_H -#include <tools/rc.h> -#endif -#include <vcl/svdata.hxx> -#include <vcl/decoview.hxx> -#include <vcl/event.hxx> -#include <vcl/scrbar.hxx> -#include <vcl/button.hxx> -#include <vcl/edit.hxx> -#include <vcl/subedit.hxx> -#include <vcl/ilstbox.hxx> -#include <vcl/lstbox.hxx> -#include <vcl/combobox.hxx> -#include <vcl/controllayout.hxx> -#include <tools/debug.hxx> +#include "tools/rc.h" + +#include "vcl/svdata.hxx" +#include "vcl/decoview.hxx" +#include "vcl/event.hxx" +#include "vcl/scrbar.hxx" +#include "vcl/button.hxx" +#include "vcl/edit.hxx" +#include "vcl/subedit.hxx" +#include "vcl/ilstbox.hxx" +#include "vcl/lstbox.hxx" +#include "vcl/combobox.hxx" +#include "vcl/controllayout.hxx" + +#include "tools/debug.hxx" @@ -604,18 +604,18 @@ BOOL ListBox::IsDDAutoWidthEnabled() const void ListBox::SetDropDownLineCount( USHORT nLines ) { + mnLineCount = nLines; if ( mpFloatWin ) - mpFloatWin->SetDropDownLineCount( nLines ); + mpFloatWin->SetDropDownLineCount( mnLineCount ); } // ----------------------------------------------------------------------- USHORT ListBox::GetDropDownLineCount() const { - USHORT nLines = 0; if ( mpFloatWin ) - nLines = mpFloatWin->GetDropDownLineCount(); - return nLines; + return mpFloatWin->GetDropDownLineCount(); + return mnLineCount; } // ----------------------------------------------------------------------- @@ -650,6 +650,7 @@ void ListBox::Resize() long nTop = 0; long nBottom = aOutSz.Height(); + // note: in case of no border, pBorder will actually be this Window *pBorder = GetWindow( WINDOW_BORDER ); ImplControlValue aControlValue; Point aPoint; @@ -678,6 +679,17 @@ void ListBox::Resize() // use the themes drop down size Rectangle aContentRect = aContent.GetBoundRect(); + if( ! (GetStyle() & WB_BORDER) && ImplGetSVData()->maNWFData.mbNoFocusRects ) + { + // no border but focus ring behavior -> we have a problem; the + // native rect relies on the border to draw the focus + // let's do the best we can and center vertically, so it doesn't look + // completely wrong. + Size aSz( GetOutputSizePixel() ); + long nDiff = aContentRect.Top() - (aSz.Height() - aContentRect.GetHeight())/2; + aContentRect.Top() -= nDiff; + aContentRect.Bottom() -= nDiff; + } mpImplWin->SetPosSizePixel( aContentRect.TopLeft(), aContentRect.GetSize() ); } else @@ -959,10 +971,19 @@ long ListBox::PreNotify( NotifyEvent& rNEvt ) (rNEvt.GetCommandEvent()->GetCommand() == COMMAND_WHEEL) && (rNEvt.GetWindow() == mpImplWin) ) { - if( ! GetSettings().GetMouseSettings().GetNoWheelActionWithoutFocus() || HasChildPathFocus() ) + USHORT nWheelBehavior( GetSettings().GetMouseSettings().GetWheelBehavior() ); + if ( ( nWheelBehavior == MOUSE_WHEEL_ALWAYS ) + || ( ( nWheelBehavior == MOUSE_WHEEL_FOCUS_ONLY ) + && HasChildPathFocus() + ) + ) + { nDone = mpImplLB->HandleWheelAsCursorTravel( *rNEvt.GetCommandEvent() ); + } else + { nDone = 0; // don't eat this event, let the default handling happen (i.e. scroll the context) + } } } @@ -1260,12 +1281,30 @@ Size ListBox::CalcMinimumSize() const { Size aSz; if ( !IsDropDownBox() ) - { - aSz = mpImplLB->CalcSize( mpImplLB->GetEntryList()->GetEntryCount() ); - } + aSz = mpImplLB->CalcSize (mnLineCount ? mnLineCount : mpImplLB->GetEntryList()->GetEntryCount()); else { aSz.Height() = mpImplLB->CalcSize( 1 ).Height(); + if( aSz.Height() < mnDDHeight ) + { + aSz.Height() = mnDDHeight; + // FIXME: this is currently only on mac/aqua + if( ImplGetSVData()->maNWFData.mbNoFocusRects && + IsNativeWidgetEnabled() && + const_cast<ListBox*>(this)->IsNativeControlSupported( CTRL_LISTBOX, PART_ENTIRE_CONTROL ) ) + { + ImplControlValue aControlValue; + Region aCtrlRegion( Rectangle( (const Point&)Point(), Size( 20, mnDDHeight ) ) ); + Region aBoundingRgn( aCtrlRegion ); + Region aContentRgn( aCtrlRegion ); + // adjust the size of the edit field + if( const_cast<ListBox*>(this)->GetNativeControlRegion( CTRL_LISTBOX, PART_ENTIRE_CONTROL, + aCtrlRegion, 0, aControlValue, rtl::OUString(), aBoundingRgn, aContentRgn) ) + { + aSz.Height() = aContentRgn.GetBoundRect().GetHeight(); + } + } + } aSz.Width() = mpImplLB->GetMaxEntryWidth(); aSz.Width() += GetSettings().GetStyleSettings().GetScrollBarSize(); } diff --git a/vcl/source/control/spinfld.cxx b/vcl/source/control/spinfld.cxx index 3f8779dc2e90..0d656da40ba7 100644 --- a/vcl/source/control/spinfld.cxx +++ b/vcl/source/control/spinfld.cxx @@ -599,7 +599,12 @@ long SpinField::Notify( NotifyEvent& rNEvt ) { if ( ( rNEvt.GetCommandEvent()->GetCommand() == COMMAND_WHEEL ) && !IsReadOnly() ) { - if( ! GetSettings().GetMouseSettings().GetNoWheelActionWithoutFocus() || HasChildPathFocus() ) + USHORT nWheelBehavior( GetSettings().GetMouseSettings().GetWheelBehavior() ); + if ( ( nWheelBehavior == MOUSE_WHEEL_ALWAYS ) + || ( ( nWheelBehavior == MOUSE_WHEEL_FOCUS_ONLY ) + && HasChildPathFocus() + ) + ) { const CommandWheelData* pData = rNEvt.GetCommandEvent()->GetWheelData(); if ( pData->GetMode() == COMMAND_WHEEL_SCROLL ) diff --git a/vcl/source/fontsubset/sft.cxx b/vcl/source/fontsubset/sft.cxx index 10d4cf774b04..7744b2f9a59c 100644 --- a/vcl/source/fontsubset/sft.cxx +++ b/vcl/source/fontsubset/sft.cxx @@ -329,7 +329,7 @@ _inline void PutInt16(sal_Int16 val, sal_uInt8 *ptr, size_t offset, int bigendia } -#if defined(OSL_BIG_ENDIAN) +#if defined(OSL_BIGENDIAN) #define Int16FromMOTA(a) (a) #define Int32FromMOTA(a) (a) #else diff --git a/vcl/source/gdi/base14.cxx b/vcl/source/gdi/base14.cxx index 7bdeb9f1fec7..17e616d196b4 100644 --- a/vcl/source/gdi/base14.cxx +++ b/vcl/source/gdi/base14.cxx @@ -646,7 +646,7 @@ const PDFWriterImpl::BuiltinFont PDFWriterImpl::m_aBuiltinFonts[ 14 ] = { "ZapfDingbats", // PSName 820, -143, // ascend, descend FAMILY_DONTKNOW, // family style - RTL_TEXTENCODING_SYMBOL, // charset + RTL_TEXTENCODING_ADOBE_DINGBATS, // charset PITCH_VARIABLE, // pitch WIDTH_NORMAL, // width type WEIGHT_NORMAL, // weight type diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx index 3a29e6d56095..6483c8292df7 100644 --- a/vcl/source/gdi/gdimtf.cxx +++ b/vcl/source/gdi/gdimtf.cxx @@ -1403,6 +1403,436 @@ void GDIMetaFile::Rotate( long nAngle10 ) // ------------------------------------------------------------------------ +static void ImplActionBounds( Rectangle& o_rOutBounds, + const Rectangle& i_rInBounds, + const std::vector<Rectangle>& i_rClipStack ) +{ + Rectangle aBounds( i_rInBounds ); + if( ! i_rInBounds.IsEmpty() && ! i_rClipStack.empty() && ! i_rClipStack.back().IsEmpty() ) + aBounds.Intersection( i_rClipStack.back() ); + if( ! aBounds.IsEmpty() ) + { + if( ! o_rOutBounds.IsEmpty() ) + o_rOutBounds.Union( aBounds ); + else + o_rOutBounds = aBounds; + } +} + +Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) +{ + GDIMetaFile aMtf; + VirtualDevice aMapVDev( i_rReference ); + + aMapVDev.EnableOutput( FALSE ); + aMapVDev.SetMapMode( GetPrefMapMode() ); + + std::vector<Rectangle> aClipStack( 1, Rectangle() ); + std::vector<USHORT> aPushFlagStack; + + Rectangle aBound; + + for( MetaAction* pAction = (MetaAction*) First(); pAction; pAction = (MetaAction*) Next() ) + { + const USHORT nActionType = pAction->GetType(); + + switch( nActionType ) + { + case( META_PIXEL_ACTION ): + { + MetaPixelAction* pAct = (MetaPixelAction*) pAction; + ImplActionBounds( aBound, + Rectangle( aMapVDev.LogicToLogic( pAct->GetPoint(), aMapVDev.GetMapMode(), GetPrefMapMode() ), + aMapVDev.PixelToLogic( Size( 1, 1 ), GetPrefMapMode() ) ), + aClipStack ); + } + break; + + case( META_POINT_ACTION ): + { + MetaPointAction* pAct = (MetaPointAction*) pAction; + ImplActionBounds( aBound, + Rectangle( aMapVDev.LogicToLogic( pAct->GetPoint(), aMapVDev.GetMapMode(), GetPrefMapMode() ), + aMapVDev.PixelToLogic( Size( 1, 1 ), GetPrefMapMode() ) ), + aClipStack ); + } + break; + + case( META_LINE_ACTION ): + { + MetaLineAction* pAct = (MetaLineAction*) pAction; + Point aP1( pAct->GetStartPoint() ), aP2( pAct->GetEndPoint() ); + Rectangle aRect( aP1, aP2 ); + aRect.Justify(); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_RECT_ACTION ): + { + MetaRectAction* pAct = (MetaRectAction*) pAction; + ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_ROUNDRECT_ACTION ): + { + MetaRoundRectAction* pAct = (MetaRoundRectAction*) pAction; + ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_ELLIPSE_ACTION ): + { + MetaEllipseAction* pAct = (MetaEllipseAction*) pAction; + ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_ARC_ACTION ): + { + MetaArcAction* pAct = (MetaArcAction*) pAction; + // FIXME: this is imprecise + // e.g. for small arcs the whole rectangle is WAY too large + ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_PIE_ACTION ): + { + MetaPieAction* pAct = (MetaPieAction*) pAction; + // FIXME: this is imprecise + // e.g. for small arcs the whole rectangle is WAY too large + ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_CHORD_ACTION ): + { + MetaChordAction* pAct = (MetaChordAction*) pAction; + // FIXME: this is imprecise + // e.g. for small arcs the whole rectangle is WAY too large + ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_POLYLINE_ACTION ): + { + MetaPolyLineAction* pAct = (MetaPolyLineAction*) pAction; + Rectangle aRect( pAct->GetPolygon().GetBoundRect() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_POLYGON_ACTION ): + { + MetaPolygonAction* pAct = (MetaPolygonAction*) pAction; + Rectangle aRect( pAct->GetPolygon().GetBoundRect() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_POLYPOLYGON_ACTION ): + { + MetaPolyPolygonAction* pAct = (MetaPolyPolygonAction*) pAction; + Rectangle aRect( pAct->GetPolyPolygon().GetBoundRect() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_TEXT_ACTION ): + { + MetaTextAction* pAct = (MetaTextAction*) pAction; + Rectangle aRect; + // hdu said base = index + aMapVDev.GetTextBoundRect( aRect, pAct->GetText(), pAct->GetIndex(), pAct->GetIndex(), pAct->GetLen() ); + Point aPt( pAct->GetPoint() ); + aRect.Move( aPt.X(), aPt.Y() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_TEXTARRAY_ACTION ): + { + MetaTextArrayAction* pAct = (MetaTextArrayAction*) pAction; + Rectangle aRect; + // hdu said base = index + aMapVDev.GetTextBoundRect( aRect, pAct->GetText(), pAct->GetIndex(), pAct->GetIndex(), pAct->GetLen(), + 0, pAct->GetDXArray() ); + Point aPt( pAct->GetPoint() ); + aRect.Move( aPt.X(), aPt.Y() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_STRETCHTEXT_ACTION ): + { + MetaStretchTextAction* pAct = (MetaStretchTextAction*) pAction; + Rectangle aRect; + // hdu said base = index + aMapVDev.GetTextBoundRect( aRect, pAct->GetText(), pAct->GetIndex(), pAct->GetIndex(), pAct->GetLen(), + pAct->GetWidth(), NULL ); + Point aPt( pAct->GetPoint() ); + aRect.Move( aPt.X(), aPt.Y() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_TEXTLINE_ACTION ): + { + MetaTextLineAction* pAct = (MetaTextLineAction*) pAction; + // measure a test string to get ascend and descent right + static const sal_Unicode pStr[] = { 0xc4, 0x67, 0 }; + String aStr( pStr ); + + Rectangle aRect; + aMapVDev.GetTextBoundRect( aRect, aStr, 0, 0, aStr.Len(), 0, NULL ); + Point aPt( pAct->GetStartPoint() ); + aRect.Move( aPt.X(), aPt.Y() ); + aRect.Right() = aRect.Left() + pAct->GetWidth(); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_BMPSCALE_ACTION ): + { + MetaBmpScaleAction* pAct = (MetaBmpScaleAction*) pAction; + Rectangle aRect( pAct->GetPoint(), pAct->GetSize() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_BMPSCALEPART_ACTION ): + { + MetaBmpScalePartAction* pAct = (MetaBmpScalePartAction*) pAction; + Rectangle aRect( pAct->GetDestPoint(), pAct->GetDestSize() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_BMPEXSCALE_ACTION ): + { + MetaBmpExScaleAction* pAct = (MetaBmpExScaleAction*) pAction; + Rectangle aRect( pAct->GetPoint(), pAct->GetSize() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_BMPEXSCALEPART_ACTION ): + { + MetaBmpExScalePartAction* pAct = (MetaBmpExScalePartAction*) pAction; + Rectangle aRect( pAct->GetDestPoint(), pAct->GetDestSize() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_GRADIENT_ACTION ): + { + MetaGradientAction* pAct = (MetaGradientAction*) pAction; + Rectangle aRect( pAct->GetRect() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_GRADIENTEX_ACTION ): + { + MetaGradientExAction* pAct = (MetaGradientExAction*) pAction; + Rectangle aRect( pAct->GetPolyPolygon().GetBoundRect() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_COMMENT_ACTION ): + { + // nothing to do + }; + break; + + case( META_HATCH_ACTION ): + { + MetaHatchAction* pAct = (MetaHatchAction*) pAction; + Rectangle aRect( pAct->GetPolyPolygon().GetBoundRect() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_TRANSPARENT_ACTION ): + { + MetaTransparentAction* pAct = (MetaTransparentAction*) pAction; + Rectangle aRect( pAct->GetPolyPolygon().GetBoundRect() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_FLOATTRANSPARENT_ACTION ): + { + MetaFloatTransparentAction* pAct = (MetaFloatTransparentAction*) pAction; + GDIMetaFile aTransMtf( pAct->GetGDIMetaFile() ); + // get the bound rect of the contained metafile + Rectangle aRect( aTransMtf.GetBoundRect( i_rReference ) ); + // scale the rect now on the assumption that the correct top left of the metafile + // (not its bounds !) is (0,0) + Size aPSize( aTransMtf.GetPrefSize() ); + aPSize = aMapVDev.LogicToLogic( aPSize, aTransMtf.GetPrefMapMode(), aMapVDev.GetMapMode() ); + Size aActSize( pAct->GetSize() ); + double fX = double(aActSize.Width())/double(aPSize.Width()); + double fY = double(aActSize.Height())/double(aPSize.Height()); + aRect.Left() = long(double(aRect.Left())*fX); + aRect.Right() = long(double(aRect.Right())*fX); + aRect.Top() = long(double(aRect.Top())*fY); + aRect.Bottom() = long(double(aRect.Bottom())*fY); + + // transform the rect to current VDev state + aRect = aMapVDev.LogicToLogic( aRect, aTransMtf.GetPrefMapMode(), aMapVDev.GetMapMode() ); + + ImplActionBounds( aBound, aRect, aClipStack ); + } + break; + + case( META_EPS_ACTION ): + { + MetaEPSAction* pAct = (MetaEPSAction*) pAction; + Rectangle aRect( pAct->GetPoint(), pAct->GetSize() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_CLIPREGION_ACTION ): + { + MetaClipRegionAction* pAct = (MetaClipRegionAction*) pAction; + if( pAct->IsClipping() ) + aClipStack.back() = aMapVDev.LogicToLogic( pAct->GetRegion().GetBoundRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ); + else + aClipStack.back() = Rectangle(); + } + break; + + case( META_ISECTRECTCLIPREGION_ACTION ): + { + MetaISectRectClipRegionAction* pAct = (MetaISectRectClipRegionAction*) pAction; + Rectangle aRect( aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ) ); + if( aClipStack.back().IsEmpty() ) + aClipStack.back() = aRect; + else + aClipStack.back().Intersection( aRect ); + } + break; + + case( META_ISECTREGIONCLIPREGION_ACTION ): + { + MetaISectRegionClipRegionAction* pAct = (MetaISectRegionClipRegionAction*) pAction; + Rectangle aRect( aMapVDev.LogicToLogic( pAct->GetRegion().GetBoundRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ) ); + if( aClipStack.back().IsEmpty() ) + aClipStack.back() = aRect; + else + aClipStack.back().Intersection( aRect ); + } + break; + + case( META_BMP_ACTION ): + { + MetaBmpAction* pAct = (MetaBmpAction*) pAction; + Rectangle aRect( pAct->GetPoint(), aMapVDev.PixelToLogic( pAct->GetBitmap().GetSizePixel() ) ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_BMPEX_ACTION ): + { + MetaBmpExAction* pAct = (MetaBmpExAction*) pAction; + Rectangle aRect( pAct->GetPoint(), aMapVDev.PixelToLogic( pAct->GetBitmapEx().GetSizePixel() ) ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_MASK_ACTION ): + { + MetaMaskAction* pAct = (MetaMaskAction*) pAction; + Rectangle aRect( pAct->GetPoint(), aMapVDev.PixelToLogic( pAct->GetBitmap().GetSizePixel() ) ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_MASKSCALE_ACTION ): + { + MetaMaskScalePartAction* pAct = (MetaMaskScalePartAction*) pAction; + Rectangle aRect( pAct->GetDestPoint(), pAct->GetDestSize() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_MASKSCALEPART_ACTION ): + { + MetaMaskScalePartAction* pAct = (MetaMaskScalePartAction*) pAction; + Rectangle aRect( pAct->GetDestPoint(), pAct->GetDestSize() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_WALLPAPER_ACTION ): + { + MetaWallpaperAction* pAct = (MetaWallpaperAction*) pAction; + Rectangle aRect( pAct->GetRect() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_TEXTRECT_ACTION ): + { + MetaTextRectAction* pAct = (MetaTextRectAction*) pAction; + Rectangle aRect( pAct->GetRect() ); + ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); + } + break; + + case( META_MOVECLIPREGION_ACTION ): + { + MetaMoveClipRegionAction* pAct = (MetaMoveClipRegionAction*) pAction; + if( ! aClipStack.back().IsEmpty() ) + { + Size aDelta( pAct->GetHorzMove(), pAct->GetVertMove() ); + aDelta = aMapVDev.LogicToLogic( aDelta, aMapVDev.GetMapMode(), GetPrefMapMode() ); + aClipStack.back().Move( aDelta.Width(), aDelta.Width() ); + } + } + break; + + default: + { + pAction->Execute( &aMapVDev ); + + if( nActionType == META_PUSH_ACTION ) + { + MetaPushAction* pAct = (MetaPushAction*) pAction; + aPushFlagStack.push_back( pAct->GetFlags() ); + if( (aPushFlagStack.back() & PUSH_CLIPREGION) != 0 ) + { + Rectangle aRect( aClipStack.back() ); + aClipStack.push_back( aRect ); + } + } + else if( nActionType == META_POP_ACTION ) + { + // sanity check + if( ! aPushFlagStack.empty() ) + { + if( (aPushFlagStack.back() & PUSH_CLIPREGION) != 0 ) + { + if( aClipStack.size() > 1 ) + aClipStack.pop_back(); + } + aPushFlagStack.pop_back(); + } + } + } + break; + } + } + return aBound; +} + +// ------------------------------------------------------------------------ + Color GDIMetaFile::ImplColAdjustFnc( const Color& rColor, const void* pColParam ) { return Color( rColor.GetTransparency(), diff --git a/vcl/source/gdi/graph.cxx b/vcl/source/gdi/graph.cxx index dfa155e29eae..77f065912e5d 100644 --- a/vcl/source/gdi/graph.cxx +++ b/vcl/source/gdi/graph.cxx @@ -430,44 +430,16 @@ BOOL Graphic::IsAnimated() const // ------------------------------------------------------------------------ -Bitmap Graphic::GetBitmap() const +Bitmap Graphic::GetBitmap(const GraphicConversionParameters& rParameters) const { - return GetBitmap( NULL ); + return mpImpGraphic->ImplGetBitmap(rParameters); } // ------------------------------------------------------------------------ -BitmapEx Graphic::GetBitmapEx() const +BitmapEx Graphic::GetBitmapEx(const GraphicConversionParameters& rParameters) const { - return GetBitmapEx( NULL ); -} - -// ------------------------------------------------------------------------ - -Bitmap Graphic::GetBitmap( const Size* pSizePixel ) const -{ - return mpImpGraphic->ImplGetBitmap( pSizePixel, FALSE ); -} - -// ------------------------------------------------------------------------ - -BitmapEx Graphic::GetBitmapEx( const Size* pSizePixel ) const -{ - return mpImpGraphic->ImplGetBitmapEx( pSizePixel, FALSE ); -} - -// ------------------------------------------------------------------------ - -Bitmap Graphic::GetUnlimitedBitmap( const Size* pSizePixel ) const -{ - return mpImpGraphic->ImplGetBitmap( pSizePixel, TRUE ) ; -} - -// ------------------------------------------------------------------------ - -BitmapEx Graphic::GetUnlimitedBitmapEx( const Size* pSizePixel ) const -{ - return mpImpGraphic->ImplGetBitmapEx( pSizePixel, TRUE ) ; + return mpImpGraphic->ImplGetBitmapEx(rParameters); } // ------------------------------------------------------------------------ @@ -553,7 +525,7 @@ Size Graphic::GetSizePixel( const OutputDevice* pRefDevice ) const Size aRet; if( GRAPHIC_BITMAP == mpImpGraphic->ImplGetType() ) - aRet = mpImpGraphic->ImplGetBitmapEx( NULL, FALSE ).GetSizePixel(); + aRet = mpImpGraphic->ImplGetBitmapEx(GraphicConversionParameters()).GetSizePixel(); else aRet = ( pRefDevice ? pRefDevice : Application::GetDefaultDevice() )->LogicToPixel( GetPrefSize(), GetPrefMapMode() ); diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx index a67d6fa7feac..d73f35bef962 100644 --- a/vcl/source/gdi/impgraph.cxx +++ b/vcl/source/gdi/impgraph.cxx @@ -483,7 +483,7 @@ BOOL ImpGraphic::ImplIsAnimated() const // ------------------------------------------------------------------------ -Bitmap ImpGraphic::ImplGetBitmap( const Size* pSizePixel, BOOL bUnlimited ) const +Bitmap ImpGraphic::ImplGetBitmap(const GraphicConversionParameters& rParameters) const { Bitmap aRetBmp; @@ -494,8 +494,8 @@ Bitmap ImpGraphic::ImplGetBitmap( const Size* pSizePixel, BOOL bUnlimited ) cons aRetBmp = rRetBmpEx.GetBitmap( &aReplaceColor ); - if( pSizePixel ) - aRetBmp.Scale( *pSizePixel ); + if(rParameters.getSizePixel().Width() || rParameters.getSizePixel().Height()) + aRetBmp.Scale(rParameters.getSizePixel()); } else if( ( meType != GRAPHIC_DEFAULT ) && ImplIsSupportedGraphic() ) { @@ -508,16 +508,18 @@ Bitmap ImpGraphic::ImplGetBitmap( const Size* pSizePixel, BOOL bUnlimited ) cons Size aDrawSize( aVDev.LogicToPixel( maMetaFile.GetPrefSize(), maMetaFile.GetPrefMapMode() ) ); Size aSizePix( labs( aBRPix.X() - aTLPix.X() ) + 1, labs( aBRPix.Y() - aTLPix.Y() ) + 1 ); - if( pSizePixel && aSizePix.Width() && aSizePix.Height() ) + if(rParameters.getSizePixel().Width() && rParameters.getSizePixel().Height()) { - aDrawSize.Width() = FRound( (double) pSizePixel->Width() * (double) aDrawSize.Width() / (double) aSizePix.Width() ); - aDrawSize.Height() = FRound( (double) pSizePixel->Height() * (double) aDrawSize.Height() / (double) aSizePix.Height() ); + aDrawSize.Width() = FRound((double)rParameters.getSizePixel().Width() * + (double)aDrawSize.Width() / (double)aSizePix.Width()); + aDrawSize.Height() = FRound((double)rParameters.getSizePixel().Height() * + (double)aDrawSize.Height() / (double)aSizePix.Height()); - aSizePix = *pSizePixel; + aSizePix = rParameters.getSizePixel(); } - if( aSizePix.Width() && aSizePix.Height() && !bUnlimited && - ( aSizePix.Width() > GRAPHIC_MTFTOBMP_MAXEXT || aSizePix.Height() > GRAPHIC_MTFTOBMP_MAXEXT ) ) + if( aSizePix.Width() && aSizePix.Height() && !rParameters.getUnlimitedSize() + && (aSizePix.Width() > GRAPHIC_MTFTOBMP_MAXEXT || aSizePix.Height() > GRAPHIC_MTFTOBMP_MAXEXT)) { const Size aOldSizePix( aSizePix ); double fWH = (double) aSizePix.Width() / aSizePix.Height(); @@ -533,6 +535,16 @@ Bitmap ImpGraphic::ImplGetBitmap( const Size* pSizePixel, BOOL bUnlimited ) cons if( aVDev.SetOutputSizePixel( aSizePix ) ) { + if(rParameters.getAntiAliase()) + { + aVDev.SetAntialiasing(aVDev.GetAntialiasing() | ANTIALIASING_ENABLE_B2DDRAW); + } + + if(rParameters.getSnapHorVerLines()) + { + aVDev.SetAntialiasing(aVDev.GetAntialiasing() | ANTIALIASING_PIXELSNAPHAIRLINE); + } + ImplDraw( &aVDev, aNullPt, aDrawSize ); aRetBmp = aVDev.GetBitmap( aNullPt, aVDev.GetOutputSizePixel() ); } @@ -549,7 +561,7 @@ Bitmap ImpGraphic::ImplGetBitmap( const Size* pSizePixel, BOOL bUnlimited ) cons // ------------------------------------------------------------------------ -BitmapEx ImpGraphic::ImplGetBitmapEx( const Size* pSizePixel, BOOL bUnlimited ) const +BitmapEx ImpGraphic::ImplGetBitmapEx(const GraphicConversionParameters& rParameters) const { BitmapEx aRetBmpEx; @@ -557,13 +569,13 @@ BitmapEx ImpGraphic::ImplGetBitmapEx( const Size* pSizePixel, BOOL bUnlimited ) { aRetBmpEx = ( mpAnimation ? mpAnimation->GetBitmapEx() : maEx ); - if( pSizePixel ) - aRetBmpEx.Scale( *pSizePixel ); + if(rParameters.getSizePixel().Width() || rParameters.getSizePixel().Height()) + aRetBmpEx.Scale(rParameters.getSizePixel()); } else if( ( meType != GRAPHIC_DEFAULT ) && ImplIsSupportedGraphic() ) { const ImpGraphic aMonoMask( maMetaFile.GetMonochromeMtf( COL_BLACK ) ); - aRetBmpEx = BitmapEx( ImplGetBitmap( pSizePixel, bUnlimited ), aMonoMask.ImplGetBitmap( pSizePixel, bUnlimited ) ); + aRetBmpEx = BitmapEx(ImplGetBitmap(rParameters), aMonoMask.ImplGetBitmap(rParameters)); } return aRetBmpEx; diff --git a/vcl/source/gdi/impimagetree.cxx b/vcl/source/gdi/impimagetree.cxx index 64cddece1199..9e1378f22326 100644 --- a/vcl/source/gdi/impimagetree.cxx +++ b/vcl/source/gdi/impimagetree.cxx @@ -102,8 +102,11 @@ void loadFromStream( rtl::OUString const & path, BitmapEx & bitmap) { std::auto_ptr< SvStream > s(wrapStream(stream)); - if (path.endsWithAsciiL(RTL_CONSTASCII_STRINGPARAM(".png"))) { - bitmap = vcl::PNGReader(*s).Read(); + if (path.endsWithAsciiL(RTL_CONSTASCII_STRINGPARAM(".png"))) + { + vcl::PNGReader aPNGReader( *s ); + aPNGReader.SetIgnoreGammaChunk( sal_True ); + bitmap = aPNGReader.Read(); } else { *s >> bitmap; } diff --git a/vcl/source/gdi/makefile.mk b/vcl/source/gdi/makefile.mk index 977e5386fe97..4d0ded320060 100644 --- a/vcl/source/gdi/makefile.mk +++ b/vcl/source/gdi/makefile.mk @@ -137,6 +137,7 @@ EXCEPTIONSFILES= $(SLO)$/salmisc.obj \ $(SLO)$/pngwrite.obj \ $(SLO)$/virdev.obj \ $(SLO)$/impprn.obj \ + $(SLO)$/gdimtf.obj \ $(SLO)$/graphictools.obj diff --git a/vcl/source/gdi/outdev.cxx b/vcl/source/gdi/outdev.cxx index 0e9da9f81136..5b543258cb0b 100644 --- a/vcl/source/gdi/outdev.cxx +++ b/vcl/source/gdi/outdev.cxx @@ -68,6 +68,8 @@ #include <basegfx/polygon/b2dpolypolygon.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> #include <basegfx/polygon/b2dpolygontools.hxx> +#include <basegfx/polygon/b2dpolypolygontools.hxx> +#include <basegfx/polygon/b2dlinegeometry.hxx> #include <com/sun/star/awt/XGraphics.hpp> #include <com/sun/star/uno/Sequence.hxx> @@ -2285,8 +2287,35 @@ void OutputDevice::DrawLine( const Point& rStartPt, const Point& rEndPt ) if ( mbInitLineColor ) ImplInitLineColor(); - Point aStartPt = ImplLogicToDevicePixel( rStartPt ); - Point aEndPt = ImplLogicToDevicePixel( rEndPt ); + // #i101598# support AA and snap for lines, too + if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) + && mpGraphics->supportsOperation(OutDevSupport_B2DDraw) + && ROP_OVERPAINT == GetRasterOp() + && IsLineColor()) + { + // at least transform with double precision to device coordinates; this will + // avoid pixel snap of single, appended lines + const basegfx::B2DHomMatrix aTransform(ImplGetDeviceTransformation()); + const basegfx::B2DVector aB2DLineWidth( 1.0, 1.0 ); + basegfx::B2DPolygon aB2DPolyLine; + + aB2DPolyLine.append(basegfx::B2DPoint(rStartPt.X(), rStartPt.Y())); + aB2DPolyLine.append(basegfx::B2DPoint(rEndPt.X(), rEndPt.Y())); + aB2DPolyLine.transform( aTransform ); + + if(mnAntialiasing & ANTIALIASING_PIXELSNAPHAIRLINE) + { + aB2DPolyLine = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aB2DPolyLine); + } + + if(mpGraphics->DrawPolyLine(aB2DPolyLine, aB2DLineWidth, basegfx::B2DLINEJOIN_NONE, this)) + { + return; + } + } + + const Point aStartPt(ImplLogicToDevicePixel(rStartPt)); + const Point aEndPt(ImplLogicToDevicePixel(rEndPt)); mpGraphics->DrawLine( aStartPt.X(), aStartPt.Y(), aEndPt.X(), aEndPt.Y(), this ); @@ -2444,22 +2473,30 @@ void OutputDevice::DrawPolyLine( const Polygon& rPoly ) if ( mbInitLineColor ) ImplInitLineColor(); + const bool bTryAA((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) + && mpGraphics->supportsOperation(OutDevSupport_B2DDraw) + && ROP_OVERPAINT == GetRasterOp() + && IsLineColor()); + // use b2dpolygon drawing if possible - if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) && mpGraphics->supportsOperation(OutDevSupport_B2DDraw)) + if(bTryAA && ImpTryDrawPolyLineDirect(rPoly.getB2DPolygon(), 0.0, basegfx::B2DLINEJOIN_NONE)) { - ::basegfx::B2DPolygon aB2DPolyLine = rPoly.getB2DPolygon(); + basegfx::B2DPolygon aB2DPolyLine(rPoly.getB2DPolygon()); const ::basegfx::B2DHomMatrix aTransform = ImplGetDeviceTransformation(); - aB2DPolyLine.transform( aTransform ); const ::basegfx::B2DVector aB2DLineWidth( 1.0, 1.0 ); - if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) && (mnAntialiasing & ANTIALIASING_PIXELSNAPHAIRLINE)) + // transform the polygon + aB2DPolyLine.transform( aTransform ); + + if(mnAntialiasing & ANTIALIASING_PIXELSNAPHAIRLINE) { - // #i98289# aB2DPolyLine = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aB2DPolyLine); } - if( mpGraphics->DrawPolyLine( aB2DPolyLine, aB2DLineWidth, basegfx::B2DLINEJOIN_ROUND, this ) ) + if(mpGraphics->DrawPolyLine(aB2DPolyLine, aB2DLineWidth, basegfx::B2DLINEJOIN_NONE, this)) + { return; + } } Polygon aPoly = ImplLogicToDevicePixel( rPoly ); @@ -2499,9 +2536,23 @@ void OutputDevice::DrawPolyLine( const Polygon& rPoly, const LineInfo& rLineInfo return; } + // #i101491# + // Try direct Fallback to B2D-Version of DrawPolyLine + if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) + && LINE_SOLID == rLineInfo.GetStyle()) + { + DrawPolyLine(rPoly.getB2DPolygon(), (double)rLineInfo.GetWidth(), basegfx::B2DLINEJOIN_ROUND); + return; + } + if ( mpMetaFile ) mpMetaFile->AddAction( new MetaPolyLineAction( rPoly, rLineInfo ) ); + ImpDrawPolyLineWithLineInfo(rPoly, rLineInfo); +} + +void OutputDevice::ImpDrawPolyLineWithLineInfo(const Polygon& rPoly, const LineInfo& rLineInfo) +{ USHORT nPoints = rPoly.GetSize(); if ( !IsDeviceOutputNecessary() || !mbLineColor || ( nPoints < 2 ) || ( LINE_NONE == rLineInfo.GetStyle() ) || ImplIsRecordLayout() ) @@ -2527,6 +2578,10 @@ void OutputDevice::DrawPolyLine( const Polygon& rPoly, const LineInfo& rLineInfo return; const LineInfo aInfo( ImplLogicToDevicePixel( rLineInfo ) ); + const bool bTryAA((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) + && mpGraphics->supportsOperation(OutDevSupport_B2DDraw) + && ROP_OVERPAINT == GetRasterOp() + && IsLineColor()); if( aInfo.GetWidth() > 1L ) { @@ -2540,9 +2595,32 @@ void OutputDevice::DrawPolyLine( const Polygon& rPoly, const LineInfo& rLineInfo ImplInitLineColor(); SetFillColor( aOldLineColor ); ImplInitFillColor(); + bool bDone(false); + + if(bTryAA) + { + // #i101491# try AAed version + // Use old on-the-fly geometry preparation, combine with AA + bool bSuccess(true); - for( const Polygon* pPoly = aLineCvt.ImplGetFirst(); pPoly; pPoly = aLineCvt.ImplGetNext() ) - mpGraphics->DrawPolygon( pPoly->GetSize(), (const SalPoint*) pPoly->GetConstPointAry(), this ); + for(const Polygon* pPoly = aLineCvt.ImplGetFirst(); bSuccess && pPoly; pPoly = aLineCvt.ImplGetNext()) + { + bSuccess = mpGraphics->DrawPolyPolygon(basegfx::B2DPolyPolygon(pPoly->getB2DPolygon()), 0.0, this); + } + + if(bSuccess) + { + bDone = true; + } + } + + if(!bDone) + { + for( const Polygon* pPoly = aLineCvt.ImplGetFirst(); pPoly; pPoly = aLineCvt.ImplGetNext() ) + { + mpGraphics->DrawPolygon( pPoly->GetSize(), (const SalPoint*) pPoly->GetConstPointAry(), this ); + } + } SetLineColor( aOldLineColor ); SetFillColor( aOldFillColor ); @@ -2598,13 +2676,40 @@ void OutputDevice::DrawPolygon( const Polygon& rPoly ) ImplInitFillColor(); // use b2dpolygon drawing if possible - if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) && mpGraphics->supportsOperation(OutDevSupport_B2DDraw)) + if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) + && mpGraphics->supportsOperation(OutDevSupport_B2DDraw) + && ROP_OVERPAINT == GetRasterOp() + && (IsLineColor() || IsFillColor())) { - ::basegfx::B2DPolyPolygon aB2DPolyPolygon( rPoly.getB2DPolygon() ); const ::basegfx::B2DHomMatrix aTransform = ImplGetDeviceTransformation(); - aB2DPolyPolygon.transform( aTransform ); - if( mpGraphics->DrawPolyPolygon( aB2DPolyPolygon, 0.0, this ) ) + basegfx::B2DPolygon aB2DPolygon(rPoly.getB2DPolygon()); + bool bSuccess(true); + + // transform the polygon and ensure closed + aB2DPolygon.transform(aTransform); + aB2DPolygon.setClosed(true); + + if(IsFillColor()) + { + bSuccess = mpGraphics->DrawPolyPolygon(basegfx::B2DPolyPolygon(aB2DPolygon), 0.0, this); + } + + if(bSuccess && IsLineColor()) + { + const ::basegfx::B2DVector aB2DLineWidth( 1.0, 1.0 ); + + if(mnAntialiasing & ANTIALIASING_PIXELSNAPHAIRLINE) + { + aB2DPolygon = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aB2DPolygon); + } + + bSuccess = mpGraphics->DrawPolyLine(aB2DPolygon, aB2DLineWidth, basegfx::B2DLINEJOIN_NONE, this); + } + + if(bSuccess) + { return; + } } Polygon aPoly = ImplLogicToDevicePixel( rPoly ); @@ -2661,13 +2766,43 @@ void OutputDevice::DrawPolyPolygon( const PolyPolygon& rPolyPoly ) ImplInitFillColor(); // use b2dpolygon drawing if possible - if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) && mpGraphics->supportsOperation(OutDevSupport_B2DDraw)) + if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) + && mpGraphics->supportsOperation(OutDevSupport_B2DDraw) + && ROP_OVERPAINT == GetRasterOp() + && (IsLineColor() || IsFillColor())) { - ::basegfx::B2DPolyPolygon aB2DPolyPolygon = rPolyPoly.getB2DPolyPolygon(); const ::basegfx::B2DHomMatrix aTransform = ImplGetDeviceTransformation(); - aB2DPolyPolygon.transform( aTransform ); - if( mpGraphics->DrawPolyPolygon( aB2DPolyPolygon, 0.0, this ) ) + basegfx::B2DPolyPolygon aB2DPolyPolygon(rPolyPoly.getB2DPolyPolygon()); + bool bSuccess(true); + + // transform the polygon and ensure closed + aB2DPolyPolygon.transform(aTransform); + aB2DPolyPolygon.setClosed(true); + + if(IsFillColor()) + { + bSuccess = mpGraphics->DrawPolyPolygon(aB2DPolyPolygon, 0.0, this); + } + + if(bSuccess && IsLineColor()) + { + const ::basegfx::B2DVector aB2DLineWidth( 1.0, 1.0 ); + + if(mnAntialiasing & ANTIALIASING_PIXELSNAPHAIRLINE) + { + aB2DPolyPolygon = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aB2DPolyPolygon); + } + + for(sal_uInt32 a(0); bSuccess && a < aB2DPolyPolygon.count(); a++) + { + bSuccess = mpGraphics->DrawPolyLine(aB2DPolyPolygon.getB2DPolygon(a), aB2DLineWidth, basegfx::B2DLINEJOIN_NONE, this); + } + } + + if(bSuccess) + { return; + } } if ( nPoly == 1 ) @@ -2729,6 +2864,12 @@ void OutputDevice::DrawPolyPolygon( const basegfx::B2DPolyPolygon& rB2DPolyPoly mpMetaFile->AddAction( new MetaPolyPolygonAction( PolyPolygon( rB2DPolyPoly ) ) ); #endif + // call helper + ImpDrawPolyPolygonWithB2DPolyPolygon(rB2DPolyPoly); +} + +void OutputDevice::ImpDrawPolyPolygonWithB2DPolyPolygon(const basegfx::B2DPolyPolygon& rB2DPolyPoly) +{ // AW: Do NOT paint empty PolyPolygons if(!rB2DPolyPoly.count()) return; @@ -2748,13 +2889,43 @@ void OutputDevice::DrawPolyPolygon( const basegfx::B2DPolyPolygon& rB2DPolyPoly if( mbInitFillColor ) ImplInitFillColor(); - if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) && mpGraphics->supportsOperation(OutDevSupport_B2DDraw)) + if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) + && mpGraphics->supportsOperation(OutDevSupport_B2DDraw) + && ROP_OVERPAINT == GetRasterOp() + && (IsLineColor() || IsFillColor())) { - const ::basegfx::B2DHomMatrix aTransform = ImplGetDeviceTransformation(); - ::basegfx::B2DPolyPolygon aB2DPP = rB2DPolyPoly; - aB2DPP.transform( aTransform ); - if( mpGraphics->DrawPolyPolygon( aB2DPP, 0.0, this ) ) + const basegfx::B2DHomMatrix aTransform(ImplGetDeviceTransformation()); + basegfx::B2DPolyPolygon aB2DPolyPolygon(rB2DPolyPoly); + bool bSuccess(true); + + // transform the polygon and ensure closed + aB2DPolyPolygon.transform(aTransform); + aB2DPolyPolygon.setClosed(true); + + if(IsFillColor()) + { + bSuccess = mpGraphics->DrawPolyPolygon(aB2DPolyPolygon, 0.0, this); + } + + if(bSuccess && IsLineColor()) + { + const ::basegfx::B2DVector aB2DLineWidth( 1.0, 1.0 ); + + if(mnAntialiasing & ANTIALIASING_PIXELSNAPHAIRLINE) + { + aB2DPolyPolygon = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aB2DPolyPolygon); + } + + for(sal_uInt32 a(0);bSuccess && a < aB2DPolyPolygon.count(); a++) + { + bSuccess = mpGraphics->DrawPolyLine(aB2DPolyPolygon.getB2DPolygon(a), aB2DLineWidth, basegfx::B2DLINEJOIN_NONE, this); + } + } + + if(bSuccess) + { return; + } } // fallback to old polygon drawing if needed @@ -2765,6 +2936,38 @@ void OutputDevice::DrawPolyPolygon( const basegfx::B2DPolyPolygon& rB2DPolyPoly // ----------------------------------------------------------------------- +bool OutputDevice::ImpTryDrawPolyLineDirect( + const basegfx::B2DPolygon& rB2DPolygon, + double fLineWidth, + basegfx::B2DLineJoin eLineJoin) +{ + const basegfx::B2DHomMatrix aTransform = ImplGetDeviceTransformation(); + basegfx::B2DVector aB2DLineWidth(1.0, 1.0); + + // transform the line width if used + if( fLineWidth != 0.0 ) + { + aB2DLineWidth = aTransform * ::basegfx::B2DVector( fLineWidth, fLineWidth ); + } + + // transform the polygon + basegfx::B2DPolygon aB2DPolygon(rB2DPolygon); + aB2DPolygon.transform(aTransform); + + if((mnAntialiasing & ANTIALIASING_PIXELSNAPHAIRLINE) + && aB2DPolygon.count() < 1000) + { + // #i98289#, #i101491# + // better to remove doubles on device coordinates. Also assume from a given amount + // of points that the single edges are not long enough to smooth + aB2DPolygon.removeDoublePoints(); + aB2DPolygon = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aB2DPolygon); + } + + // draw the polyline + return mpGraphics->DrawPolyLine(aB2DPolygon, aB2DLineWidth, eLineJoin, this); +} + void OutputDevice::DrawPolyLine( const basegfx::B2DPolygon& rB2DPolygon, double fLineWidth, @@ -2808,37 +3011,62 @@ void OutputDevice::DrawPolyLine( if( mbInitLineColor ) ImplInitLineColor(); - // #i98289# use b2dpolygon drawing if possible - if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) && mpGraphics->supportsOperation(OutDevSupport_B2DDraw)) + const bool bTryAA((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) + && mpGraphics->supportsOperation(OutDevSupport_B2DDraw) + && ROP_OVERPAINT == GetRasterOp() + && IsLineColor()); + + // use b2dpolygon drawing if possible + if(bTryAA && ImpTryDrawPolyLineDirect(rB2DPolygon, fLineWidth, eLineJoin)) { - const ::basegfx::B2DHomMatrix aTransform = ImplGetDeviceTransformation(); - ::basegfx::B2DVector aB2DLineWidth(1.0, 1.0); + return; + } - // transform the line width if used - if( fLineWidth != 0.0 ) - aB2DLineWidth = aTransform * ::basegfx::B2DVector( fLineWidth, fLineWidth ); + // #i101491# + // no output yet; fallback to geometry decomposition and use filled polygon paint + // when line is fat and not too complex. ImpDrawPolyPolygonWithB2DPolyPolygon + // will do internal needed AA checks etc. + if(fLineWidth >= 2.5 + && rB2DPolygon.count() + && rB2DPolygon.count() <= 1000) + { + const double fHalfLineWidth((fLineWidth * 0.5) + 0.5); + const basegfx::B2DPolyPolygon aAreaPolyPolygon(basegfx::tools::createAreaGeometry( + rB2DPolygon, fHalfLineWidth, eLineJoin)); - // transform the polygon - ::basegfx::B2DPolygon aB2DPL = rB2DPolygon; - aB2DPL.transform( aTransform ); + const Color aOldLineColor(maLineColor); + const Color aOldFillColor(maFillColor); + + SetLineColor(); + ImplInitLineColor(); + SetFillColor(aOldLineColor); + ImplInitFillColor(); + + ImpDrawPolyPolygonWithB2DPolyPolygon(aAreaPolyPolygon); - if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) && (mnAntialiasing & ANTIALIASING_PIXELSNAPHAIRLINE)) + SetLineColor(aOldLineColor); + ImplInitLineColor(); + SetFillColor(aOldFillColor); + ImplInitFillColor(); + + if(bTryAA) { - // #i98289# - aB2DPL = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aB2DPL); + // when AA it is necessary to also paint the filled polygon's outline + // to avoid optical gaps + for(sal_uInt32 a(0); a < aAreaPolyPolygon.count(); a++) + { + ImpTryDrawPolyLineDirect(aAreaPolyPolygon.getB2DPolygon(a), 0.0, basegfx::B2DLINEJOIN_NONE); + } } - - // draw the polyline - if( mpGraphics->DrawPolyLine( aB2DPL, aB2DLineWidth, eLineJoin, this ) ) - return; } - // fallback to old polygon drawing if needed + // fallback to old polygon drawing if needed. This will really + // use ImplLineConverter, but still try to AA lines const Polygon aToolsPolygon( rB2DPolygon ); LineInfo aLineInfo; if( fLineWidth != 0.0 ) aLineInfo.SetWidth( static_cast<long>(fLineWidth+0.5) ); - DrawPolyLine( aToolsPolygon, aLineInfo ); + ImpDrawPolyLineWithLineInfo( aToolsPolygon, aLineInfo ); } // ----------------------------------------------------------------------- diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx index 521e56da207e..710620d54ab8 100644 --- a/vcl/source/gdi/outdev3.cxx +++ b/vcl/source/gdi/outdev3.cxx @@ -7,7 +7,6 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: outdev3.cxx,v $ - * $Revision: 1.240.14.5 $ * * This file is part of OpenOffice.org. * @@ -63,6 +62,7 @@ #include <vcl/outdev.hxx> #include <vcl/edit.hxx> #include <vcl/fontcfg.hxx> +#include <vcl/sysdata.hxx> #ifndef _OSL_FILE_H #include <osl/file.h> #endif @@ -6483,7 +6483,7 @@ SalLayout* OutputDevice::ImplLayout( const String& rOrigStr, nRTLOffset = nPixelWidth; else nRTLOffset = pSalLayout->GetTextWidth() / pSalLayout->GetUnitsPerPixel(); - pSalLayout->DrawOffset().X() = -nRTLOffset; + pSalLayout->DrawOffset().X() = 1 - nRTLOffset; } return pSalLayout; @@ -6918,13 +6918,13 @@ void OutputDevice::ImplDrawText( const Rectangle& rRect, nStyle &= ~TEXT_DRAW_CLIP; } - // Vertikales Alignment + // horizontal text alignment if ( nStyle & TEXT_DRAW_RIGHT ) aPos.X() += nWidth-nTextWidth; else if ( nStyle & TEXT_DRAW_CENTER ) aPos.X() += (nWidth-nTextWidth)/2; - // Font Alignment + // vertical font alignment if ( eAlign == ALIGN_BOTTOM ) aPos.Y() += nTextHeight; else if ( eAlign == ALIGN_BASELINE ) @@ -7700,6 +7700,97 @@ FontMetric OutputDevice::GetFontMetric( const Font& rFont ) const // ----------------------------------------------------------------------- +/** OutputDevice::GetSysFontData + * + * @param nFallbacklevel Fallback font level (0 = best matching font) + * + * Retrieve detailed font information in platform independent structure + * + * @return SystemFontData + **/ +SystemFontData OutputDevice::GetSysFontData(int nFallbacklevel) const +{ + SystemFontData aSysFontData; + aSysFontData.nSize = sizeof(aSysFontData); + + if (!mpGraphics) ImplGetGraphics(); + if (mpGraphics) aSysFontData = mpGraphics->GetSysFontData(nFallbacklevel); + + return aSysFontData; +} + + +// ----------------------------------------------------------------------- + +/** OutputDevice::GetSysTextLayoutData + * + * @param rStartPt Start point of the text + * @param rStr Text string that will be transformed into layout of glyphs + * @param nIndex Position in the string from where layout will be done + * @param nLen Length of the string + * @param pDXAry Custom layout adjustment data + * + * Export finalized glyph layout data as platform independent SystemTextLayoutData + * (see vcl/inc/vcl/sysdata.hxx) + * + * Only parameters rStartPt and rStr are mandatory, the rest is optional + * (default values will be used) + * + * @return SystemTextLayoutData + **/ +SystemTextLayoutData OutputDevice::GetSysTextLayoutData(const Point& rStartPt, const XubString& rStr, xub_StrLen nIndex, xub_StrLen nLen, + const sal_Int32* pDXAry) const +{ + DBG_TRACE( "OutputDevice::GetSysTextLayoutData()" ); + DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice ); + + SystemTextLayoutData aSysLayoutData; + aSysLayoutData.nSize = sizeof(aSysLayoutData); + aSysLayoutData.rGlyphData.reserve( 256 ); + + if ( mpMetaFile ) { + if (pDXAry) + mpMetaFile->AddAction( new MetaTextArrayAction( rStartPt, rStr, pDXAry, nIndex, nLen ) ); + else + mpMetaFile->AddAction( new MetaTextAction( rStartPt, rStr, nIndex, nLen ) ); + } + + if ( !IsDeviceOutputNecessary() ) return aSysLayoutData; + + SalLayout* rLayout = ImplLayout( rStr, nIndex, nLen, rStartPt, 0, pDXAry, true ); + + // setup glyphs + Point aPos; + sal_GlyphId aGlyphId; + int nFallbacklevel = 0; + for( int nStart = 0; rLayout->GetNextGlyphs( 1, &aGlyphId, aPos, nStart ); ) + { + // NOTE: Windows backend is producing unicode chars (ucs4), so on windows, + // ETO_GLYPH_INDEX is unusable, unless extra glyph conversion is made. + + SystemGlyphData aGlyph; + aGlyph.index = static_cast<unsigned long> (aGlyphId & GF_IDXMASK); + aGlyph.x = aPos.X(); + aGlyph.y = aPos.Y(); + aSysLayoutData.rGlyphData.push_back(aGlyph); + + int nLevel = (aGlyphId & GF_FONTMASK) >> GF_FONTSHIFT; + if (nLevel > nFallbacklevel && nLevel < MAX_FALLBACK) + nFallbacklevel = nLevel; + } + + // Get font data + aSysLayoutData.aSysFontData = GetSysFontData(nFallbacklevel); + aSysLayoutData.orientation = rLayout->GetOrientation(); + + rLayout->Release(); + + return aSysLayoutData; +} + +// ----------------------------------------------------------------------- + + long OutputDevice::GetMinKashida() const { DBG_TRACE( "OutputDevice::GetMinKashida()" ); @@ -7827,8 +7918,8 @@ BOOL OutputDevice::GetGlyphBoundRects( const Point& rOrigin, const String& rStr, // ----------------------------------------------------------------------- BOOL OutputDevice::GetTextBoundRect( Rectangle& rRect, - const String& rStr, xub_StrLen nBase, xub_StrLen nIndex, - xub_StrLen nLen ) const + const String& rStr, xub_StrLen nBase, xub_StrLen nIndex, xub_StrLen nLen, + ULONG nLayoutWidth, const sal_Int32* pDXAry ) const { DBG_TRACE( "OutputDevice::GetTextBoundRect()" ); DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice ); @@ -7837,13 +7928,14 @@ BOOL OutputDevice::GetTextBoundRect( Rectangle& rRect, rRect.SetEmpty(); SalLayout* pSalLayout = NULL; + const Point aPoint; // calculate offset when nBase!=nIndex long nXOffset = 0; if( nBase != nIndex ) { xub_StrLen nStart = Min( nBase, nIndex ); xub_StrLen nOfsLen = Max( nBase, nIndex ) - nStart; - pSalLayout = ImplLayout( rStr, nStart, nOfsLen ); + pSalLayout = ImplLayout( rStr, nStart, nOfsLen, aPoint, nLayoutWidth, pDXAry ); if( pSalLayout ) { nXOffset = pSalLayout->GetTextWidth(); @@ -7855,7 +7947,7 @@ BOOL OutputDevice::GetTextBoundRect( Rectangle& rRect, } } - pSalLayout = ImplLayout( rStr, nIndex, nLen ); + pSalLayout = ImplLayout( rStr, nIndex, nLen, aPoint, nLayoutWidth, pDXAry ); Rectangle aPixelRect; if( pSalLayout ) { @@ -7905,7 +7997,7 @@ BOOL OutputDevice::GetTextBoundRect( Rectangle& rRect, aVDev.SetTextAlign( ALIGN_TOP ); // layout the text on the virtual device - pSalLayout = aVDev.ImplLayout( rStr, nIndex, nLen ); + pSalLayout = aVDev.ImplLayout( rStr, nIndex, nLen, aPoint, nLayoutWidth, pDXAry ); if( !pSalLayout ) return false; @@ -8005,7 +8097,7 @@ BOOL OutputDevice::GetTextBoundRect( Rectangle& rRect, BOOL OutputDevice::GetTextOutlines( ::basegfx::B2DPolyPolygonVector& rVector, const String& rStr, xub_StrLen nBase, xub_StrLen nIndex, xub_StrLen nLen, - BOOL bOptimize, const ULONG nTWidth, const sal_Int32* pDXArray ) const + BOOL bOptimize, ULONG nTWidth, const sal_Int32* pDXArray ) const { // the fonts need to be initialized if( mbNewFont ) @@ -8234,7 +8326,7 @@ BOOL OutputDevice::GetTextOutlines( ::basegfx::B2DPolyPolygonVector& rVector, BOOL OutputDevice::GetTextOutlines( PolyPolyVector& rResultVector, const String& rStr, xub_StrLen nBase, xub_StrLen nIndex, - xub_StrLen nLen, BOOL bOptimize, const ULONG nTWidth, const sal_Int32* pDXArray ) const + xub_StrLen nLen, BOOL bOptimize, ULONG nTWidth, const sal_Int32* pDXArray ) const { rResultVector.clear(); @@ -8257,7 +8349,7 @@ BOOL OutputDevice::GetTextOutlines( PolyPolyVector& rResultVector, BOOL OutputDevice::GetTextOutline( PolyPolygon& rPolyPoly, const String& rStr, xub_StrLen nBase, xub_StrLen nIndex, xub_StrLen nLen, - BOOL bOptimize, const ULONG nTWidth, const sal_Int32* pDXArray ) const + BOOL bOptimize, ULONG nTWidth, const sal_Int32* pDXArray ) const { rPolyPoly.Clear(); diff --git a/vcl/source/gdi/outdev6.cxx b/vcl/source/gdi/outdev6.cxx index cee4f475a577..a11e276982f7 100644 --- a/vcl/source/gdi/outdev6.cxx +++ b/vcl/source/gdi/outdev6.cxx @@ -185,14 +185,20 @@ void OutputDevice::DrawTransparent( const basegfx::B2DPolyPolygon& rB2DPolyPoly, if( mbInitFillColor ) ImplInitFillColor(); - if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) && mpGraphics->supportsOperation(OutDevSupport_B2DDraw)) + if((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) + && mpGraphics->supportsOperation(OutDevSupport_B2DDraw) + && ROP_OVERPAINT == GetRasterOp() + && IsFillColor()) { // b2dpolygon support not implemented yet on non-UNX platforms const ::basegfx::B2DHomMatrix aTransform = ImplGetDeviceTransformation(); - ::basegfx::B2DPolyPolygon aB2DPP = rB2DPolyPoly; - aB2DPP.transform( aTransform ); + basegfx::B2DPolyPolygon aB2DPolyPolygon(rB2DPolyPoly); - if( mpGraphics->DrawPolyPolygon( aB2DPP, fTransparency, this ) ) + // transform the polygon and ensure closed + aB2DPolyPolygon.transform(aTransform); + aB2DPolyPolygon.setClosed(true); + + if(mpGraphics->DrawPolyPolygon(aB2DPolyPolygon, fTransparency, this)) { #if 0 // MetaB2DPolyPolygonAction is not implemented yet: diff --git a/vcl/source/gdi/pdfwriter.cxx b/vcl/source/gdi/pdfwriter.cxx index 9293ebf1aab2..4959a505ec41 100644 --- a/vcl/source/gdi/pdfwriter.cxx +++ b/vcl/source/gdi/pdfwriter.cxx @@ -246,9 +246,12 @@ void PDFWriter::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, const void PDFWriter::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, const Point& rSrcPtPixel, const Size& rSrcSizePixel, const BitmapEx& rBitmap ) { + if ( !!rBitmap ) + { BitmapEx aBitmap( rBitmap ); aBitmap.Crop( Rectangle( rSrcPtPixel, rSrcSizePixel ) ); ((PDFWriterImpl*)pImplementation)->drawBitmap( rDestPt, rDestSize, aBitmap ); + } } void PDFWriter::DrawMask( const Point& rDestPt, const Bitmap& rBitmap, const Color& rMaskColor ) diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index 05067ee2d024..25f02a1b2718 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -6,9 +6,6 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: pdfwriter_impl.cxx,v $ - * $Revision: 1.132.72.2 $ - * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify @@ -795,7 +792,8 @@ static void appendNonStrokingColor( const Color& rColor, OStringBuffer& rBuffer } // matrix helper class -namespace vcl +// TODO: use basegfx matrix class instead or derive from it +namespace vcl // TODO: use anonymous namespace to keep this class local { /* for sparse matrices of the form (2D linear transformations) * f[0] f[1] 0 @@ -815,6 +813,7 @@ public: void scale( double sx, double sy ); void rotate( double angle ); void translate( double tx, double ty ); + bool invert(); void append( PDFWriterImpl::PDFPage& rPage, OStringBuffer& rBuffer, Point* pBack = NULL ); @@ -891,6 +890,36 @@ void Matrix3::translate( double tx, double ty ) f[5] += ty; } +bool Matrix3::invert() +{ + // short circuit trivial cases + if( f[1]==f[2] && f[1]==0.0 && f[0]==f[3] && f[0]==1.0 ) + { + f[4] = -f[4]; + f[5] = -f[5]; + return true; + } + + // check determinant + const double fDet = f[0]*f[3]-f[1]*f[2]; + if( fDet == 0.0 ) + return false; + + // invert the matrix + double fn[6]; + fn[0] = +f[3] / fDet; + fn[1] = -f[1] / fDet; + fn[2] = -f[2] / fDet; + fn[3] = +f[0] / fDet; + + // apply inversion to translation + fn[4] = -(f[4]*fn[0] + f[5]*fn[2]); + fn[5] = -(f[4]*fn[1] + f[5]*fn[3]); + + set( fn ); + return true; +} + void Matrix3::append( PDFWriterImpl::PDFPage& rPage, OStringBuffer& rBuffer, Point* pBack ) { appendDouble( f[0], rBuffer ); @@ -1930,7 +1959,7 @@ static ImplDevFontAttributes GetDevFontAttributes( const PDFWriterImpl::BuiltinF aDFA.maName = String::CreateFromAscii( rBuiltin.m_pName ); aDFA.maStyleName = String::CreateFromAscii( rBuiltin.m_pStyleName ); aDFA.meFamily = rBuiltin.m_eFamily; - aDFA.mbSymbolFlag = (rBuiltin.m_eCharSet == RTL_TEXTENCODING_SYMBOL); + aDFA.mbSymbolFlag = (rBuiltin.m_eCharSet != RTL_TEXTENCODING_MS_1252 ); aDFA.mePitch = rBuiltin.m_ePitch; aDFA.meWeight = rBuiltin.m_eWeight; aDFA.meItalic = rBuiltin.m_eItalic; @@ -2033,7 +2062,7 @@ PDFSalLayout::PDFSalLayout( PDFWriterImpl& rPDFWriterImpl, mrBuiltinFont( rBuiltinFont ), mnPixelPerEM( nPixelPerEM ) { - mbIsSymbolFont = (rBuiltinFont.m_eCharSet == RTL_TEXTENCODING_SYMBOL); + mbIsSymbolFont = (rBuiltinFont.m_eCharSet != RTL_TEXTENCODING_MS_1252); SetOrientation( nOrientation ); } @@ -2045,41 +2074,35 @@ bool PDFSalLayout::LayoutText( ImplLayoutArgs& rArgs ) SetText( aText ); SetUnitsPerPixel( 1000 ); - rtl_UnicodeToTextConverter aConv = rtl_createTextToUnicodeConverter( RTL_TEXTENCODING_MS_1252 ); + rtl_UnicodeToTextConverter aConv = rtl_createTextToUnicodeConverter( mrBuiltinFont.m_eCharSet ); Point aNewPos( 0, 0 ); bool bRightToLeft; for( int nCharPos = -1; rArgs.GetNextPos( &nCharPos, &bRightToLeft ); ) { // TODO: handle unicode surrogates - // on the other hand builtin fonts don't support them anyway + // on the other hand the PDF builtin fonts don't support them anyway sal_Unicode cChar = rArgs.mpStr[ nCharPos ]; if( bRightToLeft ) cChar = static_cast<sal_Unicode>(GetMirroredChar( cChar )); - if( cChar & 0xff00 ) + if( 1 ) // TODO: shortcut for ASCII? { - // some characters can be used by conversion - if( (cChar >= 0xf000) && mbIsSymbolFont ) - cChar -= 0xf000; - else - { - sal_Char aBuf[4]; - sal_uInt32 nInfo; - sal_Size nSrcCvtChars; - - sal_Size nConv = rtl_convertUnicodeToText( aConv, - NULL, - &cChar, 1, - aBuf, 1, - RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR, - &nInfo, &nSrcCvtChars ); - // check whether conversion was possible - // else fallback font is needed as the standard fonts - // are handled via WinAnsi encoding - if( nConv > 0 ) - cChar = ((sal_Unicode)aBuf[0]) & 0x00ff; - } + sal_Char aBuf[4]; + sal_uInt32 nInfo; + sal_Size nSrcCvtChars; + + sal_Size nConv = rtl_convertUnicodeToText( aConv, + NULL, + &cChar, 1, + aBuf, sizeof(aBuf)/sizeof(*aBuf), + RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR, + &nInfo, &nSrcCvtChars ); + // check whether conversion was possible + // else fallback font is needed as the standard fonts + // are handled via WinAnsi encoding + if( nConv > 0 ) + cChar = ((sal_Unicode)aBuf[0]) & 0x00ff; } if( cChar & 0xff00 ) { @@ -2088,7 +2111,7 @@ bool PDFSalLayout::LayoutText( ImplLayoutArgs& rArgs ) } long nGlyphWidth = (long)mrBuiltinFont.m_aWidths[cChar] * mnPixelPerEM; - long nGlyphFlags = (nGlyphWidth > 0) ? 0 : GlyphItem::IS_IN_CLUSTER; + long nGlyphFlags = 0; // builtin fonts don't have diacritic glyphs if( bRightToLeft ) nGlyphFlags |= GlyphItem::IS_RTL_GLYPH; // TODO: get kerning from builtin fonts @@ -2782,7 +2805,7 @@ sal_Int32 PDFWriterImpl::emitBuiltinFont( const ImplFontData* pFont, sal_Int32 n "<</Type/Font/Subtype/Type1/BaseFont/" ); appendName( pBuiltinFont->m_pPSName, aLine ); aLine.append( "\n" ); - if( pBuiltinFont->m_eCharSet != RTL_TEXTENCODING_SYMBOL ) + if( pBuiltinFont->m_eCharSet == RTL_TEXTENCODING_MS_1252 ) aLine.append( "/Encoding/WinAnsiEncoding\n" ); aLine.append( ">>\nendobj\n\n" ); CHECK_RETURN( writeBuffer( aLine.getStr(), aLine.getLength() ) ); @@ -6644,6 +6667,7 @@ void PDFWriterImpl::drawHorizontalGlyphs( // subsequent use of that operator would move // the texline matrix relative to what was set before // making use of that would drive us into rounding issues + Matrix3 aMat; if( nRun == 0 && fAngle == 0.0 && fXScale == 1.0 && fSkew == 0.0 ) { m_aPages.back().appendPoint( aCurPos, rLine, false ); @@ -6651,7 +6675,6 @@ void PDFWriterImpl::drawHorizontalGlyphs( } else { - Matrix3 aMat; if( fSkew != 0.0 ) aMat.skew( 0.0, fSkew ); aMat.scale( fXScale, 1.0 ); @@ -6674,15 +6697,17 @@ void PDFWriterImpl::drawHorizontalGlyphs( appendHex( rGlyphs[nBeginRun].m_nMappedGlyphId, aKernedLine ); appendHex( rGlyphs[nBeginRun].m_nMappedGlyphId, aUnkernedLine ); + aMat.invert(); bool bNeedKern = false; for( sal_uInt32 nPos = nBeginRun+1; nPos < aRunEnds[nRun]; nPos++ ) { appendHex( rGlyphs[nPos].m_nMappedGlyphId, aUnkernedLine ); - // check for adjustment - double fTheoreticalGlyphWidth = rGlyphs[nPos].m_aPos.X() - rGlyphs[nPos-1].m_aPos.X(); - fTheoreticalGlyphWidth = fabs( fTheoreticalGlyphWidth ); // #i100522# workaround until #i87686# gets fixed - fTheoreticalGlyphWidth = 1000.0 * fTheoreticalGlyphWidth / fXScale / double(nPixelFontHeight); - sal_Int32 nAdjustment = rGlyphs[nPos-1].m_nNativeWidth - sal_Int32(fTheoreticalGlyphWidth+0.5); + // check if glyph advance matches with the width of the previous glyph, else adjust + const Point aThisPos = aMat.transform( rGlyphs[nPos].m_aPos ); + const Point aPrevPos = aMat.transform( rGlyphs[nPos-1].m_aPos ); + double fAdvance = aThisPos.X() - aPrevPos.X(); + fAdvance *= 1000.0 / (fXScale * nPixelFontHeight); + const sal_Int32 nAdjustment = rGlyphs[nPos-1].m_nNativeWidth - sal_Int32(fAdvance+0.5); if( nAdjustment != 0 ) { bNeedKern = true; diff --git a/vcl/source/gdi/pngread.cxx b/vcl/source/gdi/pngread.cxx index 56c9025018b9..834116a9ffe9 100644 --- a/vcl/source/gdi/pngread.cxx +++ b/vcl/source/gdi/pngread.cxx @@ -156,6 +156,7 @@ private: BOOL mbIDAT; // TRUE if finished with enough IDAT chunks BOOL mbGamma; // TRUE if Gamma Correction available BOOL mbpHYs; // TRUE if pysical size of pixel available + sal_Bool mbIgnoreGammaChunk; bool ReadNextChunk(); void ReadRemainingChunks(); @@ -186,6 +187,7 @@ public: BitmapEx GetBitmapEx( const Size& rPreviewSizeHint ); const std::vector< PNGReader::ChunkData >& GetAllChunks(); + void SetIgnoreGammaChunk( sal_Bool bIgnore ){ mbIgnoreGammaChunk = bIgnore; }; }; // ------------------------------------------------------------------------------ @@ -205,8 +207,9 @@ PNGReaderImpl::PNGReaderImpl( SvStream& rPNGStream ) mbzCodecInUse ( sal_False ), mbStatus( TRUE), mbIDAT( FALSE ), - mbGamma ( sal_False ), - mbpHYs ( sal_False ) + mbGamma ( sal_False ), + mbpHYs ( sal_False ), + mbIgnoreGammaChunk ( sal_False ) { // prepare the PNG data stream mnOrigStreamMode = mrPNGStream.GetNumberFormatInt(); @@ -382,9 +385,9 @@ BitmapEx PNGReaderImpl::GetBitmapEx( const Size& rPreviewSizeHint ) break; case PNGCHUNK_gAMA : // the gamma chunk must precede - { - if ( mbIDAT == FALSE ) // the 'IDAT' and also the - ImplGetGamma(); // 'PLTE'(if available ) + { // the 'IDAT' and also the 'PLTE'(if available ) + if ( !mbIgnoreGammaChunk && ( mbIDAT == FALSE ) ) + ImplGetGamma(); } break; @@ -1568,4 +1571,12 @@ const std::vector< vcl::PNGReader::ChunkData >& PNGReader::GetChunks() const return mpImpl->GetAllChunks(); } +// ------------------------------------------------------------------------ + +void PNGReader::SetIgnoreGammaChunk( sal_Bool b ) +{ + mpImpl->SetIgnoreGammaChunk( b ); +} + + } // namespace vcl diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx index 0a5fbb189885..937d966b3978 100644 --- a/vcl/source/gdi/print.cxx +++ b/vcl/source/gdi/print.cxx @@ -70,44 +70,22 @@ int nImplSysDialog = 0; // ======================================================================= -#define PAPER_SLOPPY 50 // Bigger sloppy value as PaperInfo uses only mm accuracy! -#define PAPER_COUNT 9 - -// Use more accurate metric values for Letter/Legal/Tabloid paper formats -static long ImplPaperFormats[PAPER_COUNT*2] = -{ - 29700, 42000, // A3 - 21000, 29700, // A4 - 14800, 21000, // A5 - 25000, 35300, // B4 - 17600, 25000, // B5 - 21590, 27940, // Letter - 21590, 35570, // Legal - 27960, 43130, // Tabloid - 0, 0 // USER -}; - -// ======================================================================= - -Paper ImplGetPaperFormat( long nWidth100thMM, long nHeight100thMM ) +namespace { - USHORT i; - - for( i = 0; i < PAPER_COUNT; i++ ) + static Paper ImplGetPaperFormat( long nWidth100thMM, long nHeight100thMM ) { - if ( (ImplPaperFormats[i*2] == nWidth100thMM) && - (ImplPaperFormats[i*2+1] == nHeight100thMM) ) - return (Paper)i; + PaperInfo aInfo(nWidth100thMM, nHeight100thMM); + aInfo.doSloppyFit(); + return aInfo.getPaper(); } - for( i = 0; i < PAPER_COUNT; i++ ) +// ----------------------------------------------------------------------- + + static const PaperInfo& ImplGetEmptyPaper() { - if ( (Abs( ImplPaperFormats[i*2]-nWidth100thMM ) < PAPER_SLOPPY) && - (Abs( ImplPaperFormats[i*2+1]-nHeight100thMM ) < PAPER_SLOPPY) ) - return (Paper)i; + static PaperInfo aInfo(PAPER_USER); + return aInfo; } - - return PAPER_USER; } // ======================================================================= @@ -121,8 +99,9 @@ void ImplUpdateJobSetupPaper( JobSetup& rJobSetup ) if ( pConstData->mePaperFormat != PAPER_USER ) { ImplJobSetup* pData = rJobSetup.ImplGetData(); - pData->mnPaperWidth = ImplPaperFormats[((USHORT)pConstData->mePaperFormat)*2]; - pData->mnPaperHeight = ImplPaperFormats[((USHORT)pConstData->mePaperFormat)*2+1]; + PaperInfo aInfo(pConstData->mePaperFormat); + pData->mnPaperWidth = aInfo.getWidth(); + pData->mnPaperHeight = aInfo.getHeight(); } } else if ( pConstData->mePaperFormat == PAPER_USER ) @@ -997,17 +976,6 @@ USHORT Printer::GetPaperBin() const // ----------------------------------------------------------------------- -static BOOL ImplPaperSizeEqual( unsigned long nPaperWidth1, unsigned long nPaperHeight1, - unsigned long nPaperWidth2, unsigned long nPaperHeight2 ) -{ - const long PAPER_ACCURACY = 1; // 1.0 mm accuracy - - return ( (Abs( long(nPaperWidth1)-long(nPaperWidth2) ) <= PAPER_ACCURACY ) && - (Abs( long(nPaperHeight1)-long(nPaperHeight2) ) <= PAPER_ACCURACY ) ); -} - -// ----------------------------------------------------------------------- - // Map user paper format to a available printer paper formats void Printer::ImplFindPaperFormatForUserSize( JobSetup& aJobSetup ) { @@ -1016,21 +984,17 @@ void Printer::ImplFindPaperFormatForUserSize( JobSetup& aJobSetup ) int nLandscapeAngle = GetLandscapeAngle(); int nPaperCount = GetPaperInfoCount(); - unsigned long nPaperWidth = pSetupData->mnPaperWidth/100; - unsigned long nPaperHeight = pSetupData->mnPaperHeight/100; + PaperInfo aInfo(pSetupData->mnPaperWidth, pSetupData->mnPaperHeight); // Alle Papierformate vergleichen und ein passendes raussuchen for ( int i = 0; i < nPaperCount; i++ ) { - const vcl::PaperInfo& rPaperInfo = GetPaperInfo( i ); + const PaperInfo& rPaperInfo = GetPaperInfo( i ); - if ( ImplPaperSizeEqual( rPaperInfo.m_nPaperWidth, - rPaperInfo.m_nPaperHeight, - nPaperWidth, - nPaperHeight ) ) + if ( aInfo.sloppyEqual(rPaperInfo) ) { - pSetupData->mePaperFormat = ImplGetPaperFormat( rPaperInfo.m_nPaperWidth*100, - rPaperInfo.m_nPaperHeight*100 ); + pSetupData->mePaperFormat = ImplGetPaperFormat( rPaperInfo.getWidth(), + rPaperInfo.getHeight() ); break; } } @@ -1042,17 +1006,17 @@ void Printer::ImplFindPaperFormatForUserSize( JobSetup& aJobSetup ) nLandscapeAngle != 0 && HasSupport( SUPPORT_SET_ORIENTATION )) { + + PaperInfo aRotatedInfo(pSetupData->mnPaperHeight, pSetupData->mnPaperWidth); + for ( int i = 0; i < nPaperCount; i++ ) { - const vcl::PaperInfo& rPaperInfo = GetPaperInfo( i ); + const PaperInfo& rPaperInfo = GetPaperInfo( i ); - if ( ImplPaperSizeEqual( rPaperInfo.m_nPaperWidth, - rPaperInfo.m_nPaperHeight, - nPaperHeight, - nPaperWidth )) + if ( aRotatedInfo.sloppyEqual( rPaperInfo ) ) { - pSetupData->mePaperFormat = ImplGetPaperFormat( rPaperInfo.m_nPaperWidth*100, - rPaperInfo.m_nPaperHeight*100 ); + pSetupData->mePaperFormat = ImplGetPaperFormat( rPaperInfo.getWidth(), + rPaperInfo.getHeight() ); break; } } @@ -1073,8 +1037,9 @@ BOOL Printer::SetPaper( Paper ePaper ) pSetupData->mePaperFormat = ePaper; if ( ePaper != PAPER_USER ) { - pSetupData->mnPaperWidth = ImplPaperFormats[((USHORT)ePaper)*2]; - pSetupData->mnPaperHeight = ImplPaperFormats[((USHORT)ePaper)*2+1]; + PaperInfo aInfo(ePaper); + pSetupData->mnPaperWidth = aInfo.getWidth(); + pSetupData->mnPaperHeight = aInfo.getHeight(); } if ( IsDisplayPrinter() ) @@ -1110,9 +1075,8 @@ BOOL Printer::SetPaperSizeUser( const Size& rSize ) if ( mbInPrintPage ) return FALSE; - MapMode aMap100thMM( MAP_100TH_MM ); Size aPixSize = LogicToPixel( rSize ); - Size aPageSize = PixelToLogic( aPixSize, aMap100thMM ); + Size aPageSize = PixelToLogic( aPixSize, MAP_100TH_MM ); if ( (maJobSetup.ImplGetConstData()->mePaperFormat != PAPER_USER) || (maJobSetup.ImplGetConstData()->mnPaperWidth != aPageSize.Width()) || (maJobSetup.ImplGetConstData()->mnPaperHeight != aPageSize.Height()) ) @@ -1150,15 +1114,6 @@ BOOL Printer::SetPaperSizeUser( const Size& rSize ) return TRUE; } - -// ----------------------------------------------------------------------- - -static const vcl::PaperInfo& ImplGetEmptyPaper() -{ - static vcl::PaperInfo aInfo; - return aInfo; -} - // ----------------------------------------------------------------------- int Printer::GetPaperInfoCount() const @@ -1172,7 +1127,7 @@ int Printer::GetPaperInfoCount() const // ----------------------------------------------------------------------- -const vcl::PaperInfo& Printer::GetPaperInfo( int nPaper ) const +const PaperInfo& Printer::GetPaperInfo( int nPaper ) const { if( ! mpInfoPrinter ) return ImplGetEmptyPaper(); @@ -1185,17 +1140,6 @@ const vcl::PaperInfo& Printer::GetPaperInfo( int nPaper ) const // ----------------------------------------------------------------------- -BOOL Printer::SetPaperFromInfo( const vcl::PaperInfo& rInfo ) -{ - MapMode aMap( MAP_MM ); - Size aSize( rInfo.m_nPaperWidth, rInfo.m_nPaperHeight ); - aSize = LogicToPixel( aSize, aMap ); - aSize = PixelToLogic( aSize ); - return SetPaperSizeUser( aSize ); -} - -// ----------------------------------------------------------------------- - DuplexMode Printer::GetDuplexMode() const { return mpInfoPrinter ? mpInfoPrinter->GetDuplexMode( maJobSetup.ImplGetConstData() ) : DUPLEX_UNKNOWN; @@ -1210,38 +1154,6 @@ int Printer::GetLandscapeAngle() const // ----------------------------------------------------------------------- -const vcl::PaperInfo& Printer::GetCurrentPaperInfo() const -{ - if( ! mpInfoPrinter ) - return ImplGetEmptyPaper(); - if( ! mpInfoPrinter->m_bPapersInit ) - mpInfoPrinter->InitPaperFormats( maJobSetup.ImplGetConstData() ); - if( mpInfoPrinter->m_aPaperFormats.empty() ) - return ImplGetEmptyPaper(); - - MapMode aMap( MAP_MM ); - Size aSize = PixelToLogic( GetPaperSizePixel(), aMap ); - int nMatch = -1; - long nDelta = 0; - for( unsigned int i = 0; i < mpInfoPrinter->m_aPaperFormats.size(); i++ ) - { - long nW = mpInfoPrinter->m_aPaperFormats[i].m_nPaperWidth; - long nH = mpInfoPrinter->m_aPaperFormats[i].m_nPaperHeight; - if( nW >= (aSize.Width()-1) && nH >= (aSize.Height()-1) ) - { - long nCurDelta = (nW - aSize.Width())*(nW - aSize.Width()) + (nH - aSize.Height() )*(nH - aSize.Height() ); - if( nMatch == -1 || nCurDelta < nDelta ) - { - nMatch = i; - nDelta = nCurDelta; - } - } - } - return nMatch != -1 ? mpInfoPrinter->m_aPaperFormats[nMatch] : ImplGetEmptyPaper(); -} - -// ----------------------------------------------------------------------- - Paper Printer::GetPaper() const { return maJobSetup.ImplGetConstData()->mePaperFormat; diff --git a/vcl/source/glyphs/gcach_ftyp.cxx b/vcl/source/glyphs/gcach_ftyp.cxx index d149ee26284f..591557eaa091 100644 --- a/vcl/source/glyphs/gcach_ftyp.cxx +++ b/vcl/source/glyphs/gcach_ftyp.cxx @@ -1058,7 +1058,7 @@ static inline void SplitGlyphFlags( const FreetypeServerFont& rFont, int& nGlyph // ----------------------------------------------------------------------- int FreetypeServerFont::ApplyGlyphTransform( int nGlyphFlags, - FT_GlyphRec_* pGlyphFT, bool bForBitmapProcessing ) const + FT_Glyph pGlyphFT, bool bForBitmapProcessing ) const { int nAngle = GetFontSelData().mnOrientation; // shortcut most common case @@ -1130,9 +1130,9 @@ int FreetypeServerFont::ApplyGlyphTransform( int nGlyphFlags, else { // FT<=2005 ignores transforms for bitmaps, so do it manually - FT_BitmapGlyph& rBmpGlyphFT = reinterpret_cast<FT_BitmapGlyph&>(pGlyphFT); - rBmpGlyphFT->left += (aVector.x + 32) >> 6; - rBmpGlyphFT->top += (aVector.y + 32) >> 6; + FT_BitmapGlyph pBmpGlyphFT = reinterpret_cast<FT_BitmapGlyph>(pGlyphFT); + pBmpGlyphFT->left += (aVector.x + 32) >> 6; + pBmpGlyphFT->top += (aVector.y + 32) >> 6; } return nAngle; @@ -1440,12 +1440,12 @@ bool FreetypeServerFont::GetGlyphBitmap1( int nGlyphIndex, RawBitmap& rRawBitmap } } - const FT_BitmapGlyph& rBmpGlyphFT = reinterpret_cast<const FT_BitmapGlyph&>(pGlyphFT); + const FT_BitmapGlyph pBmpGlyphFT = reinterpret_cast<const FT_BitmapGlyph>(pGlyphFT); // NOTE: autohinting in FT<=2.0.2 miscalculates the offsets below by +-1 - rRawBitmap.mnXOffset = +rBmpGlyphFT->left; - rRawBitmap.mnYOffset = -rBmpGlyphFT->top; + rRawBitmap.mnXOffset = +pBmpGlyphFT->left; + rRawBitmap.mnYOffset = -pBmpGlyphFT->top; - const FT_Bitmap& rBitmapFT = rBmpGlyphFT->bitmap; + const FT_Bitmap& rBitmapFT = pBmpGlyphFT->bitmap; rRawBitmap.mnHeight = rBitmapFT.rows; rRawBitmap.mnBitCount = 1; if( mbArtBold && !pFTEmbolden ) @@ -1595,11 +1595,11 @@ bool FreetypeServerFont::GetGlyphBitmap8( int nGlyphIndex, RawBitmap& rRawBitmap } } - const FT_BitmapGlyph& rBmpGlyphFT = reinterpret_cast<const FT_BitmapGlyph&>(pGlyphFT); - rRawBitmap.mnXOffset = +rBmpGlyphFT->left; - rRawBitmap.mnYOffset = -rBmpGlyphFT->top; + const FT_BitmapGlyph pBmpGlyphFT = reinterpret_cast<const FT_BitmapGlyph>(pGlyphFT); + rRawBitmap.mnXOffset = +pBmpGlyphFT->left; + rRawBitmap.mnYOffset = -pBmpGlyphFT->top; - const FT_Bitmap& rBitmapFT = rBmpGlyphFT->bitmap; + const FT_Bitmap& rBitmapFT = pBmpGlyphFT->bitmap; rRawBitmap.mnHeight = rBitmapFT.rows; rRawBitmap.mnWidth = rBitmapFT.width; rRawBitmap.mnBitCount = 8; diff --git a/vcl/source/window/accel.cxx b/vcl/source/window/accel.cxx index 7dfc70c0fe32..34e831d2daf8 100644 --- a/vcl/source/window/accel.cxx +++ b/vcl/source/window/accel.cxx @@ -231,7 +231,8 @@ void Accelerator::ImplInsertAccel( USHORT nItemId, const KeyCode& rKeyCode, USHORT nCode1; USHORT nCode2; USHORT nCode3; - ImplGetKeyCode( rKeyCode.GetFunction(), nCode1, nCode2, nCode3 ); + USHORT nCode4; + ImplGetKeyCode( rKeyCode.GetFunction(), nCode1, nCode2, nCode3, nCode4 ); if ( nCode1 ) ImplInsertAccel( nItemId, KeyCode( nCode1, nCode1 ), bEnable, pAutoAccel ); if ( nCode2 ) diff --git a/vcl/source/window/dlgctrl.cxx b/vcl/source/window/dlgctrl.cxx index 1e9a3350c88e..392c2ceaa478 100644 --- a/vcl/source/window/dlgctrl.cxx +++ b/vcl/source/window/dlgctrl.cxx @@ -1166,7 +1166,7 @@ KeyEvent Window::GetActivationKey() const nCode = KEY_A + (nAccel-'A'); else if( nAccel >= '0' && nAccel <= '9' ) nCode = KEY_0 + (nAccel-'0'); - KeyCode aKeyCode( nCode, FALSE, FALSE, TRUE ); + KeyCode aKeyCode( nCode, FALSE, FALSE, TRUE, FALSE ); aKeyEvent = KeyEvent( nAccel, aKeyCode ); } return aKeyEvent; diff --git a/vcl/source/window/keycod.cxx b/vcl/source/window/keycod.cxx index 042eac37aa41..21030b9422fb 100644 --- a/vcl/source/window/keycod.cxx +++ b/vcl/source/window/keycod.cxx @@ -49,38 +49,39 @@ // ======================================================================= -static USHORT aImplKeyFuncTab[(KEYFUNC_FRONT+1)*3] = +static USHORT aImplKeyFuncTab[(KEYFUNC_FRONT+1)*4] = { - 0, 0, 0, // KEYFUNC_DONTKNOW - KEY_N | KEY_MOD1, 0, 0, // KEYFUNC_NEW - KEY_O | KEY_MOD1, KEY_OPEN, 0, // KEYFUNC_OPEN - KEY_S | KEY_MOD1, 0, 0, // KEYFUNC_SAVE - 0, 0, 0, // KEYFUNC_SAVEAS - KEY_P | KEY_MOD1, 0, 0, // KEYFUNC_PRINT - KEY_W | KEY_MOD1, KEY_F4 | KEY_MOD1, 0, // KEYFUNC_CLOSE - KEY_Q | KEY_MOD1, KEY_F4 | KEY_MOD2, 0, // KEYFUNC_QUIT - KEY_X | KEY_MOD1, KEY_DELETE | KEY_SHIFT, KEY_CUT, // KEYFUNC_CUT - KEY_C | KEY_MOD1, KEY_INSERT | KEY_MOD1, KEY_COPY, // KEYFUNC_COPY - KEY_V | KEY_MOD1, KEY_INSERT | KEY_SHIFT, KEY_PASTE, // KEYFUNC_PASTE - KEY_Z | KEY_MOD1, KEY_BACKSPACE | KEY_MOD2, KEY_UNDO, // KEYFUNC_UNDO - 0, 0, 0, // KEYFUNC_REDO - KEY_DELETE, 0, 0, // KEYFUNC_DELETE - KEY_REPEAT, 0, 0, // KEYFUNC_REPEAT - KEY_F | KEY_MOD1, KEY_FIND, 0, // KEYFUNC_FIND - KEY_F | KEY_SHIFT | KEY_MOD1, KEY_SHIFT | KEY_FIND, 0, // KEYFUNC_FINDBACKWARD - KEY_RETURN | KEY_MOD2, 0, 0, // KEYFUNC_PROPERTIES - 0, 0, 0 // KEYFUNC_FRONT + 0, 0, 0, 0, // KEYFUNC_DONTKNOW + KEY_N | KEY_MOD1, 0, 0, 0, // KEYFUNC_NEW + KEY_O | KEY_MOD1, KEY_OPEN, 0, 0, // KEYFUNC_OPEN + KEY_S | KEY_MOD1, 0, 0, 0, // KEYFUNC_SAVE + 0, 0, 0, 0, // KEYFUNC_SAVEAS + KEY_P | KEY_MOD1, 0, 0, 0, // KEYFUNC_PRINT + KEY_W | KEY_MOD1, KEY_F4 | KEY_MOD1, 0, 0, // KEYFUNC_CLOSE + KEY_Q | KEY_MOD1, KEY_F4 | KEY_MOD2, 0, 0, // KEYFUNC_QUIT + KEY_X | KEY_MOD1, KEY_DELETE | KEY_SHIFT, KEY_CUT, 0, // KEYFUNC_CUT + KEY_C | KEY_MOD1, KEY_INSERT | KEY_MOD1, KEY_COPY, 0, // KEYFUNC_COPY + KEY_V | KEY_MOD1, KEY_INSERT | KEY_SHIFT, KEY_PASTE, 0, // KEYFUNC_PASTE + KEY_Z | KEY_MOD1, KEY_BACKSPACE | KEY_MOD2, KEY_UNDO, 0, // KEYFUNC_UNDO + 0, 0, 0, 0, // KEYFUNC_REDO + KEY_DELETE, 0, 0, 0, // KEYFUNC_DELETE + KEY_REPEAT, 0, 0, 0, // KEYFUNC_REPEAT + KEY_F | KEY_MOD1, KEY_FIND, 0, 0, // KEYFUNC_FIND + KEY_F | KEY_SHIFT | KEY_MOD1, KEY_SHIFT | KEY_FIND, 0, 0, // KEYFUNC_FINDBACKWARD + KEY_RETURN | KEY_MOD2, 0, 0, 0, // KEYFUNC_PROPERTIES + 0, 0, 0, 0 // KEYFUNC_FRONT }; // ----------------------------------------------------------------------- -void ImplGetKeyCode( KeyFuncType eFunc, USHORT& rCode1, USHORT& rCode2, USHORT& rCode3 ) +void ImplGetKeyCode( KeyFuncType eFunc, USHORT& rCode1, USHORT& rCode2, USHORT& rCode3, USHORT& rCode4 ) { USHORT nIndex = (USHORT)eFunc; - nIndex *= 3; + nIndex *= 4; rCode1 = aImplKeyFuncTab[nIndex]; rCode2 = aImplKeyFuncTab[nIndex+1]; rCode3 = aImplKeyFuncTab[nIndex+2]; + rCode4 = aImplKeyFuncTab[nIndex+3]; } // ======================================================================= @@ -88,7 +89,7 @@ void ImplGetKeyCode( KeyFuncType eFunc, USHORT& rCode1, USHORT& rCode2, USHORT& KeyCode::KeyCode( KeyFuncType eFunction ) { USHORT nDummy; - ImplGetKeyCode( eFunction, nCode, nDummy, nDummy ); + ImplGetKeyCode( eFunction, nCode, nDummy, nDummy, nDummy ); eFunc = eFunction; } @@ -111,7 +112,7 @@ KeyCode::KeyCode( const ResId& rResId ) if ( eFunc != KEYFUNC_DONTKNOW ) { USHORT nDummy; - ImplGetKeyCode( eFunc, nCode, nDummy, nDummy ); + ImplGetKeyCode( eFunc, nCode, nDummy, nDummy, nDummy ); } else nCode = sal::static_int_cast<USHORT>(nKeyCode | nModifier); @@ -151,8 +152,9 @@ KeyFuncType KeyCode::GetFunction() const USHORT nKeyCode1; USHORT nKeyCode2; USHORT nKeyCode3; - ImplGetKeyCode( (KeyFuncType)i, nKeyCode1, nKeyCode2, nKeyCode3 ); - if ( (nCompCode == nKeyCode1) || (nCompCode == nKeyCode2) || (nCompCode == nKeyCode3) ) + USHORT nKeyCode4; + ImplGetKeyCode( (KeyFuncType)i, nKeyCode1, nKeyCode2, nKeyCode3, nKeyCode4 ); + if ( (nCompCode == nKeyCode1) || (nCompCode == nKeyCode2) || (nCompCode == nKeyCode3) || (nCompCode == nKeyCode4) ) return (KeyFuncType)i; } } diff --git a/vcl/source/window/keyevent.cxx b/vcl/source/window/keyevent.cxx index e3a92194040f..e8474c6efa5d 100644 --- a/vcl/source/window/keyevent.cxx +++ b/vcl/source/window/keyevent.cxx @@ -49,7 +49,8 @@ KeyEvent::KeyEvent( const ::com::sun::star::awt::KeyEvent& rEvent ) rEvent.KeyCode, (rEvent.Modifiers & ::com::sun::star::awt::KeyModifier::SHIFT) != 0, (rEvent.Modifiers & ::com::sun::star::awt::KeyModifier::MOD1) != 0, - (rEvent.Modifiers & ::com::sun::star::awt::KeyModifier::MOD2) != 0 ); + (rEvent.Modifiers & ::com::sun::star::awt::KeyModifier::MOD2) != 0, + (rEvent.Modifiers & ::com::sun::star::awt::KeyModifier::MOD3) != 0); mnRepeat = 0; mnCharCode = rEvent.KeyChar; } @@ -64,6 +65,8 @@ void KeyEvent::InitKeyEvent( ::com::sun::star::awt::KeyEvent& rEvent ) const rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD1; if( GetKeyCode().IsMod2() ) rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD2; + if( GetKeyCode().IsMod3() ) + rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD3; rEvent.KeyCode = GetKeyCode().GetCode(); rEvent.KeyChar = GetCharCode(); diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx index adbc2a8de06e..ccf75dbd59b3 100644 --- a/vcl/source/window/menu.cxx +++ b/vcl/source/window/menu.cxx @@ -2487,23 +2487,8 @@ static void ImplPaintCheckBackground( Window* i_pWindow, const Rectangle& i_rRec if( ! bNativeOk ) { const StyleSettings& rSettings = i_pWindow->GetSettings().GetStyleSettings(); - if( i_bHighlight ) - { - i_pWindow->Push( PUSH_ALL ); - Color aCol = rSettings.GetMenuHighlightTextColor(); - i_pWindow->SetFillColor( rSettings.GetMenuHighlightTextColor() ); - if( aCol.IsDark() ) - aCol.IncreaseLuminance( 128 ); - else - aCol.DecreaseLuminance( 128 ); - i_pWindow->SetLineColor( aCol ); - Polygon aPoly( i_rRect ); - PolyPolygon aPolyPoly( aPoly ); - i_pWindow->DrawTransparent( aPolyPoly, 20 ); - i_pWindow->Pop(); - } - else - i_pWindow->DrawSelectionBackground( i_rRect, 1, FALSE, TRUE, FALSE ); + Color aColor( i_bHighlight ? rSettings.GetMenuHighlightTextColor() : rSettings.GetHighlightColor() ); + i_pWindow->DrawSelectionBackground( i_rRect, 0, i_bHighlight, TRUE, FALSE, 2, NULL, &aColor ); } } @@ -3495,11 +3480,6 @@ USHORT PopupMenu::Execute( Window* pExecWindow, const Rectangle& rRect, USHORT n USHORT PopupMenu::ImplExecute( Window* pW, const Rectangle& rRect, ULONG nPopupModeFlags, Menu* pSFrom, BOOL bPreSelectFirst ) { - - // #59614# Mit TH abgesprochen dass die ASSERTION raus kommt, - // weil es evtl. legitim ist... -// DBG_ASSERT( !PopupMenu::IsInExecute() || pSFrom, "PopupMenu::Execute() called in PopupMenu::Execute()" ); - if ( !pSFrom && ( PopupMenu::IsInExecute() || !GetItemCount() ) ) return 0; @@ -3675,8 +3655,16 @@ USHORT PopupMenu::ImplExecute( Window* pW, const Rectangle& rRect, ULONG nPopupM { pWin->ImplAddDel( &aDelData ); + ImplDelData aModalWinDel; + pW->ImplAddDel( &aModalWinDel ); + pW->ImplIncModalCount(); + pWin->Execute(); + DBG_ASSERT( ! aModalWinDel.IsDead(), "window for popup died, modal count incorrect !" ); + if( ! aModalWinDel.IsDead() ) + pW->ImplDecModalCount(); + if ( !aDelData.IsDelete() ) pWin->ImplRemoveDel( &aDelData ); else @@ -5056,11 +5044,11 @@ MenuBarWindow::MenuBarWindow( Window* pParent ) : if( pResMgr ) { - Bitmap aBitmap( ResId( SV_RESID_BITMAP_CLOSEDOC, *pResMgr ) ); - Bitmap aBitmapHC( ResId( SV_RESID_BITMAP_CLOSEDOCHC, *pResMgr ) ); + BitmapEx aBitmap( ResId( SV_RESID_BITMAP_CLOSEDOC, *pResMgr ) ); + BitmapEx aBitmapHC( ResId( SV_RESID_BITMAP_CLOSEDOCHC, *pResMgr ) ); - aCloser.maImage = Image( aBitmap, Color( COL_LIGHTMAGENTA ) ); - aCloser.maImageHC = Image( aBitmapHC, Color( COL_LIGHTMAGENTA ) ); + aCloser.maImage = Image( aBitmap ); + aCloser.maImageHC = Image( aBitmapHC ); aCloser.SetOutStyle( TOOLBOX_STYLE_FLAT ); aCloser.SetBackground(); diff --git a/vcl/source/window/mouseevent.cxx b/vcl/source/window/mouseevent.cxx index 90ca259cc425..a95b90f5e1d0 100644 --- a/vcl/source/window/mouseevent.cxx +++ b/vcl/source/window/mouseevent.cxx @@ -52,6 +52,8 @@ MouseEvent::MouseEvent( const ::com::sun::star::awt::MouseEvent& rEvent ) mnCode |= KEY_MOD1; if( (rEvent.Modifiers & ::com::sun::star::awt::KeyModifier::MOD2) != 0 ) mnCode |= KEY_MOD2; + if( (rEvent.Modifiers & ::com::sun::star::awt::KeyModifier::MOD3) != 0 ) + mnCode |= KEY_MOD3; } if( rEvent.Buttons ) @@ -75,6 +77,8 @@ void MouseEvent::InitMouseEvent( ::com::sun::star::awt::MouseEvent& rEvent ) con rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD1; if ( IsMod2() ) rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD2; + if ( IsMod3() ) + rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD3; rEvent.Buttons = 0; if ( IsLeft() ) diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx index bfa456757272..bb1f428c6626 100644 --- a/vcl/source/window/toolbox.cxx +++ b/vcl/source/window/toolbox.cxx @@ -1703,6 +1703,8 @@ void ToolBox::ImplInitSettings( BOOL bFont, SetBackground( aColor ); SetPaintTransparent( FALSE ); SetParentClipMode( 0 ); + + ImplUpdateImageList(); } } } @@ -3376,7 +3378,7 @@ static void ImplDrawButton( ToolBox* pThis, const Rectangle &rRect, USHORT highl } if( !bNativeOk ) - pThis->DrawSelectionBackground( rRect, bIsWindow ? 3 : highlight, bChecked, TRUE, bIsWindow ); + pThis->DrawSelectionBackground( rRect, bIsWindow ? 3 : highlight, bChecked, TRUE, bIsWindow, 2, NULL, NULL ); } void ToolBox::ImplDrawItem( USHORT nPos, BOOL bHighlight, BOOL bPaint, BOOL bLayout ) @@ -5053,7 +5055,7 @@ void ToolBox::StateChanged( StateChangedType nType ) } else if ( nType == STATE_CHANGE_CONTROLBACKGROUND ) { - ImplInitSettings( FALSE, FALSE, TRUE ); + ImplInitSettings( FALSE, FALSE, TRUE ); // font, foreground, background Invalidate(); } } diff --git a/vcl/source/window/toolbox2.cxx b/vcl/source/window/toolbox2.cxx index 9e1a6671460b..7fa8f76e1586 100644 --- a/vcl/source/window/toolbox2.cxx +++ b/vcl/source/window/toolbox2.cxx @@ -49,6 +49,9 @@ #include <vcl/unohelp.hxx> #include <unotools/confignode.hxx> +#include <vcl/ImageListProvider.hxx> +#include <com/sun/star/lang/IllegalArgumentException.hpp> + using namespace vcl; using namespace rtl; @@ -58,7 +61,10 @@ using namespace rtl; // ----------------------------------------------------------------------- -ImplToolBoxPrivateData::ImplToolBoxPrivateData() : m_pLayoutData( NULL ) +ImplToolBoxPrivateData::ImplToolBoxPrivateData() : + m_pLayoutData( NULL ), + mpImageListProvider( NULL ), + meImageListType( vcl::IMAGELISTTYPE_UNKNOWN ) { meButtonSize = TOOLBOX_BUTTONSIZE_DONTCARE; mpMenu = new PopupMenu(); @@ -69,6 +75,7 @@ ImplToolBoxPrivateData::ImplToolBoxPrivateData() : m_pLayoutData( NULL ) maMenubuttonItem.meState = STATE_NOCHECK; mnMenuButtonWidth = TB_MENUBUTTON_SIZE; + mbIsLocked = FALSE; mbNativeButtons = FALSE; mbIsPaintLocked = FALSE; @@ -2402,4 +2409,29 @@ void ToolBox::WillUsePopupMode( BOOL b ) mpData->mbWillUsePopupMode = b; } +void ToolBox::ImplUpdateImageList() +{ + if (mpData->mpImageListProvider != NULL) + { + BOOL bIsDark = GetSettings().GetStyleSettings().GetFaceColor().IsDark(); + try + { + ImageListType eType = bIsDark ? vcl::HIGHCONTRAST_YES : vcl::HIGHCONTRAST_NO; + + if (eType != mpData->meImageListType) + { + vcl::IImageListProvider* pImageListProvider = mpData->mpImageListProvider; + SetImageList( pImageListProvider->getImageList(eType) ); + mpData->meImageListType = eType; + } + } + catch (com::sun::star::lang::IllegalArgumentException &) {} + } +} + +void ToolBox::SetImageListProvider(vcl::IImageListProvider* _pProvider) +{ + mpData->mpImageListProvider = _pProvider; + ImplUpdateImageList(); +} // ----------------------------------------------------------------------- diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index ec16b65cf41f..5333d20d4306 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -497,24 +497,6 @@ void Window::ImplUpdateGlobalSettings( AllSettings& rSettings, BOOL bCallHdl ) } } - // Detect if images in menus are allowed or not - { - sal_Bool bTmp = sal_False, bUseImagesInMenus = sal_True; - utl::OConfigurationNode aNode = utl::OConfigurationTreeRoot::tryCreateWithServiceFactory( - vcl::unohelper::GetMultiServiceFactory(), - OUString::createFromAscii( "org.openoffice.Office.Common/View/Menu" ) ); // note: case sensisitive ! - if ( aNode.isValid() ) - { - ::com::sun::star::uno::Any aValue = aNode.getNodeValue( OUString::createFromAscii( "ShowIconsInMenues" ) ); - if( aValue >>= bTmp ) - bUseImagesInMenus = bTmp; - } - - aStyleSettings = rSettings.GetStyleSettings(); - aStyleSettings.SetUseImagesInMenus( bUseImagesInMenus ); - rSettings.SetStyleSettings( aStyleSettings ); - } - #ifdef DBG_UTIL // Evt. AppFont auf Fett schalten, damit man feststellen kann, // ob fuer die Texte auf anderen Systemen genuegend Platz @@ -2541,12 +2523,15 @@ void Window::ImplInvalidateFrameRegion( const Region* pRegion, USHORT nFlags ) if ( !ImplIsOverlapWindow() ) { Window* pTempWindow = this; + USHORT nTranspPaint = IsPaintTransparent() ? IMPL_PAINT_PAINT : 0; do { pTempWindow = pTempWindow->ImplGetParent(); if ( pTempWindow->mpWindowImpl->mnPaintFlags & IMPL_PAINT_PAINTCHILDS ) break; - pTempWindow->mpWindowImpl->mnPaintFlags |= IMPL_PAINT_PAINTCHILDS; + pTempWindow->mpWindowImpl->mnPaintFlags |= IMPL_PAINT_PAINTCHILDS | nTranspPaint; + if( ! pTempWindow->IsPaintTransparent() ) + nTranspPaint = 0; } while ( !pTempWindow->ImplIsOverlapWindow() ); } @@ -5859,18 +5844,15 @@ void Window::UpdateSettings( const AllSettings& rSettings, BOOL bChild ) ImplInitResolutionSettings(); /* #i73785# - * do not overwrite a NoWheelActionWithoutFocus with false - * this looks kind of a hack, but NoWheelActionWithoutFocus + * do not overwrite a WheelBehavior with false + * this looks kind of a hack, but WheelBehavior * is always a local change, not a system property, - * so we can spare all our users the hassel of reacting on + * so we can spare all our users the hassle of reacting on * this in their respective DataChanged. */ - if( aOldSettings.GetMouseSettings().GetNoWheelActionWithoutFocus() ) - { - MouseSettings aSet( maSettings.GetMouseSettings() ); - aSet.SetNoWheelActionWithoutFocus( TRUE ); - maSettings.SetMouseSettings( aSet ); - } + MouseSettings aSet( maSettings.GetMouseSettings() ); + aSet.SetWheelBehavior( aOldSettings.GetMouseSettings().GetWheelBehavior() ); + maSettings.SetMouseSettings( aSet ); if( (nChangeFlags & SETTINGS_STYLE) && IsBackground() ) { @@ -6239,6 +6221,15 @@ void Window::SetParent( Window* pNewParent ) pSysWin->GetTaskPaneList()->RemoveWindow( this ); } } + // remove ownerdraw decorated windows from list in the top-most frame window + if( (GetStyle() & WB_OWNERDRAWDECORATION) && mpWindowImpl->mbFrame ) + { + ::std::vector< Window* >& rList = ImplGetOwnerDrawList(); + ::std::vector< Window* >::iterator p; + p = ::std::find( rList.begin(), rList.end(), this ); + if( p != rList.end() ) + rList.erase( p ); + } ImplSetFrameParent( pNewParent ); @@ -6368,6 +6359,9 @@ void Window::SetParent( Window* pNewParent ) if( bChangeTaskPaneList ) pNewSysWin->GetTaskPaneList()->AddWindow( this ); + if( (GetStyle() & WB_OWNERDRAWDECORATION) && mpWindowImpl->mbFrame ) + ImplGetOwnerDrawList().push_back( this ); + if ( bVisible ) Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); } @@ -6526,7 +6520,10 @@ void Window::Show( BOOL bVisible, USHORT nFlags ) if ( !mpWindowImpl->mbFrame ) { - ImplInvalidate( NULL, INVALIDATE_NOTRANSPARENT | INVALIDATE_CHILDREN ); + USHORT nInvalidateFlags = INVALIDATE_CHILDREN; + if( ! IsPaintTransparent() ) + nInvalidateFlags |= INVALIDATE_NOTRANSPARENT; + ImplInvalidate( NULL, nInvalidateFlags ); ImplGenerateMouseMove(); } } @@ -9252,19 +9249,34 @@ BOOL Window::ImplGetCurrentBackgroundColor( Color& rCol ) void Window::DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, BOOL bChecked, BOOL bDrawBorder, BOOL bDrawExtBorderOnly ) { - DrawSelectionBackground( rRect, highlight, bChecked, bDrawBorder, bDrawExtBorderOnly, NULL ); + DrawSelectionBackground( rRect, highlight, bChecked, bDrawBorder, bDrawExtBorderOnly, 0, NULL, NULL ); } void Window::DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, BOOL bChecked, BOOL bDrawBorder, BOOL bDrawExtBorderOnly, Color* pSelectionTextColor ) { + DrawSelectionBackground( rRect, highlight, bChecked, bDrawBorder, bDrawExtBorderOnly, 0, pSelectionTextColor, NULL ); +} + +void Window::DrawSelectionBackground( const Rectangle& rRect, + USHORT highlight, + BOOL bChecked, + BOOL bDrawBorder, + BOOL bDrawExtBorderOnly, + long nCornerRadius, + Color* pSelectionTextColor, + Color* pPaintColor + ) +{ if( rRect.IsEmpty() ) return; + bool bRoundEdges = nCornerRadius > 0; + const StyleSettings& rStyles = GetSettings().GetStyleSettings(); // colors used for item highlighting - Color aSelectionBorderCol( rStyles.GetHighlightColor() ); + Color aSelectionBorderCol( pPaintColor ? *pPaintColor : rStyles.GetHighlightColor() ); Color aSelectionFillCol( aSelectionBorderCol ); BOOL bDark = rStyles.GetFaceColor().IsDark(); @@ -9273,7 +9285,7 @@ void Window::DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, int c1 = aSelectionBorderCol.GetLuminance(); int c2 = GetDisplayBackground().GetColor().GetLuminance(); - if( !bDark && !bBright && abs( c2-c1 ) < 75 ) + if( !bDark && !bBright && abs( c2-c1 ) < (pPaintColor ? 40 : 75) ) { // constrast too low USHORT h,s,b; @@ -9284,6 +9296,14 @@ void Window::DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, aSelectionBorderCol = aSelectionFillCol; } + if( bRoundEdges ) + { + if( aSelectionBorderCol.IsDark() ) + aSelectionBorderCol.IncreaseLuminance( 128 ); + else + aSelectionBorderCol.DecreaseLuminance( 128 ); + } + Rectangle aRect( rRect ); if( bDrawExtBorderOnly ) { @@ -9306,7 +9326,7 @@ void Window::DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, if( bDark ) aSelectionFillCol = COL_BLACK; else - nPercent = 80; // just checked (light) + nPercent = bRoundEdges ? 90 : 80; // just checked (light) } else { @@ -9321,7 +9341,7 @@ void Window::DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, nPercent = 0; } else - nPercent = 20; // selected, pressed or checked ( very dark ) + nPercent = bRoundEdges ? 50 : 20; // selected, pressed or checked ( very dark ) } else if( bChecked || highlight == 1 ) { @@ -9334,7 +9354,7 @@ void Window::DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, nPercent = 0; } else - nPercent = 35; // selected, pressed or checked ( very dark ) + nPercent = bRoundEdges ? 70 : 35; // selected, pressed or checked ( very dark ) } else { @@ -9350,7 +9370,7 @@ void Window::DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, nPercent = 0; } else - nPercent = 70; // selected ( dark ) + nPercent = bRoundEdges ? 80 : 70; // selected ( dark ) } } @@ -9380,9 +9400,18 @@ void Window::DrawSelectionBackground( const Rectangle& rRect, USHORT highlight, } else { - Polygon aPoly( aRect ); - PolyPolygon aPolyPoly( aPoly ); - DrawTransparent( aPolyPoly, nPercent ); + if( bRoundEdges ) + { + Polygon aPoly( aRect, nCornerRadius, nCornerRadius ); + PolyPolygon aPolyPoly( aPoly ); + DrawTransparent( aPolyPoly, nPercent ); + } + else + { + Polygon aPoly( aRect ); + PolyPolygon aPolyPoly( aPoly ); + DrawTransparent( aPolyPoly, nPercent ); + } } SetFillColor( oldFillCol ); diff --git a/vcl/unx/gtk/app/gtkdata.cxx b/vcl/unx/gtk/app/gtkdata.cxx index 0a738f829cc8..b55798608b37 100644 --- a/vcl/unx/gtk/app/gtkdata.cxx +++ b/vcl/unx/gtk/app/gtkdata.cxx @@ -126,14 +126,18 @@ void signalScreenSizeChanged( GdkScreen* pScreen, gpointer data ) pDisp->screenSizeChanged( pScreen ); } +void signalMonitorsChanged( GdkScreen* pScreen, gpointer data ) +{ + GtkSalDisplay* pDisp = (GtkSalDisplay*)data; + pDisp->monitorsChanged( pScreen ); +} + } GdkFilterReturn GtkSalDisplay::filterGdkEvent( GdkXEvent* sys_event, GdkEvent*, gpointer data ) { - GTK_YIELD_GRAB(); - GdkFilterReturn aFilterReturn = GDK_FILTER_CONTINUE; XEvent *pEvent = (XEvent *)sys_event; @@ -144,6 +148,8 @@ GdkFilterReturn GtkSalDisplay::filterGdkEvent( GdkXEvent* sys_event, CallEventCallback( pEvent, sizeof( XEvent ) ) ) aFilterReturn = GDK_FILTER_REMOVE; + GTK_YIELD_GRAB(); + if (pDisplay->GetDisplay() == pEvent->xany.display ) { // #i53471# gtk has no callback mechanism that lets us be notified @@ -192,6 +198,8 @@ void GtkSalDisplay::screenSizeChanged( GdkScreen* pScreen ) { rSD.m_aSize = Size( gdk_screen_get_width( pScreen ), gdk_screen_get_height( pScreen ) ); + if( ! m_aFrames.empty() ) + m_aFrames.front()->CallCallback( SALEVENT_DISPLAYCHANGED, 0 ); } } else @@ -201,6 +209,36 @@ void GtkSalDisplay::screenSizeChanged( GdkScreen* pScreen ) } } +void GtkSalDisplay::monitorsChanged( GdkScreen* pScreen ) +{ + if( pScreen ) + { + if( gdk_display_get_n_screens(m_pGdkDisplay) == 1 ) + { + int nScreen = gdk_screen_get_number( pScreen ); + if( nScreen == m_nDefaultScreen ) //To-Do, make m_aXineramaScreens a per-screen thing ? + { + gint nMonitors = gdk_screen_get_n_monitors(pScreen); + m_aXineramaScreens = std::vector<Rectangle>(); + for (gint i = 0; i < nMonitors; ++i) + { + GdkRectangle dest; + gdk_screen_get_monitor_geometry(pScreen, i, &dest); + m_aXineramaScreens.push_back( Rectangle( Point(dest.x, + dest.y ), Size( dest.width, dest.height ) ) ); + } + m_bXinerama = m_aXineramaScreens.size() > 1; + if( ! m_aFrames.empty() ) + m_aFrames.front()->CallCallback( SALEVENT_DISPLAYCHANGED, 0 ); + } + else + { + DBG_ERROR( "monitors for non-default screen changed, extend-me" ); + } + } + } +} + void GtkSalDisplay::initScreen( int nScreen ) const { if( nScreen < 0 || nScreen >= static_cast<int>(m_aScreens.size()) ) @@ -626,7 +664,10 @@ void GtkXLib::Init() { GdkScreen *pScreen = gdk_display_get_screen( pGdkDisp, n ); if( pScreen ) + { g_signal_connect( G_OBJECT(pScreen), "size-changed", G_CALLBACK(signalScreenSizeChanged), m_pGtkSalDisplay ); + g_signal_connect( G_OBJECT(pScreen), "monitors-changed", G_CALLBACK(signalMonitorsChanged), m_pGtkSalDisplay ); + } } } diff --git a/vcl/unx/gtk/app/gtkinst.cxx b/vcl/unx/gtk/app/gtkinst.cxx index 2692177c765a..73b4432342bf 100644 --- a/vcl/unx/gtk/app/gtkinst.cxx +++ b/vcl/unx/gtk/app/gtkinst.cxx @@ -114,10 +114,9 @@ extern "C" static bool hookLocks( oslModule pModule ) { typedef void (*GdkLockFn) (GCallback enter_fn, GCallback leave_fn); - rtl::OUString aSymbolName( RTL_CONSTASCII_USTRINGPARAM( "gdk_threads_set_lock_functions") ); GdkLockFn gdk_threads_set_lock_functions = - (GdkLockFn) osl_getFunctionSymbol( pModule, aSymbolName.pData ); + (GdkLockFn) osl_getAsciiFunctionSymbol( pModule, "gdk_threads_set_lock_functions" ); if ( !gdk_threads_set_lock_functions ) { #if OSL_DEBUG_LEVEL > 1 diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx index 04d679d8d4f1..fdaa102c614b 100644 --- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx @@ -96,6 +96,7 @@ struct NWFWidgetData GtkWidget * gMenuItemMenuWidget; GtkWidget * gMenuItemCheckMenuWidget; GtkWidget * gMenuItemRadioMenuWidget; + GtkWidget * gImageMenuItem; GtkWidget * gTooltipPopup; GtkWidget * gProgressBar; GtkWidget * gTreeView; @@ -131,6 +132,7 @@ struct NWFWidgetData gMenuItemMenuWidget( NULL ), gMenuItemCheckMenuWidget( NULL ), gMenuItemRadioMenuWidget( NULL ), + gImageMenuItem( NULL ), gTooltipPopup( NULL ), gProgressBar( NULL ), gTreeView( NULL ), @@ -452,6 +454,10 @@ void GtkData::deInitNWF( void ) gtk_widget_destroy( gWidgetData[i].gMenuWidget ); if( gWidgetData[i].gTooltipPopup ) gtk_widget_destroy( gWidgetData[i].gTooltipPopup ); + delete gWidgetData[i].gCacheTabPages; + gWidgetData[i].gCacheTabPages = NULL; + delete gWidgetData[i].gCacheTabItems; + gWidgetData[i].gCacheTabItems = NULL; delete gWidgetData[i].gNWPixmapCacheList; gWidgetData[i].gNWPixmapCacheList = NULL; } @@ -3404,6 +3410,11 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings ) else aStyleSet.SetCursorBlinkTime( STYLE_CURSOR_NOBLINKTIME ); + gboolean showmenuicons = true; + pSettings = gtk_widget_get_settings( gWidgetData[m_nScreen].gImageMenuItem ); + g_object_get( pSettings, "gtk-menu-images", &showmenuicons, (char *)NULL ); + aStyleSet.SetUseImagesInMenus( showmenuicons ); + // set scrollbar settings gint slider_width = 14; gint trough_border = 1; @@ -3428,10 +3439,12 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings ) // FIXME: need some way of fetching toolbar icon size. // aStyleSet.SetToolbarIconSize( STYLE_TOOLBAR_ICONSIZE_SMALL ); + /* #i35482# do not override HC mode per force // #i59364# high contrast mode bool bHC = ( aStyleSet.GetFaceColor().IsDark() || aStyleSet.GetWindowColor().IsDark() ); aStyleSet.SetHighContrastMode( bHC ); + */ // finally update the collected settings rSettings.SetStyleSettings( aStyleSet ); @@ -3843,10 +3856,12 @@ static void NWEnsureGTKMenu( int nScreen ) gWidgetData[nScreen].gMenuItemMenuWidget = gtk_menu_item_new_with_label( "b" ); gWidgetData[nScreen].gMenuItemCheckMenuWidget = gtk_check_menu_item_new_with_label( "b" ); gWidgetData[nScreen].gMenuItemRadioMenuWidget = gtk_radio_menu_item_new_with_label( NULL, "b" ); + gWidgetData[nScreen].gImageMenuItem = gtk_image_menu_item_new(); gtk_menu_shell_append( GTK_MENU_SHELL( gWidgetData[nScreen].gMenuWidget ), gWidgetData[nScreen].gMenuItemMenuWidget ); gtk_menu_shell_append( GTK_MENU_SHELL( gWidgetData[nScreen].gMenuWidget ), gWidgetData[nScreen].gMenuItemCheckMenuWidget ); gtk_menu_shell_append( GTK_MENU_SHELL( gWidgetData[nScreen].gMenuWidget ), gWidgetData[nScreen].gMenuItemRadioMenuWidget ); + gtk_menu_shell_append( GTK_MENU_SHELL( gWidgetData[nScreen].gMenuWidget ), gWidgetData[nScreen].gImageMenuItem ); // do what NWAddWidgetToCacheWindow does except adding to def container gtk_widget_realize( gWidgetData[nScreen].gMenuWidget ); @@ -3861,10 +3876,14 @@ static void NWEnsureGTKMenu( int nScreen ) gtk_widget_realize( gWidgetData[nScreen].gMenuItemRadioMenuWidget ); gtk_widget_ensure_style( gWidgetData[nScreen].gMenuItemRadioMenuWidget ); + gtk_widget_realize( gWidgetData[nScreen].gImageMenuItem ); + gtk_widget_ensure_style( gWidgetData[nScreen].gImageMenuItem ); + gWidgetDefaultFlags[ (long)gWidgetData[nScreen].gMenuWidget ] = GTK_WIDGET_FLAGS( gWidgetData[nScreen].gMenuWidget ); gWidgetDefaultFlags[ (long)gWidgetData[nScreen].gMenuItemMenuWidget ] = GTK_WIDGET_FLAGS( gWidgetData[nScreen].gMenuItemMenuWidget ); gWidgetDefaultFlags[ (long)gWidgetData[nScreen].gMenuItemCheckMenuWidget ] = GTK_WIDGET_FLAGS( gWidgetData[nScreen].gMenuItemCheckMenuWidget ); gWidgetDefaultFlags[ (long)gWidgetData[nScreen].gMenuItemRadioMenuWidget ] = GTK_WIDGET_FLAGS( gWidgetData[nScreen].gMenuItemRadioMenuWidget ); + gWidgetDefaultFlags[ (long)gWidgetData[nScreen].gImageMenuItem ] = GTK_WIDGET_FLAGS( gWidgetData[nScreen].gImageMenuItem ); } } diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx index 8aef97904769..b6770ca1a77e 100644 --- a/vcl/unx/gtk/window/gtkframe.cxx +++ b/vcl/unx/gtk/window/gtkframe.cxx @@ -45,9 +45,9 @@ #include <vcl/svapp.hxx> #include <vcl/window.hxx> -#include <prex.h> +#include <tools/prex.h> #include <X11/Xatom.h> -#include <postx.h> +#include <tools/postx.h> #include <dlfcn.h> #include <vcl/salbtype.hxx> @@ -75,6 +75,13 @@ #define GSS_DBUS_INTERFACE "org.gnome.ScreenSaver" #endif +// make compile on gtk older than 2.10 +#if GTK_MINOR_VERSION < 10 +#define GDK_SUPER_MASK (1 << 26) +#define GDK_HYPER_MASK (1 << 27) +#define GDK_META_MASK (1 << 28) +#endif + using namespace com::sun::star; int GtkSalFrame::m_nFloats = 0; @@ -88,6 +95,11 @@ static USHORT GetKeyModCode( guint state ) nCode |= KEY_MOD1; if( (state & GDK_MOD1_MASK) ) nCode |= KEY_MOD2; + + // Map Meta/Super keys to MOD3 modifier on all Unix systems + // except Mac OS X + if ( (state & GDK_META_MASK ) || ( state & GDK_SUPER_MASK ) ) + nCode |= KEY_MOD3; return nCode; } @@ -405,6 +417,14 @@ GtkSalFrame::GtkSalFrame( SystemParentData* pSysData ) GtkSalFrame::~GtkSalFrame() { + for( unsigned int i = 0; i < sizeof(m_aGraphics)/sizeof(m_aGraphics[0]); ++i ) + { + if( !m_aGraphics[i].pGraphics ) + continue; + m_aGraphics[i].pGraphics->SetDrawable( None, m_nScreen ); + m_aGraphics[i].bInUse = false; + } + if( m_pParent ) m_pParent->m_aChildren.remove( this ); @@ -814,7 +834,7 @@ void GtkSalFrame::Init( SalFrame* pParent, ULONG nStyle ) } if( (nStyle & SAL_FRAME_STYLE_PARTIAL_FULLSCREEN ) ) { - eType = GDK_WINDOW_TYPE_HINT_DOCK; + eType = GDK_WINDOW_TYPE_HINT_TOOLBAR; gtk_window_set_keep_above( GTK_WINDOW(m_pWindow), true ); } @@ -2938,7 +2958,8 @@ gboolean GtkSalFrame::signalKey( GtkWidget*, GdkEventKey* pEvent, gpointer frame if( pEvent->keyval == GDK_Shift_L || pEvent->keyval == GDK_Shift_R || pEvent->keyval == GDK_Control_L || pEvent->keyval == GDK_Control_R || pEvent->keyval == GDK_Alt_L || pEvent->keyval == GDK_Alt_R || - pEvent->keyval == GDK_Meta_L || pEvent->keyval == GDK_Meta_R ) + pEvent->keyval == GDK_Meta_L || pEvent->keyval == GDK_Meta_R || + pEvent->keyval == GDK_Super_L || pEvent->keyval == GDK_Super_R ) { SalKeyModEvent aModEvt; @@ -2987,6 +3008,18 @@ gboolean GtkSalFrame::signalKey( GtkWidget*, GdkEventKey* pEvent, gpointer frame nExtModMask = MODKEY_RSHIFT; nModMask = KEY_SHIFT; break; + // Map Meta/Super to MOD3 modifier on all Unix systems + // except Mac OS X + case GDK_Meta_L: + case GDK_Super_L: + nExtModMask = MODKEY_LMOD3; + nModMask = KEY_MOD3; + break; + case GDK_Meta_R: + case GDK_Super_R: + nExtModMask = MODKEY_RMOD3; + nModMask = KEY_MOD3; + break; } if( pEvent->type == GDK_KEY_RELEASE ) { diff --git a/vcl/unx/headless/svpgdi.cxx b/vcl/unx/headless/svpgdi.cxx index 4ee06961444a..bd317c883b0b 100644 --- a/vcl/unx/headless/svpgdi.cxx +++ b/vcl/unx/headless/svpgdi.cxx @@ -429,7 +429,7 @@ void SvpSalGraphics::copyArea( long nDestX, { B2IRange aSrcRect( nSrcX, nSrcY, nSrcX+nSrcWidth, nSrcY+nSrcHeight ); B2IRange aDestRect( nDestX, nDestY, nDestX+nSrcWidth, nDestY+nSrcHeight ); - m_aDevice->drawBitmap( m_aDevice, aSrcRect, aDestRect, DrawMode_PAINT, m_aClipMap ); + m_aDevice->drawBitmap( m_aOrigDevice, aSrcRect, aDestRect, DrawMode_PAINT, m_aClipMap ); dbgOut( m_aDevice ); } @@ -444,7 +444,7 @@ void SvpSalGraphics::copyBits( const SalTwoRect* pPosAry, B2IRange aDestRect( pPosAry->mnDestX, pPosAry->mnDestY, pPosAry->mnDestX+pPosAry->mnDestWidth, pPosAry->mnDestY+pPosAry->mnDestHeight ); - m_aDevice->drawBitmap( pSrc->m_aDevice, aSrcRect, aDestRect, DrawMode_PAINT, m_aClipMap ); + m_aDevice->drawBitmap( pSrc->m_aOrigDevice, aSrcRect, aDestRect, DrawMode_PAINT, m_aClipMap ); dbgOut( m_aDevice ); } @@ -519,7 +519,7 @@ SalBitmap* SvpSalGraphics::getBitmap( long nX, long nY, long nWidth, long nHeigh m_aDevice ); B2IRange aSrcRect( nX, nY, nX+nWidth, nY+nHeight ); B2IRange aDestRect( 0, 0, nWidth, nHeight ); - aCopy->drawBitmap( m_aDevice, aSrcRect, aDestRect, DrawMode_PAINT ); + aCopy->drawBitmap( m_aOrigDevice, aSrcRect, aDestRect, DrawMode_PAINT ); SvpSalBitmap* pBitmap = new SvpSalBitmap(); pBitmap->setBitmap( aCopy ); @@ -558,6 +558,22 @@ BOOL SvpSalGraphics::drawEPS( long, long, long, long, void*, ULONG ) return FALSE; } +SystemFontData SvpSalGraphics::GetSysFontData( int nFallbacklevel ) const +{ + SystemFontData aSysFontData; + + if (nFallbacklevel >= MAX_FALLBACK) nFallbacklevel = MAX_FALLBACK - 1; + if (nFallbacklevel < 0 ) nFallbacklevel = 0; + + aSysFontData.nSize = sizeof( SystemFontData ); + aSysFontData.nFontId = 0; + aSysFontData.nFontFlags = 0; + aSysFontData.bFakeBold = false; + aSysFontData.bFakeItalic = false; + aSysFontData.bAntialias = true; + return aSysFontData; +} + SystemGraphicsData SvpSalGraphics::GetGraphicsData() const { SystemGraphicsData aRes; diff --git a/vcl/unx/headless/svpgdi.hxx b/vcl/unx/headless/svpgdi.hxx index 984a77cccfad..1c71704c0031 100644 --- a/vcl/unx/headless/svpgdi.hxx +++ b/vcl/unx/headless/svpgdi.hxx @@ -169,6 +169,7 @@ public: virtual BOOL drawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize ); virtual SystemGraphicsData GetGraphicsData() const; + virtual SystemFontData GetSysFontData( int nFallbacklevel ) const; }; #endif diff --git a/vcl/unx/headless/svpprn.cxx b/vcl/unx/headless/svpprn.cxx index e9d726464921..c3253ed163e8 100644 --- a/vcl/unx/headless/svpprn.cxx +++ b/vcl/unx/headless/svpprn.cxx @@ -73,37 +73,6 @@ inline int PtTo10Mu( int nPoints ) { return (int)((((double)nPoints)*35.27777778 inline int TenMuToPt( int nUnits ) { return (int)((((double)nUnits)/35.27777778)+0.5); } -static struct -{ - int width; - int height; - const char* name; - int namelength; - Paper paper; -} aPaperTab[] = -{ - { 29700, 42000, "A3", 2, PAPER_A3 }, - { 21000, 29700, "A4", 2, PAPER_A4 }, - { 14800, 21000, "A5", 2, PAPER_A5 }, - { 25000, 35300, "B4", 2, PAPER_B4 }, - { 17600, 25000, "B5", 2, PAPER_B5 }, - { 21600, 27900, "Letter", 6, PAPER_LETTER }, - { 21600, 35600, "Legal", 5, PAPER_LEGAL }, - { 27900, 43100, "Tabloid", 7, PAPER_TABLOID }, - { 0, 0, "USER", 4, PAPER_USER } -}; - -static Paper getPaperType( const String& rPaperName ) -{ - ByteString aPaper( rPaperName, RTL_TEXTENCODING_ISO_8859_1 ); - for( unsigned int i = 0; i < sizeof( aPaperTab )/sizeof( aPaperTab[0] ); i++ ) - { - if( ! strcmp( aPaper.GetBuffer(), aPaperTab[i].name ) ) - return aPaperTab[i].paper; - } - return PAPER_USER; -} - static void copyJobDataToJobSetup( ImplJobSetup* pJobSetup, JobData& rData ) { pJobSetup->meOrientation = (Orientation)(rData.m_eOrientation == orientation::Landscape ? ORIENTATION_LANDSCAPE : ORIENTATION_PORTRAIT); @@ -113,7 +82,7 @@ static void copyJobDataToJobSetup( ImplJobSetup* pJobSetup, JobData& rData ) int width, height; rData.m_aContext.getPageSize( aPaper, width, height ); - pJobSetup->mePaperFormat = getPaperType( aPaper ); + pJobSetup->mePaperFormat = PaperInfo::fromPSName(OUStringToOString( aPaper, RTL_TEXTENCODING_ISO_8859_1 )); pJobSetup->mnPaperWidth = 0; pJobSetup->mnPaperHeight = 0; if( pJobSetup->mePaperFormat == PAPER_USER ) @@ -195,7 +164,7 @@ static bool passFileToCommandLine( const String& rFilename, const String& rComma struct stat aStat; if( stat( aFilename.GetBuffer(), &aStat ) ) fprintf( stderr, "stat( %s ) failed\n", aFilename.GetBuffer() ); - fprintf( stderr, "Tmp file %s has modes: %o\n", aFilename.GetBuffer(), aStat.st_mode ); + fprintf( stderr, "Tmp file %s has modes: 0%03lo\n", aFilename.GetBuffer(), (long)aStat.st_mode ); #endif const char* argv[4]; if( ! ( argv[ 0 ] = getenv( "SHELL" ) ) ) @@ -475,14 +444,9 @@ void PspSalInfoPrinter::InitPaperFormats( const ImplJobSetup* ) for( int i = 0; i < nValues; i++ ) { const PPDValue* pValue = pKey->getValue( i ); - vcl::PaperInfo aInfo; - aInfo.m_aPaperName = pValue->m_aOptionTranslation; - if( ! aInfo.m_aPaperName.Len() ) - aInfo.m_aPaperName = pValue->m_aOption; int nWidth = 0, nHeight = 0; m_aJobData.m_pParser->getPaperDimension( pValue->m_aOption, nWidth, nHeight ); - aInfo.m_nPaperWidth = (unsigned long)((PtTo10Mu( nWidth )+50)/100); - aInfo.m_nPaperHeight = (unsigned long)((PtTo10Mu( nHeight )+50)/100); + PaperInfo aInfo(PtTo10Mu( nWidth ), PtTo10Mu( nHeight )); m_aPaperFormats.push_back( aInfo ); } } @@ -628,7 +592,7 @@ BOOL PspSalInfoPrinter::SetData( TenMuToPt( pJobSetup->mnPaperWidth ), TenMuToPt( pJobSetup->mnPaperHeight ) ); else - aPaper = String( ByteString( aPaperTab[ pJobSetup->mePaperFormat ].name ), RTL_TEXTENCODING_ISO_8859_1 ); + aPaper = rtl::OStringToOUString(PaperInfo::toPSName(pJobSetup->mePaperFormat), RTL_TEXTENCODING_ISO_8859_1); pKey = aData.m_pParser->getKey( String( RTL_CONSTASCII_USTRINGPARAM( "PageSize" ) ) ); pValue = pKey ? pKey->getValue( aPaper ) : NULL; diff --git a/vcl/unx/headless/svppspgraphics.cxx b/vcl/unx/headless/svppspgraphics.cxx index 2ff48966c765..eb342a130d85 100644 --- a/vcl/unx/headless/svppspgraphics.cxx +++ b/vcl/unx/headless/svppspgraphics.cxx @@ -1398,6 +1398,22 @@ bool PspGraphics::filterText( const String& rOrig, String& rNewText, xub_StrLen return bRet && m_bSwallowFaxNo; } +SystemFontData PspGraphics::GetSysFontData( int nFallbacklevel ) const +{ + SystemFontData aSysFontData; + + if (nFallbacklevel >= MAX_FALLBACK) nFallbacklevel = MAX_FALLBACK - 1; + if (nFallbacklevel < 0 ) nFallbacklevel = 0; + + aSysFontData.nSize = sizeof( SystemFontData ); + aSysFontData.nFontId = 0; + aSysFontData.nFontFlags = 0; + aSysFontData.bFakeBold = false; + aSysFontData.bFakeItalic = false; + aSysFontData.bAntialias = true; + return aSysFontData; +} + SystemGraphicsData PspGraphics::GetGraphicsData() const { SystemGraphicsData aRes; diff --git a/vcl/unx/headless/svppspgraphics.hxx b/vcl/unx/headless/svppspgraphics.hxx index ba7d690a9f90..81e4a29b8d55 100644 --- a/vcl/unx/headless/svppspgraphics.hxx +++ b/vcl/unx/headless/svppspgraphics.hxx @@ -194,7 +194,9 @@ public: virtual BOOL drawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize ); virtual bool filterText( const String& rOrigText, String& rNewText, xub_StrLen nIndex, xub_StrLen& rLen, xub_StrLen& rCutStart, xub_StrLen& rCutStop ); + virtual SystemGraphicsData GetGraphicsData() const; + virtual SystemFontData GetSysFontData( int nFallbacklevel ) const; }; #endif // _SVP_PSPGRAPHICS_HXX diff --git a/vcl/unx/headless/svpvd.cxx b/vcl/unx/headless/svpvd.cxx index 2d7342093e47..6220af0b28b8 100644 --- a/vcl/unx/headless/svpvd.cxx +++ b/vcl/unx/headless/svpvd.cxx @@ -34,6 +34,8 @@ #include <basegfx/vector/b2ivector.hxx> #include <basebmp/scanlineformats.hxx> +#include "stdio.h" + using namespace basegfx; using namespace basebmp; @@ -65,9 +67,14 @@ BOOL SvpSalVirtualDevice::SetSize( long nNewDX, long nNewDY ) if( ! m_aDevice.get() || m_aDevice->getSize() != aDevSize ) { sal_uInt32 nFormat = SVP_DEFAULT_BITMAP_FORMAT; + std::vector< basebmp::Color > aDevPal; switch( m_nBitCount ) { - case 1: nFormat = Format::ONE_BIT_MSB_PAL; break; + case 1: nFormat = Format::ONE_BIT_MSB_PAL; + aDevPal.reserve(2); + aDevPal.push_back( basebmp::Color( 0, 0, 0 ) ); + aDevPal.push_back( basebmp::Color( 0xff, 0xff, 0xff ) ); + break; case 4: nFormat = Format::FOUR_BIT_MSB_PAL; break; case 8: nFormat = Format::EIGHT_BIT_PAL; break; #ifdef OSL_BIGENDIAN @@ -75,14 +82,19 @@ BOOL SvpSalVirtualDevice::SetSize( long nNewDX, long nNewDY ) #else case 16: nFormat = Format::SIXTEEN_BIT_LSB_TC_MASK; break; #endif + case 0: case 24: nFormat = Format::TWENTYFOUR_BIT_TC_MASK; break; case 32: nFormat = Format::THIRTYTWO_BIT_TC_MASK; break; } - m_aDevice = createBitmapDevice( aDevSize, false, nFormat ); + m_aDevice = aDevPal.empty() + ? createBitmapDevice( aDevSize, false, nFormat ) + : createBitmapDevice( aDevSize, false, nFormat, PaletteMemorySharedVector( new std::vector< basebmp::Color >(aDevPal) ) ); + // update device in existing graphics for( std::list< SvpSalGraphics* >::iterator it = m_aGraphics.begin(); it != m_aGraphics.end(); ++it ) (*it)->setDevice( m_aDevice ); + } return true; } diff --git a/vcl/unx/inc/Xproto.h b/vcl/unx/inc/Xproto.h index 83d717818d9e..553c32221406 100644 --- a/vcl/unx/inc/Xproto.h +++ b/vcl/unx/inc/Xproto.h @@ -33,7 +33,7 @@ #include "sal/config.h" -#include "prex.h" +#include <tools/prex.h> #if defined __GNUC__ #pragma GCC system_header @@ -47,6 +47,6 @@ #pragma enable_warn #endif -#include "postx.h" +#include <tools/postx.h> #endif diff --git a/vcl/unx/inc/plugins/gtk/gtkdata.hxx b/vcl/unx/inc/plugins/gtk/gtkdata.hxx index 970a8edf02c3..da0f95e8623f 100644 --- a/vcl/unx/inc/plugins/gtk/gtkdata.hxx +++ b/vcl/unx/inc/plugins/gtk/gtkdata.hxx @@ -31,11 +31,11 @@ #ifndef _VCL_GTKDATA_HXX #define _VCL_GTKDATA_HXX -#include <prex.h> +#include <tools/prex.h> #include <gdk/gdk.h> #include <gdk/gdkx.h> #include <gtk/gtk.h> -#include <postx.h> +#include <tools/postx.h> #include <saldisp.hxx> #include <saldata.hxx> @@ -85,6 +85,7 @@ public: void startupNotificationCompleted() { m_bStartupCompleted = true; } void screenSizeChanged( GdkScreen* ); + void monitorsChanged( GdkScreen* ); }; diff --git a/vcl/unx/inc/plugins/gtk/gtkframe.hxx b/vcl/unx/inc/plugins/gtk/gtkframe.hxx index 1ceec7fb0c70..74394c71e4b2 100644 --- a/vcl/unx/inc/plugins/gtk/gtkframe.hxx +++ b/vcl/unx/inc/plugins/gtk/gtkframe.hxx @@ -31,12 +31,12 @@ #ifndef _VCL_GTKFRAME_HXX #define _VCL_GTKFRAME_HXX -#include <prex.h> +#include <tools/prex.h> #include <gtk/gtk.h> #include <gdk/gdk.h> #include <gdk/gdkx.h> #include <gdk/gdkkeysyms.h> -#include <postx.h> +#include <tools/postx.h> #include <vcl/salframe.hxx> #include <vcl/sysdata.hxx> diff --git a/vcl/unx/inc/plugins/gtk/gtkgdi.hxx b/vcl/unx/inc/plugins/gtk/gtkgdi.hxx index 5211367c355a..5bc7ab40b98e 100644 --- a/vcl/unx/inc/plugins/gtk/gtkgdi.hxx +++ b/vcl/unx/inc/plugins/gtk/gtkgdi.hxx @@ -31,11 +31,11 @@ #ifndef _VCL_GTKGDI_HXX #define _VCL_GTKGDI_HXX -#include <prex.h> +#include <tools/prex.h> #include <gtk/gtk.h> #include <gdk/gdkx.h> #include <gdk/gdkkeysyms.h> -#include <postx.h> +#include <tools/postx.h> #include <salgdi.h> diff --git a/vcl/unx/inc/pspgraphics.h b/vcl/unx/inc/pspgraphics.h index 5c31d889453c..219cc5f0a8ff 100644 --- a/vcl/unx/inc/pspgraphics.h +++ b/vcl/unx/inc/pspgraphics.h @@ -197,6 +197,7 @@ public: virtual bool drawAlphaRect( long nX, long nY, long nWidth, long nHeight, sal_uInt8 nTransparency ); virtual SystemGraphicsData GetGraphicsData() const; + virtual SystemFontData GetSysFontData( int nFallbacklevel ) const; }; #endif // _VCL_PSPGRAPHICS_H diff --git a/vcl/unx/inc/salgdi.h b/vcl/unx/inc/salgdi.h index 55c8f8303052..16276cdeb5c9 100644 --- a/vcl/unx/inc/salgdi.h +++ b/vcl/unx/inc/salgdi.h @@ -87,7 +87,8 @@ protected: SalColormap *m_pDeleteColormap; Drawable hDrawable_; // use int m_nScreen; - void* pRenderFormat_; + void* m_pRenderFormat; + XID m_aRenderPicture; CairoFontsCache m_aCairoFontsCache; XLIB_Region pPaintRegion_; @@ -215,14 +216,14 @@ public: inline const SalVisual& GetVisual() const; inline Drawable GetDrawable() const { return hDrawable_; } void SetDrawable( Drawable d, int nScreen ); - inline void* GetXRenderFormat() { return pRenderFormat_; } - inline void SetXRenderFormat( void* pRenderFormat ) { pRenderFormat_ = pRenderFormat; } + XID GetXRenderPicture(); + void* GetXRenderFormat() const { return m_pRenderFormat; } + inline void SetXRenderFormat( void* pRenderFormat ) { m_pRenderFormat = pRenderFormat; } inline const SalColormap& GetColormap() const { return *m_pColormap; } using SalGraphics::GetPixel; inline Pixel GetPixel( SalColor nSalColor ) const; - int GetScreenNumber() const - { return m_nScreen; } + int GetScreenNumber() const { return m_nScreen; } // overload all pure virtual methods virtual void GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY ); @@ -248,7 +249,7 @@ public: virtual void SetROPFillColor( SalROPColor nROPColor ); virtual void SetTextColor( SalColor nSalColor ); - virtual USHORT SetFont( ImplFontSelectData*, int nFallbackLevel ); + virtual USHORT SetFont( ImplFontSelectData*, int nFallbackLevel ); virtual void GetFontMetric( ImplFontMetricData* ); virtual ULONG GetKernPairs( ULONG nPairs, ImplKernPairData* pKernPairs ); virtual ImplFontCharMap* GetImplFontCharMap() const; @@ -336,6 +337,7 @@ public: long nHeight, sal_uInt8 nTransparency ); virtual SystemGraphicsData GetGraphicsData() const; + virtual SystemFontData GetSysFontData( int nFallbacklevel ) const; /* use to handle GraphicsExpose/NoExpose after XCopyArea & friends * if pFrame is not NULL, corresponding Paint events are generated diff --git a/vcl/unx/inc/svunx.h b/vcl/unx/inc/svunx.h index 7e6b98b33192..02572dea9084 100644 --- a/vcl/unx/inc/svunx.h +++ b/vcl/unx/inc/svunx.h @@ -31,8 +31,8 @@ #ifndef _SVUNX_H #define _SVUNX_H -#include <prex.h> -#include <postx.h> +#include <tools/prex.h> +#include <tools/postx.h> #endif diff --git a/vcl/unx/inc/wmadaptor.hxx b/vcl/unx/inc/wmadaptor.hxx index a6146748fb8a..314854926ba1 100644 --- a/vcl/unx/inc/wmadaptor.hxx +++ b/vcl/unx/inc/wmadaptor.hxx @@ -37,9 +37,9 @@ #include <tools/gen.hxx> #include <vcl/dllapi.h> #ifndef _PREX_H -#include <prex.h> +#include <tools/prex.h> #include <X11/Xlib.h> -#include <postx.h> +#include <tools/postx.h> #endif #include <vector> diff --git a/vcl/unx/inc/xfont.hxx b/vcl/unx/inc/xfont.hxx index f2a0496f545d..8b87e268ca08 100644 --- a/vcl/unx/inc/xfont.hxx +++ b/vcl/unx/inc/xfont.hxx @@ -31,9 +31,9 @@ #define EXTENDED_FONTSTRUCT_HXX #ifndef _XLIB_H_ -#include <prex.h> +#include <tools/prex.h> #include <X11/Xlib.h> -#include <postx.h> +#include <tools/postx.h> #endif #include <tools/ref.hxx> #include <rtl/tencinfo.h> diff --git a/vcl/unx/kde/kdedata.cxx b/vcl/unx/kde/kdedata.cxx index 6dae2bd55f33..f29ef1d4ff96 100644 --- a/vcl/unx/kde/kdedata.cxx +++ b/vcl/unx/kde/kdedata.cxx @@ -248,7 +248,7 @@ extern "C" { if( nMajor != 3 || nMinor < 2 || (nMinor == 2 && nMicro < 2) ) { #if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "unsuitable qt version %d.%d.%d\n", nMajor, nMinor, nMicro ); + fprintf( stderr, "unsuitable qt version %"SAL_PRIdINT32".%"SAL_PRIdINT32".%"SAL_PRIdINT32"\n", nMajor, nMinor, nMicro ); #endif return NULL; } diff --git a/vcl/unx/kde/salnativewidgets-kde.cxx b/vcl/unx/kde/salnativewidgets-kde.cxx index 6667520c3982..24358022d6a1 100644 --- a/vcl/unx/kde/salnativewidgets-kde.cxx +++ b/vcl/unx/kde/salnativewidgets-kde.cxx @@ -2035,10 +2035,12 @@ void KDESalFrame::UpdateSettings( AllSettings& rSettings ) // Scroll bar size aStyleSettings.SetScrollBarSize( kapp->style().pixelMetric( QStyle::PM_ScrollBarExtent ) ); + /* #i35482# do not override HC mode // #i59364# high contrast mode bool bHC = ( aStyleSettings.GetFaceColor().IsDark() || aStyleSettings.GetWindowColor().IsDark() ); aStyleSettings.SetHighContrastMode( bHC ); + */ rSettings.SetStyleSettings( aStyleSettings ); } diff --git a/vcl/unx/source/app/i18n_cb.cxx b/vcl/unx/source/app/i18n_cb.cxx index b40cc888e7ac..fd8b3d5af559 100644 --- a/vcl/unx/source/app/i18n_cb.cxx +++ b/vcl/unx/source/app/i18n_cb.cxx @@ -34,10 +34,10 @@ #include <stdio.h> #include <string.h> #include <sal/alloca.h> -#include <prex.h> +#include <tools/prex.h> #include <X11/Xlocale.h> #include <X11/Xlib.h> -#include <postx.h> +#include <tools/postx.h> #include <salunx.h> #include <XIM.h> diff --git a/vcl/unx/source/app/i18n_ic.cxx b/vcl/unx/source/app/i18n_ic.cxx index 817fc2781e8c..cacffbcfdbb1 100644 --- a/vcl/unx/source/app/i18n_ic.cxx +++ b/vcl/unx/source/app/i18n_ic.cxx @@ -34,10 +34,10 @@ #include <stdio.h> #include <sal/alloca.h> -#include <prex.h> +#include <tools/prex.h> #include <X11/Xlocale.h> #include <X11/Xlib.h> -#include <postx.h> +#include <tools/postx.h> #include <salunx.h> diff --git a/vcl/unx/source/app/i18n_im.cxx b/vcl/unx/source/app/i18n_im.cxx index a47cefcef7dd..ae472d6323f4 100644 --- a/vcl/unx/source/app/i18n_im.cxx +++ b/vcl/unx/source/app/i18n_im.cxx @@ -44,11 +44,11 @@ #include <sal/alloca.h> #endif -#include <prex.h> +#include <tools/prex.h> #include <X11/Xlocale.h> #include <X11/Xlib.h> #include <XIM.h> -#include <postx.h> +#include <tools/postx.h> #include <salunx.h> #include <saldisp.hxx> diff --git a/vcl/unx/source/app/i18n_status.cxx b/vcl/unx/source/app/i18n_status.cxx index b8ef7e74e635..cdaa5b1a9cf0 100644 --- a/vcl/unx/source/app/i18n_status.cxx +++ b/vcl/unx/source/app/i18n_status.cxx @@ -36,10 +36,10 @@ #endif #include <sal/alloca.h> -#include <prex.h> +#include <tools/prex.h> #include <X11/Xlib.h> #include <XIM.h> -#include <postx.h> +#include <tools/postx.h> #include <salunx.h> diff --git a/vcl/unx/source/app/keysymnames.cxx b/vcl/unx/source/app/keysymnames.cxx index 4a2bf13af3e0..188f159300b0 100644 --- a/vcl/unx/source/app/keysymnames.cxx +++ b/vcl/unx/source/app/keysymnames.cxx @@ -32,9 +32,9 @@ #include "precompiled_vcl.hxx" #ifndef SOLARIS -#include <prex.h> +#include <tools/prex.h> #include <X11/XKBlib.h> -#include <postx.h> +#include <tools/postx.h> #endif #include <saldisp.hxx> diff --git a/vcl/unx/source/app/randrwrapper.cxx b/vcl/unx/source/app/randrwrapper.cxx index b079e2909e71..8d01b64d4680 100644 --- a/vcl/unx/source/app/randrwrapper.cxx +++ b/vcl/unx/source/app/randrwrapper.cxx @@ -31,9 +31,9 @@ #ifdef USE_RANDR -#include "prex.h" +#include <tools/prex.h> #include <X11/extensions/Xrandr.h> -#include "postx.h" +#include <tools/postx.h> #include "osl/module.h" #include "rtl/ustring.hxx" diff --git a/vcl/unx/source/app/saldisp.cxx b/vcl/unx/source/app/saldisp.cxx index b599cf0895eb..07955d426b8c 100644 --- a/vcl/unx/source/app/saldisp.cxx +++ b/vcl/unx/source/app/saldisp.cxx @@ -52,7 +52,7 @@ #include <osl/module.h> #endif -#include <prex.h> +#include <tools/prex.h> #include <X11/cursorfont.h> #include "salcursors.h" #include "invert50.h" @@ -81,7 +81,7 @@ Status XineramaGetInfo(Display*, int, XRectangle*, unsigned char*, int*); #endif #endif -#include <postx.h> +#include <tools/postx.h> #include <salunx.h> #include <sal/types.h> @@ -831,24 +831,28 @@ void SalDisplay::Init() int nDisplayScreens = ScreenCount( pDisp_ ); m_aScreens = std::vector<ScreenData>(nDisplayScreens); - const char *value; + mbExactResolution = false; /* #i15507# * Xft resolution should take precedence since * it is what modern desktops use. */ - if ((value = XGetDefault (pDisp_, "Xft", "dpi"))) + const char* pValStr = XGetDefault( pDisp_, "Xft", "dpi" ); + if( pValStr != NULL ) { - rtl::OString str (value); - long dpi = (long) str.toDouble(); - aResolution_ = Pair( dpi, dpi ); - mbExactResolution = true; + const rtl::OString aValStr( pValStr ); + const long nDPI = (long) aValStr.toDouble(); + // guard against insane resolution + if( (nDPI >= 50) && (nDPI <= 500) ) + { + aResolution_ = Pair( nDPI, nDPI ); + mbExactResolution = true; + } } - else + if( mbExactResolution == false ) { aResolution_ = Pair( DPI( WidthOfScreen( DefaultScreenOfDisplay( pDisp_ ) ), DisplayWidthMM ( pDisp_, m_nDefaultScreen ) ), DPI( HeightOfScreen( DefaultScreenOfDisplay( pDisp_ ) ), DisplayHeightMM( pDisp_, m_nDefaultScreen ) ) ); - mbExactResolution = false; } nMaxRequestSize_ = XExtendedMaxRequestSize( pDisp_ ) * 4; @@ -3412,8 +3416,8 @@ Pixel SalColormap::GetPixel( SalColor nSalColor ) const #ifdef DBG_UTIL else fprintf( stderr, "SalColormap::GetPixel() 0x%06lx=%lu 0x%06lx=%lu\n", - nSalColor, aColor.pixel, - nInversColor, aInversColor.pixel); + static_cast< unsigned long >(nSalColor), aColor.pixel, + static_cast< unsigned long >(nInversColor), aInversColor.pixel); #endif } } @@ -3423,7 +3427,7 @@ Pixel SalColormap::GetPixel( SalColor nSalColor ) const #ifdef DBG_UTIL fprintf( stderr, "SalColormap::GetPixel() !XAllocColor %lx\n", - nSalColor ); + static_cast< unsigned long >(nSalColor) ); #endif } @@ -3431,7 +3435,7 @@ Pixel SalColormap::GetPixel( SalColor nSalColor ) const { #ifdef DBG_UTIL fprintf( stderr, "SalColormap::GetPixel() Palette empty %lx\n", - nSalColor); + static_cast< unsigned long >(nSalColor)); #endif return nSalColor; } diff --git a/vcl/unx/source/app/sm.cxx b/vcl/unx/source/app/sm.cxx index 5bc307b0146f..7e4e16579623 100644 --- a/vcl/unx/source/app/sm.cxx +++ b/vcl/unx/source/app/sm.cxx @@ -40,9 +40,9 @@ #include <osl/process.h> #include <osl/security.h> -#include <prex.h> +#include <tools/prex.h> #include <X11/Xatom.h> -#include <postx.h> +#include <tools/postx.h> #include <sm.hxx> #include <saldata.hxx> #include <saldisp.hxx> diff --git a/vcl/unx/source/app/wmadaptor.cxx b/vcl/unx/source/app/wmadaptor.cxx index 37015b6e58d6..d15433865450 100644 --- a/vcl/unx/source/app/wmadaptor.cxx +++ b/vcl/unx/source/app/wmadaptor.cxx @@ -43,11 +43,11 @@ #include <rtl/locale.h> #include <osl/process.h> -#include <prex.h> +#include <tools/prex.h> #include <X11/X.h> #include <X11/Xatom.h> #include <X11/Xresource.h> -#include <postx.h> +#include <tools/postx.h> #if OSL_DEBUG_LEVEL > 1 #include <stdio.h> diff --git a/vcl/unx/source/fontmanager/fontconfig.cxx b/vcl/unx/source/fontmanager/fontconfig.cxx index c44e082f91bd..bc0dae480d31 100644 --- a/vcl/unx/source/fontmanager/fontconfig.cxx +++ b/vcl/unx/source/fontmanager/fontconfig.cxx @@ -91,6 +91,7 @@ class FontCfgWrapper oslModule m_pLib; FcFontSet* m_pOutlineSet; + int m_nFcVersion; FcBool (*m_pFcInit)(); int (*m_pFcGetVersion)(); FcConfig* (*m_pFcConfigGetCurrent)(); @@ -248,9 +249,10 @@ oslGenericFunction FontCfgWrapper::loadSymbol( const char* pSymbol ) FontCfgWrapper::FontCfgWrapper() : m_pLib( NULL ), - m_pOutlineSet( NULL ) + m_pOutlineSet( NULL ), + m_nFcVersion( 0 ) { - OUString aLib( RTL_CONSTASCII_USTRINGPARAM( "libfontconfig.so.1" ) ); + OUString aLib( RTL_CONSTASCII_USTRINGPARAM( "libfontconfig.so.1" ) ); m_pLib = osl_loadModule( aLib.pData, SAL_LOADMODULE_LAZY ); if( !m_pLib ) { @@ -331,6 +333,19 @@ FontCfgWrapper::FontCfgWrapper() m_pFcFreeTypeCharIndex = (FT_UInt(*)(FT_Face,FcChar32)) loadSymbol( "FcFreeTypeCharIndex" ); + m_nFcVersion = FcGetVersion(); +#if (OSL_DEBUG_LEVEL > 1) + fprintf( stderr,"FC_VERSION = %05d\n", m_nFcVersion ); +#endif + // make minimum version configurable + const char* pMinFcVersion = getenv( "SAL_MIN_FC_VERSION"); + if( pMinFcVersion ) + { + const int nMinFcVersion = atoi( pMinFcVersion ); + if( m_nFcVersion < nMinFcVersion ) + m_pFcInit = NULL; + } + if( ! ( m_pFcInit && m_pFcGetVersion && @@ -416,8 +431,7 @@ FcFontSet* FontCfgWrapper::getFontSet() { m_pOutlineSet = FcFontSetCreate(); addFontSet( FcSetSystem ); - const int nVersion = FcGetVersion(); - if( nVersion > 20400 ) + if( m_nFcVersion > 20400 ) // #i85462# prevent crashes addFontSet( FcSetApplication ); } #endif diff --git a/vcl/unx/source/fontmanager/fontmanager.cxx b/vcl/unx/source/fontmanager/fontmanager.cxx index a116749daf47..995abb5fb89f 100644 --- a/vcl/unx/source/fontmanager/fontmanager.cxx +++ b/vcl/unx/source/fontmanager/fontmanager.cxx @@ -2123,7 +2123,7 @@ void PrintFontManager::initialize() const ::rtl::OUString &rSalPrivatePath = psp::getFontPath(); // search for the fonts in SAL_PRIVATE_FONTPATH first; those are - // the TrueType fonts installed with the office + // the fonts installed with the office if( rSalPrivatePath.getLength() ) { OString aPath = rtl::OUStringToOString( rSalPrivatePath, aEncoding ); diff --git a/vcl/unx/source/gdi/gcach_xpeer.hxx b/vcl/unx/source/gdi/gcach_xpeer.hxx index 73a924c60439..3af34ffd9297 100644 --- a/vcl/unx/source/gdi/gcach_xpeer.hxx +++ b/vcl/unx/source/gdi/gcach_xpeer.hxx @@ -33,9 +33,9 @@ #include <vcl/glyphcache.hxx> -#include <prex.h> +#include <tools/prex.h> #include <X11/extensions/Xrender.h> -#include <postx.h> +#include <tools/postx.h> #include <vcl/dllapi.h> diff --git a/vcl/unx/source/gdi/pspgraphics.cxx b/vcl/unx/source/gdi/pspgraphics.cxx index 4a4bccd86d2a..e8dfe391dc86 100644 --- a/vcl/unx/source/gdi/pspgraphics.cxx +++ b/vcl/unx/source/gdi/pspgraphics.cxx @@ -1504,6 +1504,22 @@ SystemGraphicsData PspGraphics::GetGraphicsData() const return aRes; } +SystemFontData PspGraphics::GetSysFontData( int nFallbacklevel ) const +{ + SystemFontData aSysFontData; + + if (nFallbacklevel >= MAX_FALLBACK) nFallbacklevel = MAX_FALLBACK - 1; + if (nFallbacklevel < 0 ) nFallbacklevel = 0; + + aSysFontData.nSize = sizeof( SystemFontData ); + aSysFontData.nFontId = 0; + aSysFontData.nFontFlags = 0; + aSysFontData.bFakeBold = false; + aSysFontData.bFakeItalic = false; + aSysFontData.bAntialias = true; + return aSysFontData; +} + bool PspGraphics::supportsOperation( OutDevSupportType ) const { return false; diff --git a/vcl/unx/source/gdi/salbmp.cxx b/vcl/unx/source/gdi/salbmp.cxx index f70f445ed28c..4db44d664c16 100644 --- a/vcl/unx/source/gdi/salbmp.cxx +++ b/vcl/unx/source/gdi/salbmp.cxx @@ -37,9 +37,9 @@ #ifdef FREEBSD #include <sys/types.h> #endif -#include <prex.h> +#include <tools/prex.h> #include "Xproto.h" -#include <postx.h> +#include <tools/postx.h> #include <salunx.h> #include <osl/endian.h> #include <rtl/memory.h> diff --git a/vcl/unx/source/gdi/salgdi.cxx b/vcl/unx/source/gdi/salgdi.cxx index 6d7812828a10..6695d4abeb21 100644 --- a/vcl/unx/source/gdi/salgdi.cxx +++ b/vcl/unx/source/gdi/salgdi.cxx @@ -6,9 +6,6 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: salgdi.cxx,v $ - * $Revision: 1.53.16.1 $ - * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify @@ -102,7 +99,8 @@ X11SalGraphics::X11SalGraphics() m_pVDev = NULL; m_pDeleteColormap = NULL; hDrawable_ = None; - pRenderFormat_ = NULL; + m_aRenderPicture = 0; + m_pRenderFormat = NULL; pClipRegion_ = NULL; pPaintRegion_ = NULL; @@ -180,42 +178,70 @@ void X11SalGraphics::freeResources() if( m_pDeleteColormap ) delete m_pDeleteColormap, m_pColormap = m_pDeleteColormap = NULL; + if( m_aRenderPicture ) + XRenderPeer::GetInstance().FreePicture( m_aRenderPicture ), m_aRenderPicture = 0; + bPenGC_ = bFontGC_ = bBrushGC_ = bMonoGC_ = bCopyGC_ = bInvertGC_ = bInvert50GC_ = bStippleGC_ = bTrackingGC_ = false; } void X11SalGraphics::SetDrawable( Drawable aDrawable, int nScreen ) { + // shortcut if nothing changed + if( hDrawable_ == aDrawable ) + return; + + // free screen specific resources if needed if( nScreen != m_nScreen ) { freeResources(); m_pColormap = &GetX11SalData()->GetDisplay()->GetColormap( nScreen ); m_nScreen = nScreen; } + hDrawable_ = aDrawable; - nPenPixel_ = GetPixel( nPenColor_ ); - nTextPixel_ = GetPixel( nTextColor_ ); - nBrushPixel_ = GetPixel( nBrushColor_ ); + SetXRenderFormat( NULL ); + if( m_aRenderPicture ) + { + XRenderPeer::GetInstance().FreePicture( m_aRenderPicture ); + m_aRenderPicture = 0; + } + + if( hDrawable_ ) + { + nPenPixel_ = GetPixel( nPenColor_ ); + nTextPixel_ = GetPixel( nTextColor_ ); + nBrushPixel_ = GetPixel( nBrushColor_ ); + } } void X11SalGraphics::Init( SalFrame *pFrame, Drawable aTarget, int nScreen ) { +#if 0 // TODO: use SetDrawable() instead m_pColormap = &GetX11SalData()->GetDisplay()->GetColormap(nScreen); hDrawable_ = aTarget; m_nScreen = nScreen; - - bWindow_ = TRUE; - m_pFrame = pFrame; - m_pVDev = NULL; + SetXRenderFormat( NULL ); + if( m_aRenderPicture ) + XRenderPeer::GetInstance().FreePicture( m_aRenderPicture ), m_aRenderPicture = 0; nPenPixel_ = GetPixel( nPenColor_ ); nTextPixel_ = GetPixel( nTextColor_ ); nBrushPixel_ = GetPixel( nBrushColor_ ); +#else + m_pColormap = &GetX11SalData()->GetDisplay()->GetColormap(nScreen); + m_nScreen = nScreen; + SetDrawable( aTarget, nScreen ); +#endif + + bWindow_ = TRUE; + m_pFrame = pFrame; + m_pVDev = NULL; } // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= void X11SalGraphics::DeInit() { - hDrawable_ = None; + SetDrawable( None, m_nScreen ); } // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -994,6 +1020,40 @@ BOOL X11SalGraphics::drawEPS( long,long,long,long,void*,ULONG ) // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +XID X11SalGraphics::GetXRenderPicture() +{ + if( !m_aRenderPicture ) + { + // check xrender support for matching visual + // find a XRenderPictFormat compatible with the Drawable + XRenderPeer& rRenderPeer = XRenderPeer::GetInstance(); + XRenderPictFormat* pVisualFormat = static_cast<XRenderPictFormat*>(GetXRenderFormat()); + if( !pVisualFormat ) + { + Visual* pVisual = GetDisplay()->GetVisual( m_nScreen ).GetVisual(); + pVisualFormat = rRenderPeer.FindVisualFormat( pVisual ); + if( !pVisualFormat ) + return 0; + // cache the XRenderPictFormat + SetXRenderFormat( static_cast<void*>(pVisualFormat) ); + } + + // get the matching xrender target for drawable + m_aRenderPicture = rRenderPeer.CreatePicture( hDrawable_, pVisualFormat, 0, NULL ); + } + +#if 0 + // setup clipping so the callers don't have to do it themselves + // TODO: avoid clipping if already set correctly + if( pClipRegion_ && !XEmptyRegion( pClipRegion_ ) ) + rRenderPeer.SetPictureClipRegion( aDstPic, pClipRegion_ ); +#endif + + return m_aRenderPicture; +} + +// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + SystemGraphicsData X11SalGraphics::GetGraphicsData() const { SystemGraphicsData aRes; @@ -1005,7 +1065,7 @@ SystemGraphicsData X11SalGraphics::GetGraphicsData() const aRes.nScreen = m_nScreen; aRes.nDepth = GetDisplay()->GetVisual( m_nScreen ).GetDepth(); aRes.aColormap = GetDisplay()->GetColormap( m_nScreen ).GetXColormap(); - aRes.pRenderFormat = pRenderFormat_; + aRes.pRenderFormat = m_pRenderFormat; return aRes; } @@ -1072,7 +1132,15 @@ struct HalfTrapCompare } }; -typedef std::priority_queue< HalfTrapezoid, std::vector<HalfTrapezoid>, HalfTrapCompare > HTQueue; +typedef std::priority_queue< HalfTrapezoid, std::vector<HalfTrapezoid>, HalfTrapCompare > HTQueueBase; +// we need a priority queue with a reserve() to prevent countless reallocations +class HTQueue +: public HTQueueBase +{ +public: + void reserve( size_t n ) { c.reserve( n ); } + int capacity() { return c.capacity(); } +}; typedef std::vector<XTrapezoid> TrapezoidVector; @@ -1128,38 +1196,49 @@ bool X11SalGraphics::drawPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly XRenderPeer& rRenderPeer = XRenderPeer::GetInstance(); if( !rRenderPeer.AreTrapezoidsSupported() ) return FALSE; - - // check xrender support for matching visual - Visual* pVisual = GetVisual().GetVisual(); - XRenderPictFormat* pVisualFormat = rRenderPeer.FindVisualFormat( pVisual ); - if( !pVisualFormat ) + Picture aDstPic = GetXRenderPicture(); + // check xrender support for this drawable + if( !aDstPic ) return FALSE; // don't bother with polygons outside of visible area const basegfx::B2DRange aViewRange( 0, 0, GetGraphicsWidth(), GetGraphicsHeight() ); - basegfx::B2DRange aPolyRange = basegfx::tools::getRange( rPolyPoly ); - aPolyRange.intersect( aViewRange ); - if( aPolyRange.isEmpty() ) + const basegfx::B2DRange aPolyRange = basegfx::tools::getRange( rPolyPoly ); + const bool bNeedViewClip = !aPolyRange.isInside( aViewRange ); + if( !aPolyRange.overlaps( aViewRange ) ) return true; // convert the polypolygon to trapezoids // first convert the B2DPolyPolygon to HalfTrapezoids + // #i100922# try to prevent priority-queue reallocations by reservering enough + int nHTQueueReserve = 0; + for( int nOuterPolyIdx = 0; nOuterPolyIdx < nPolygonCount; ++nOuterPolyIdx ) + { + const ::basegfx::B2DPolygon aOuterPolygon = rPolyPoly.getB2DPolygon( nOuterPolyIdx ); + const int nPointCount = aOuterPolygon.count(); + nHTQueueReserve += aOuterPolygon.areControlPointsUsed() ? 8 * nPointCount : nPointCount; + } + nHTQueueReserve = ((4*nHTQueueReserve) | 0x1FFF) + 1; HTQueue aHTQueue; + aHTQueue.reserve( nHTQueueReserve ); for( int nOuterPolyIdx = 0; nOuterPolyIdx < nPolygonCount; ++nOuterPolyIdx ) { - ::basegfx::B2DPolygon aOuterPolygon = rPolyPoly.getB2DPolygon( nOuterPolyIdx ); + const ::basegfx::B2DPolygon aOuterPolygon = rPolyPoly.getB2DPolygon( nOuterPolyIdx ); - // get rid of bezier segments - if( aOuterPolygon.areControlPointsUsed() ) - aOuterPolygon = ::basegfx::tools::adaptiveSubdivideByDistance( aOuterPolygon, 0.125 ); + // render-trapezoids should be inside the view => clip polygon against view range + basegfx::B2DPolyPolygon aClippedPolygon( aOuterPolygon ); + if( bNeedViewClip ) + { + aClippedPolygon = basegfx::tools::clipPolygonOnRange( aOuterPolygon, aViewRange, true, false ); + DBG_ASSERT( aClippedPolygon.count(), "polygon confirmed to overlap with view should not get here" ); + if( !aClippedPolygon.count() ) + continue; + } - // clip polygon against view - // (the call below for removing self intersections can be made much cheaper by this) - // TODO: move clipping before subdivision when clipPolyonRange learns to handle curves - const basegfx::B2DPolyPolygon aClippedPolygon = basegfx::tools::clipPolygonOnRange( aOuterPolygon, aViewRange, true, false ); - if( !aClippedPolygon.count() ) - return true; + // render-trapezoids have linear edges => get rid of bezier segments + if( aClippedPolygon.areControlPointsUsed() ) + aClippedPolygon = ::basegfx::tools::adaptiveSubdivideByDistance( aClippedPolygon, 0.125 ); // test and remove self intersections // TODO: make code intersection save, then remove this test @@ -1172,6 +1251,8 @@ bool X11SalGraphics::drawPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly if( !nPointCount ) continue; + aHTQueue.reserve( aHTQueue.size() + 8 * nPointCount ); + // convert polygon point pairs to HalfTrapezoids // connect the polygon point with the first one if needed XPointFixed aOldXPF = { 0, 0 }; @@ -1384,22 +1465,15 @@ bool X11SalGraphics::drawPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly XRenderColor aRenderColor = GetXRenderColor( nBrushColor_ , fTransparency ); rRenderPeer.FillRectangle( PictOpSrc, rEntry.m_aPicture, &aRenderColor, 0, 0, 1, 1 ); - // notify xrender of target drawable - // TODO: cache the matching xrender picture in the X11SalGraphics - Picture aDst = rRenderPeer.CreatePicture( hDrawable_, pVisualFormat, 0, NULL ); - // set clipping + // TODO: move into GetXRenderPicture? if( pClipRegion_ && !XEmptyRegion( pClipRegion_ ) ) - rRenderPeer.SetPictureClipRegion( aDst, pClipRegion_ ); + rRenderPeer.SetPictureClipRegion( aDstPic, pClipRegion_ ); // render the trapezoids const XRenderPictFormat* pMaskFormat = rRenderPeer.GetStandardFormatA8(); rRenderPeer.CompositeTrapezoids( PictOpOver, - rEntry.m_aPicture, aDst, pMaskFormat, 0, 0, &aTrapVector[0], aTrapVector.size() ); - - // release xrender-counterpart of target drawable - // TODO: use scoped xrender picture - rRenderPeer.FreePicture( aDst ); + rEntry.m_aPicture, aDstPic, pMaskFormat, 0, 0, &aTrapVector[0], aTrapVector.size() ); return TRUE; } @@ -1408,6 +1482,15 @@ bool X11SalGraphics::drawPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly bool X11SalGraphics::drawPolyLine(const ::basegfx::B2DPolygon& rPolygon, const ::basegfx::B2DVector& rLineWidth, basegfx::B2DLineJoin eLineJoin) { + // #i101491# + if(rPolygon.count() > 1000) + { + // the used basegfx::tools::createAreaGeometry is simply too + // expensive with very big polygons; fallback to caller (who + // should use ImplLineConverter normally) + return false; + } + const XRenderPeer& rRenderPeer = XRenderPeer::GetInstance(); if( !rRenderPeer.AreTrapezoidsSupported() ) return false; diff --git a/vcl/unx/source/gdi/salgdi2.cxx b/vcl/unx/source/gdi/salgdi2.cxx index 5a01b7f13d39..1d8e80df0663 100644 --- a/vcl/unx/source/gdi/salgdi2.cxx +++ b/vcl/unx/source/gdi/salgdi2.cxx @@ -796,21 +796,15 @@ bool X11SalGraphics::drawAlphaBitmap( const SalTwoRect& rTR, if( rPeer.GetVersion() < 0x02 ) return false; - const SalDisplay* pSalDisp = GetDisplay(); - const SalVisual& rSalVis = pSalDisp->GetVisual( m_nScreen ); - Display* pXDisplay = pSalDisp->GetDisplay(); - // create destination picture - // TODO: scoped Pixmap and Pictures - Visual* pDstXVisual = rSalVis.GetVisual(); - XRenderPictFormat* pDstVisFmt = rPeer.FindVisualFormat( pDstXVisual ); - if( !pDstVisFmt ) - return false; - - Picture aDstPic = rPeer.CreatePicture( hDrawable_, pDstVisFmt, 0, NULL ); + Picture aDstPic = GetXRenderPicture(); if( !aDstPic ) return false; + const SalDisplay* pSalDisp = GetDisplay(); + const SalVisual& rSalVis = pSalDisp->GetVisual( m_nScreen ); + Display* pXDisplay = pSalDisp->GetDisplay(); + // create source Picture int nDepth = m_pVDev ? m_pVDev->GetDepth() : rSalVis.GetDepth(); const X11SalBitmap& rSrcX11Bmp = static_cast<const X11SalBitmap&>( rSrcBitmap ); @@ -829,7 +823,12 @@ bool X11SalGraphics::drawAlphaBitmap( const SalTwoRect& rTR, if( !aSrcPM ) return false; - XRenderPictFormat* pSrcVisFmt = pDstVisFmt; + // create source picture + // TODO: use scoped picture + Visual* pSrcXVisual = rSalVis.GetVisual(); + XRenderPictFormat* pSrcVisFmt = rPeer.FindVisualFormat( pSrcXVisual ); + if( !pSrcVisFmt ) + return false; Picture aSrcPic = rPeer.CreatePicture( aSrcPM, pSrcVisFmt, 0, NULL ); if( !aSrcPic ) return false; @@ -843,16 +842,16 @@ bool X11SalGraphics::drawAlphaBitmap( const SalTwoRect& rTR, // an XImage needs its data top_down // TODO: avoid wrongly oriented images in upper layers! const int nImageSize = pAlphaBuffer->mnHeight * pAlphaBuffer->mnScanlineSize; - const char* pSrc = (char*)pAlphaBuffer->mpBits; + const char* pSrcBits = (char*)pAlphaBuffer->mpBits; char* pAlphaBits = new char[ nImageSize ]; if( BMP_SCANLINE_ADJUSTMENT( pAlphaBuffer->mnFormat ) == BMP_FORMAT_TOP_DOWN ) - memcpy( pAlphaBits, pSrc, nImageSize ); + memcpy( pAlphaBits, pSrcBits, nImageSize ); else { - char* pDst = pAlphaBits + nImageSize; + char* pDstBits = pAlphaBits + nImageSize; const int nLineSize = pAlphaBuffer->mnScanlineSize; - for(; (pDst -= nLineSize) >= pAlphaBits; pSrc += nLineSize ) - memcpy( pDst, pSrc, nLineSize ); + for(; (pDstBits -= nLineSize) >= pAlphaBits; pSrcBits += nLineSize ) + memcpy( pDstBits, pSrcBits, nLineSize ); } // the alpha values need to be inverted for XRender @@ -866,7 +865,7 @@ bool X11SalGraphics::drawAlphaBitmap( const SalTwoRect& rTR, *pCDst = ~*pCDst; const XRenderPictFormat* pAlphaFormat = rPeer.GetStandardFormatA8(); - XImage* pAlphaImg = XCreateImage( pXDisplay, pDstXVisual, 8, ZPixmap, 0, + XImage* pAlphaImg = XCreateImage( pXDisplay, pSrcXVisual, 8, ZPixmap, 0, pAlphaBits, pAlphaBuffer->mnWidth, pAlphaBuffer->mnHeight, pAlphaFormat->depth, pAlphaBuffer->mnScanlineSize ); @@ -904,7 +903,6 @@ bool X11SalGraphics::drawAlphaBitmap( const SalTwoRect& rTR, rPeer.FreePicture( aAlphaPic ); XFreePixmap(pXDisplay, aAlphaPM); rPeer.FreePicture( aSrcPic ); - rPeer.FreePicture( aDstPic ); return true; } @@ -922,20 +920,10 @@ bool X11SalGraphics::drawAlphaRect( long nX, long nY, long nWidth, return false; XRenderPeer& rPeer = XRenderPeer::GetInstance(); - if( rPeer.GetVersion() < 0x02 ) + if( rPeer.GetVersion() < 0x02 ) // TODO: replace with better test return false; - const SalDisplay* pSalDisp = GetDisplay(); - const SalVisual& rSalVis = pSalDisp->GetVisual( m_nScreen ); - - // create destination picture - // TODO: scoped Pixmap and Pictures - Visual* pDstXVisual = rSalVis.GetVisual(); - XRenderPictFormat* pDstVisFmt = rPeer.FindVisualFormat( pDstXVisual ); - if( !pDstVisFmt ) - return false; - - Picture aDstPic = rPeer.CreatePicture( hDrawable_, pDstVisFmt, 0, NULL ); + Picture aDstPic = GetXRenderPicture(); if( !aDstPic ) return false; @@ -948,9 +936,6 @@ bool X11SalGraphics::drawAlphaRect( long nX, long nY, long nWidth, nX, nY, nWidth, nHeight ); - // cleanup - rPeer.FreePicture( aDstPic ); - return true; } diff --git a/vcl/unx/source/gdi/salgdi3.cxx b/vcl/unx/source/gdi/salgdi3.cxx index e2c41b52006b..d1a60cda4097 100644 --- a/vcl/unx/source/gdi/salgdi3.cxx +++ b/vcl/unx/source/gdi/salgdi3.cxx @@ -50,6 +50,7 @@ #include "pspgraphics.h" #include "salvd.h" #include "xfont.hxx" +#include <vcl/sysdata.hxx> #include "xlfd_attr.hxx" #include "xlfd_smpl.hxx" #include "xlfd_extd.hxx" @@ -797,7 +798,11 @@ CairoWrapper::CairoWrapper() if( !XQueryExtension( GetX11SalData()->GetDisplay()->GetDisplay(), "RENDER", &nDummy, &nDummy, &nDummy ) ) return; +#ifdef MACOSX + OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( "libcairo.2.dylib" )); +#else OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( "libcairo.so.2" )); +#endif mpCairoLib = osl_loadModule( aLibName.pData, SAL_LOADMODULE_DEFAULT ); if( !mpCairoLib ) return; @@ -1018,29 +1023,22 @@ void X11SalGraphics::DrawCairoAAFontString( const ServerFontLayout& rLayout ) void X11SalGraphics::DrawServerAAFontString( const ServerFontLayout& rLayout ) { - Display* pDisplay = GetXDisplay(); - XRenderPeer& rRenderPeer = XRenderPeer::GetInstance(); - - // find a XRenderPictFormat compatible with the Drawable - XRenderPictFormat* pVisualFormat = static_cast<XRenderPictFormat*>(GetXRenderFormat()); - if( !pVisualFormat ) - { - Visual* pVisual = GetDisplay()->GetVisual( m_nScreen ).GetVisual(); - pVisualFormat = rRenderPeer.FindVisualFormat( pVisual ); - // cache the XRenderPictFormat - SetXRenderFormat( static_cast<void*>(pVisualFormat) ); - } - - DBG_ASSERT( pVisualFormat!=NULL, "no matching XRenderPictFormat for text" ); - if( !pVisualFormat ) + // get xrender target for this drawable + Picture aDstPic = GetXRenderPicture(); + if( !aDstPic ) return; // get a XRenderPicture for the font foreground + // TODO: move into own method + XRenderPeer& rRenderPeer = XRenderPeer::GetInstance(); + XRenderPictFormat* pVisualFormat = (XRenderPictFormat*)GetXRenderFormat(); + DBG_ASSERT( pVisualFormat, "we already have a render picture, but XRenderPictFormat==NULL???"); const int nVisualDepth = pVisualFormat->depth; SalDisplay::RenderEntry& rEntry = GetDisplay()->GetRenderEntries( m_nScreen )[ nVisualDepth ]; if( !rEntry.m_aPicture ) { // create and cache XRenderPicture for the font foreground + Display* pDisplay = GetXDisplay(); #ifdef DEBUG int iDummy; unsigned uDummy; @@ -1062,12 +1060,10 @@ void X11SalGraphics::DrawServerAAFontString( const ServerFontLayout& rLayout ) XRenderColor aRenderColor = GetXRenderColor( nTextPixel_ ); rRenderPeer.FillRectangle( PictOpSrc, rEntry.m_aPicture, &aRenderColor, 0, 0, 1, 1 ); - // notify xrender of target drawable - Picture aDst = rRenderPeer.CreatePicture( hDrawable_, pVisualFormat, 0, NULL ); - // set clipping + // TODO: move into GetXRenderPicture()? if( pClipRegion_ && !XEmptyRegion( pClipRegion_ ) ) - rRenderPeer.SetPictureClipRegion( aDst, pClipRegion_ ); + rRenderPeer.SetPictureClipRegion( aDstPic, pClipRegion_ ); ServerFont& rFont = rLayout.GetServerFont(); X11GlyphPeer& rGlyphPeer = X11GlyphCache::GetInstance().GetPeer(); @@ -1091,12 +1087,9 @@ void X11SalGraphics::DrawServerAAFontString( const ServerFontLayout& rLayout ) unsigned int aRenderAry[ MAXGLYPHS ]; for( int i = 0; i < nGlyphs; ++i ) aRenderAry[ i ] = rGlyphPeer.GetGlyphId( rFont, aGlyphAry[i] ); - rRenderPeer.CompositeString32( rEntry.m_aPicture, aDst, + rRenderPeer.CompositeString32( rEntry.m_aPicture, aDstPic, aGlyphSet, aPos.X(), aPos.Y(), aRenderAry, nGlyphs ); } - - // cleanup - rRenderPeer.FreePicture( aDst ); } //-------------------------------------------------------------------------- @@ -1703,6 +1696,31 @@ SalLayout* X11SalGraphics::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLe //-------------------------------------------------------------------------- +SystemFontData X11SalGraphics::GetSysFontData( int nFallbacklevel ) const +{ + SystemFontData aSysFontData; + aSysFontData.nSize = sizeof( SystemFontData ); + aSysFontData.nFontId = 0; + + if (nFallbacklevel >= MAX_FALLBACK) nFallbacklevel = MAX_FALLBACK - 1; + if (nFallbacklevel < 0 ) nFallbacklevel = 0; + + if (mpServerFont[nFallbacklevel] != NULL) + { + ServerFont* rFont = mpServerFont[nFallbacklevel]; + aSysFontData.nFontId = rFont->GetFtFace(); + aSysFontData.nFontFlags = rFont->GetLoadFlags(); + aSysFontData.bFakeBold = rFont->NeedsArtificialBold(); + aSysFontData.bFakeItalic = rFont->NeedsArtificialItalic(); + aSysFontData.bAntialias = rFont->GetAntialiasAdvice(); + aSysFontData.bVerticalCharacterType = rFont->GetFontSelData().mbVertical; + } + + return aSysFontData; +} + +//-------------------------------------------------------------------------- + BOOL X11SalGraphics::CreateFontSubset( const rtl::OUString& rToFile, const ImplFontData* pFont, diff --git a/vcl/unx/source/gdi/salprnpsp.cxx b/vcl/unx/source/gdi/salprnpsp.cxx index b3fdfaef56ce..2cf4e3baedd3 100644 --- a/vcl/unx/source/gdi/salprnpsp.cxx +++ b/vcl/unx/source/gdi/salprnpsp.cxx @@ -126,37 +126,6 @@ inline int PtTo10Mu( int nPoints ) { return (int)((((double)nPoints)*35.27777778 inline int TenMuToPt( int nUnits ) { return (int)((((double)nUnits)/35.27777778)+0.5); } -static struct -{ - int width; - int height; - const char* name; - int namelength; - Paper paper; -} aPaperTab[] = -{ - { 29700, 42000, "A3", 2, PAPER_A3 }, - { 21000, 29700, "A4", 2, PAPER_A4 }, - { 14800, 21000, "A5", 2, PAPER_A5 }, - { 25000, 35300, "B4", 2, PAPER_B4 }, - { 17600, 25000, "B5", 2, PAPER_B5 }, - { 21600, 27900, "Letter", 6, PAPER_LETTER }, - { 21600, 35600, "Legal", 5, PAPER_LEGAL }, - { 27900, 43100, "Tabloid", 7, PAPER_TABLOID }, - { 0, 0, "USER", 4, PAPER_USER } -}; - -static Paper getPaperType( const String& rPaperName ) -{ - ByteString aPaper( rPaperName, RTL_TEXTENCODING_ISO_8859_1 ); - for( unsigned int i = 0; i < sizeof( aPaperTab )/sizeof( aPaperTab[0] ); i++ ) - { - if( ! rtl_str_compareIgnoreAsciiCase( aPaper.GetBuffer(), aPaperTab[i].name ) ) - return aPaperTab[i].paper; - } - return PAPER_USER; -} - static void copyJobDataToJobSetup( ImplJobSetup* pJobSetup, JobData& rData ) { pJobSetup->meOrientation = (Orientation)(rData.m_eOrientation == orientation::Landscape ? ORIENTATION_LANDSCAPE : ORIENTATION_PORTRAIT); @@ -166,7 +135,8 @@ static void copyJobDataToJobSetup( ImplJobSetup* pJobSetup, JobData& rData ) int width, height; rData.m_aContext.getPageSize( aPaper, width, height ); - pJobSetup->mePaperFormat = getPaperType( aPaper ); + pJobSetup->mePaperFormat = PaperInfo::fromPSName(OUStringToOString( aPaper, RTL_TEXTENCODING_ISO_8859_1 )); + pJobSetup->mnPaperWidth = 0; pJobSetup->mnPaperHeight = 0; if( pJobSetup->mePaperFormat == PAPER_USER ) @@ -248,7 +218,7 @@ static bool passFileToCommandLine( const String& rFilename, const String& rComma struct stat aStat; if( stat( aFilename.GetBuffer(), &aStat ) ) fprintf( stderr, "stat( %s ) failed\n", aFilename.GetBuffer() ); - fprintf( stderr, "Tmp file %s has modes: %o\n", aFilename.GetBuffer(), aStat.st_mode ); + fprintf( stderr, "Tmp file %s has modes: 0%03lo\n", aFilename.GetBuffer(), (long)aStat.st_mode ); #endif const char* argv[4]; if( ! ( argv[ 0 ] = getenv( "SHELL" ) ) ) @@ -544,14 +514,9 @@ void PspSalInfoPrinter::InitPaperFormats( const ImplJobSetup* ) for( int i = 0; i < nValues; i++ ) { const PPDValue* pValue = pKey->getValue( i ); - vcl::PaperInfo aInfo; - aInfo.m_aPaperName = pValue->m_aOptionTranslation; - if( ! aInfo.m_aPaperName.Len() ) - aInfo.m_aPaperName = pValue->m_aOption; int nWidth = 0, nHeight = 0; m_aJobData.m_pParser->getPaperDimension( pValue->m_aOption, nWidth, nHeight ); - aInfo.m_nPaperWidth = (unsigned long)((PtTo10Mu( nWidth )+50)/100); - aInfo.m_nPaperHeight = (unsigned long)((PtTo10Mu( nHeight )+50)/100); + PaperInfo aInfo(PtTo10Mu( nWidth ), PtTo10Mu( nHeight )); m_aPaperFormats.push_back( aInfo ); } } @@ -730,7 +695,7 @@ BOOL PspSalInfoPrinter::SetData( TenMuToPt( pJobSetup->mnPaperWidth ), TenMuToPt( pJobSetup->mnPaperHeight ) ); else - aPaper = String( ByteString( aPaperTab[ pJobSetup->mePaperFormat ].name ), RTL_TEXTENCODING_ISO_8859_1 ); + aPaper = rtl::OStringToOUString(PaperInfo::toPSName(pJobSetup->mePaperFormat), RTL_TEXTENCODING_ISO_8859_1); pKey = aData.m_pParser->getKey( String( RTL_CONSTASCII_USTRINGPARAM( "PageSize" ) ) ); pValue = pKey ? pKey->getValueCaseInsensitive( aPaper ) : NULL; diff --git a/vcl/unx/source/gdi/salvd.cxx b/vcl/unx/source/gdi/salvd.cxx index 3e00dcb63bef..66e582e231b7 100644 --- a/vcl/unx/source/gdi/salvd.cxx +++ b/vcl/unx/source/gdi/salvd.cxx @@ -31,9 +31,9 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_vcl.hxx" -#include <prex.h> +#include <tools/prex.h> #include <X11/extensions/Xrender.h> -#include <postx.h> +#include <tools/postx.h> #include <salunx.h> #include <saldata.hxx> @@ -121,16 +121,14 @@ void X11SalGraphics::Init( X11SalVirtualDevice *pDevice, SalColormap* pColormap, if (m_pDeleteColormap != pOrigDeleteColormap) delete pOrigDeleteColormap; - hDrawable_ = pDevice->GetDrawable(); + const Drawable aVdevDrawable = pDevice->GetDrawable(); + SetDrawable( aVdevDrawable, m_nScreen ); + m_pVDev = pDevice; m_pFrame = NULL; bWindow_ = pDisplay->IsDisplay(); bVirDev_ = TRUE; - - nPenPixel_ = GetPixel( nPenColor_ ); - nTextPixel_ = GetPixel( nTextColor_ ); - nBrushPixel_ = GetPixel( nBrushColor_ ); } // -=-= SalVirDevData / SalVirtualDevice -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -274,3 +272,4 @@ void X11SalVirtualDevice::GetSize( long& rWidth, long& rHeight ) rWidth = GetWidth(); rHeight = GetHeight(); } + diff --git a/vcl/unx/source/gdi/xrender_peer.cxx b/vcl/unx/source/gdi/xrender_peer.cxx index 861bf0e454aa..d8f2045c6fde 100644 --- a/vcl/unx/source/gdi/xrender_peer.cxx +++ b/vcl/unx/source/gdi/xrender_peer.cxx @@ -82,7 +82,7 @@ void XRenderPeer::InitRenderLib() // we don't know if we are running on a system with xrender library // we don't want to install system libraries ourselves // => load them dynamically when they are there - OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( "libXrender.so.1" )); + const OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( "libXrender.so.1" )); mpRenderLib = osl_loadModule( aLibName.pData, SAL_LOADMODULE_DEFAULT ); if( !mpRenderLib ) { #ifdef DEBUG @@ -93,98 +93,81 @@ void XRenderPeer::InitRenderLib() return; } - OUString aQueryExtensionFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderQueryExtension")); oslGenericFunction pFunc; - pFunc = osl_getFunctionSymbol( mpRenderLib, aQueryExtensionFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderQueryExtension" ); if( !pFunc ) return; mpXRenderQueryExtension = (Bool(*)(Display*,int*,int*))pFunc; - OUString aQueryVersionFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderQueryVersion")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aQueryVersionFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderQueryVersion" ); if( !pFunc ) return; mpXRenderQueryVersion = (void(*)(Display*,int*,int*))pFunc; - OUString aVisFormatFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFindVisualFormat")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aVisFormatFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFindVisualFormat" ); if( !pFunc ) return; mpXRenderFindVisualFormat = (XRenderPictFormat*(*)(Display*,Visual*))pFunc; - OUString aStdFormatFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFindStandardFormat")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aStdFormatFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFindStandardFormat" ); if( !pFunc ) return; mpXRenderFindStandardFormat = (XRenderPictFormat*(*)(Display*,int))pFunc; - OUString aFmtFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFindFormat")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aFmtFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFindFormat" ); if( !pFunc ) return; mpXRenderFindFormat = (XRenderPictFormat*(*)(Display*,unsigned long, const XRenderPictFormat*,int))pFunc; - OUString aCreatGlyphFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderCreateGlyphSet")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aCreatGlyphFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCreateGlyphSet" ); if( !pFunc ) return; mpXRenderCreateGlyphSet = (GlyphSet(*)(Display*,const XRenderPictFormat*))pFunc; - OUString aFreeGlyphFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFreeGlyphSet")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aFreeGlyphFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFreeGlyphSet" ); if( !pFunc ) return; mpXRenderFreeGlyphSet = (void(*)(Display*,GlyphSet))pFunc; - OUString aAddGlyphFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderAddGlyphs")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aAddGlyphFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderAddGlyphs" ); if( !pFunc ) return; mpXRenderAddGlyphs = (void(*)(Display*,GlyphSet,Glyph*,const XGlyphInfo*, int,const char*,int))pFunc; - OUString aFreeGlyphsFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFreeGlyphs")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aFreeGlyphsFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFreeGlyphs" ); if( !pFunc ) return; mpXRenderFreeGlyphs = (void(*)(Display*,GlyphSet,Glyph*,int))pFunc; - OUString aCompStringFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderCompositeString32")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aCompStringFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCompositeString32" ); if( !pFunc ) return; mpXRenderCompositeString32 = (void(*)(Display*,int,Picture,Picture, const XRenderPictFormat*,GlyphSet,int,int,int,int,const unsigned*,int))pFunc; - OUString aCreatPicFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderCreatePicture")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aCreatPicFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCreatePicture" ); if( !pFunc ) return; mpXRenderCreatePicture = (Picture(*)(Display*,Drawable,const XRenderPictFormat*, unsigned long,const XRenderPictureAttributes*))pFunc; - OUString aSetClipFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderSetPictureClipRegion")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aSetClipFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderSetPictureClipRegion" ); if( !pFunc ) return; mpXRenderSetPictureClipRegion = (void(*)(Display*,Picture,XLIB_Region))pFunc; - OUString aFreePicFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFreePicture")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aFreePicFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFreePicture" ); if( !pFunc ) return; mpXRenderFreePicture = (void(*)(Display*,Picture))pFunc; - OUString aRenderCompositeFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderComposite")); - pFunc = osl_getFunctionSymbol( mpRenderLib, aRenderCompositeFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderComposite" ); if( !pFunc ) return; mpXRenderComposite = (void(*)(Display*,int,Picture,Picture,Picture, int,int,int,int,int,int,unsigned,unsigned))pFunc; - OUString aFillRectangleFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFillRectangle")); - pFunc=osl_getFunctionSymbol( mpRenderLib, aFillRectangleFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFillRectangle" ); if( !pFunc ) return; mpXRenderFillRectangle = (void(*)(Display*,int,Picture,const XRenderColor*, int,int,unsigned int,unsigned int))pFunc; - OUString aCompositeTrapsFuncName( RTL_CONSTASCII_USTRINGPARAM("XRenderCompositeTrapezoids")); - pFunc=osl_getFunctionSymbol( mpRenderLib, aCompositeTrapsFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCompositeTrapezoids" ); #if 0 // not having trapezoid support is supported if( !pFunc ) return; #endif mpXRenderCompositeTrapezoids = (void(*)(Display*,int,Picture,Picture, const XRenderPictFormat*,int,int,const XTrapezoid*,int))pFunc; - OUString aAddTrapsFuncName( RTL_CONSTASCII_USTRINGPARAM("XRenderAddTraps")); - pFunc=osl_getFunctionSymbol( mpRenderLib, aAddTrapsFuncName.pData); + pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderAddTraps" ); #if 0 // not having trapezoid support is supported if( !pFunc ) return; #endif diff --git a/vcl/unx/source/gdi/xrender_peer.hxx b/vcl/unx/source/gdi/xrender_peer.hxx index 24abd9d239e2..f1e2fd77a273 100644 --- a/vcl/unx/source/gdi/xrender_peer.hxx +++ b/vcl/unx/source/gdi/xrender_peer.hxx @@ -31,9 +31,9 @@ #ifndef _SV_XRENDER_PEER_HXX #define _SV_XRENDER_PEER_HXX -#include <prex.h> +#include <tools/prex.h> #include <X11/extensions/Xrender.h> -#include <postx.h> +#include <tools/postx.h> #include <vcl/salgtype.hxx> #include <osl/module.h> diff --git a/vcl/unx/source/plugadapt/salplug.cxx b/vcl/unx/source/plugadapt/salplug.cxx index 668493c6ccb3..0c791ca8091f 100644 --- a/vcl/unx/source/plugadapt/salplug.cxx +++ b/vcl/unx/source/plugadapt/salplug.cxx @@ -37,9 +37,9 @@ #include <rtl/ustrbuf.hxx> #include <svunx.h> -#include <prex.h> +#include <tools/prex.h> #include <X11/Xatom.h> -#include <postx.h> +#include <tools/postx.h> #include <vcl/salinst.hxx> #include <saldata.hxx> @@ -79,8 +79,7 @@ static SalInstance* tryInstance( const OUString& rModuleBase ) SAL_LOADMODULE_DEFAULT ); if( aMod ) { - OUString aSym( RTL_CONSTASCII_USTRINGPARAM( "create_SalInstance" ) ); - salFactoryProc aProc = (salFactoryProc)osl_getFunctionSymbol( aMod, aSym.pData ); + salFactoryProc aProc = (salFactoryProc)osl_getAsciiFunctionSymbol( aMod, "create_SalInstance" ); if( aProc ) { pInst = aProc( aMod ); @@ -113,7 +112,7 @@ static SalInstance* tryInstance( const OUString& rModuleBase ) { #if OSL_DEBUG_LEVEL > 1 std::fprintf( stderr, "could not load symbol %s from shared object %s\n", - OUStringToOString( aSym, RTL_TEXTENCODING_ASCII_US ).getStr(), + "create_SalInstance", OUStringToOString( aModule, RTL_TEXTENCODING_ASCII_US ).getStr() ); #endif osl_unloadModule( aMod ); diff --git a/vcl/unx/source/printer/printerinfomanager.cxx b/vcl/unx/source/printer/printerinfomanager.cxx index cf5a4a886c41..b3e5b4667a6a 100644 --- a/vcl/unx/source/printer/printerinfomanager.cxx +++ b/vcl/unx/source/printer/printerinfomanager.cxx @@ -44,6 +44,8 @@ #include "tools/debug.hxx" #include "tools/config.hxx" +#include "i18npool/paper.hxx" + #include "rtl/strbuf.hxx" #include "osl/thread.hxx" @@ -154,77 +156,9 @@ void PrinterInfoManager::setCUPSDisabled( bool bDisable ) void PrinterInfoManager::initSystemDefaultPaper() { - bool bSuccess = false; - - // try libpaper - - // #i78617# workaround missing paperconf command - FILE* pPipe = popen( "sh -c paperconf 2>/dev/null", "r" ); - if( pPipe ) - { - char pBuffer[ 1024 ]; - *pBuffer = 0; - fgets( pBuffer, sizeof(pBuffer)-1, pPipe ); - pclose( pPipe ); - - ByteString aPaper( pBuffer ); - aPaper = WhitespaceToSpace( aPaper ); - if( aPaper.Len() ) - { - m_aSystemDefaultPaper = OUString( OStringToOUString( aPaper, osl_getThreadTextEncoding() ) ); - bSuccess = true; - #if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "paper from paperconf = %s\n", aPaper.GetBuffer() ); - #endif - } - if( bSuccess ) - return; - } - - // default value is Letter for US (en_US), Cannada (en_CA, fr_CA); else A4 - // en will be interpreted as en_US - - // note: at this point m_aSystemDefaultPaper is set to "A4" from the constructor - - // check for LC_PAPER - const char* pPaperLang = getenv( "LC_PAPER" ); - if( pPaperLang && *pPaperLang ) - { - OString aLang( pPaperLang ); - if( aLang.getLength() > 5 ) - aLang = aLang.copy( 0, 5 ); - if( aLang.getLength() == 5 ) - { - if( aLang.equalsIgnoreAsciiCase( "en_us" ) - || aLang.equalsIgnoreAsciiCase( "en_ca" ) - || aLang.equalsIgnoreAsciiCase( "fr_ca" ) - ) - m_aSystemDefaultPaper = OUString( RTL_CONSTASCII_USTRINGPARAM( "Letter" ) ); - } - else if( aLang.getLength() == 2 && aLang.equalsIgnoreAsciiCase( "en" ) ) - m_aSystemDefaultPaper = OUString( RTL_CONSTASCII_USTRINGPARAM( "Letter" ) ); - return; - } - - // use process locale to determine paper - rtl_Locale* pLoc = NULL; - osl_getProcessLocale( &pLoc ); - if( pLoc ) - { - if( 0 == rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( pLoc->Language->buffer, pLoc->Language->length, "en") ) - { - if( 0 == rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( pLoc->Country->buffer, pLoc->Country->length, "us") - || 0 == rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( pLoc->Country->buffer, pLoc->Country->length, "ca") - || pLoc->Country->length == 0 - ) - m_aSystemDefaultPaper = OUString( RTL_CONSTASCII_USTRINGPARAM( "Letter" ) ); - } - else if( 0 == rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( pLoc->Language->buffer, pLoc->Language->length, "fr") ) - { - if( 0 == rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( pLoc->Country->buffer, pLoc->Country->length, "ca") ) - m_aSystemDefaultPaper = OUString( RTL_CONSTASCII_USTRINGPARAM( "Letter" ) ); - } - } + m_aSystemDefaultPaper = rtl::OStringToOUString( + PaperInfo::toPSName(PaperInfo::getSystemDefaultPaper().getPaper()), + RTL_TEXTENCODING_UTF8); } // ----------------------------------------------------------------- diff --git a/vcl/unx/source/window/salframe.cxx b/vcl/unx/source/window/salframe.cxx index 8f2bccebc443..04eb9cd32771 100644 --- a/vcl/unx/source/window/salframe.cxx +++ b/vcl/unx/source/window/salframe.cxx @@ -36,7 +36,7 @@ #include <stdlib.h> #include <unistd.h> -#include "prex.h" +#include <tools/prex.h> #include <X11/Xatom.h> #include <X11/keysym.h> #include "FWS.hxx" @@ -44,7 +44,7 @@ #ifndef SOLARIS #include <X11/extensions/dpms.h> #endif -#include "postx.h" +#include <tools/postx.h> #include "salunx.h" #include "saldata.hxx" @@ -72,6 +72,7 @@ #include "tools/debug.hxx" #include "sal/alloca.h" +#include <com/sun/star/uno/Exception.hpp> #include <algorithm> @@ -425,15 +426,26 @@ void X11SalFrame::Init( ULONG nSalFrameStyle, int nScreen, SystemParentData* pPa if( IsOverrideRedirect() ) Attributes.override_redirect = True; // default icon - if( (nStyle_ & SAL_FRAME_STYLE_INTRO) == 0 && - SelectAppIconPixmap( pDisplay_, m_nScreen, - mnIconID != 1 ? mnIconID : - (mpParent ? mpParent->mnIconID : 1), 32, - Hints.icon_pixmap, Hints.icon_mask )) + if( (nStyle_ & SAL_FRAME_STYLE_INTRO) == 0 ) { - Hints.flags |= IconPixmapHint; - if( Hints.icon_mask ) - Hints.flags |= IconMaskHint; + bool bOk=false; + try + { + bOk=SelectAppIconPixmap( pDisplay_, m_nScreen, + mnIconID != 1 ? mnIconID : + (mpParent ? mpParent->mnIconID : 1), 32, + Hints.icon_pixmap, Hints.icon_mask ); + } + catch( com::sun::star::uno::Exception& ) + { + // can happen - no ucb during early startup + } + if( bOk ) + { + Hints.flags |= IconPixmapHint; + if( Hints.icon_mask ) + Hints.flags |= IconMaskHint; + } } // find the top level frame of the transience hierarchy @@ -2799,6 +2811,11 @@ static USHORT sal_GetCode( int state ) if( state & Mod1Mask ) nCode |= KEY_MOD2; + // Map Meta/Super modifier to MOD3 on all Unix systems + // except Mac OS X + if( (state & Mod3Mask) ) + nCode |= KEY_MOD3; + return nCode; } @@ -3167,7 +3184,8 @@ long X11SalFrame::HandleKeyEvent( XKeyEvent *pEvent ) if( nKeySym == XK_Shift_L || nKeySym == XK_Shift_R || nKeySym == XK_Control_L || nKeySym == XK_Control_R || nKeySym == XK_Alt_L || nKeySym == XK_Alt_R - || nKeySym == XK_Meta_L || nKeySym == XK_Meta_R ) + || nKeySym == XK_Meta_L || nKeySym == XK_Meta_R + || nKeySym == XK_Super_L || nKeySym == XK_Super_R ) { SalKeyModEvent aModEvt; aModEvt.mnModKeyCode = 0; @@ -3211,6 +3229,18 @@ long X11SalFrame::HandleKeyEvent( XKeyEvent *pEvent ) nExtModMask = MODKEY_RSHIFT; nModMask = KEY_SHIFT; break; + // Map Meta/Super keys to MOD3 modifier on all Unix systems + // except Mac OS X + case XK_Meta_L: + case XK_Super_L: + nExtModMask = MODKEY_LMOD3; + nModMask = KEY_MOD3; + break; + case XK_Meta_R: + case XK_Super_R: + nExtModMask = MODKEY_RMOD3; + nModMask = KEY_MOD3; + break; } if( pEvent->type == KeyRelease ) { diff --git a/vcl/unx/source/window/salobj.cxx b/vcl/unx/source/window/salobj.cxx index fd3a12ed2d34..eed6264f00bc 100644 --- a/vcl/unx/source/window/salobj.cxx +++ b/vcl/unx/source/window/salobj.cxx @@ -31,10 +31,10 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_vcl.hxx" -#include <prex.h> +#include <tools/prex.h> #include <X11/Xlib.h> #include <X11/extensions/shape.h> -#include <postx.h> +#include <tools/postx.h> #include <salunx.h> #include <salstd.hxx> @@ -474,6 +474,8 @@ static USHORT sal_GetCode( int state ) nCode |= KEY_MOD1; if( state & Mod1Mask ) nCode |= KEY_MOD2; + if( state & Mod3Mask ) + nCode |= KEY_MOD3; return nCode; } diff --git a/vcl/util/linksvp/makefile.mk b/vcl/util/linksvp/makefile.mk index 8a3c840ba627..e5e82323af5c 100644 --- a/vcl/util/linksvp/makefile.mk +++ b/vcl/util/linksvp/makefile.mk @@ -54,15 +54,10 @@ SHL1LIBS=$(LIB1TARGET) SHL1DEPN=$(LB)$/libvcl$(DLLPOSTFIX)$(DLLPOST) SHL1STDLIBS=\ $(VCLLIB)\ + $(I18NPAPERLIB)\ $(BASEBMPLIB)\ $(BASEGFXLIB)\ - $(SOTLIB) \ - $(UNOTOOLSLIB) \ $(TOOLSLIB) \ - $(COMPHELPERLIB) \ - $(UCBHELPERLIB) \ - $(CPPUHELPERLIB) \ - $(CPPULIB) \ $(VOSLIB) \ $(SALLIB) .ENDIF # GUIBASE unx diff --git a/vcl/util/makefile.mk b/vcl/util/makefile.mk index 6f5fd8a99522..96c28980118f 100644 --- a/vcl/util/makefile.mk +++ b/vcl/util/makefile.mk @@ -170,8 +170,9 @@ SHL1STDLIBS+=\ $(SOTLIB) \ $(UNOTOOLSLIB) \ $(TOOLSLIB) \ + $(I18NPAPERLIB) \ $(I18NISOLANGLIB) \ - $(I18NUTILLIB) \ + $(I18NUTILLIB) \ $(COMPHELPERLIB) \ $(UCBHELPERLIB) \ $(CPPUHELPERLIB) \ @@ -264,13 +265,8 @@ SHL2DEPN=$(SHL1IMPLIBN) $(SHL1TARGETN) # libs for generic plugin SHL2STDLIBS=\ $(VCLLIB)\ - $(SOTLIB) \ - $(UNOTOOLSLIB) \ + $(I18NPAPERLIB) \ $(TOOLSLIB) \ - $(COMPHELPERLIB) \ - $(UCBHELPERLIB) \ - $(CPPUHELPERLIB) \ - $(CPPULIB) \ $(VOSLIB) \ $(BASEGFXLIB) \ $(SALLIB) @@ -344,11 +340,7 @@ SHL4NOCHECK=TRUE SHL4STDLIBS+=-l$(SHL2TARGET) SHL4STDLIBS+=\ $(VCLLIB) \ - $(SOTLIB) \ - $(UNOTOOLSLIB) \ $(TOOLSLIB) \ - $(COMPHELPERLIB) \ - $(UCBHELPERLIB) \ $(CPPUHELPERLIB) \ $(CPPULIB) \ $(VOSLIB) \ diff --git a/vcl/win/inc/salgdi.h b/vcl/win/inc/salgdi.h index f9d4681e0e6e..0475ea4a193e 100644 --- a/vcl/win/inc/salgdi.h +++ b/vcl/win/inc/salgdi.h @@ -352,6 +352,7 @@ public: virtual BOOL IsNativeControlSupported( ControlType nType, ControlPart nPart ); virtual SystemGraphicsData GetGraphicsData() const; + virtual SystemFontData GetSysFontData( int nFallbacklevel ) const; }; // Init/Deinit Graphics diff --git a/vcl/win/source/gdi/MAKEFILE.MK b/vcl/win/source/gdi/MAKEFILE.MK index d50abc1b5aa3..a6d84d41f3ea 100644 --- a/vcl/win/source/gdi/MAKEFILE.MK +++ b/vcl/win/source/gdi/MAKEFILE.MK @@ -44,7 +44,6 @@ TARGET=salgdi # --- #105371# .IF "$(COM)"=="GCC" -CDEFS += -UWINVER -DWINVER=0x0400 .ELSE CFLAGS += -DWINVER=0x0400 .ENDIF diff --git a/vcl/win/source/gdi/salgdi3.cxx b/vcl/win/source/gdi/salgdi3.cxx index 16c055209088..99f276faa964 100644 --- a/vcl/win/source/gdi/salgdi3.cxx +++ b/vcl/win/source/gdi/salgdi3.cxx @@ -34,6 +34,10 @@ #include <string.h> #include <malloc.h> +#include <tools/prewin.h> +#include <windows.h> +#include <tools/postwin.h> +#include <vcl/sysdata.hxx> #include "tools/svwin.h" #include "wincomp.hxx" @@ -2849,3 +2853,26 @@ void WinSalGraphics::DrawServerFontLayout( const ServerFontLayout& ) {} //-------------------------------------------------------------------------- + +SystemFontData WinSalGraphics::GetSysFontData( int nFallbacklevel ) const +{ + SystemFontData aSysFontData; + + if (nFallbacklevel >= MAX_FALLBACK) nFallbacklevel = MAX_FALLBACK - 1; + if (nFallbacklevel < 0 ) nFallbacklevel = 0; + + aSysFontData.nSize = sizeof( SystemFontData ); + aSysFontData.hFont = mhFonts[nFallbacklevel]; + aSysFontData.bFakeBold = false; + aSysFontData.bFakeItalic = false; + aSysFontData.bAntialias = true; + aSysFontData.bVerticalCharacterType = false; + + OSL_TRACE("\r\n:WinSalGraphics::GetSysFontData(): FontID: %p, Fallback level: %d", + aSysFontData.hFont, + nFallbacklevel); + + return aSysFontData; +} + +//-------------------------------------------------------------------------- diff --git a/vcl/win/source/gdi/salgdi_gdiplus.cxx b/vcl/win/source/gdi/salgdi_gdiplus.cxx index 8709fc872540..5c00c786e22d 100644 --- a/vcl/win/source/gdi/salgdi_gdiplus.cxx +++ b/vcl/win/source/gdi/salgdi_gdiplus.cxx @@ -64,75 +64,79 @@ void impAddB2DPolygonToGDIPlusGraphicsPath(Gdiplus::GraphicsPath& rPath, const basegfx::B2DPolygon& rPolygon) { - const sal_uInt32 nCount(rPolygon.count());
-
- if(nCount)
- {
- const sal_uInt32 nEdgeCount(rPolygon.isClosed() ? nCount : nCount - 1);
- const bool bControls(rPolygon.areControlPointsUsed());
- basegfx::B2DPoint aCurr(rPolygon.getB2DPoint(0));
- Gdiplus::PointF aFCurr(Gdiplus::REAL(aCurr.getX()), Gdiplus::REAL(aCurr.getY()));
-
- for(sal_uInt32 a(0); a < nEdgeCount; a++)
- {
- const sal_uInt32 nNextIndex((a + 1) % nCount);
- const basegfx::B2DPoint aNext(rPolygon.getB2DPoint(nNextIndex));
- const Gdiplus::PointF aFNext(Gdiplus::REAL(aNext.getX()), Gdiplus::REAL(aNext.getY()));
-
- if(bControls && (rPolygon.isNextControlPointUsed(a) || rPolygon.isPrevControlPointUsed(nNextIndex)))
- {
- const basegfx::B2DPoint aCa(rPolygon.getNextControlPoint(a));
- const basegfx::B2DPoint aCb(rPolygon.getPrevControlPoint(nNextIndex));
-
- rPath.AddBezier(
- aFCurr,
- Gdiplus::PointF(Gdiplus::REAL(aCa.getX()), Gdiplus::REAL(aCa.getY())),
- Gdiplus::PointF(Gdiplus::REAL(aCb.getX()), Gdiplus::REAL(aCb.getY())),
- aFNext);
- }
- else
- {
- rPath.AddLine(aFCurr, aFNext);
- }
-
- if(a + 1 < nEdgeCount)
- {
- aCurr = aNext;
- aFCurr = aFNext;
- }
- }
- }
+ const sal_uInt32 nCount(rPolygon.count()); + + if(nCount) + { + const sal_uInt32 nEdgeCount(rPolygon.isClosed() ? nCount : nCount - 1); + const bool bControls(rPolygon.areControlPointsUsed()); + basegfx::B2DPoint aCurr(rPolygon.getB2DPoint(0)); + Gdiplus::PointF aFCurr(Gdiplus::REAL(aCurr.getX()), Gdiplus::REAL(aCurr.getY())); + + for(sal_uInt32 a(0); a < nEdgeCount; a++) + { + const sal_uInt32 nNextIndex((a + 1) % nCount); + const basegfx::B2DPoint aNext(rPolygon.getB2DPoint(nNextIndex)); + const Gdiplus::PointF aFNext(Gdiplus::REAL(aNext.getX()), Gdiplus::REAL(aNext.getY())); + + if(bControls && (rPolygon.isNextControlPointUsed(a) || rPolygon.isPrevControlPointUsed(nNextIndex))) + { + const basegfx::B2DPoint aCa(rPolygon.getNextControlPoint(a)); + const basegfx::B2DPoint aCb(rPolygon.getPrevControlPoint(nNextIndex)); + + rPath.AddBezier( + aFCurr, + Gdiplus::PointF(Gdiplus::REAL(aCa.getX()), Gdiplus::REAL(aCa.getY())), + Gdiplus::PointF(Gdiplus::REAL(aCb.getX()), Gdiplus::REAL(aCb.getY())), + aFNext); + } + else + { + rPath.AddLine(aFCurr, aFNext); + } + + if(a + 1 < nEdgeCount) + { + aCurr = aNext; + aFCurr = aFNext; + } + } + } } bool WinSalGraphics::drawPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPolygon, double fTransparency) { - const sal_uInt32 nCount(rPolyPolygon.count());
+ const sal_uInt32 nCount(rPolyPolygon.count()); if(mbBrush && nCount && (fTransparency >= 0.0 && fTransparency < 1.0)) { - Gdiplus::Graphics aGraphics(mhDC);
+ Gdiplus::Graphics aGraphics(mhDC); const sal_uInt8 aTrans((sal_uInt8)255 - (sal_uInt8)basegfx::fround(fTransparency * 255.0)); - Gdiplus::Color aTestColor(aTrans, SALCOLOR_RED(maFillColor), SALCOLOR_GREEN(maFillColor), SALCOLOR_BLUE(maFillColor));
- Gdiplus::SolidBrush aTestBrush(aTestColor);
- Gdiplus::GraphicsPath aPath;
+ Gdiplus::Color aTestColor(aTrans, SALCOLOR_RED(maFillColor), SALCOLOR_GREEN(maFillColor), SALCOLOR_BLUE(maFillColor)); + Gdiplus::SolidBrush aTestBrush(aTestColor); + Gdiplus::GraphicsPath aPath; for(sal_uInt32 a(0); a < nCount; a++) { - aPath.StartFigure(); + if(0 != a) + { + aPath.StartFigure(); // #i101491# not needed for first run + } + impAddB2DPolygonToGDIPlusGraphicsPath(aPath, rPolyPolygon.getB2DPolygon(a)); aPath.CloseFigure(); } if(getAntiAliasB2DDraw()) { - aGraphics.SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias);
- }
- else
- {
- aGraphics.SetSmoothingMode(Gdiplus::SmoothingModeNone);
- }
-
- aGraphics.FillPath(&aTestBrush, &aPath);
+ aGraphics.SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias); + } + else + { + aGraphics.SetSmoothingMode(Gdiplus::SmoothingModeNone); + } + + aGraphics.FillPath(&aTestBrush, &aPath); } return true; @@ -140,53 +144,59 @@ bool WinSalGraphics::drawPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly bool WinSalGraphics::drawPolyLine(const basegfx::B2DPolygon& rPolygon, const basegfx::B2DVector& rLineWidths, basegfx::B2DLineJoin eLineJoin) { - const sal_uInt32 nCount(rPolygon.count());
+ const sal_uInt32 nCount(rPolygon.count()); if(mbPen && nCount) { - Gdiplus::Graphics aGraphics(mhDC);
- Gdiplus::Color aTestColor(255, SALCOLOR_RED(maLineColor), SALCOLOR_GREEN(maLineColor), SALCOLOR_BLUE(maLineColor));
- Gdiplus::Pen aTestPen(aTestColor, Gdiplus::REAL(rLineWidths.getX()));
- Gdiplus::GraphicsPath aPath;
-
- switch(eLineJoin)
- {
+ Gdiplus::Graphics aGraphics(mhDC); + Gdiplus::Color aTestColor(255, SALCOLOR_RED(maLineColor), SALCOLOR_GREEN(maLineColor), SALCOLOR_BLUE(maLineColor)); + Gdiplus::Pen aTestPen(aTestColor, Gdiplus::REAL(rLineWidths.getX())); + Gdiplus::GraphicsPath aPath; + + switch(eLineJoin) + { default : // basegfx::B2DLINEJOIN_NONE : { break; } case basegfx::B2DLINEJOIN_BEVEL : { - aTestPen.SetLineJoin(Gdiplus::LineJoinBevel);
+ aTestPen.SetLineJoin(Gdiplus::LineJoinBevel); break; } case basegfx::B2DLINEJOIN_MIDDLE : case basegfx::B2DLINEJOIN_MITER : { const Gdiplus::REAL aMiterLimit(15.0); - aTestPen.SetMiterLimit(aMiterLimit);
- aTestPen.SetLineJoin(Gdiplus::LineJoinMiter);
+ aTestPen.SetMiterLimit(aMiterLimit); + aTestPen.SetLineJoin(Gdiplus::LineJoinMiter); break; } case basegfx::B2DLINEJOIN_ROUND : { - aTestPen.SetLineJoin(Gdiplus::LineJoinRound);
+ aTestPen.SetLineJoin(Gdiplus::LineJoinRound); break; } - }
+ } impAddB2DPolygonToGDIPlusGraphicsPath(aPath, rPolygon); -
- if(getAntiAliasB2DDraw())
- {
- aGraphics.SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias);
- }
- else
- {
- aGraphics.SetSmoothingMode(Gdiplus::SmoothingModeNone);
- }
-
- aGraphics.DrawPath(&aTestPen, &aPath);
+ + if(rPolygon.isClosed()) + { + // #i101491# needed to create the correct line joins + aPath.CloseFigure(); + } + + if(getAntiAliasB2DDraw()) + { + aGraphics.SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias); + } + else + { + aGraphics.SetSmoothingMode(Gdiplus::SmoothingModeNone); + } + + aGraphics.DrawPath(&aTestPen, &aPath); } return true; diff --git a/vcl/win/source/gdi/salnativewidgets-luna.cxx b/vcl/win/source/gdi/salnativewidgets-luna.cxx index b99f0e2a6ce0..5a5703e10944 100644 --- a/vcl/win/source/gdi/salnativewidgets-luna.cxx +++ b/vcl/win/source/gdi/salnativewidgets-luna.cxx @@ -100,18 +100,12 @@ VisualStylesAPI::VisualStylesAPI() if ( mhModule ) { - OUString queryFuncName( RTL_CONSTASCII_USTRINGPARAM( "OpenThemeData" ) ); - lpfnOpenThemeData = (OpenThemeData_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData ); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "CloseThemeData" ) ); - lpfnCloseThemeData = (CloseThemeData_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData ); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "GetThemeBackgroundContentRect" ) ); - lpfnGetThemeBackgroundContentRect = (GetThemeBackgroundContentRect_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData ); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "DrawThemeBackground" ) ); - lpfnDrawThemeBackground = (DrawThemeBackground_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData ); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "DrawThemeText" ) ); - lpfnDrawThemeText = (DrawThemeText_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData ); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "GetThemePartSize" ) ); - lpfnGetThemePartSize = (GetThemePartSize_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData ); + lpfnOpenThemeData = (OpenThemeData_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "OpenThemeData" ); + lpfnCloseThemeData = (CloseThemeData_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "CloseThemeData" ); + lpfnGetThemeBackgroundContentRect = (GetThemeBackgroundContentRect_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "GetThemeBackgroundContentRect" ); + lpfnDrawThemeBackground = (DrawThemeBackground_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "DrawThemeBackground" ); + lpfnDrawThemeText = (DrawThemeText_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "DrawThemeText" ); + lpfnGetThemePartSize = (GetThemePartSize_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "GetThemePartSize" ); } else { diff --git a/vcl/win/source/gdi/salprn.cxx b/vcl/win/source/gdi/salprn.cxx index cc359da97cd9..ecf91aea7c1b 100644 --- a/vcl/win/source/gdi/salprn.cxx +++ b/vcl/win/source/gdi/salprn.cxx @@ -894,6 +894,24 @@ static void ImplDevModeToJobSetup( WinSalInfoPrinter* pPrinter, ImplJobSetup* pS } switch( CHOOSE_DEVMODE(dmPaperSize) ) { + case( DMPAPER_LETTER ): + pSetupData->mePaperFormat = PAPER_LETTER; + break; + case( DMPAPER_TABLOID ): + pSetupData->mePaperFormat = PAPER_TABLOID; + break; + case( DMPAPER_LEDGER ): + pSetupData->mePaperFormat = PAPER_LEDGER; + break; + case( DMPAPER_LEGAL ): + pSetupData->mePaperFormat = PAPER_LEGAL; + break; + case( DMPAPER_STATEMENT ): + pSetupData->mePaperFormat = PAPER_STATEMENT; + break; + case( DMPAPER_EXECUTIVE ): + pSetupData->mePaperFormat = PAPER_EXECUTIVE; + break; case( DMPAPER_A3 ): pSetupData->mePaperFormat = PAPER_A3; break; @@ -903,20 +921,138 @@ static void ImplDevModeToJobSetup( WinSalInfoPrinter* pPrinter, ImplJobSetup* pS case( DMPAPER_A5 ): pSetupData->mePaperFormat = PAPER_A5; break; + //See http://wiki.services.openoffice.org/wiki/DefaultPaperSize + //i.e. + //http://msdn.microsoft.com/en-us/library/dd319099(VS.85).aspx + //DMPAPER_B4 12 B4 (JIS) 257 x 364 mm + //http://partners.adobe.com/public/developer/en/ps/5003.PPD_Spec_v4.3.pdf + //also says that the MS DMPAPER_B4 is JIS, which makes most sense. And + //matches our Excel filter's belief about the matching XlPaperSize + //enumeration. + // + //http://msdn.microsoft.com/en-us/library/ms776398(VS.85).aspx said + ////"DMPAPER_B4 12 B4 (JIS) 250 x 354" + //which is bogus as it's either JIS 257 × 364 or ISO 250 × 353 + //(cmc) case( DMPAPER_B4 ): - pSetupData->mePaperFormat = PAPER_B4; + pSetupData->mePaperFormat = PAPER_B4_JIS; break; case( DMPAPER_B5 ): - pSetupData->mePaperFormat = PAPER_B5; + pSetupData->mePaperFormat = PAPER_B5_JIS; break; - case( DMPAPER_LETTER ): + case( DMPAPER_QUARTO ): + pSetupData->mePaperFormat = PAPER_QUARTO; + break; + case( DMPAPER_10X14 ): + pSetupData->mePaperFormat = PAPER_10x14; + break; + case( DMPAPER_NOTE ): pSetupData->mePaperFormat = PAPER_LETTER; break; - case( DMPAPER_LEGAL ): - pSetupData->mePaperFormat = PAPER_LEGAL; + case( DMPAPER_ENV_9 ): + pSetupData->mePaperFormat = PAPER_ENV_9; break; - case( DMPAPER_TABLOID ): - pSetupData->mePaperFormat = PAPER_TABLOID; + case( DMPAPER_ENV_10 ): + pSetupData->mePaperFormat = PAPER_ENV_10; + break; + case( DMPAPER_ENV_11 ): + pSetupData->mePaperFormat = PAPER_ENV_11; + break; + case( DMPAPER_ENV_12 ): + pSetupData->mePaperFormat = PAPER_ENV_12; + break; + case( DMPAPER_ENV_14 ): + pSetupData->mePaperFormat = PAPER_ENV_14; + break; + case( DMPAPER_CSHEET ): + pSetupData->mePaperFormat = PAPER_C; + break; + case( DMPAPER_DSHEET ): + pSetupData->mePaperFormat = PAPER_D; + break; + case( DMPAPER_ESHEET ): + pSetupData->mePaperFormat = PAPER_E; + break; + case( DMPAPER_ENV_DL): + pSetupData->mePaperFormat = PAPER_ENV_DL; + break; + case( DMPAPER_ENV_C5): + pSetupData->mePaperFormat = PAPER_ENV_C5; + break; + case( DMPAPER_ENV_C3): + pSetupData->mePaperFormat = PAPER_ENV_C3; + break; + case( DMPAPER_ENV_C4): + pSetupData->mePaperFormat = PAPER_ENV_C4; + break; + case( DMPAPER_ENV_C6): + pSetupData->mePaperFormat = PAPER_ENV_C6; + break; + case( DMPAPER_ENV_C65): + pSetupData->mePaperFormat = PAPER_ENV_C65; + break; + case( DMPAPER_ENV_ITALY ): + pSetupData->mePaperFormat = PAPER_ENV_ITALY; + break; + case( DMPAPER_ENV_MONARCH ): + pSetupData->mePaperFormat = PAPER_ENV_MONARCH; + break; + case( DMPAPER_ENV_PERSONAL ): + pSetupData->mePaperFormat = PAPER_ENV_PERSONAL; + break; + case( DMPAPER_FANFOLD_US ): + pSetupData->mePaperFormat = PAPER_FANFOLD_US; + break; + case( DMPAPER_FANFOLD_STD_GERMAN ): + pSetupData->mePaperFormat = PAPER_FANFOLD_DE; + break; + case( DMPAPER_FANFOLD_LGL_GERMAN ): + pSetupData->mePaperFormat = PAPER_FANFOLD_LEGAL_DE; + break; + case( DMPAPER_ISO_B4 ): + pSetupData->mePaperFormat = PAPER_B4_ISO; + break; + case( DMPAPER_JAPANESE_POSTCARD ): + pSetupData->mePaperFormat = PAPER_POSTCARD_JP; + break; + case( DMPAPER_9X11 ): + pSetupData->mePaperFormat = PAPER_9x11; + break; + case( DMPAPER_10X11 ): + pSetupData->mePaperFormat = PAPER_10x11; + break; + case( DMPAPER_15X11 ): + pSetupData->mePaperFormat = PAPER_15x11; + break; + case( DMPAPER_ENV_INVITE ): + pSetupData->mePaperFormat = PAPER_ENV_INVITE; + break; + case( DMPAPER_A_PLUS ): + pSetupData->mePaperFormat = PAPER_A_PLUS; + break; + case( DMPAPER_B_PLUS ): + pSetupData->mePaperFormat = PAPER_B_PLUS; + break; + case( DMPAPER_LETTER_PLUS ): + pSetupData->mePaperFormat = PAPER_LETTER_PLUS; + break; + case( DMPAPER_A4_PLUS ): + pSetupData->mePaperFormat = PAPER_A4_PLUS; + break; + case( DMPAPER_A2 ): + pSetupData->mePaperFormat = PAPER_A2; + break; + case( DMPAPER_DBL_JAPANESE_POSTCARD ): + pSetupData->mePaperFormat = PAPER_DOUBLEPOSTCARD_JP; + break; + case( DMPAPER_A6 ): + pSetupData->mePaperFormat = PAPER_A6; + break; + case( DMPAPER_B6_JIS ): + pSetupData->mePaperFormat = PAPER_B6_JIS; + break; + case( DMPAPER_12X11 ): + pSetupData->mePaperFormat = PAPER_12x11; break; default: pSetupData->mePaperFormat = PAPER_USER; @@ -927,17 +1063,6 @@ static void ImplDevModeToJobSetup( WinSalInfoPrinter* pPrinter, ImplJobSetup* pS // ----------------------------------------------------------------------- -static BOOL ImplPaperSizeEqual( short nPaperWidth1, short nPaperHeight1, - short nPaperWidth2, short nPaperHeight2 ) -{ - const short PAPER_SLOPPY = 1; // 0.1 mm accuracy - - return ( (Abs( nPaperWidth1-nPaperWidth2 ) <= PAPER_SLOPPY) && - (Abs( nPaperHeight1-nPaperHeight2 ) <= PAPER_SLOPPY) ); -} - -// ----------------------------------------------------------------------- - static void ImplJobSetupToDevMode( WinSalInfoPrinter* pPrinter, ImplJobSetup* pSetupData, ULONG nFlags ) { if ( !pSetupData || !pSetupData->mpDriverData ) @@ -979,6 +1104,9 @@ static void ImplJobSetupToDevMode( WinSalInfoPrinter* pPrinter, ImplJobSetup* pS switch( pSetupData->mePaperFormat ) { + case( PAPER_A2 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_A2; + break; case( PAPER_A3 ): CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_A3; break; @@ -988,11 +1116,8 @@ static void ImplJobSetupToDevMode( WinSalInfoPrinter* pPrinter, ImplJobSetup* pS case( PAPER_A5 ): CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_A5; break; - case( PAPER_B4 ): - CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_B4; - break; - case( PAPER_B5 ): - CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_B5; + case( PAPER_B4_ISO): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ISO_B4; break; case( PAPER_LETTER ): CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_LETTER; @@ -1003,6 +1128,136 @@ static void ImplJobSetupToDevMode( WinSalInfoPrinter* pPrinter, ImplJobSetup* pS case( PAPER_TABLOID ): CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_TABLOID; break; +#if 0 + //http://msdn.microsoft.com/en-us/library/ms776398(VS.85).aspx + //DMPAPER_ENV_B6 is documented as: + //"DMPAPER_ENV_B6 35 Envelope B6 176 x 125 mm" + //which is the wrong way around, it is surely 125 x 176, i.e. + //compare DMPAPER_ENV_B4 and DMPAPER_ENV_B4 as + //DMPAPER_ENV_B4 33 Envelope B4 250 x 353 mm + //DMPAPER_ENV_B5 34 Envelope B5 176 x 250 mm + case( PAPER_B6_ISO ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_B6; + break; +#endif + case( PAPER_ENV_C4 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_C4; + break; + case( PAPER_ENV_C5 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_C5; + break; + case( PAPER_ENV_C6 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_C6; + break; + case( PAPER_ENV_C65 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_C65; + break; + case( PAPER_ENV_DL ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_DL; + break; + case( PAPER_C ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_CSHEET; + break; + case( PAPER_D ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_DSHEET; + break; + case( PAPER_E ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ESHEET; + break; + case( PAPER_EXECUTIVE ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_EXECUTIVE; + break; + case( PAPER_FANFOLD_LEGAL_DE ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_FANFOLD_LGL_GERMAN; + break; + case( PAPER_ENV_MONARCH ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_MONARCH; + break; + case( PAPER_ENV_PERSONAL ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_PERSONAL; + break; + case( PAPER_ENV_9 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_9; + break; + case( PAPER_ENV_10 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_10; + break; + case( PAPER_ENV_11 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_11; + break; + case( PAPER_ENV_12 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_12; + break; + //See the comments on DMPAPER_B4 above + case( PAPER_B4_JIS ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_B4; + break; + case( PAPER_B5_JIS ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_B5; + break; + case( PAPER_B6_JIS ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_B6_JIS; + break; + case( PAPER_LEDGER ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_LEDGER; + break; + case( PAPER_STATEMENT ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_STATEMENT; + break; + case( PAPER_10x14 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_10X14; + break; + case( PAPER_ENV_14 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_14; + break; + case( PAPER_ENV_C3 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_C3; + break; + case( PAPER_ENV_ITALY ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_ITALY; + break; + case( PAPER_FANFOLD_US ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_FANFOLD_US; + break; + case( PAPER_FANFOLD_DE ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_FANFOLD_STD_GERMAN; + break; + case( PAPER_POSTCARD_JP ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_JAPANESE_POSTCARD; + break; + case( PAPER_9x11 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_9X11; + break; + case( PAPER_10x11 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_10X11; + break; + case( PAPER_15x11 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_15X11; + break; + case( PAPER_ENV_INVITE ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_ENV_INVITE; + break; + case( PAPER_A_PLUS ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_A_PLUS; + break; + case( PAPER_B_PLUS ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_B_PLUS; + break; + case( PAPER_LETTER_PLUS ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_LETTER_PLUS; + break; + case( PAPER_A4_PLUS ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_A4_PLUS; + break; + case( PAPER_DOUBLEPOSTCARD_JP ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_DBL_JAPANESE_POSTCARD; + break; + case( PAPER_A6 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_A6; + break; + case( PAPER_12x11 ): + CHOOSE_DEVMODE(dmPaperSize) = DMPAPER_12X11; + break; default: { short nPaper = 0; @@ -1023,13 +1278,11 @@ static void ImplJobSetupToDevMode( WinSalInfoPrinter* pPrinter, ImplJobSetup* pS } if ( (nPaperSizeCount == nPaperCount) && pPapers && pPaperSizes ) { + PaperInfo aInfo(pSetupData->mnPaperWidth, pSetupData->mnPaperHeight); // compare paper formats and select a good match for ( ULONG i = 0; i < nPaperCount; i++ ) { - if ( ImplPaperSizeEqual( (short)(pSetupData->mnPaperWidth/10), - (short)(pSetupData->mnPaperHeight/10), - (short)pPaperSizes[i].x, - (short)pPaperSizes[i].y ) ) + if ( aInfo.sloppyEqual(PaperInfo(pPaperSizes[i].x*10, pPaperSizes[i].y*10))) { nPaper = pPapers[i]; break; @@ -1041,12 +1294,10 @@ static void ImplJobSetupToDevMode( WinSalInfoPrinter* pPrinter, ImplJobSetup* pS // all paper sizes with portrait orientation only!! if ( !nPaper && nLandscapeAngle != 0 ) { + PaperInfo aRotatedInfo(pSetupData->mnPaperHeight, pSetupData->mnPaperWidth); for ( ULONG i = 0; i < nPaperCount; i++ ) { - if ( ImplPaperSizeEqual( (short)(pSetupData->mnPaperWidth/10), - (short)(pSetupData->mnPaperHeight/10), - (short)pPaperSizes[i].y, - (short)pPaperSizes[i].x ) ) + if ( aRotatedInfo.sloppyEqual(PaperInfo(pPaperSizes[i].x*10, pPaperSizes[i].y*10)) ) { nPaper = pPapers[i]; break; @@ -1284,11 +1535,7 @@ void WinSalInfoPrinter::InitPaperFormats( const ImplJobSetup* pSetupData ) ImplDeviceCaps( this, DC_PAPERNAMES, (BYTE*)pNamesBuffer, pSetupData ); for( DWORD i = 0; i < nCount; ++i ) { - vcl::PaperInfo aInfo; - aInfo.m_nPaperWidth = (pPaperSizes[i].x + 5) / 10; - aInfo.m_nPaperHeight = (pPaperSizes[i].y + 5) / 10; - pNamesBuffer[(i+1)*64-1] = '\0'; // make very long names zero terminated - aInfo.m_aPaperName = pNamesBuffer + (i*64); + PaperInfo aInfo(pPaperSizes[i].x * 10, pPaperSizes[i].y * 10); m_aPaperFormats.push_back( aInfo ); } rtl_freeMemory( pNamesBuffer ); @@ -1299,11 +1546,7 @@ void WinSalInfoPrinter::InitPaperFormats( const ImplJobSetup* pSetupData ) ImplDeviceCaps( this, DC_PAPERNAMES, (BYTE*)pNamesBuffer, pSetupData ); for( DWORD i = 0; i < nCount; ++i ) { - vcl::PaperInfo aInfo; - aInfo.m_nPaperWidth = (pPaperSizes[i].x + 5) / 10; - aInfo.m_nPaperHeight = (pPaperSizes[i].y + 5) / 10; - pNamesBuffer[(i+1)*64-1] = '\0'; // make very long names zero terminated - aInfo.m_aPaperName = ImplSalGetUniString( (const char*)(pNamesBuffer + (i*64)) ); + PaperInfo aInfo(pPaperSizes[i].x * 10, pPaperSizes[i].y * 10); m_aPaperFormats.push_back( aInfo ); } rtl_freeMemory( pNamesBuffer ); diff --git a/vcl/win/source/gdi/winlayout.cxx b/vcl/win/source/gdi/winlayout.cxx index 0689b8710655..8d9347e7e352 100755 --- a/vcl/win/source/gdi/winlayout.cxx +++ b/vcl/win/source/gdi/winlayout.cxx @@ -1172,62 +1172,52 @@ static bool InitUSP() if( !aUspModule ) return (bUspEnabled = false); - OUString queryFuncName( RTL_CONSTASCII_USTRINGPARAM( "ScriptIsComplex" ) ); pScriptIsComplex = (HRESULT (WINAPI*)(const WCHAR*,int,DWORD)) - osl_getSymbol( aUspModule, queryFuncName.pData ); + osl_getAsciiFunctionSymbol( aUspModule, "ScriptIsComplex" ); bUspEnabled &= (NULL != pScriptIsComplex); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptItemize" ) ); pScriptItemize = (HRESULT (WINAPI*)(const WCHAR*,int,int, const SCRIPT_CONTROL*,const SCRIPT_STATE*,SCRIPT_ITEM*,int*)) - osl_getSymbol( aUspModule, queryFuncName.pData ); + osl_getAsciiFunctionSymbol( aUspModule, "ScriptItemize" ); bUspEnabled &= (NULL != pScriptItemize); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptShape" ) ); pScriptShape = (HRESULT (WINAPI*)(HDC,SCRIPT_CACHE*,const WCHAR*, int,int,SCRIPT_ANALYSIS*,WORD*,WORD*,SCRIPT_VISATTR*,int*)) - osl_getSymbol( aUspModule, queryFuncName.pData ); + osl_getAsciiFunctionSymbol( aUspModule, "ScriptShape" ); bUspEnabled &= (NULL != pScriptShape); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptPlace" ) ); pScriptPlace = (HRESULT (WINAPI*)(HDC, SCRIPT_CACHE*, const WORD*, int, const SCRIPT_VISATTR*,SCRIPT_ANALYSIS*,int*,GOFFSET*,ABC*)) - osl_getSymbol( aUspModule, queryFuncName.pData ); + osl_getAsciiFunctionSymbol( aUspModule, "ScriptPlace" ); bUspEnabled &= (NULL != pScriptPlace); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptGetLogicalWidths" ) ); pScriptGetLogicalWidths = (HRESULT (WINAPI*)(const SCRIPT_ANALYSIS*, int,int,const int*,const WORD*,const SCRIPT_VISATTR*,int*)) - osl_getSymbol( aUspModule, queryFuncName.pData ); + osl_getAsciiFunctionSymbol( aUspModule, "ScriptGetLogicalWidths" ); bUspEnabled &= (NULL != pScriptGetLogicalWidths); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptApplyLogicalWidth" ) ); pScriptApplyLogicalWidth = (HRESULT (WINAPI*)(const int*,int,int,const WORD*, const SCRIPT_VISATTR*,const int*,const SCRIPT_ANALYSIS*,ABC*,int*)) - osl_getSymbol( aUspModule, queryFuncName.pData ); + osl_getAsciiFunctionSymbol( aUspModule, "ScriptApplyLogicalWidth" ); bUspEnabled &= (NULL != pScriptApplyLogicalWidth); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptJustify" ) ); pScriptJustify = (HRESULT (WINAPI*)(const SCRIPT_VISATTR*,const int*, int,int,int,int*)) - osl_getSymbol( aUspModule, queryFuncName.pData ); + osl_getAsciiFunctionSymbol( aUspModule, "ScriptJustify" ); bUspEnabled &= (NULL != pScriptJustify); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptGetFontProperties" ) ); pScriptGetFontProperties = (HRESULT (WINAPI*)( HDC,SCRIPT_CACHE*,SCRIPT_FONTPROPERTIES*)) - osl_getSymbol( aUspModule, queryFuncName.pData ); + osl_getAsciiFunctionSymbol( aUspModule, "ScriptGetFontProperties" ); bUspEnabled &= (NULL != pScriptGetFontProperties); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptTextOut" ) ); pScriptTextOut = (HRESULT (WINAPI*)(const HDC,SCRIPT_CACHE*, int,int,UINT,const RECT*,const SCRIPT_ANALYSIS*,const WCHAR*, int,const WORD*,int,const int*,const int*,const GOFFSET*)) - osl_getSymbol( aUspModule, queryFuncName.pData ); + osl_getAsciiFunctionSymbol( aUspModule, "ScriptTextOut" ); bUspEnabled &= (NULL != pScriptTextOut); - queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptFreeCache" ) ); pScriptFreeCache = (HRESULT (WINAPI*)(SCRIPT_CACHE*)) - osl_getSymbol( aUspModule, queryFuncName.pData ); + osl_getAsciiFunctionSymbol( aUspModule, "ScriptFreeCache" ); bUspEnabled &= (NULL != pScriptFreeCache); if( !bUspEnabled ) diff --git a/vcl/win/source/window/MAKEFILE.MK b/vcl/win/source/window/MAKEFILE.MK index 9a65a5000ccf..17e73db1e75e 100644 --- a/vcl/win/source/window/MAKEFILE.MK +++ b/vcl/win/source/window/MAKEFILE.MK @@ -43,7 +43,7 @@ ENABLE_EXCEPTIONS=TRUE # --- #105371# .IF "$(COM)"=="GCC" -CDEFS += -UWINVER -DWINVER=0x0400 -D_WIN32_WINNT=0x0501 +CFLAGS += -D_WIN32_WINNT=0x0501 .ELSE CFLAGS += -DWINVER=0x0400 -D_WIN32_WINNT=0x0501 diff --git a/vcl/win/source/window/salframe.cxx b/vcl/win/source/window/salframe.cxx index fd0f065ce2bc..3ffc358bd76d 100644 --- a/vcl/win/source/window/salframe.cxx +++ b/vcl/win/source/window/salframe.cxx @@ -6,9 +6,6 @@ * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: salframe.cxx,v $ - * $Revision: 1.157.20.2 $ - * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify @@ -355,19 +352,13 @@ SalFrame* ImplSalCreateFrame( WinSalInstance* pInst, { OUString aLibraryName( RTL_CONSTASCII_USTRINGPARAM( "user32" ) ); oslModule pLib = osl_loadModule( aLibraryName.pData, SAL_LOADMODULE_DEFAULT ); - void *pFunc = NULL; + oslGenericFunction pFunc = NULL; if( pLib ) - { - OUString queryFuncName( RTL_CONSTASCII_USTRINGPARAM( "SetLayeredWindowAttributes" ) ); - pFunc = osl_getSymbol( pLib, queryFuncName.pData ); - } + pFunc = osl_getAsciiFunctionSymbol( pLib, "SetLayeredWindowAttributes" ); lpfnSetLayeredWindowAttributes = ( SetLayeredWindowAttributes_Proc_T ) pFunc; - if ( pFunc ) - bLayeredAPI = 1; - else - bLayeredAPI = 0; + bLayeredAPI = pFunc ? 1 : 0; } } static const char* pEnvTransparentFloats = getenv("SAL_TRANSPARENT_FLOATS" ); @@ -2113,8 +2104,7 @@ void WinSalFrame::StartPresentation( BOOL bStart ) { OUString aLibraryName( OUString::createFromAscii( aOS.szPathName ) ); oslModule mhSageInst = osl_loadModule( aLibraryName.pData, SAL_LOADMODULE_DEFAULT ); - OUString queryFuncName( RTL_CONSTASCII_USTRINGPARAM( "System_Agent_Enable" ) ); - pSalData->mpSageEnableProc = (SysAgt_Enable_PROC) osl_getSymbol( mhSageInst, queryFuncName.pData ); + pSalData->mpSageEnableProc = (SysAgt_Enable_PROC)osl_getAsciiFunctionSymbol( mhSageInst, "System_Agent_Enable" ); } else pSalData->mnSageStatus = DISABLE_AGENT; @@ -3160,7 +3150,8 @@ void WinSalFrame::Beep( SoundType eSoundType ) MB_ICONQUESTION // SOUND_QUERY }; - MessageBeep( aImplSoundTab[eSoundType] ); + if( eSoundType != SOUND_DISABLE ) // don't beep on disable + MessageBeep( aImplSoundTab[eSoundType] ); } // ----------------------------------------------------------------------- @@ -3703,10 +3694,17 @@ BOOL WinSalFrame::MapUnicodeToKeyCode( sal_Unicode aUnicode, LanguageType aLangT BYTE vkeycode = LOBYTE(scan); BYTE shiftstate = HIBYTE(scan); + // Last argument is set to FALSE, because there's no decission made + // yet which key should be assigned to MOD3 modifier on Windows. + // Windows key - user's can be confused, because it should display + // Windows menu (applies to both left/right key) + // Menu key - this key is used to display context menu + // AltGr key - probably it has no sense rKeyCode = KeyCode( ImplSalGetKeyCode( vkeycode ), (shiftstate & 0x01) ? TRUE : FALSE, // shift (shiftstate & 0x02) ? TRUE : FALSE, // ctrl - (shiftstate & 0x04) ? TRUE : FALSE ); // alt + (shiftstate & 0x04) ? TRUE : FALSE, // alt + FALSE ); bRet = TRUE; } } diff --git a/vcl/workben/makefile.mk b/vcl/workben/makefile.mk index 83abbbf4e6bf..34316356a1a6 100644 --- a/vcl/workben/makefile.mk +++ b/vcl/workben/makefile.mk @@ -125,6 +125,7 @@ APP5OBJS= $(OBJ)$/svpclient.obj APP5STDLIBS= $(CPPULIB) \ $(CPPUHELPERLIB) \ $(COMPHELPERLIB) \ + $(UCBHELPERLIB) \ $(VCLLIB) \ $(TOOLSLIB) \ $(SALLIB) \ diff --git a/vcl/workben/svpclient.cxx b/vcl/workben/svpclient.cxx index cf64d58110e8..7bea0b94f76a 100644 --- a/vcl/workben/svpclient.cxx +++ b/vcl/workben/svpclient.cxx @@ -50,6 +50,8 @@ #include <comphelper/processfactory.hxx> #include <cppuhelper/servicefactory.hxx> #include <cppuhelper/bootstrap.hxx> +#include "ucbhelper/contentbroker.hxx" +#include "ucbhelper/configurationkeys.hxx" #include <errno.h> #include <unistd.h> @@ -60,6 +62,8 @@ using namespace rtl; +using namespace cppu; +using namespace comphelper; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::lang; // ----------------------------------------------------------------------- @@ -73,10 +77,47 @@ SAL_IMPLEMENT_MAIN() { tools::extendApplicationEnvironment(); - Reference< XMultiServiceFactory > xMS; - xMS = cppu::createRegistryServiceFactory( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "applicat.rdb" ) ), sal_True ); + //------------------------------------------------- + // create the global service-manager + //------------------------------------------------- + Reference< XMultiServiceFactory > xFactory; + try + { + Reference< XComponentContext > xCtx = defaultBootstrap_InitialComponentContext(); + xFactory = Reference< XMultiServiceFactory >( xCtx->getServiceManager(), UNO_QUERY ); + if( xFactory.is() ) + setProcessServiceFactory( xFactory ); + } + catch( com::sun::star::uno::Exception& rExc) + { + } + + if( ! xFactory.is() ) + { + fprintf( stderr, "Could not bootstrap UNO, installation must be in disorder. Exiting.\n" ); + exit( 1 ); + } + + /* + * Create UCB. + */ + Sequence< Any > aArgs( 2 ); + aArgs[ 0 ] <<= OUString::createFromAscii( UCB_CONFIGURATION_KEY1_LOCAL ); + aArgs[ 1 ] <<= OUString::createFromAscii( UCB_CONFIGURATION_KEY2_OFFICE ); +#if OSL_DEBUG_LEVEL > 1 + sal_Bool bSuccess = +#endif + ::ucbhelper::ContentBroker::initialize( xFactory, aArgs ); + +#if OSL_DEBUG_LEVEL > 1 + if ( !bSuccess ) + { + fprintf( stderr, "Error creating UCB, installation must be in disorder. Exiting.\n" ); + exit( 1 ); + } +#endif - InitVCL( xMS ); + InitVCL( xFactory ); ::Main(); DeInitVCL(); |