Kaydet (Commit) f4ba4841 authored tarafından Tamas Bunth's avatar Tamas Bunth Kaydeden (comit) Tamás Bunth

ooxml import: supprt cropping to shape

Change-Id: I7bdc959921ecb0cbf19037a78b63eaeb8fc52814
Reviewed-on: https://gerrit.libreoffice.org/72206
Tested-by: Jenkins
Reviewed-by: 's avatarTamás Bunth <btomi96@gmail.com>
üst 8401a263
...@@ -40,12 +40,13 @@ struct GraphicProperties ...@@ -40,12 +40,13 @@ struct GraphicProperties
{ {
BlipFillProperties maBlipProps; ///< Properties for the graphic. BlipFillProperties maBlipProps; ///< Properties for the graphic.
OUString m_sMediaPackageURL; ///< Audio/Video URL. OUString m_sMediaPackageURL; ///< Audio/Video URL.
bool mbIsCustomShape = false;
css::uno::Reference<css::io::XInputStream> m_xMediaStream; ///< Audio/Video input stream. css::uno::Reference<css::io::XInputStream> m_xMediaStream; ///< Audio/Video input stream.
/** Writes the properties to the passed property map. */ /** Writes the properties to the passed property map. */
void pushToPropMap( void pushToPropMap(
PropertyMap& rPropMap, PropertyMap& rPropMap,
const GraphicHelper& rGraphicHelper ) const; const GraphicHelper& rGraphicHelper) const;
}; };
} // namespace drawingml } // namespace drawingml
......
...@@ -739,7 +739,7 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap, ...@@ -739,7 +739,7 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
} }
} }
void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelper& rGraphicHelper ) const void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelper& rGraphicHelper) const
{ {
sal_Int16 nBrightness = getLimitedValue< sal_Int16, sal_Int32 >( maBlipProps.moBrightness.get( 0 ) / PER_PERCENT, -100, 100 ); sal_Int16 nBrightness = getLimitedValue< sal_Int16, sal_Int32 >( maBlipProps.moBrightness.get( 0 ) / PER_PERCENT, -100, 100 );
sal_Int16 nContrast = getLimitedValue< sal_Int16, sal_Int32 >( maBlipProps.moContrast.get( 0 ) / PER_PERCENT, -100, 100 ); sal_Int16 nContrast = getLimitedValue< sal_Int16, sal_Int32 >( maBlipProps.moContrast.get( 0 ) / PER_PERCENT, -100, 100 );
...@@ -770,7 +770,15 @@ void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelpe ...@@ -770,7 +770,15 @@ void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelpe
nBrightness = 0; nBrightness = 0;
nContrast = 0; nContrast = 0;
} }
rPropMap.setProperty(PROP_Graphic, xGraphic); if(mbIsCustomShape)
{
// it is a cropped graphic.
rPropMap.setProperty(PROP_FillStyle, FillStyle_BITMAP);
rPropMap.setProperty(PROP_FillBitmapMode, BitmapMode_STRETCH);
rPropMap.setProperty(PROP_FillBitmap, xGraphic);
}
else
rPropMap.setProperty(PROP_Graphic, xGraphic);
// cropping // cropping
if ( maBlipProps.moClipRect.has() ) if ( maBlipProps.moClipRect.has() )
......
...@@ -658,8 +658,18 @@ Reference< XShape > const & Shape::createAndInsert( ...@@ -658,8 +658,18 @@ Reference< XShape > const & Shape::createAndInsert(
{ {
aServiceName = finalizeServiceName( rFilterBase, rServiceName, aShapeRectHmm ); aServiceName = finalizeServiceName( rFilterBase, rServiceName, aShapeRectHmm );
} }
// Use custom shape instead of GraphicObjectShape if the image is cropped to
// shape. Except rectangle, which does not require further cropping
bool bIsCroppedGraphic = (aServiceName == "com.sun.star.drawing.GraphicObjectShape" && mpCustomShapePropertiesPtr->getShapePresetType() >= 0
&& mpCustomShapePropertiesPtr->getShapePresetType() != XML_Rect && mpCustomShapePropertiesPtr->getShapePresetType() != XML_rect);
bool bIsCustomShape = ( aServiceName == "com.sun.star.drawing.CustomShape" || bool bIsCustomShape = ( aServiceName == "com.sun.star.drawing.CustomShape" ||
aServiceName == "com.sun.star.drawing.ConnectorShape" ); aServiceName == "com.sun.star.drawing.ConnectorShape" ||
bIsCroppedGraphic);
if(bIsCroppedGraphic)
{
aServiceName = "com.sun.star.drawing.CustomShape";
mpGraphicPropertiesPtr->mbIsCustomShape = true;
}
bool bUseRotationTransform = ( !mbWps || bool bUseRotationTransform = ( !mbWps ||
aServiceName == "com.sun.star.drawing.LineShape" || aServiceName == "com.sun.star.drawing.LineShape" ||
aServiceName == "com.sun.star.drawing.GroupShape" || aServiceName == "com.sun.star.drawing.GroupShape" ||
...@@ -971,13 +981,14 @@ Reference< XShape > const & Shape::createAndInsert( ...@@ -971,13 +981,14 @@ Reference< XShape > const & Shape::createAndInsert(
// applying properties // applying properties
aShapeProps.assignUsed( getShapeProperties() ); aShapeProps.assignUsed( getShapeProperties() );
aShapeProps.assignUsed( maDefaultShapeProperties ); aShapeProps.assignUsed( maDefaultShapeProperties );
if ( bIsEmbMedia || aServiceName == "com.sun.star.drawing.GraphicObjectShape" || aServiceName == "com.sun.star.drawing.OLE2Shape" ) if ( bIsEmbMedia || aServiceName == "com.sun.star.drawing.GraphicObjectShape" || aServiceName == "com.sun.star.drawing.OLE2Shape" || bIsCustomShape )
mpGraphicPropertiesPtr->pushToPropMap( aShapeProps, rGraphicHelper ); mpGraphicPropertiesPtr->pushToPropMap( aShapeProps, rGraphicHelper );
if ( mpTablePropertiesPtr.get() && aServiceName == "com.sun.star.drawing.TableShape" ) if ( mpTablePropertiesPtr.get() && aServiceName == "com.sun.star.drawing.TableShape" )
mpTablePropertiesPtr->pushToPropSet( rFilterBase, xSet, mpMasterTextListStyle ); mpTablePropertiesPtr->pushToPropSet( rFilterBase, xSet, mpMasterTextListStyle );
FillProperties aFillProperties = getActualFillProperties(pTheme, &rShapeOrParentShapeFillProps); FillProperties aFillProperties = getActualFillProperties(pTheme, &rShapeOrParentShapeFillProps);
aFillProperties.pushToPropMap( aShapeProps, rGraphicHelper, mnRotation, nFillPhClr, mbFlipH, mbFlipV ); if(!bIsCroppedGraphic)
aFillProperties.pushToPropMap( aShapeProps, rGraphicHelper, mnRotation, nFillPhClr, mbFlipH, mbFlipV );
LineProperties aLineProperties = getActualLineProperties(pTheme); LineProperties aLineProperties = getActualLineProperties(pTheme);
aLineProperties.pushToPropMap( aShapeProps, rGraphicHelper, nLinePhClr ); aLineProperties.pushToPropMap( aShapeProps, rGraphicHelper, nLinePhClr );
EffectProperties aEffectProperties = getActualEffectProperties(pTheme); EffectProperties aEffectProperties = getActualEffectProperties(pTheme);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment