Rebased ref, commits from common ancestor: commit 0c2dc352ed73b9eecb464b79e155f37910b2e551 Author: Armin Le Grand <armin.le.gr...@cib.de (CIB)> Date: Fri Feb 23 16:57:41 2018 +0100
OperationSmiley: Added support for using same FillGeometry It is now possible to use a single FillGeometry to fill objects that are made of multiple filled objects (e.g. CustomShapes) so that they look as using a single fill. This is used for CustomShapes, but may later be 'extended' to be used for more cases. The basic functionality was already in the primitives, but had to be added to SDrObject due to these being used for CustomShapeVisualization (currently - would be better to change this to primitives, too). Change-Id: I1d9fb158191a9ec663e46f3911213be2f3d88986 diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx index 3e97a472084f..7bd547f20d71 100644 --- a/include/svx/svdobj.hxx +++ b/include/svx/svdobj.hxx @@ -270,11 +270,32 @@ public: class SvxShape; class SVX_DLLPUBLIC SdrObject: public SfxListener, public virtual tools::WeakBase { +private: friend class SdrObjListIter; friend class SdrVirtObj; friend class SdrRectObj; friend class SdrDelayBroadcastObjectChange; + // OperationSmiley: Allow at each SdrObject to set a FillGeometryDefiningShape, + // so that for SdrObjects where this is set, the definition of a defined FillStyle + // will use this, but the local geometry will be filled. This allows to fill + // multiple shapes with a unified fill, e.g think about CustomShapes. + // Currently this is *only* used for CustomShapes, but may be developed to get a + // common mechanism - usages for it are easy to be found. The current limitation + // to CustomShapes allows to to think about these SdrObjects to 'vanish' during the + // lifetime of 'this' - the SdrObjects without SdrPage and SdrModel are used as helper + // objects for SdrObjCustomShape and thus their lifetime is limited to the lifetime + // of this local object. For unifying this mechanism, some weak reference of + // SdrObjects would have to be thought about (not easy with the current implementation). + // So - allow *only* EnhancedCustomShape2d (which creates the visualizations for + // SdrObjCustomShape) to set this. Already allow unified read to use it - thus already + // allowing to implement as standard case for all kinds of SdrObjects. + friend class EnhancedCustomShape2d; + const SdrObject* mpFillGeometryDefiningShape; + void setFillGeometryDefiningShape(const SdrObject* pNew) { mpFillGeometryDefiningShape = pNew; } +public: + const SdrObject* getFillGeometryDefiningShape() const { return mpFillGeometryDefiningShape; } + public: SdrObject(); diff --git a/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx index b60e9b3df565..e165344b26c1 100644 --- a/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx @@ -40,20 +40,36 @@ namespace drawinglayer attribute::SdrLineFillShadowTextAttribute maSdrLFSTAttribute; basegfx::B2DPolyPolygon maUnitPolyPolygon; + // OperationSmiley: Added to be able to define a FillGeometry different from local + // geometry. It is ignored when empty and/or equal to UnitPolyPolygon. + // If used and there is a fill, object's geomery (maUnitPolyPolygon) will be filled, + // but UnitDefinitionPolyPolygon will be used to define the FillStyle. Thus when + // using the 'same' UnitDefinitionPolyPolygon for multiple definitions, + // all filled stuff using it will fit seamless together. + // 'same' is in quotes since it is a UnitPolygon, so being relative to the + // unit polygon of the local geometry (UnitPolyPolygon). The definition is complete + // when applying the also given transfomation (maTransform) + basegfx::B2DPolyPolygon maUnitDefinitionPolyPolygon; + protected: // local decomposition. virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override; public: + // OperationSmiley: Extended to UnitDefinitionPolyPolygon, but when needed + // a 2nd version without can be defined that just does not set the + // maUnitDefinitionPolyPolygon or set equal to UnitPolyPolygon SdrPathPrimitive2D( const basegfx::B2DHomMatrix& rTransform, const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute, - const basegfx::B2DPolyPolygon& rUnitPolyPolygon); + const basegfx::B2DPolyPolygon& rUnitPolyPolygon, + const basegfx::B2DPolyPolygon& rUnitDefinitionPolyPolygon); // data access const basegfx::B2DHomMatrix& getTransform() const { return maTransform; } const attribute::SdrLineFillShadowTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; } const basegfx::B2DPolyPolygon& getUnitPolyPolygon() const { return maUnitPolyPolygon; } + const basegfx::B2DPolyPolygon& getUnitDefinitionPolyPolygon() const { return maUnitDefinitionPolyPolygon; } // compare operator virtual bool operator==(const BasePrimitive2D& rPrimitive) const override; diff --git a/svx/source/customshapes/EnhancedCustomShape2d.cxx b/svx/source/customshapes/EnhancedCustomShape2d.cxx index b50836fd138f..39d694b112a8 100644 --- a/svx/source/customshapes/EnhancedCustomShape2d.cxx +++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx @@ -1963,22 +1963,6 @@ void EnhancedCustomShape2d::CreateSubPath( if(aNewB2DPolyPolygon.count()) { - if( !bLineGeometryNeededOnly ) - { - // hack aNewB2DPolyPolygon to fill logic rect - this is - // needed to produce gradient fills that look like mso - aNewB2DPolygon.clear(); - aNewB2DPolygon.append(basegfx::B2DPoint(0,0)); - aNewB2DPolygon.setClosed(true); - aNewB2DPolyPolygon.append(aNewB2DPolygon); - - aNewB2DPolygon.clear(); - aNewB2DPolygon.append(basegfx::B2DPoint(aLogicRect.GetWidth(), - aLogicRect.GetHeight())); - aNewB2DPolygon.setClosed(true); - aNewB2DPolyPolygon.append(aNewB2DPolygon); - } - // #i37011# bool bForceCreateTwoObjects(false); @@ -2335,6 +2319,16 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( bool bLineGeometryNeededOnly ) rCustomShapeSet, nColorIndex, nColorCount); + + // OperationSmiley: when we have access to the SdrObjCustomShape and the + // CustomShape is built with more than a single filled Geometry, use it + // to define that all helper geometites defined here (SdrObjects currently) + // will use the same FillGeometryDefinition (from the referenced SdrObjCustomShape). + // This will all same-filled objects look like filled smoothly with the same style. + if(pCustomShapeObj) + { + pObj->setFillGeometryDefiningShape(pCustomShapeObj); + } } } diff --git a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx index 2f203971ad4f..c3033bf71337 100644 --- a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx @@ -83,6 +83,7 @@ namespace sdr // prepare object transformation and unit polygon (direct model data) basegfx::B2DHomMatrix aObjectMatrix; + basegfx::B2DPolyPolygon aUnitDefinitionPolyPolygon; bool bIsLine( !aUnitPolyPolygon.areControlPointsUsed() && 1 == nPolyCount @@ -166,6 +167,30 @@ namespace sdr basegfx::B2DHomMatrix aInverse(aObjectMatrix); aInverse.invert(); aUnitPolyPolygon.transform(aInverse); + + // OperationSmiley: Check if a FillGeometryDefiningShape is set + const SdrObject* pFillGeometryDefiningShape(GetPathObj().getFillGeometryDefiningShape()); + + if(nullptr != pFillGeometryDefiningShape) + { + // If yes, get it's BoundRange and use as defining Geometry for the FillStyle. + // If no, aUnitDefinitionPolyPolygon will just be empty and thus be interpreted + // as unused. + // Using SnapRect will make the FillDefinition to always be extended e.g. + // for rotated/sheared objects. + const tools::Rectangle& rSnapRect(pFillGeometryDefiningShape->GetSnapRect()); + + aUnitDefinitionPolyPolygon.append( + basegfx::utils::createPolygonFromRect( + basegfx::B2DRange( + rSnapRect.Left(), rSnapRect.Top(), + rSnapRect.Right(), rSnapRect.Bottom()))); + + // use same coordinate system as the shape geometry -> this + // makes it relative to shape's unit geometry and thus freely + // transformable with the shape + aUnitDefinitionPolyPolygon.transform(aInverse); + } } // create primitive. Always create primitives to allow the decomposition of @@ -174,7 +199,8 @@ namespace sdr new drawinglayer::primitive2d::SdrPathPrimitive2D( aObjectMatrix, aAttribute, - aUnitPolyPolygon)); + aUnitPolyPolygon, + aUnitDefinitionPolyPolygon)); return drawinglayer::primitive2d::Primitive2DContainer { xReference }; } diff --git a/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx index 37d4f5850b05..804cccf67e80 100644 --- a/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx +++ b/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx @@ -43,13 +43,31 @@ namespace drawinglayer // #i108255# no need to use correctOrientations here; target is // straight visualisation basegfx::B2DPolyPolygon aTransformed(getUnitPolyPolygon()); - aTransformed.transform(getTransform()); - aRetval.push_back( - createPolyPolygonFillPrimitive( - aTransformed, - getSdrLFSTAttribute().getFill(), - getSdrLFSTAttribute().getFillFloatTransGradient())); + + // OperationSmiley: Check if a UnitDefinitionPolyPolygon is set + if(getUnitDefinitionPolyPolygon().count() + && getUnitDefinitionPolyPolygon() != getUnitPolyPolygon()) + { + // if yes, use the B2DRange of it's transformed form + basegfx::B2DPolyPolygon aTransformedDefinition(getUnitDefinitionPolyPolygon()); + aTransformedDefinition.transform(getTransform()); + + aRetval.push_back( + createPolyPolygonFillPrimitive( + aTransformed, + aTransformedDefinition.getB2DRange(), + getSdrLFSTAttribute().getFill(), + getSdrLFSTAttribute().getFillFloatTransGradient())); + } + else + { + aRetval.push_back( + createPolyPolygonFillPrimitive( + aTransformed, + getSdrLFSTAttribute().getFill(), + getSdrLFSTAttribute().getFillFloatTransGradient())); + } } // add line @@ -107,11 +125,13 @@ namespace drawinglayer SdrPathPrimitive2D::SdrPathPrimitive2D( const basegfx::B2DHomMatrix& rTransform, const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute, - const basegfx::B2DPolyPolygon& rUnitPolyPolygon) + const basegfx::B2DPolyPolygon& rUnitPolyPolygon, + const basegfx::B2DPolyPolygon& rUnitDefinitionPolyPolygon) : BufferedDecompositionPrimitive2D(), maTransform(rTransform), maSdrLFSTAttribute(rSdrLFSTAttribute), - maUnitPolyPolygon(rUnitPolyPolygon) + maUnitPolyPolygon(rUnitPolyPolygon), + maUnitDefinitionPolyPolygon(rUnitDefinitionPolyPolygon) { } @@ -122,6 +142,7 @@ namespace drawinglayer const SdrPathPrimitive2D& rCompare = static_cast<const SdrPathPrimitive2D&>(rPrimitive); return (getUnitPolyPolygon() == rCompare.getUnitPolyPolygon() + && getUnitDefinitionPolyPolygon() == rCompare.getUnitDefinitionPolyPolygon() && getTransform() == rCompare.getTransform() && getSdrLFSTAttribute() == rCompare.getSdrLFSTAttribute()); } diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx index 7980458914df..7fe409c8bd64 100644 --- a/svx/source/svdraw/svdobj.cxx +++ b/svx/source/svdraw/svdobj.cxx @@ -285,7 +285,8 @@ void SdrObject::SetBoundRectDirty() SdrObject::SdrObject() : - pPage(nullptr) + mpFillGeometryDefiningShape(nullptr) + ,pPage(nullptr) ,pModel(nullptr) ,pUserCall(nullptr) ,pPlusData(nullptr) commit 3b470a199b90b034e8858b3c817d01a42039151c Author: Armin Le Grand <armin.le.gr...@cib.de (CIB)> Date: Thu Feb 22 11:14:31 2018 +0100 OperationSmiley: Remove brightness from SdrPathObj There was a member at SdrPathObj called mdBrightness only for holding a blend value during creation of SdrPathObjs for CustomShape visualization. This has nothing to do on the model data, move it to where it belongs Change-Id: Iee101f90a1275ce1ed97e8e8d0ccf7084c83d4f6 diff --git a/include/svx/EnhancedCustomShape2d.hxx b/include/svx/EnhancedCustomShape2d.hxx index df6603a46183..074ecfa0a124 100644 --- a/include/svx/EnhancedCustomShape2d.hxx +++ b/include/svx/EnhancedCustomShape2d.hxx @@ -123,14 +123,22 @@ class SVX_DLLPUBLIC EnhancedCustomShape2d : public SfxItemSet SAL_DLLPRIVATE bool SetAdjustValueAsDouble( const double& rValue, const sal_Int32 nIndex ); SAL_DLLPRIVATE sal_Int32 GetLuminanceChange( sal_uInt32 nIndex ) const; SAL_DLLPRIVATE Color GetColorData( const Color& rFillColor, sal_uInt32 nIndex, double dBrightness ) const; - SAL_DLLPRIVATE void AdaptObjColor(SdrPathObj& rObj, const SfxItemSet& rCustomShapeSet, - sal_uInt32& nColorIndex, sal_uInt32 nColorCount); + SAL_DLLPRIVATE void AdaptObjColor( + SdrPathObj& rObj, + double dBrightness, + const SfxItemSet& rCustomShapeSet, + sal_uInt32& nColorIndex, + sal_uInt32 nColorCount); SAL_DLLPRIVATE Point GetPoint( const css::drawing::EnhancedCustomShapeParameterPair&, const bool bScale = true, const bool bReplaceGeoSize = false ) const; - SAL_DLLPRIVATE void CreateSubPath( sal_Int32& rSrcPt, sal_Int32& rSegmentInd, std::vector< SdrPathObj* >& rObjectList, - bool bLineGeometryNeededOnly, bool bSortFilledObjectsToBack, - sal_Int32 nIndex ); + SAL_DLLPRIVATE void CreateSubPath( + sal_Int32& rSrcPt, + sal_Int32& rSegmentInd, + std::vector< std::pair< SdrPathObj*, double> >& rObjectList, + bool bLineGeometryNeededOnly, + bool bSortFilledObjectsToBack, + sal_Int32 nIndex); SAL_DLLPRIVATE SdrObject* CreatePathObj( bool bLineGeometryNeededOnly ); SAL_DLLPRIVATE void ApplyShapeAttributes( const SdrCustomShapeGeometryItem& rItem ); diff --git a/include/svx/svdopath.hxx b/include/svx/svdopath.hxx index 465ef0c6a702..fac63b375fb8 100644 --- a/include/svx/svdopath.hxx +++ b/include/svx/svdopath.hxx @@ -55,9 +55,6 @@ private: // for isolation of old Drag/Create code std::unique_ptr<ImpPathForDragAndCreate> mpDAC; - // brightness - used in EnhancedCustomShapes2d.cxx for DARKEN[LESS] and LIGHTEN[LESS] segments implementation - double mdBrightness; - // helper functions for GET, SET, INS etc. PNT void ImpSetClosed(bool bClose); void ImpForceKind(); @@ -65,8 +62,6 @@ private: ImpPathForDragAndCreate& impGetDAC() const; public: - double GetBrightness() { return mdBrightness; } - SdrPathObj(SdrObjKind eNewKind); SdrPathObj(SdrObjKind eNewKind, const basegfx::B2DPolyPolygon& rPathPoly, double dBrightness = 0.0); virtual ~SdrPathObj() override; diff --git a/svx/source/customshapes/EnhancedCustomShape2d.cxx b/svx/source/customshapes/EnhancedCustomShape2d.cxx index 1cc071e1ff24..b50836fd138f 100644 --- a/svx/source/customshapes/EnhancedCustomShape2d.cxx +++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx @@ -1449,10 +1449,13 @@ static basegfx::B2DPolygon CreateArc( const tools::Rectangle& rRect, const Point return aRetval; } -void EnhancedCustomShape2d::CreateSubPath( sal_Int32& rSrcPt, sal_Int32& rSegmentInd, std::vector< SdrPathObj* >& rObjectList, - const bool bLineGeometryNeededOnly, - const bool bSortFilledObjectsToBack, - sal_Int32 nIndex ) +void EnhancedCustomShape2d::CreateSubPath( + sal_Int32& rSrcPt, + sal_Int32& rSegmentInd, + std::vector< std::pair< SdrPathObj*, double> >& rObjectList, + const bool bLineGeometryNeededOnly, + const bool bSortFilledObjectsToBack, + sal_Int32 nIndex) { bool bNoFill = false; bool bNoStroke = false; @@ -1997,12 +2000,12 @@ void EnhancedCustomShape2d::CreateSubPath( sal_Int32& rSrcPt, sal_Int32& rSegmen { basegfx::B2DPolyPolygon aClosedPolyPolygon(aNewB2DPolyPolygon); aClosedPolyPolygon.setClosed(true); - SdrPathObj* pFill = new SdrPathObj(OBJ_POLY, aClosedPolyPolygon, dBrightness); + SdrPathObj* pFill = new SdrPathObj(OBJ_POLY, aClosedPolyPolygon); SfxItemSet aTempSet(*this); aTempSet.Put(makeSdrShadowItem(false)); aTempSet.Put(XLineStyleItem(drawing::LineStyle_NONE)); pFill->SetMergedItemSet(aTempSet); - rObjectList.push_back(pFill); + rObjectList.push_back(std::pair< SdrPathObj*, double >(pFill, dBrightness)); } if(!bNoStroke) @@ -2013,12 +2016,12 @@ void EnhancedCustomShape2d::CreateSubPath( sal_Int32& rSrcPt, sal_Int32& rSegmen // Thus, use a type that fits the polygon SdrPathObj* pStroke = new SdrPathObj( aNewB2DPolyPolygon.isClosed() ? OBJ_POLY : OBJ_PLIN, - aNewB2DPolyPolygon, dBrightness); + aNewB2DPolyPolygon); SfxItemSet aTempSet(*this); aTempSet.Put(makeSdrShadowItem(false)); aTempSet.Put(XFillStyleItem(drawing::FillStyle_NONE)); pStroke->SetMergedItemSet(aTempSet); - rObjectList.push_back(pStroke); + rObjectList.push_back(std::pair< SdrPathObj*, double >(pStroke, dBrightness)); } } else @@ -2032,13 +2035,13 @@ void EnhancedCustomShape2d::CreateSubPath( sal_Int32& rSrcPt, sal_Int32& rSegmen // see comment above about OBJ_PLIN pObj = new SdrPathObj( aNewB2DPolyPolygon.isClosed() ? OBJ_POLY : OBJ_PLIN, - aNewB2DPolyPolygon, dBrightness); + aNewB2DPolyPolygon); aTempSet.Put(XFillStyleItem(drawing::FillStyle_NONE)); } else { aNewB2DPolyPolygon.setClosed(true); - pObj = new SdrPathObj(OBJ_POLY, aNewB2DPolyPolygon, dBrightness); + pObj = new SdrPathObj(OBJ_POLY, aNewB2DPolyPolygon); } if(bNoStroke) @@ -2049,13 +2052,16 @@ void EnhancedCustomShape2d::CreateSubPath( sal_Int32& rSrcPt, sal_Int32& rSegmen if(pObj) { pObj->SetMergedItemSet(aTempSet); - rObjectList.push_back(pObj); + rObjectList.push_back(std::pair< SdrPathObj*, double >(pObj, dBrightness)); } } } } -void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 nLineObjectCount, std::vector< SdrPathObj* >& vObjectList ) +void CorrectCalloutArrows( + MSO_SPT eSpType, + sal_uInt32 nLineObjectCount, + std::vector< std::pair< SdrPathObj*, double> >& vObjectList ) { bool bAccent = false; switch( eSpType ) @@ -2073,8 +2079,11 @@ void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 nLineObjectCount, std::ve case mso_sptAccentBorderCallout90 : { sal_uInt32 nLine = 0; - for ( SdrPathObj* pObj: vObjectList ) + + for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList ) { + SdrPathObj* pObj(rCandidate.first); + if(pObj->IsLine()) { nLine++; @@ -2097,8 +2106,11 @@ void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 nLineObjectCount, std::ve case mso_sptBorderCallout2 : { sal_uInt32 nLine = 0; - for ( SdrPathObj* pObj: vObjectList ) + + for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList ) { + SdrPathObj* pObj(rCandidate.first); + if(pObj->IsLine()) { nLine++; @@ -2122,8 +2134,11 @@ void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 nLineObjectCount, std::ve case mso_sptBorderCallout3 : { sal_uInt32 nLine = 0; - for ( SdrPathObj* pObj: vObjectList ) + + for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList ) { + SdrPathObj* pObj(rCandidate.first); + if(pObj->IsLine()) { if ( nLine ) @@ -2142,8 +2157,12 @@ void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 nLineObjectCount, std::ve } } -void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& rObj, const SfxItemSet& rCustomShapeSet, - sal_uInt32& nColorIndex, sal_uInt32 nColorCount) +void EnhancedCustomShape2d::AdaptObjColor( + SdrPathObj& rObj, + double dBrightness, + const SfxItemSet& rCustomShapeSet, + sal_uInt32& nColorIndex, + sal_uInt32 nColorCount) { if ( !rObj.IsLine() ) { @@ -2154,11 +2173,13 @@ void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& rObj, const SfxItemSet& rC case drawing::FillStyle_SOLID: { Color aFillColor; - if ( nColorCount || rObj.GetBrightness() != 0.0 ) + + if ( nColorCount || 0.0 != dBrightness ) { aFillColor = GetColorData( rCustomShapeSet.Get( XATTR_FILLCOLOR ).GetColorValue(), - std::min(nColorIndex, nColorCount-1), rObj.GetBrightness() ); + std::min(nColorIndex, nColorCount-1), + dBrightness ); rObj.SetMergedItem( XFillColorItem( "", aFillColor ) ); } break; @@ -2166,16 +2187,19 @@ void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& rObj, const SfxItemSet& rC case drawing::FillStyle_GRADIENT: { XGradient aXGradient(rObj.GetMergedItem(XATTR_FILLGRADIENT).GetGradientValue()); - if ( nColorCount || rObj.GetBrightness() != 0.0 ) + + if ( nColorCount || 0.0 != dBrightness ) { aXGradient.SetStartColor( GetColorData( aXGradient.GetStartColor(), - std::min(nColorIndex, nColorCount-1), rObj.GetBrightness() )); + std::min(nColorIndex, nColorCount-1), + dBrightness )); aXGradient.SetEndColor( GetColorData( aXGradient.GetEndColor(), - std::min(nColorIndex, nColorCount-1), rObj.GetBrightness() )); + std::min(nColorIndex, nColorCount-1), + dBrightness )); } rObj.SetMergedItem( XFillGradientItem( "", aXGradient ) ); @@ -2184,12 +2208,14 @@ void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& rObj, const SfxItemSet& rC case drawing::FillStyle_HATCH: { XHatch aXHatch(rObj.GetMergedItem(XATTR_FILLHATCH).GetHatchValue()); - if ( nColorCount || rObj.GetBrightness() != 0.0 ) + + if ( nColorCount || 0.0 != dBrightness ) { aXHatch.SetColor( GetColorData( aXHatch.GetColor(), - std::min(nColorIndex, nColorCount-1), rObj.GetBrightness() )); + std::min(nColorIndex, nColorCount-1), + dBrightness )); } rObj.SetMergedItem( XFillHatchItem( "", aXHatch ) ); @@ -2197,7 +2223,7 @@ void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& rObj, const SfxItemSet& rC } case drawing::FillStyle_BITMAP: { - if ( nColorCount || rObj.GetBrightness() != 0.0 ) + if ( nColorCount || 0.0 != dBrightness ) { Bitmap aBitmap(rObj.GetMergedItem(XATTR_FILLBITMAP).GetGraphicObject().GetGraphic().GetBitmapEx().GetBitmap()); @@ -2219,46 +2245,58 @@ void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& rObj, const SfxItemSet& rC SdrObject* EnhancedCustomShape2d::CreatePathObj( bool bLineGeometryNeededOnly ) { - sal_Int32 nCoordSize = seqCoordinates.getLength(); + const sal_Int32 nCoordSize(seqCoordinates.getLength()); + if ( !nCoordSize ) + { return nullptr; + } - std::vector< SdrPathObj* > vObjectList; - bool bSortFilledObjectsToBack = SortFilledObjectsToBackByDefault( eSpType ); - - sal_Int32 nSubPathIndex = 0; + std::vector< std::pair< SdrPathObj*, double > > vObjectList; + const bool bSortFilledObjectsToBack(SortFilledObjectsToBackByDefault(eSpType)); + sal_Int32 nSubPathIndex(0); + sal_Int32 nSrcPt(0); + sal_Int32 nSegmentInd(0); + SdrObject* pRet(nullptr); - sal_Int32 nSrcPt = 0; - sal_Int32 nSegmentInd = 0; while( nSegmentInd <= seqSegments.getLength() ) { - CreateSubPath( nSrcPt, nSegmentInd, vObjectList, bLineGeometryNeededOnly, bSortFilledObjectsToBack, nSubPathIndex ); - nSubPathIndex ++; + CreateSubPath( + nSrcPt, + nSegmentInd, + vObjectList, + bLineGeometryNeededOnly, + bSortFilledObjectsToBack, + nSubPathIndex); + nSubPathIndex++; } - SdrObject* pRet = nullptr; - if ( !vObjectList.empty() ) { - const SfxItemSet& rCustomShapeSet = pCustomShapeObj->GetMergedItemSet(); - sal_uInt32 nColorCount = nColorData >> 28; - sal_uInt32 nColorIndex = 0; + const SfxItemSet& rCustomShapeSet(pCustomShapeObj->GetMergedItemSet()); + const sal_uInt32 nColorCount(nColorData >> 28); + sal_uInt32 nColorIndex(0); // #i37011# remove invisible objects if(!vObjectList.empty()) { - std::vector< SdrPathObj* > vTempList; + std::vector< std::pair< SdrPathObj*, double> > vTempList; - for(SdrPathObj* pObj : vObjectList) + for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList ) { - const drawing::LineStyle eLineStyle = pObj->GetMergedItem(XATTR_LINESTYLE).GetValue(); - const drawing::FillStyle eFillStyle = pObj->GetMergedItem(XATTR_FILLSTYLE).GetValue(); + SdrPathObj* pObj(rCandidate.first); + const drawing::LineStyle eLineStyle(pObj->GetMergedItem(XATTR_LINESTYLE).GetValue()); + const drawing::FillStyle eFillStyle(pObj->GetMergedItem(XATTR_FILLSTYLE).GetValue()); // #i40600# if bLineGeometryNeededOnly is set, linestyle does not matter - if( !bLineGeometryNeededOnly && ( drawing::LineStyle_NONE == eLineStyle ) && ( drawing::FillStyle_NONE == eFillStyle ) ) + if(!bLineGeometryNeededOnly && (drawing::LineStyle_NONE == eLineStyle) && (drawing::FillStyle_NONE == eFillStyle)) + { delete pObj; + } else - vTempList.push_back(pObj); + { + vTempList.push_back(rCandidate); + } } vObjectList = vTempList; @@ -2267,16 +2305,23 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( bool bLineGeometryNeededOnly ) if(1 == vObjectList.size()) { // a single object, correct some values - AdaptObjColor(*vObjectList[0L],rCustomShapeSet,nColorIndex,nColorCount); + AdaptObjColor( + *vObjectList.begin()->first, + vObjectList.begin()->second, + rCustomShapeSet, + nColorIndex, + nColorCount); } else { - sal_Int32 nLineObjectCount = 0; - sal_Int32 nAreaObjectCount = 0; + sal_Int32 nLineObjectCount(0); + sal_Int32 nAreaObjectCount(0); // correct some values and collect content data - for (SdrPathObj* pObj : vObjectList) + for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList ) { + SdrPathObj* pObj(rCandidate.first); + if(pObj->IsLine()) { nLineObjectCount++; @@ -2284,34 +2329,48 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( bool bLineGeometryNeededOnly ) else { nAreaObjectCount++; - AdaptObjColor(*pObj,rCustomShapeSet,nColorIndex,nColorCount); + AdaptObjColor( + *pObj, + rCandidate.second, + rCustomShapeSet, + nColorIndex, + nColorCount); } } // #i88870# correct line arrows for callouts if ( nLineObjectCount ) - CorrectCalloutArrows( eSpType, nLineObjectCount, vObjectList ); + { + CorrectCalloutArrows( + eSpType, + nLineObjectCount, + vObjectList); + } // sort objects so that filled ones are in front. Necessary // for some strange objects - if ( bSortFilledObjectsToBack ) + if(bSortFilledObjectsToBack) { - std::vector< SdrPathObj* > vTempList; + std::vector< std::pair< SdrPathObj*, double> > vTempList; vTempList.reserve(vObjectList.size()); - for (SdrPathObj* pObj : vObjectList) + for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList ) { + SdrPathObj* pObj(rCandidate.first); + if ( !pObj->IsLine() ) { - vTempList.push_back(pObj); + vTempList.push_back(rCandidate); } } - for (SdrPathObj* pObj : vObjectList) + for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList ) { + SdrPathObj* pObj(rCandidate.first); + if ( pObj->IsLine() ) { - vTempList.push_back(pObj); + vTempList.push_back(rCandidate); } } @@ -2328,14 +2387,16 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( bool bLineGeometryNeededOnly ) { pRet = new SdrObjGroup; - for (SdrPathObj* pObj : vObjectList) + for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList ) { + SdrPathObj* pObj(rCandidate.first); + pRet->GetSubList()->NbcInsertObject(pObj); } } else if(1 == vObjectList.size()) { - pRet = vObjectList[0L]; + pRet = vObjectList.begin()->first; } if(pRet) diff --git a/svx/source/svdraw/svdopath.cxx b/svx/source/svdraw/svdopath.cxx index b574da18f22c..2935164da771 100644 --- a/svx/source/svdraw/svdopath.cxx +++ b/svx/source/svdraw/svdopath.cxx @@ -1629,16 +1629,14 @@ sdr::contact::ViewContact* SdrPathObj::CreateObjectSpecificViewContact() SdrPathObj::SdrPathObj(SdrObjKind eNewKind) -: meKind(eNewKind), - mdBrightness(0.0) +: meKind(eNewKind) { bClosedObj = IsClosed(); } SdrPathObj::SdrPathObj(SdrObjKind eNewKind, const basegfx::B2DPolyPolygon& rPathPoly, double dBrightness) : maPathPolygon(rPathPoly), - meKind(eNewKind), - mdBrightness(dBrightness) + meKind(eNewKind) { bClosedObj = IsClosed(); ImpForceKind(); commit e6d2332eae92b8f288d3d3f8aa2090abfa777098 Author: jan Iversen <j...@libreoffice.org> Date: Sun Mar 11 12:27:43 2018 +0100 Allow use of "git worktree" in Makefile.in When using git worktree $(SRCDIR)/.git is a file and not a directory, therefore get-submodules: fails in "./g -z". Eliminating call to "./g -z" in worktree directories, but keeping it in the cloned directory. Change-Id: I88d8e3e06cac2a2710da21ae233364d8119fe5ef diff --git a/Makefile.in b/Makefile.in index 470c6956cc0e..0b2340a0ef58 100644 --- a/Makefile.in +++ b/Makefile.in @@ -241,7 +241,9 @@ get-submodules: ifneq ($(foreach i,$(GIT_NEEDED_SUBMODULES),$(i)/.git),$(wildcard $(foreach i,$(GIT_NEEDED_SUBMODULES),$(i)/.git))) cd $(SRCDIR) && ./g -f clone endif +ifeq ($(shell test -d $(SRCDIR)/.git; echo $$?),0) @cd $(SRCDIR) && ./g -z # make sure the git hooks are in place even if no submodules are needed +endif else # these sources are from a tarball, so get the other source tarballs gb_LO_VER := $(shell . $(SRCDIR)/sources.ver && echo $$lo_sources_ver) commit 82d9af7f14c808d48fa5db9420c85a8d26c79905 Author: Mike Kaganski <mike.kagan...@collabora.com> Date: Sun Mar 11 11:58:13 2018 +0300 tdf#108482: ignore repeated headlines' previous instances height Change-Id: Idae0b99c4171556612fb41bb02f1c48bbfeec4b2 Reviewed-on: https://gerrit.libreoffice.org/51073 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/sw/qa/extras/odfimport/data/tdf108482.odt b/sw/qa/extras/odfimport/data/tdf108482.odt new file mode 100644 index 000000000000..c3ce2fc4272a Binary files /dev/null and b/sw/qa/extras/odfimport/data/tdf108482.odt differ diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx index 5ab5c5910ba3..1d4737318517 100644 --- a/sw/qa/extras/odfimport/odfimport.cxx +++ b/sw/qa/extras/odfimport/odfimport.cxx @@ -887,5 +887,20 @@ DECLARE_ODFIMPORT_TEST(testTdf115079, "tdf115079.odt") // This document caused segfault when layouting } +DECLARE_ODFIMPORT_TEST(testTdf108482, "tdf108482.odt") +{ + CPPUNIT_ASSERT_EQUAL_MESSAGE("The table on second page must have two rows", + OUString("2"), parseDump("count(/root/page[2]/body/tab/row)") + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE("The second page table's first row must be the repeated headline", + OUString("Header"), parseDump("/root/page[2]/body/tab/row[1]/cell/txt") + ); + // The first (repeated headline) row with vertical text orientation must have non-zero height + // (in my tests, it was 1135) + CPPUNIT_ASSERT_GREATER( + sal_Int32(1000), parseDump("/root/page[2]/body/tab/row[1]/infos/bounds", "height").toInt32() + ); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx index fec639ea943e..67ee9cc37a18 100644 --- a/sw/source/core/layout/tabfrm.cxx +++ b/sw/source/core/layout/tabfrm.cxx @@ -4101,6 +4101,9 @@ static sal_uInt16 lcl_GetBottomLineDist( const SwRowFrame& rRow ) // on each following page static SwTwips lcl_calcHeightOfRowBeforeThisFrame(const SwRowFrame& rRow) { + // We don't need to account for previous instances of repeated headlines + if (rRow.IsRepeatedHeadline()) + return 0; SwRectFnSet aRectFnSet(&rRow); const SwTableLine* pLine = rRow.GetTabLine(); const SwTabFrame* pTab = rRow.FindTabFrame(); commit f9831de353742485b8241fb2bd8ca6b23e3c1c75 Author: Tamas Bunth <tamas.bu...@collabora.co.uk> Date: Sat Mar 10 23:40:43 2018 +0100 dbahsql: import TIME columns Change-Id: I8863127a4de1bfc06b13d008e037db2a4e60f1e7 Reviewed-on: https://gerrit.libreoffice.org/51059 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Tamás Bunth <btom...@gmail.com> diff --git a/dbaccess/source/filter/hsqldb/hsqlimport.cxx b/dbaccess/source/filter/hsqldb/hsqlimport.cxx index cc806b313e9a..7f6426231b06 100644 --- a/dbaccess/source/filter/hsqldb/hsqlimport.cxx +++ b/dbaccess/source/filter/hsqldb/hsqlimport.cxx @@ -139,8 +139,8 @@ void lcl_setParams(const RowVector& row, Reference<XParameters>& xParam, { xParam->setDouble(i + 1, nVal); } - break; } + break; case DataType::NUMERIC: case DataType::DECIMAL: { @@ -157,8 +157,14 @@ void lcl_setParams(const RowVector& row, Reference<XParameters>& xParam, // TODO break; case DataType::TIME: - // TODO + { + css::util::Time time; + if (row.at(i) >>= time) + { + xParam->setTime(i + 1, time); + } break; + } case DataType::TIMESTAMP: // TODO break; diff --git a/dbaccess/source/filter/hsqldb/rowinputbinary.cxx b/dbaccess/source/filter/hsqldb/rowinputbinary.cxx index b657abd36d52..0bcd0109e304 100644 --- a/dbaccess/source/filter/hsqldb/rowinputbinary.cxx +++ b/dbaccess/source/filter/hsqldb/rowinputbinary.cxx @@ -21,6 +21,7 @@ #include <com/sun/star/sdbc/DataType.hpp> #include <com/sun/star/io/WrongFormatException.hpp> #include <com/sun/star/io/XConnectable.hpp> +#include <com/sun/star/util/Time.hpp> #include <unotools/ucbstreamhelper.hxx> #include <tools/stream.hxx> @@ -300,7 +301,13 @@ std::vector<Any> HsqlRowInputStream::readOneRow(const ColumnTypeVector& nColType case DataType::DATE: break; case DataType::TIME: - break; + { + sal_Int64 value = 0; + m_pStream->ReadInt64(value); + css::util::Time time((value % 1000) * 1000000, value / 1000, 0, 0, true); + aData.push_back(makeAny(time)); + } + break; case DataType::TIMESTAMP: break; case DataType::BOOLEAN: commit 0e73fd8218cfc009edfda02e7240b9d0907916d9 Author: andreas kainz <kain...@gmail.com> Date: Sun Mar 11 09:38:53 2018 +0100 Colibre icons: add res sx and other res icons Change-Id: I6dd8c044fe7e68b9edc12be419d5cf41c81798ea Reviewed-on: https://gerrit.libreoffice.org/51072 Reviewed-by: andreas_kainz <kain...@gmail.com> Tested-by: andreas_kainz <kain...@gmail.com> diff --git a/icon-themes/colibre/cmd/lc_save.png b/icon-themes/colibre/cmd/lc_save.png index d0306ad6011f..fd439188289b 100644 Binary files a/icon-themes/colibre/cmd/lc_save.png and b/icon-themes/colibre/cmd/lc_save.png differ diff --git a/icon-themes/colibre/cmd/sc_save.png b/icon-themes/colibre/cmd/sc_save.png index 013ad2989893..f35a30b21001 100644 Binary files a/icon-themes/colibre/cmd/sc_save.png and b/icon-themes/colibre/cmd/sc_save.png differ diff --git a/icon-themes/colibre/res/notebookbar.png b/icon-themes/colibre/res/notebookbar.png new file mode 100644 index 000000000000..4ba3e06de0b6 Binary files /dev/null and b/icon-themes/colibre/res/notebookbar.png differ diff --git a/icon-themes/colibre/res/recentdoc_remove.png b/icon-themes/colibre/res/recentdoc_remove.png new file mode 100644 index 000000000000..22d26174b4e7 Binary files /dev/null and b/icon-themes/colibre/res/recentdoc_remove.png differ diff --git a/icon-themes/colibre/res/recentdoc_remove_highlighted.png b/icon-themes/colibre/res/recentdoc_remove_highlighted.png new file mode 100644 index 000000000000..a12dd5d372ed Binary files /dev/null and b/icon-themes/colibre/res/recentdoc_remove_highlighted.png differ diff --git a/icon-themes/colibre/res/savemodified_large.png b/icon-themes/colibre/res/savemodified_large.png index fd439188289b..b6cc6a9675fc 100644 Binary files a/icon-themes/colibre/res/savemodified_large.png and b/icon-themes/colibre/res/savemodified_large.png differ diff --git a/icon-themes/colibre/res/savemodified_small.png b/icon-themes/colibre/res/savemodified_small.png new file mode 100644 index 000000000000..ed3ff8a69469 Binary files /dev/null and b/icon-themes/colibre/res/savemodified_small.png differ diff --git a/icon-themes/colibre/res/sc10223.png b/icon-themes/colibre/res/sc10223.png new file mode 100644 index 000000000000..97c6bf13f7b2 Binary files /dev/null and b/icon-themes/colibre/res/sc10223.png differ diff --git a/icon-themes/colibre/res/sc10224.png b/icon-themes/colibre/res/sc10224.png new file mode 100644 index 000000000000..4c59fadf0b09 Binary files /dev/null and b/icon-themes/colibre/res/sc10224.png differ diff --git a/icon-themes/colibre/res/sx03139.png b/icon-themes/colibre/res/sx03139.png new file mode 100644 index 000000000000..481ee89daba2 Binary files /dev/null and b/icon-themes/colibre/res/sx03139.png differ diff --git a/icon-themes/colibre/res/sx03248.png b/icon-themes/colibre/res/sx03248.png new file mode 100644 index 000000000000..6370ee3622ab Binary files /dev/null and b/icon-themes/colibre/res/sx03248.png differ diff --git a/icon-themes/colibre/res/sx03252.png b/icon-themes/colibre/res/sx03252.png new file mode 100644 index 000000000000..2b00e782adc6 Binary files /dev/null and b/icon-themes/colibre/res/sx03252.png differ diff --git a/icon-themes/colibre/res/sx03253.png b/icon-themes/colibre/res/sx03253.png new file mode 100644 index 000000000000..8b0c3a63ac71 Binary files /dev/null and b/icon-themes/colibre/res/sx03253.png differ diff --git a/icon-themes/colibre/res/sx03254.png b/icon-themes/colibre/res/sx03254.png new file mode 100644 index 000000000000..6af5f1b6c14a Binary files /dev/null and b/icon-themes/colibre/res/sx03254.png differ diff --git a/icon-themes/colibre/res/sx03255.png b/icon-themes/colibre/res/sx03255.png new file mode 100644 index 000000000000..31549e06c8f7 Binary files /dev/null and b/icon-themes/colibre/res/sx03255.png differ diff --git a/icon-themes/colibre_svg/cmd/lc_save.svg b/icon-themes/colibre_svg/cmd/lc_save.svg index 0a799be0e811..805928d31f88 100644 --- a/icon-themes/colibre_svg/cmd/lc_save.svg +++ b/icon-themes/colibre_svg/cmd/lc_save.svg @@ -1 +1 @@ -<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><rect fill="#808080" height="20" rx="0" ry="1" width="20" x="2" y="2"/><g fill="#fff"><rect height="8" ry="1" width="16" x="4" y="3"/><path d="m8 15c-.554 0-1 .446-1 1v4c0 .554.446 1 1 1h2v-5h2v5h5c.554 0 1-.446 1-1v-4c0-.554-.446-1-1-1z"/></g></svg> \ No newline at end of file +<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><rect fill="#8959ab" height="20" rx="0" ry="1" width="20" x="2" y="2"/><g fill="#fff"><rect height="8" ry="1" width="16" x="4" y="3"/><path d="m8 15c-.554 0-1 .446-1 1v4c0 .554.446 1 1 1h2v-5h2v5h5c .554 0 1-.446 1-1v-4c0-.554-.446-1-1-1z"/></g></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/cmd/sc_save.svg b/icon-themes/colibre_svg/cmd/sc_save.svg index 06667f294a31..3046984a5fed 100644 --- a/icon-themes/colibre_svg/cmd/sc_save.svg +++ b/icon-themes/colibre_svg/cmd/sc_save.svg @@ -1,4 +1,5 @@ <svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"> + /&gt; - <rect fill="#808080" height="16" rx="0" ry="1" width="16"/><g fill="#fff"><rect height="6" ry="1" width="12" x="2" y="1"/><path d="m4 10c-.554 0-1 .446-1 1v3c0 .554.446 1 1 1h1v-4h2v4h4c.554 0 1-.446 1-1v-3c0-.554-.446-1-1-1z"/></g></svg> \ No newline at end of file + <rect fill="#8959ab" height="16" rx="0" ry="1" width="16"/><g fill="#fff"><rect height="6" ry="1" width="12" x="2" y="1"/><path d="m4 10c-.554 0-1 .446-1 1v3c0 .554.446 1 1 1h1v-4h2v4h4c .554 0 1-.446 1-1v-3c0-.554-.446-1-1-1z"/></g></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/notebookbar.svg b/icon-themes/colibre_svg/res/notebookbar.svg new file mode 100644 index 000000000000..cba75b4b6cea --- /dev/null +++ b/icon-themes/colibre_svg/res/notebookbar.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m6.9375.5c-.2484169 0-.4375.18908218-.4375.4375v1.25c-.5539029.1422005-1.051164.3718783-1.53125.65625l-.90625-.90625c-.1756569-.1756579-.449342-.1756579-.625 0l-1.5 1.5c-.175657.1756579-.175657.4493421 0 .625l.90625.90625c-.2843711.4800856-.514049.9773468-.65625 1.53125h-1.25c-.24841699 0-.4375.1890821-.4375.4375v2.125c.00000001.2484178.189083.4375.4375.4375h1.25c.1422009.553903.371879 1.051164.65625 1.53125l-.90625.90625c-.175657.175658-.175657.449342 0 .625l1.5 1.5c.1756579.175658.449342.175658.625 0l .90625-.90625c.4800861.284372.977347.51405 1.53125.65625v1.25c.0000001.248418.189083.4375.4375.4375h2.125c.2484176 0 .4375-.189082.4375-.4375v-1.25c.553903-.1422 1.051164-.371878 1.53125-.65625l.90625.90625c.175658.175658.449342.175658.625 0l1.5-1.5c.175658-.175658.175658-.449342 0-.625l-.90625-.90625c.284372-.480086.51405-.977347.65625-1.53125h1.25c.248418 0 .4375-.1890826.4375-.4375v-2.125c0-.2484178-.189083-.4375 -.4375-.4375h-1.25c-.1422-.5539032-.371878-1.0511644-.65625-1.53125l.90625-.90625c.175658-.1756579.175658-.449342 0-.625l-1.5-1.5c-.175658-.1756579-.449342-.1756579-.625 0l-.90625.90625c-.480086-.2843717-.977347-.5140495-1.53125-.65625v-1.25c-.0000004-.24841782-.189082-.4375-.4375-.4375zm1.0625 5.5c1.104 0 2 .896 2 2s-.896 2-2 2-2-.896-2-2 .896-2 2-2z" display="block" fill="#fff" stroke="#808080" stroke-linejoin="round"/></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/recentdoc_remove.svg b/icon-themes/colibre_svg/res/recentdoc_remove.svg new file mode 100644 index 000000000000..9d97b2bfeec5 --- /dev/null +++ b/icon-themes/colibre_svg/res/recentdoc_remove.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g stroke="#808080"><path d="m12 2.5573773a9.442613 9.4426129 0 0 0 -9.4426226 9.4426227 9.442613 9.4426129 0 0 0 9.4426226 9.442623 9.442613 9.4426129 0 0 0 9.442623-9.442623 9.442613 9.4426129 0 0 0 -9.442623-9.4426227z" fill="#fff" stroke-width="1.114754"/><path d="m16.444445 16.444445-8.8888892-8.8888892" fill="none" stroke-linecap="round" stroke-width="1.111111"/><path d="m7.5555558 16.444445 8.8888892-8.8888891" fill="none" stroke-linecap="round" stroke-width="1.111111"/></g></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/recentdoc_remove_highlighted.svg b/icon-themes/colibre_svg/res/recentdoc_remove_highlighted.svg new file mode 100644 index 000000000000..12e973072fcf --- /dev/null +++ b/icon-themes/colibre_svg/res/recentdoc_remove_highlighted.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12 2.5573774a9.442613 9.4426129 0 0 0 -9.4426226 9.4426226 9.442613 9.4426129 0 0 0 9.4426226 9.442623 9.442613 9.4426129 0 0 0 9.442623-9.442623 9.442613 9.4426129 0 0 0 -9.442623-9.4426226z" fill="#8c8c8c" stroke="#808080" stroke-width="1.114754"/><path d="m16.444445 16.444445-8.8888892-8.8888891" fill="none" stroke="#fff" stroke-linecap="round" stroke-width="1.111111"/><path d="m7.5555558 16.444445 8.8888892-8.888889" fill="none" stroke="#fff" stroke-linecap="round" stroke-width="1.111111"/><path d="m12 3.1111115a8.8888888 8.8888888 0 0 0 -8.8888886 8.8888885 8.8888888 8.8888888 0 0 0 8.8888886 8.888889 8.8888888 8.8888888 0 0 0 8.888889-8.888889 8.8888888 8.8888888 0 0 0 -8.888889-8.8888885zm0 1.1111111a7.7777777 7.7777777 0 0 1 7.777778 7.7777774 7.7777777 7.7777777 0 0 1 -7.777778 7.777778 7.7777777 7.7777777 0 0 1 -7.7777775-7.777778 7.7777777 7.7777777 0 0 1 7.7777775-7.7777774z" fill="#fff"/></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/savemodified_large.svg b/icon-themes/colibre_svg/res/savemodified_large.svg index baad3d64868a..f44470df6bd8 100644 --- a/icon-themes/colibre_svg/res/savemodified_large.svg +++ b/icon-themes/colibre_svg/res/savemodified_large.svg @@ -1 +1 @@ -<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><rect fill="#8959ab" height="20" rx="0" ry="1" width="20" x="2" y="2"/><g fill="#fff"><rect height="8" ry="1" width="16" x="4" y="3"/><path d="m8 15c-.554 0-1 .446-1 1v4c0 .554.446 1 1 1h2v-5h2v5h5c.554 0 1-.446 1-1v-4c0-.554-.446-1-1-1z"/></g></svg> \ No newline at end of file +<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m3 2c-.554 0-1 .446-1 1v18c0 .554.446 1 1 1h15.173828a3 3 0 0 1 -.173828-1 3 3 0 0 1 3-3 3 3 0 0 1 1 .175781v-15.175781c0-.554-.446-1-1-1z" fill="#8959ab"/><g fill="#fff"><rect height="8" ry="1" width="16" x="4" y="3"/><path d="m8 15c-.554 0-1 .446-1 1v4c0 .554.446 1 1 1h2v-5h2v5h5c .554 0 1-.446 1-1v-4c0-.554-.446-1-1-1z"/></g><circle cx="21" cy="21" fill="#eac282" r="2"/></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/savemodified_small.svg b/icon-themes/colibre_svg/res/savemodified_small.svg new file mode 100644 index 000000000000..c23751ef9a0a --- /dev/null +++ b/icon-themes/colibre_svg/res/savemodified_small.svg @@ -0,0 +1,5 @@ +<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"> + + + /&gt; + <path d="m1 0c-.554 0-1 .446-1 1v14c0 .554.446 1 1 1h10.769531a3 3 0 0 1 -.769531-2 3 3 0 0 1 3-3 3 3 0 0 1 2 .767578v-10.767578c0-.554-.446-1-1-1z" fill="#8959ab"/><rect fill="#fff" height="6" ry="1" width="12" x="2" y="1"/><path d="m4 10c-.554 0-1 .446-1 1v3c0 .554.446 1 1 1h1v-4h2v4h4c .058197 0 .108641-.023752.164062-.033203a3 3 0 0 1 -.164062-.966797 3 3 0 0 1 1-2.230469v-.769531c0-.554-.446-1-1-1z" fill="#fff"/><circle cx="14" cy="14" fill="#eac282" r="2"/></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/sc10223.svg b/icon-themes/colibre_svg/res/sc10223.svg new file mode 100644 index 000000000000..c8b74e0f0271 --- /dev/null +++ b/icon-themes/colibre_svg/res/sc10223.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 16 10" xmlns="http://www.w3.org/2000/svg"><path d="m6 3a1.0001 1.0001 0 0 1 -1 1h-1v1a1.0001 1.0001 0 0 1 -1 1v3h10v-6z" fill="#fff"/><path d="m2 0v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#4d82b8"/><path d="m6 2v1h7v6h-10v-3h-1v4h1 10 1v-1-6-1z" fill="#808080"/></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/sc10224.svg b/icon-themes/colibre_svg/res/sc10224.svg new file mode 100644 index 000000000000..66de591a2d60 --- /dev/null +++ b/icon-themes/colibre_svg/res/sc10224.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 16 10" xmlns="http://www.w3.org/2000/svg"><path d="m4 0v1 1 1h1v-1h8v1h1v-3h-1v1h-8v-1zm-4 4v1h1v4h-1v1h3v-1h-1v-4h1v-1z" fill="#4d82b8"/><path d="m4 4v1 4 1h9 1v-5-1zm1 1h8v4h-8z" fill="#808080"/><path d="m5 5h8v4h-8z" fill="#fff"/></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/sx03139.svg b/icon-themes/colibre_svg/res/sx03139.svg new file mode 100644 index 000000000000..f6fdc88ab70c --- /dev/null +++ b/icon-themes/colibre_svg/res/sx03139.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">/&gt;<circle cx="7.5" cy="8.5" fill="#fff" r="6.5"/><path d="m7.5 1a7.5 7.5 0 0 0 -7.5 7.5 7.5 7.5 0 0 0 7.5 7.5 7.5 7.5 0 0 0 7.5-7.5 7.5 7.5 0 0 0 -7.5-7.5zm.00391 1a6.5 6.5 0 0 1 .064453.00391.50005.50005 0 0 0 .109375.3027344c.6418609.8229503 1.155164 1.6604336 1.5390589 2.5175744-1.119111.1933347-2.2369139.1905685-3.3574219-.0058594.38362-.8549332.8948701-1.6907884 1.5351562-2.5117188a.50005.50005 0 0 0 .109375-.3066406zm-1.2089881.1152344c-.5843051.8029368-1.0703742 1.6335521-1.4355469 2.4921875-.6380173-.175292-1.2786377-.4302808-1.921875-.7246094a6.5 6.5 0 0 1 3.3574219-1.7675781zm2.4902343.015625a6.5 6.5 0 0 1 3.2890628 1.7597656c-.622233.2970411-1.243129.5483381-1.861328.7207031-.3631219-.8547662-.8473482-1.6808971-1.4277348-2.4804687zm-6.5214843 2.5390625c.7466984.356724 1.4969224.6529085 2.25.8613281-.2528039.7990086-.4037353 1.6213918-.4335938 2.46875h-3.0546875a6.5 6.5 0 0 1 1.2382813-3.3300781zm10.4785 161.00586a6.5 6.5 0 0 1 1.236328 3.3242181h-2.988282c-.029784-.8452733-.17997-1.6657312-.43164-2.4628906.730412-.2053967 1.458102-.4993505 2.183594-.8613282zm-7.2460942 1.0683587c1.3593621.2565588 2.7228872.2628052 4.0839843.0078125.2387771.7323459.3778619 1.4799447.4082031 2.2480469h-4.9042968c.0304544-.7709663.1716948-1.5209022.4121094-2.2558594zm-4.4746094 3.2558594h3.0839844c.058298.7851002.2173833 1.58728.484375 2.40625-.7861884.212341-1.5684685.522676-2.3476563.896484a6.5 6.5 0 0 1 -1.2207031-3.302734zm4.0878906 0h4.8535156c-.0583742.7091257-.2047291 1.438748-.4589844 2.193359-.6676061-.120087-1.3353808-.199907-2.0039062-.195312-.6440198.004425-1.2871003.087991-1.9296875.205078-.2562167-.758023-.4023155-1.4909887-.4609375-2.203125zm5.855469 0h3.009765a6.5 6.5 0 0 1 -1.21289 3.294922c-.757185-.379302-1.516921-.687884-2.279297-.896484.265471-.816276.424308-1.6158182.482422-2.398438zm-3.464844 2.976562c.5471575-.0039 1.0949911.05604 1.6425781.146485-.365209.832811-.8525412 1.6938 77-1.4804687 2.589844a.50005.50005 0 0 0 -.0976563.283203 6.5 6.5 0 0 1 -.0644531.003906.50065925.50065925 0 0 0 -.0898438-.287109c-.6269472-.894568-1.1134883-1.754334-1.4785156-2.585938.5232715-.087786 1.0461235-.146627 1.5683594-.150391zm2.638672.347657c.65114.176538 1.305355.444999 1.960937.759765a6.5 6.5 0 0 1 -3.3515621 1.794922c.5759861-.868856 1.0420029-1.720577 1.3906251-2.554687zm-5.201172.011719c.3490871.832808.8149234 1.683346 1.390625 2.550781a6.5 6.5 0 0 1 -3.4199219-1.794922c.6792215-.312559 1.355858-.576136 2.0292969-.755859z" fill="#4e83b9"/></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/sx03248.svg b/icon-themes/colibre_svg/res/sx03248.svg new file mode 100644 index 000000000000..c5ba42728bd9 --- /dev/null +++ b/icon-themes/colibre_svg/res/sx03248.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1.8125656.00599937c-.4583913.08746719-.82070444.53319998-.8124846.99962503v13.9947496c.00005.523384.4764109.999575.999981.999625h11.999772c.52357-.00005.999931-.476241.999981-.999625v-7.9969996c.006-.263961-.0975-.5287717-.281245-.7184805l-5.9998857-5.99774999c-.1897764-.18363112-.4546813-.28726224-.7187363-.28114454h-5.999886c-.0622988-.00599774-.1251776-.00599774-.1874964 0z" fill="#e68497"/><path d="m11.343634.00599937c-.331493.10559039-.443051.60743213-.187496.8434336l2.999943 2.99887503c.277145.2626914.829134.037886.843734-.3436211v-2.99887503c-.00003-.26169182-.238205-.49978251-.49999-.4998125h-2.999943c-.0517-.007997-.104589-.007997-.156248 0z" fill="#e68497"/><path d="m2.000307.99933v.5 13 .5h.49999 10.99979.5v-.5-7.3125-.2188l-.15625-.125-5.6874-5.7187-.15624-.125h-.1875-5.3124z" fill="#fff"/><g fill="#e68497" stroke-width="5.01122"><path d="m3.999935 7.99822h7.999848v1h-7.999848z"/><path d="m3.999935 5.9 9822h5.999886v1h-5.999886z"/><path d="m3.999935 9.99822h7.999848v1h-7.999848z"/><path d="m3.999935 11.99822h5.999886v1h-5.999886z"/></g></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/sx03252.svg b/icon-themes/colibre_svg/res/sx03252.svg new file mode 100644 index 000000000000..ecc2a1f71a76 --- /dev/null +++ b/icon-themes/colibre_svg/res/sx03252.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1.8125.00585938c-.4583913.08746719-.82071984.53357494-.8125 1.00000002v13.9941406c.00005.523384.4764299.99995 1 1h4.0078125c-.0019269-.248085.0794634-.501195.2851563-.707031l8.6425782-8.6425784c-.047771-.1351075-.117044-.2622436-.216797-.3652344l-6-5.99804682c-.1897764-.18363113-.454695-.28736771-.71875-.28125h-6c-.0622988-.00599775-.1251812-.00599775-.1875 0z" fill="#eac282"/><path d="m11.343634.00599937c-.331493.10559039-.443051.60743213-.187496.8434336l2.999943 2.99887503c.277145.2626914.829134.037886.843734-.3436211v-2.99887503c-.00003-.26169182-.238205-.49978251-.49999-.4998125h-2.999943c-.0517-.007997-.104589-.007997-.156248 0z" fill="#eac282"/><path d="m2 1v .5 13 .5h.5 4.0859375l7.4140625-7.4140625v-.3984375-.21875l-.15625-.125-5.6875-5.71875-.15625-.125h-.1875-5.3125z" fill="#fff"/><path d="m11.582031 6.9941406c-.078994-.0132362-.161924-.0082669-.240234.0175782-.0712.0269-.13532.0696-.1875.125l-5.5000001 5.0000002c-.15783.13912-.2116857.362774-.1347657.558593.0769001.19582.2681957.321917.4785157.316407h2.5761719l1-1h-2.2949219l3.7187501-3.3750002v1.9511722l1-1.0000004v-2.0761718c.008-.1647401-.064153-.3219051-.195313-.421875-.065605-.05-.141709-.0824669-.220703-.0957032z" fill="#eac282"/><path d="m5.3666502 10.857465a2.5078198 2.5078198 0 0 1 -.7617995-2.5850242 2.5078198 2.5078198 0 0 1 2.0209188-1.782854 2.5078198 2.5078198 0 0 1 2.4698564 1.0780014" fill="none" stroke="#eac282" stroke-linecap="round" stroke-linejoin="round" stroke-width=".999999"/><path d="m16 7-9 9h9zm-1 2.7736083v.9763917 4.25h-4.25-.952422z" fill="#808080" fill-rule="evenodd"/></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/sx03253.svg b/icon-themes/colibre_svg/res/sx03253.svg new file mode 100644 index 000000000000..0044fbbd3ef5 --- /dev/null +++ b/icon-themes/colibre_svg/res/sx03253.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1.8125.00585938c-.4583913.08746719-.82071984.53357494-.8125 1.00000002v13.9941406c.00005.523384.4764299.99995 1 1h4.0078125c-.0019269-.248085.0794634-.501195.2851563-.707031l8.6425782-8.6425784c-.047771-.1351075-.117044-.2622436-.216797-.3652344l-6-5.99804682c-.1897764-.18363113-.454695-.28736771-.71875-.28125h-6c-.0622988-.00599775-.1251812-.00599775-.1875 0z" fill="#d86344"/><path d="m11.343634.00599937c-.331493.10559039-.443051.60743213-.187496.8434336l2.999943 2.99887503c.277145.2626914.829134.037886.843734-.3436211v-2.99887503c-.00003-.26169182-.238205-.49978251-.49999-.4998125h-2.999943c-.0517-.007997-.104589-.007997-.156248 0z" fill="#d86344"/><path d="m2 1v .5 13 .5h.5 4.0859375l7.4140625-7.4140625v-.3984375-.21875l-.15625-.125-5.6875-5.71875-.15625-.125h-.1875-5.3125z" fill="#fff"/><path d="m3.9980469 6v7h4.5878906l3.4121095-3.4121094v-3.5878906z" fill="#fff"/><g fill="#d86344"><path d="m4.03125 6.0117188 v.46875c-.0119 1.9999-.01965 3.9999002-.03125 6.0000002v.53125h.5 4.0742188l1-1h-4.5742188c.01-1.6668.02145-3.3334003.03125-5.0000002 1.98885.0099999 3.98117-.0100001 5.96875 0 0 1.1865691-.000003 2.3817187 0 3.5742192l1-1.0000005c.000007-1.0267866 0-2.0536294 0-3.0742187v-.5h-.5c-2.32275-.012-4.64771.01-6.96875 0z"/><path d="m7.99919 7.9993h2v1h-2z"/><path d="m7.99919 9.9993h2v1h-2z"/><path d="m5.99919 7.9993h1v1h-1z"/><path d="m5.99919 9.9993h1v1h-1z"/></g><path d="m16 7-9 9h9zm-1 2.7736083v.9763917 4.25h-4.25-.952422z" fill="#808080" fill-rule="evenodd"/></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/sx03254.svg b/icon-themes/colibre_svg/res/sx03254.svg new file mode 100644 index 000000000000..9a570012ba6e --- /dev/null +++ b/icon-themes/colibre_svg/res/sx03254.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1.8125.00585938c-.4583913.08746719-.82071984.53357494-.8125 1.00000002v13.9941406c.00005.523384.4764299.99995 1 1h4.0078125c-.0019269-.248085.0794634-.501195.2851563-.707031l8.6425782-8.6425784c-.047771-.1351075-.117044-.2622436-.216797-.3652344l-6-5.99804682c-.1897764-.18363113-.454695-.28736771-.71875-.28125h-6c-.0622988-.00599775-.1251812-.00599775-.1875 0z" fill="#76a797"/><path d="m11.343634.00599937c-.331493.10559039-.443051.60743213-.187496.8434336l2.999943 2.99887503c.277145.2626914.829134.037886.843734-.3436211v-2.99887503c-.00003-.26169182-.238205-.49978251-.49999-.4998125h-2.999943c-.0517-.007997-.104589-.007997-.156248 0z" fill="#76a797"/><path d="m2 1v .5 13 .5h.5 4.0859375l7.4140625-7.4140625v-.3984375-.21875l-.15625-.125-5.6875-5.71875-.15625-.125h-.1875-5.3125z" fill="#fff"/><path d="m3.9980469 5.9980469v7.0000001h4.5898437l2.4101564-2.410156v-4.5898441z" fill="#fff"/><path d="m3.9980469 5.9980469v 1 1 1 1 1.0000001 1 1h1 2 1 .5898437l1-1h-1.5898437v-1h2v .589844l1.0000001-1v-4.5898441h-6.0000001zm1 1h2v1h-2zm3 0h2v1h-2zm-3 2h2v1h-2zm3 0h2v1h-2zm-3 2.0000001h2v1h-2z" fill="#76a797"/><path d="m16 7.0000003-9 8.9999997h9zm-1 2.7736083v.9763914 4.25h-4.25-.952422z" fill="#808080" fill-rule="evenodd"/></svg> \ No newline at end of file diff --git a/icon-themes/colibre_svg/res/sx03255.svg b/icon-themes/colibre_svg/res/sx03255.svg new file mode 100644 index 000000000000..2a35f5d033dd --- /dev/null +++ b/icon-themes/colibre_svg/res/sx03255.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1.8125.00585938c-.4583913.08746719-.82071984.53357494-.8125 1.00000002v13.9941406c.00005.523384.4764299.99995 1 1h4.0078125c-.0019269-.248085.0794634-.501195.2851563-.707031l8.6425782-8.6425784c-.047771-.1351075-.117044-.2622436-.216797-.3652344l-6-5.99804682c-.1897764-.18363113-.454695-.28736771-.71875-.28125h-6c-.0622988-.00599775-.1251812-.00599775-.1875 0z" fill="#4d82b8"/><path d="m11.343634.00599937c-.331493.10559039-.443051.60743213-.187496.8434336l2.999943 2.99887503c.277145.2626914.829134.037886.843734-.3436211v-2.99887503c-.00003-.26169182-.238205-.49978251-.49999-.4998125h-2.999943c-.0517-.007997-.104589-.007997-.156248 0z" fill="#4d82b8"/><path d="m2 1v .5 13 .5h.5 4.0859375l7.4140625-7.4140625v-.3984375-.21875l-.15625-.125-5.6875-5.71875-.15625-.125h-.1875-5.3125z" fill="#fff"/><g fill="#4d82b8" stroke-width="5.01122"><path d="m3.999935 7.99822h7.999848v1h-7.999848z"/><path d="m3.999935 5.99822h5.9998 86v1h-5.999886z"/><path d="m4 9.9980469v1.0000001h6.587891l1-1.0000001z"/><path d="m4 11.998047v1h4.5878906l1-1z"/></g><path d="m16 7.0000003-9 8.9999997h9zm-1 2.7736083v.9763914 4.25h-4.25-.952422z" fill="#808080" fill-rule="evenodd"/></svg> \ No newline at end of file commit 02f6aa7355d77842caa0416217e0a572144467c3 Author: jan Iversen <j...@libreoffice.org> Date: Sun Mar 11 09:19:39 2018 +0100 iOS, removed perl script in bridges The perl script just generated static asm code, this code is now included directly in ios64_helper.s Change-Id: I3ebc6f85865287e1a1d11f82be72fc2407bcb40f diff --git a/bridges/Library_cpp_uno.mk b/bridges/Library_cpp_uno.mk index 4c6d7ec95046..902b735b3d65 100644 --- a/bridges/Library_cpp_uno.mk +++ b/bridges/Library_cpp_uno.mk @@ -26,24 +26,6 @@ bridges_SELECTED_BRIDGE := gcc3_ios bridge_noopt_objects := cpp2uno except uno2cpp bridge_asm_objects := ios64_helper -#HACK -$(eval $(call gb_Library_set_include,$(gb_CPPU_ENV)_uno,\ - $$(INCLUDE) \ - -I $(call gb_CustomTarget_get_workdir,bridges/source/cpp_uno/gcc3_ios) \ -)) - -$(SRCDIR)/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s: \ - $(call gb_CustomTarget_get_workdir,bridges/source/cpp_uno/gcc3_ios)/codesnippets.S - -$(call gb_CustomTarget_get_workdir,bridges/source/cpp_uno/gcc3_ios)/codesnippets.S: \ - $(SRCDIR)/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl \ - | $(call gb_CustomTarget_get_workdir,bridges/source/cpp_uno/gcc3_ios)/.dir - $(PERL) $< > $@ - -$(call gb_Library_get_clean_target,$(gb_CPPU_ENV)_uno) : - rm -f $(WORKDIR)/CustomTarget/bridges/source/cpp_uno/gcc3_ios/codesnippets.S - - else ifeq ($(CPUNAME),AARCH64) ifneq ($(filter ANDROID DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),) diff --git a/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl b/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl deleted file mode 100755 index 3a3b0a3fbb1a..000000000000 --- a/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/perl -w # -*- tab-width: 4; indent-tabs-mode: nil; cperl-indent-level: 4 -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# - -my $nFunIndexes = 8; -my $nVtableOffsets = 4; - -sub gen_arm ($$) -{ - my ($funIndex, $vtableOffset) = @_; - printf ("codeSnippet_%08x_%d:\n", $funIndex, $vtableOffset); - printf (" adr x15, .+8\n"); - printf (" b _privateSnippetExecutor\n"); - printf (" .long %#08x\n", $funIndex); - printf (" .long %d\n", $vtableOffset); -} - -printf (".text\n"); -printf ("\n"); -printf (" .align 4\n"); -printf ("\n"); - -foreach my $funIndex (0 .. $nFunIndexes-1) -{ - foreach my $vtableOffset (0 .. $nVtableOffsets-1) - { - gen_arm ($funIndex, $vtableOffset); - } -} - -printf (" .globl _nFunIndexes\n"); -printf ("_nFunIndexes:\n"); -printf (" .long %d\n", $nFunIndexes); - -printf (" .globl _nVtableOffsets\n"); -printf ("_nVtableOffsets:\n"); -printf (" .long %d\n", $nVtableOffsets); - -printf (" .globl _codeSnippets\n"); -printf ("_codeSnippets:\n"); - -foreach my $funIndex (0 .. $nFunIndexes-1) -{ - foreach my $vtableOffset (0 .. $nVtableOffsets-1) - { - printf (" .long codeSnippet_%08x_%d - _codeSnippets\n", $funIndex, $vtableOffset); - } -} - -# vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s b/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s index 51e4d160dafe..6e6e8c74b347 100644 --- a/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s +++ b/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s @@ -16,8 +16,211 @@ // except in compliance with the License. You may obtain a copy of // the License at http://www.apache.org/licenses/LICENSE-2.0 . // + .text + .align 4 + +codeSnippet_00000000_0: + adr x15, .+8 + b _privateSnippetExecutor + .long 00000000 + .long 0 +codeSnippet_00000000_1: + adr x15, .+8 + b _privateSnippetExecutor + .long 00000000 + .long 1 +codeSnippet_00000000_2: + adr x15, .+8 + b _privateSnippetExecutor + .long 00000000 + .long 2 +codeSnippet_00000000_3: + adr x15, .+8 + b _privateSnippetExecutor + .long 00000000 + .long 3 +codeSnippet_00000001_0: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000001 + .long 0 +codeSnippet_00000001_1: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000001 + .long 1 +codeSnippet_00000001_2: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000001 + .long 2 +codeSnippet_00000001_3: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000001 + .long 3 +codeSnippet_00000002_0: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000002 + .long 0 +codeSnippet_00000002_1: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000002 + .long 1 +codeSnippet_00000002_2: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000002 + .long 2 +codeSnippet_00000002_3: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000002 + .long 3 +codeSnippet_00000003_0: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000003 + .long 0 +codeSnippet_00000003_1: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000003 + .long 1 +codeSnippet_00000003_2: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000003 + .long 2 +codeSnippet_00000003_3: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000003 + .long 3 +codeSnippet_00000004_0: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000004 + .long 0 +codeSnippet_00000004_1: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000004 + .long 1 +codeSnippet_00000004_2: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000004 + .long 2 +codeSnippet_00000004_3: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000004 + .long 3 +codeSnippet_00000005_0: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000005 + .long 0 +codeSnippet_00000005_1: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000005 + .long 1 +codeSnippet_00000005_2: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000005 + .long 2 +codeSnippet_00000005_3: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000005 + .long 3 +codeSnippet_00000006_0: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000006 + .long 0 +codeSnippet_00000006_1: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000006 + .long 1 +codeSnippet_00000006_2: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000006 + .long 2 +codeSnippet_00000006_3: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000006 + .long 3 +codeSnippet_00000007_0: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000007 + .long 0 +codeSnippet_00000007_1: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000007 + .long 1 +codeSnippet_00000007_2: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000007 + .long 2 +codeSnippet_00000007_3: + adr x15, .+8 + b _privateSnippetExecutor + .long 0x000007 + .long 3 + .globl _nFunIndexes +_nFunIndexes: + .long 8 + .globl _nVtableOffsets +_nVtableOffsets: + .long 4 + .globl _codeSnippets +_codeSnippets: + .long codeSnippet_00000000_0 - _codeSnippets + .long codeSnippet_00000000_1 - _codeSnippets + .long codeSnippet_00000000_2 - _codeSnippets + .long codeSnippet_00000000_3 - _codeSnippets + .long codeSnippet_00000001_0 - _codeSnippets + .long codeSnippet_00000001_1 - _codeSnippets + .long codeSnippet_00000001_2 - _codeSnippets + .long codeSnippet_00000001_3 - _codeSnippets + .long codeSnippet_00000002_0 - _codeSnippets + .long codeSnippet_00000002_1 - _codeSnippets + .long codeSnippet_00000002_2 - _codeSnippets + .long codeSnippet_00000002_3 - _codeSnippets + .long codeSnippet_00000003_0 - _codeSnippets + .long codeSnippet_00000003_1 - _codeSnippets + .long codeSnippet_00000003_2 - _codeSnippets + .long codeSnippet_00000003_3 - _codeSnippets + .long codeSnippet_00000004_0 - _codeSnippets + .long codeSnippet_00000004_1 - _codeSnippets + .long codeSnippet_00000004_2 - _codeSnippets + .long codeSnippet_00000004_3 - _codeSnippets + .long codeSnippet_00000005_0 - _codeSnippets + .long codeSnippet_00000005_1 - _codeSnippets + .long codeSnippet_00000005_2 - _codeSnippets + .long codeSnippet_00000005_3 - _codeSnippets + .long codeSnippet_00000006_0 - _codeSnippets + .long codeSnippet_00000006_1 - _codeSnippets + .long codeSnippet_00000006_2 - _codeSnippets + .long codeSnippet_00000006_3 - _codeSnippets + .long codeSnippet_00000007_0 - _codeSnippets + .long codeSnippet_00000007_1 - _codeSnippets + .long codeSnippet_00000007_2 - _codeSnippets + .long codeSnippet_00000007_3 - _codeSnippets + -#include "codesnippets.S" .text .align 4 commit dc275890d62cb8f404fe6bed5c37f90835b53b0f Author: jan Iversen <j...@libreoffice.org> Date: Sun Mar 11 09:17:05 2018 +0100 iOS, typo in function decl. Change-Id: I269f5323ed0f984cfe9d28636a9cae84a863e7a6 diff --git a/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx index 0ca1401ba960..8008d3a2193e 100644 --- a/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx +++ b/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx @@ -512,11 +512,13 @@ bridges::cpp_uno::shared::VtableFactory::initializeBlock( unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( Slot ** slots, unsigned char * code, + sal_PtrDiff writetoexecdiff, typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset, sal_Int32 functionCount, sal_Int32 vtableOffset) { + (void)writetoexecdiff; (*slots) -= functionCount; Slot * s = *slots; for (sal_Int32 i = 0; i < type->nMembers; ++i) commit bed135e02bf7db2ef8c29747bbf79f26da71e9ca Author: jan Iversen <j...@libreoffice.org> Date: Sat Mar 10 19:44:25 2018 +0100 iOS, activate USE_DOUBLE_MMAP If not activated code assumes dymanic behaivour. Change-Id: I6b2807f4a2402a7adfa0839454586b425ee1ae29 diff --git a/bridges/inc/vtablefactory.hxx b/bridges/inc/vtablefactory.hxx index 70c87c385952..04e3addc3149 100644 --- a/bridges/inc/vtablefactory.hxx +++ b/bridges/inc/vtablefactory.hxx @@ -31,7 +31,7 @@ /*See: http://people.redhat.com/drepper/selinux-mem.html*/ #if defined(LINUX) || defined(OPENBSD) || defined(FREEBSD) \ || defined(NETBSD) || defined(DRAGONFLY) || defined (ANDROID) \ - || defined(HAIKU) + || defined(HAIKU) || defined(IOS) #define USE_DOUBLE_MMAP #endif commit be65314d131ea75610d9ed21323ce6025a615c99 Author: jan Iversen <j...@libreoffice.org> Date: Sat Mar 10 19:24:03 2018 +0100 bridges,iOS removed suport for x86 and arm. Only arm64 is supported, code is more readable Change-Id: I6940b0d03dc26c9c8f10c1cb105a7564471f2ca5 diff --git a/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl b/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl index a8548836fef3..3a3b0a3fbb1a 100755 --- a/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl +++ b/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl @@ -13,45 +13,15 @@ my $nVtableOffsets = 4; sub gen_arm ($$) { my ($funIndex, $vtableOffset) = @_; - if ($funIndex & 0x80000000) { - printf ("#ifndef __arm64\n"); - } printf ("codeSnippet_%08x_%d:\n", $funIndex, $vtableOffset); - printf ("#ifdef __arm\n"); - # Note: pc is the address of instruction being executed plus 8 - printf (" mov ip, pc\n"); - printf ("#else\n"); printf (" adr x15, .+8\n"); - printf ("#endif\n"); printf (" b _privateSnippetExecutor\n"); printf (" .long %#08x\n", $funIndex); printf (" .long %d\n", $vtableOffset); - if ($funIndex & 0x80000000) { - printf ("#endif\n"); - } -} - -sub gen_x86 ($$$) -{ - my ($funIndex, $vtableOffset, $executor) = @_; - printf ("codeSnippet_%08x_%d_%s:\n", $funIndex, $vtableOffset, $executor); - printf (" movl \$%#08x, %%eax\n", $funIndex); - printf (" movl \$%d, %%edx\n", $vtableOffset); - printf (" jmp _privateSnippetExecutor%s\n", $executor); } printf (".text\n"); - -printf ("#if defined(__arm) || defined(__arm64)\n"); - printf ("\n"); -printf ("// Each codeSnippetX function stores into ip (arm64: x15) an address and branches to _privateSnippetExecutor\n"); -printf ("// The address is that following the branch instruction, containing two 32-bit ints:\n"); -printf ("// - the function index, which for 32-bit can have the 0x80000000 bit set\n"); -printf ("// to indicate that a hidden parameter is used for returning large values\n"); -printf ("// - the vtable offset\n"); -printf ("\n"); - printf (" .align 4\n"); printf ("\n"); @@ -60,27 +30,9 @@ foreach my $funIndex (0 .. $nFunIndexes-1) foreach my $vtableOffset (0 .. $nVtableOffsets-1) { gen_arm ($funIndex, $vtableOffset); - gen_arm ($funIndex|0x80000000, $vtableOffset); } } -printf ("#else\n"); -printf (" .align 1, 0x90\n"); - -foreach my $funIndex (0 .. $nFunIndexes-1) -{ - foreach my $vtableOffset (0 .. $nVtableOffsets-1) - { - foreach my $executor ('General', 'Void', 'Hyper', 'Float', 'Double', 'Class') - { - gen_x86 ($funIndex, $vtableOffset, $executor); - gen_x86 ($funIndex|0x80000000, $vtableOffset, $executor); - } - } - } - -printf ("#endif\n"); - printf (" .globl _nFunIndexes\n"); printf ("_nFunIndexes:\n"); printf (" .long %d\n", $nFunIndexes); @@ -96,18 +48,7 @@ foreach my $funIndex (0 .. $nFunIndexes-1) { foreach my $vtableOffset (0 .. $nVtableOffsets-1) { - printf ("#if defined(__arm) || defined(__arm64)\n"); printf (" .long codeSnippet_%08x_%d - _codeSnippets\n", $funIndex, $vtableOffset); - printf ("#ifndef __arm64\n"); - printf (" .long codeSnippet_%08x_%d - _codeSnippets\n", $funIndex|0x80000000, $vtableOffset); - printf ("#endif\n"); - printf ("#else\n"); - foreach my $executor ('General', 'Void', 'Hyper', 'Float', 'Double', 'Class') - { - printf (" .long codeSnippet_%08x_%d_%s - _codeSnippets\n", $funIndex, $vtableOffset, $executor); - printf (" .long codeSnippet_%08x_%d_%s - _codeSnippets\n", $funIndex|0x80000000, $vtableOffset, $executor); - } - printf ("#endif\n"); } } diff --git a/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s b/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s index 7461cbccc4e7..51e4d160dafe 100644 --- a/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s +++ b/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s @@ -19,31 +19,6 @@ #include "codesnippets.S" -#if defined(__arm) -// ARM support code for LibreOffice C++/UNO bridging -// -// Written by Peter Naulls <pe...@chocky.org> -// Modified by Caolan McNamara <caol...@redhat.com> -// Fixed by Michael Casadevall <mcasadev...@kubuntu.org> -// Modified for iOS by Tor Lillqvist <t...@iki.fi> - - .text - .align 4 - -_privateSnippetExecutor: - stmfd sp!, {r0-r3} // follow other parameters on stack - mov r0, ip // r0 points to functionoffset/vtable - mov r1, sp // r1 points to this and params - // (see cpp2uno.cxx:codeSnippet()) - stmfd sp!, {r4, lr} // save return address - // (r4 pushed to preserve stack alignment) - bl _cpp_vtable_call - - add sp, sp, #4 // no need to restore r4 (we didn't touch it) - ldr pc, [sp], #20 // return, discarding function arguments - -#elif defined(__arm64) - .text .align 4 @@ -79,393 +54,4 @@ _privateSnippetExecutor: ret lr .cfi_endproc -#elif defined(__i386) - // i386 code, for the simulator - .text - -.align 1, 0x90 -_privateSnippetExecutorGeneral: -LFBg: - movl %esp,%ecx - pushl %ebp // proper stack frame needed for exception handling -LCFIg0: - movl %esp,%ebp -LCFIg1: - subl $0x8,%esp // padding + 32bit returnValue - pushl %esp // 32bit &returnValue - pushl %ecx // 32bit pCallStack - pushl %edx // 32bit nVtableOffset - pushl %eax // 32bit nFunctionIndex - call L_cpp_vtable_call$stub - movl 16(%esp),%eax // 32bit returnValue - leave - ret -LFEg: - .long .-_privateSnippetExecutorGeneral - -.align 1, 0x90 -_privateSnippetExecutorVoid: -LFBv: - movl %esp,%ecx - pushl %ebp // proper stack frame needed for exception handling -LCFIv0: - movl %esp,%ebp -LCFIv1: - sub $8,%esp // padding - pushl $0 // 32bit null pointer (returnValue not used) - pushl %ecx // 32bit pCallStack - pushl %edx // 32bit nVtableOffset - pushl %eax // 32bit nFunctionIndex - call L_cpp_vtable_call$stub - leave - ret -LFEv: - .long .-_privateSnippetExecutorVoid - -.align 1, 0x90 -_privateSnippetExecutorHyper: -LFBh: - movl %esp,%ecx - pushl %ebp // proper stack frame needed for exception handling -LCFIh0: - movl %esp,%ebp -LCFIh1: - subl $0x8,%esp // 64bit returnValue - pushl %esp // 32bit &returnValue - pushl %ecx // 32bit pCallStack - pushl %edx // 32bit nVtableOffset - pushl %eax // 32bit nFunctionIndex - call L_cpp_vtable_call$stub - movl 16(%esp),%eax // 64bit returnValue, lower half - movl 20(%esp),%edx // 64bit returnValue, upper half - leave - ret -LFEh: - .long .-_privateSnippetExecutorHyper - -.align 1, 0x90 -_privateSnippetExecutorFloat: -LFBf: - movl %esp,%ecx - pushl %ebp // proper stack frame needed for exception handling -LCFIf0: - movl %esp,%ebp -LCFIf1: - subl $0x8,%esp // padding + 32bit returnValue - pushl %esp // 32bit &returnValue - pushl %ecx // 32bit pCallStack - pushl %edx // 32bit nVtableOffset - pushl %eax // 32bit nFunctionIndex - call L_cpp_vtable_call$stub - flds 16(%esp) // 32bit returnValue - leave - ret -LFEf: - .long .-_privateSnippetExecutorFloat - -.align 1, 0x90 -_privateSnippetExecutorDouble: -LFBd: - movl %esp,%ecx - pushl %ebp // proper stack frame needed for exception handling -LCFId0: - movl %esp,%ebp -LCFId1: - subl $0x8,%esp // 64bit returnValue - pushl %esp // 32bit &returnValue - pushl %ecx // 32bit pCallStack - pushl %edx // 32bit nVtableOffset - pushl %eax // 32bit nFunctionIndex - call L_cpp_vtable_call$stub - fldl 16(%esp) // 64bit returnValue - leave - ret -LFEd: - .long .-_privateSnippetExecutorDouble - -.align 1, 0x90 -_privateSnippetExecutorClass: -LFBc: - movl %esp,%ecx - pushl %ebp // proper stack frame needed for exception handling -LCFIc0: - movl %esp,%ebp -LCFIc1: - subl $0x8,%esp // padding + 32bit returnValue - pushl %esp // 32bit &returnValue - pushl %ecx // 32bit pCallStack - pushl %edx // 32bit nVtableOffset - pushl %eax // 32bit nFunctionIndex - call L_cpp_vtable_call$stub - movl 16(%esp),%eax // 32bit returnValue - leave - ret $4 -LFEc: - .long .-_privateSnippetExecutorClass - - .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support -EH_frame1: - .set L$set$frame1,LECIE1-LSCIE1 - .long L$set$frame1 // length -LSCIE1: - .long 0 // CIE_ID - .byte 1 // version - .ascii "zPR\0" // augmentation - .byte 1 // code_alignment_factor (.uleb128 1) - .byte 0x7c // data_alignment_factor (.sleb128 -4) - .byte 8 // return_address_register - .byte 0x6 // augmentation size 7: - .byte 0x9b // ??? - .long L___gxx_personality_v0$non_lazy_ptr-. - .byte 0x10 - // initial_instructions: - .byte 0x0C // DW_CFA_def_cfa %esp, 4 - .byte 5 - .byte 4 - .byte 0x88 // DW_CFA_offset ret, 1 - .byte 1 - .align 2 -LECIE1: -_privateSnippetExecutorGeneral.eh: -LSFDEg: - .set L$set$g1,LEFDEg-LASFDEg - .long L$set$g1 // length -LASFDEg: - .long LASFDEg-EH_frame1 // CIE_pointer - .long LFBg-. // initial_location - .long LFEg-LFBg // address_range - .byte 0 // augmentation size 0 - // instructions: - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFIg0-LFBg - .byte 0x0E // DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 // DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFIg1-LCFIg0 - .byte 0x0D // DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEg: -_privateSnippetExecutorVoid.eh: -LSFDEv: - .set L$set$v1,LEFDEv-LASFDEv - .long L$set$v1 // length -LASFDEv: - .long LASFDEv-EH_frame1 // CIE_pointer - .long LFBv-. // initial_location - .long LFEv-LFBv // address_range - .byte 0 // augmentation size 0 - // instructions: - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFIv0-LFBv - .byte 0x0E // DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 // DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFIv1-LCFIv0 - .byte 0x0D // DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEv: -_privateSnippetExecutorHyper.eh: -LSFDEh: - .set L$set$h1,LEFDEh-LASFDEh - .long L$set$h1 // length -LASFDEh: - .long LASFDEh-EH_frame1 // CIE_pointer - .long LFBh-. // initial_location - .long LFEh-LFBh // address_range - .byte 0 // augmentation size 0 - // instructions: - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFIh0-LFBh - .byte 0x0E // DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 // DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFIh1-LCFIh0 - .byte 0x0D // DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEh: -_privateSnippetExecutorFloat.eh: -LSFDEf: - .set L$set$f1,LEFDEf-LASFDEf - .long L$set$f1 // length -LASFDEf: - .long LASFDEf-EH_frame1 // CIE_pointer - .long LFBf-. // initial_location - .long LFEf-LFBf // address_range - .byte 0 // augmentation size 0 - // instructions: - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFIf0-LFBf - .byte 0x0E // DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 // DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFIf1-LCFIf0 - .byte 0x0D // DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEf: -_privateSnippetExecutorDouble.eh: -LSFDEd: - .set L$set$d1,LEFDEd-LASFDEd - .long L$set$d1 // length -LASFDEd: - .long LASFDEd-EH_frame1 // CIE_pointer - .long LFBd-. // initial_location - .long LFEd-LFBd // address_range - .byte 0 // augmentation size 0 - // instructions: - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFId0-LFBd - .byte 0x0E // DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 // DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFId1-LCFId0 - .byte 0x0D // DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEd: -_privateSnippetExecutorClass.eh: -LSFDEc: - .set L$set$c1,LEFDEc-LASFDEc - .long L$set$c1 // length -LASFDEc: - .long LASFDEc-EH_frame1 // CIE_pointer - .long LFBc-. // initial_location - .long LFEc-LFBc // address_range - .byte 0 // augmentation size 0 - // instructions: - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFIc0-LFBc - .byte 0x0E // DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 // DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 // DW_CFA_advance_loc4 - .long LCFIc1-LCFIc0 - .byte 0x0D // DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEc: - .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 -L_cpp_vtable_call$stub: - .indirect_symbol _cpp_vtable_call - hlt ; hlt ; hlt ; hlt ; hlt - .section __IMPORT,__pointers,non_lazy_symbol_pointers -L___gxx_personality_v0$non_lazy_ptr: - .indirect_symbol ___gxx_personality_v0 - .long 0 - .constructor - .destructor - .align 1 -#else - - .text - .align 2 -.globl privateSnippetExecutor -_privateSnippetExecutor: -.LFB3: - pushq %rbp -.LCFI0: - movq %rsp, %rbp -.LCFI1: - subq $160, %rsp -.LCFI2: - movq %r10, -152(%rbp) # Save (nVtableOffset << 32) + nFunctionIndex - - movq %rdi, -112(%rbp) # Save GP registers - movq %rsi, -104(%rbp) - movq %rdx, -96(%rbp) - movq %rcx, -88(%rbp) - movq %r8 , -80(%rbp) - movq %r9 , -72(%rbp) - - movsd %xmm0, -64(%rbp) # Save FP registers - movsd %xmm1, -56(%rbp) - movsd %xmm2, -48(%rbp) - movsd %xmm3, -40(%rbp) - movsd %xmm4, -32(%rbp) - movsd %xmm5, -24(%rbp) - movsd %xmm6, -16(%rbp) - movsd %xmm7, -8(%rbp) - - leaq -144(%rbp), %r9 # 6th param: sal_uInt64 * pRegisterReturn - leaq 16(%rbp), %r8 # 5rd param: void ** ovrflw - leaq -64(%rbp), %rcx # 4th param: void ** fpreg - leaq -112(%rbp), %rdx # 3rd param: void ** gpreg - movl -148(%rbp), %esi # 2nd param: sal_int32 nVtableOffset - movl -152(%rbp), %edi # 1st param: sal_int32 nFunctionIndex - - call cpp_vtable_call - - cmp $10, %rax # typelib_TypeClass_FLOAT - je .Lfloat - cmp $11, %rax # typelib_TypeClass_DOUBLE - je .Lfloat - - movq -144(%rbp), %rax # Return value (int case) - movq -136(%rbp), %rdx # Return value (int case) - movq -144(%rbp), %xmm0 # Return value (int case) - movq -136(%rbp), %xmm1 # Return value (int case) - jmp .Lfinish -.Lfloat: - movlpd -144(%rbp), %xmm0 # Return value (float/double case) - -.Lfinish: - leave - ret -.LFE3: - # see http://refspecs.linuxfoundation.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html - # for details of the .eh_frame, the "Common Information Entry" and "Frame Description Entry" formats - # and http://mentorembedded.github.io/cxx-abi/exceptions.pdf for more info -.Lframe1: - .long .LECIE1-.LSCIE1 -.LSCIE1: - .long 0x0 - .byte 0x1 - .string "zR" - .uleb128 0x1 - .sleb128 -8 - .byte 0x10 - .uleb128 0x1 - .byte 0x1b - .byte 0xc - .uleb128 0x7 - .uleb128 0x8 - .byte 0x90 - .uleb128 0x1 - .align 8 -.LECIE1: -.LSFDE1: - .long .LEFDE1-.LASFDE1 -.LASFDE1: - .long .LASFDE1-.Lframe1 - .long .LFB3-. - .long .LFE3-.LFB3 - .uleb128 0x0 - .byte 0x4 - .long .LCFI0-.LFB3 - .byte 0xe - .uleb128 0x10 - .byte 0x86 - .uleb128 0x2 - .byte 0x4 - .long .LCFI1-.LCFI0 - .byte 0xd - .uleb128 0x6 - .align 8 -.LEFDE1: -#endif - // vim:set shiftwidth=4 softtabstop=4 expandtab: commit a8fc81d478f4dcf8600ed9a2b4e0f7adff4a17ee Author: Mike Kaganski <mike.kagan...@collabora.com> Date: Sun Mar 11 07:04:23 2018 +0300 tdf#44774: Parent style's msApiName could yet be empty; use GetApiName() Change-Id: Ie0e218ea83d34aa7ee22fea1f32b2851a942544f Reviewed-on: https://gerrit.libreoffice.org/51069 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/sd/qa/unit/misc-tests.cxx b/sd/qa/unit/misc-tests.cxx index 3d3c2c9064bb..c22b35b88435 100644 --- a/sd/qa/unit/misc-tests.cxx +++ b/sd/qa/unit/misc-tests.cxx @@ -27,6 +27,7 @@ #include <com/sun/star/drawing/XDrawPage.hpp> #include <com/sun/star/drawing/XShapes.hpp> #include <com/sun/star/container/XIndexAccess.hpp> +#include <com/sun/star/frame/XLoadable.hpp> #include <vcl/scheduler.hxx> #include <osl/thread.hxx> @@ -60,6 +61,7 @@ public: void testTdf99396(); void testTdf99396TextEdit(); void testFillGradient(); + void testTdf44774(); CPPUNIT_TEST_SUITE(SdMiscTest); CPPUNIT_TEST(testTdf96206); @@ -67,6 +69,7 @@ public: CPPUNIT_TEST(testTdf99396); CPPUNIT_TEST(testTdf99396TextEdit); CPPUNIT_TEST(testFillGradient); + CPPUNIT_TEST(testTdf44774); CPPUNIT_TEST_SUITE_END(); private: @@ -298,6 +301,33 @@ void SdMiscTest::testFillGradient() CPPUNIT_ASSERT_EQUAL(sal_Int32(Color(0, 255, 0)),aGradient2.EndColor); } +void SdMiscTest::testTdf44774() +{ + sd::DrawDocShellRef xDocShRef = new sd::DrawDocShell(SfxObjectCreateMode::EMBEDDED, false, + DocumentType::Draw); + const uno::Reference<frame::XLoadable> xLoadable(xDocShRef->GetModel(), uno::UNO_QUERY_THROW); + xLoadable->initNew(); + SfxStyleSheetBasePool* pSSPool = xDocShRef->GetStyleSheetPool(); + + // Create a new style with an empty name, like what happens in UI when creating a new style + SfxStyleSheetBase& rStyleA = pSSPool->Make("", SfxStyleFamily::Para, SFXSTYLEBIT_USERDEF); + // Assign a new name, which does not yet set its ApiName + rStyleA.SetName("StyleA"); + // Create another style + SfxStyleSheetBase& rStyleB = pSSPool->Make("StyleB", SfxStyleFamily::Para, SFXSTYLEBIT_USERDEF); + // ... and set its parent to the first one + rStyleB.SetParent("StyleA"); + + // Now save the file and reload + xDocShRef = saveAndReload(xDocShRef.get(), ODG); + pSSPool = xDocShRef->GetStyleSheetPool(); + + SfxStyleSheetBase* pStyle = pSSPool->Find("StyleB", SfxStyleFamily::Para); + CPPUNIT_ASSERT(pStyle); + // The parent set in StyleB used to reset, because parent style's msApiName was empty + CPPUNIT_ASSERT_EQUAL(OUString("StyleA"), pStyle->GetParent()); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdMiscTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sd/source/core/stlsheet.cxx b/sd/source/core/stlsheet.cxx index 042512f05b8e..a304bd36f65d 100644 --- a/sd/source/core/stlsheet.cxx +++ b/sd/source/core/stlsheet.cxx @@ -873,7 +873,7 @@ OUString SAL_CALL SdStyleSheet::getParentStyle() { SdStyleSheet* pParentStyle = static_cast< SdStyleSheet* >( mxPool->Find( GetParent(), nFamily ) ); if( pParentStyle ) - return pParentStyle->msApiName; + return pParentStyle->GetApiName(); } return OUString(); } commit 98eb91a1b99ce9c5ff43b49a9a7789ee8b1c8cc5 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> Date: Thu Mar 8 15:45:48 2018 +0900 remove whitespace Change-Id: I2ae5c344da3f523072754340e78288fbb29c6348 Reviewed-on: https://gerrit.libreoffice.org/51067 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/svtools/source/graphic/graphic.cxx b/svtools/source/graphic/graphic.cxx index 4c39a09f2203..c2969d3cdf67 100644 --- a/svtools/source/graphic/graphic.cxx +++ b/svtools/source/graphic/graphic.cxx @@ -47,7 +47,6 @@ void Graphic::init( const ::Graphic& rGraphic ) unographic::GraphicDescriptor::init(maGraphic); } - uno::Any SAL_CALL Graphic::queryAggregation( const uno::Type& rType ) { uno::Any aAny; @@ -63,7 +62,6 @@ uno::Any SAL_CALL Graphic::queryAggregation( const uno::Type& rType ) return aAny; } - uno::Any SAL_CALL Graphic::queryInterface( const uno::Type & rType ) { css::uno::Any aReturn = ::unographic::GraphicDescriptor::queryInterface( rType ); @@ -72,14 +70,12 @@ uno::Any SAL_CALL Graphic::queryInterface( const uno::Type & rType ) return aReturn; } - void SAL_CALL Graphic::acquire() throw() { unographic::GraphicDescriptor::acquire(); } - void SAL_CALL Graphic::release() throw() { unographic::GraphicDescriptor::release(); @@ -121,13 +117,11 @@ uno::Sequence< uno::Type > SAL_CALL Graphic::getTypes() return aRet; } - uno::Sequence< sal_Int8 > SAL_CALL Graphic::getImplementationId() { return css::uno::Sequence<sal_Int8>(); } - sal_Int8 SAL_CALL Graphic::getType() { sal_Int8 cRet = graphic::GraphicType::EMPTY; @@ -146,7 +140,6 @@ sal_Int8 SAL_CALL Graphic::getType() return cRet; } - // XBitmap awt::Size SAL_CALL Graphic::getSize() @@ -161,7 +154,6 @@ awt::Size SAL_CALL Graphic::getSize() return awt::Size(aVclSize.Width(), aVclSize.Height()); } - uno::Sequence<sal_Int8> SAL_CALL Graphic::getDIB() { SolarMutexGuard aGuard; @@ -179,7 +171,6 @@ uno::Sequence<sal_Int8> SAL_CALL Graphic::getDIB() } } - uno::Sequence<sal_Int8> SAL_CALL Graphic::getMaskDIB() { SolarMutexGuard aGuard; @@ -197,7 +188,6 @@ uno::Sequence<sal_Int8> SAL_CALL Graphic::getMaskDIB() } } - const ::Graphic* Graphic::getImplementation( const uno::Reference< uno::XInterface >& rxIFace ) throw() { @@ -205,7 +195,6 @@ const ::Graphic* Graphic::getImplementation( const uno::Reference< uno::XInterfa return( xTunnel.is() ? reinterpret_cast< ::Graphic* >( xTunnel->getSomething( ::Graphic::getUnoTunnelId() ) ) : nullptr ); } - sal_Int64 SAL_CALL Graphic::getSomething( const uno::Sequence< sal_Int8 >& rId ) { return( ( rId.getLength() == 16 && 0 == memcmp( ::Graphic::getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) ) ? diff --git a/svtools/source/graphic/graphic.hxx b/svtools/source/graphic/graphic.hxx index 285cb5f10051..3f550fb733e1 100644 --- a/svtools/source/graphic/graphic.hxx +++ b/svtools/source/graphic/graphic.hxx @@ -39,7 +39,6 @@ class Graphic : public css::graphic::XGraphic, public ::unographic::GraphicTransformer { public: - Graphic(); virtual ~Graphic() throw() override; commit 8874c4ae7696328556a8f5c0c475b2cac6aa533b Author: andreas kainz <kain...@gmail.com> Date: Sun Mar 11 02:22:08 2018 +0100 Colibre Icons: add res/sx 16px app icons Change-Id: I3046da08c64881f81efcebd9aea4d8e34e19a647 Reviewed-on: https://gerrit.libreoffice.org/51066 Reviewed-by: andreas_kainz <kain...@gmail.com> Tested-by: andreas_kainz <kain...@gmail.com> diff --git a/icon-themes/colibre/res/sx03242.png b/icon-themes/colibre/res/sx03242.png new file mode 100644 index 000000000000..541c89e3a838 Binary files /dev/null and b/icon-themes/colibre/res/sx03242.png differ diff --git a/icon-themes/colibre/res/sx03245.png b/icon-themes/colibre/res/sx03245.png new file mode 100644 index 000000000000..4839ed647792 Binary files /dev/null and b/icon-themes/colibre/res/sx03245.png differ diff --git a/icon-themes/colibre/res/sx03246.png b/icon-themes/colibre/res/sx03246.png new file mode 100644 index 000000000000..8f7adcce588c ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits