summaryrefslogtreecommitdiff
path: root/svx/source/dialog/compressgraphicdialog.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/dialog/compressgraphicdialog.cxx')
-rw-r--r--svx/source/dialog/compressgraphicdialog.cxx95
1 files changed, 67 insertions, 28 deletions
diff --git a/svx/source/dialog/compressgraphicdialog.cxx b/svx/source/dialog/compressgraphicdialog.cxx
index 4f86229daecc..92749aab4ccc 100644
--- a/svx/source/dialog/compressgraphicdialog.cxx
+++ b/svx/source/dialog/compressgraphicdialog.cxx
@@ -43,7 +43,21 @@ CompressGraphicsDialog::CompressGraphicsDialog( Window* pParent, SdrGrafObj* pGr
m_pGraphicObj ( pGraphicObj ),
m_aGraphic ( pGraphicObj->GetGraphicObject().GetGraphic() ),
m_aViewSize100mm ( pGraphicObj->GetLogicRect().GetSize() ),
- m_aCropRectangle ( Rectangle() ),
+ m_rBindings ( rBindings ),
+ m_dResolution ( 96.0 )
+{
+ const SdrGrafCropItem& rCrop = (const SdrGrafCropItem&) m_pGraphicObj->GetMergedItem(SDRATTR_GRAFCROP);
+ m_aCropRectangle = Rectangle(rCrop.GetLeft(), rCrop.GetTop(), rCrop.GetRight(), rCrop.GetBottom());
+
+ Initialize();
+}
+
+CompressGraphicsDialog::CompressGraphicsDialog( Window* pParent, Graphic& rGraphic, Size rViewSize100mm, Rectangle& rCropRectangle, SfxBindings& rBindings ) :
+ ModalDialog ( pParent, "CompressGraphicDialog", "svx/ui/compressgraphicdialog.ui" ),
+ m_pGraphicObj ( NULL ),
+ m_aGraphic ( rGraphic ),
+ m_aViewSize100mm ( rViewSize100mm ),
+ m_aCropRectangle ( rCropRectangle ),
m_rBindings ( rBindings ),
m_dResolution ( 96.0 )
{
@@ -184,15 +198,15 @@ sal_uLong CompressGraphicsDialog::GetSelectedInterpolationType()
void CompressGraphicsDialog::Compress(SvStream& aStream)
{
- BitmapEx bitmap = m_aGraphic.GetBitmapEx();
+ BitmapEx aBitmap = m_aGraphic.GetBitmapEx();
if ( m_pReduceResolutionCB->IsChecked() )
{
long nPixelX = (long)( GetViewWidthInch() * m_dResolution );
long nPixelY = (long)( GetViewHeightInch() * m_dResolution );
- bitmap.Scale( Size( nPixelX, nPixelY ), GetSelectedInterpolationType() );
+ aBitmap.Scale( Size( nPixelX, nPixelY ), GetSelectedInterpolationType() );
}
- Graphic aScaledGraphic = Graphic( bitmap );
+ Graphic aScaledGraphic( aBitmap );
GraphicFilter& rFilter = GraphicFilter::GetGraphicFilter();
Sequence< PropertyValue > aFilterData( 3 );
@@ -206,7 +220,7 @@ void CompressGraphicsDialog::Compress(SvStream& aStream)
String aGraphicFormatName = m_pLosslessRB->IsChecked() ? String( "png" ) : String( "jpg" );
sal_uInt16 nFilterFormat = rFilter.GetExportFormatNumberForShortName( aGraphicFormatName );
- rFilter.ExportGraphic( aScaledGraphic, String( "test" ), aStream, nFilterFormat, &aFilterData );
+ rFilter.ExportGraphic( aScaledGraphic, OUString( "none" ), aStream, nFilterFormat, &aFilterData );
}
IMPL_LINK_NOARG( CompressGraphicsDialog, NewWidthModifiedHdl )
@@ -266,7 +280,7 @@ IMPL_LINK_NOARG( CompressGraphicsDialog, CalculateClickHdl )
{
sal_Int32 aSize = 0;
- if ( m_dResolution > 0 )
+ if ( m_dResolution > 0.0 )
{
SvMemoryStream aMemStream;
aMemStream.SetVersion( SOFFICE_FILEFORMAT_CURRENT );
@@ -286,38 +300,63 @@ IMPL_LINK_NOARG( CompressGraphicsDialog, CalculateClickHdl )
return 0L;
}
-SdrGrafObj* CompressGraphicsDialog::GetCompressedSdrGrafObj()
+Rectangle CompressGraphicsDialog::GetScaledCropRectangle()
{
- if ( m_dResolution > 0 )
+ if ( m_pReduceResolutionCB->IsChecked() )
{
- SdrGrafObj* pNewObject = (SdrGrafObj*) m_pGraphicObj->Clone();
-
- if ( m_pReduceResolutionCB->IsChecked() )
- {
- const SdrGrafCropItem& rCrop = (const SdrGrafCropItem&) m_pGraphicObj->GetMergedItem(SDRATTR_GRAFCROP);
- long nPixelX = (long)( GetViewWidthInch() * m_dResolution );
- long nPixelY = (long)( GetViewHeightInch() * m_dResolution );
- Size size = m_aGraphic.GetBitmapEx().GetSizePixel();
- double aScaleX = nPixelX / (double) size.Width();
- double aScaleY = nPixelY / (double) size.Height();
-
- SdrGrafCropItem aNewCrop(
- rCrop.GetLeft() * aScaleX,
- rCrop.GetTop() * aScaleY,
- rCrop.GetRight() * aScaleX,
- rCrop.GetBottom()* aScaleY);
- pNewObject->SetMergedItem(aNewCrop);
- }
+ long nPixelX = (long)( GetViewWidthInch() * m_dResolution );
+ long nPixelY = (long)( GetViewHeightInch() * m_dResolution );
+ Size aSize = m_aGraphic.GetBitmapEx().GetSizePixel();
+ double aScaleX = nPixelX / (double) aSize.Width();
+ double aScaleY = nPixelY / (double) aSize.Height();
+
+ return Rectangle(
+ m_aCropRectangle.Left() * aScaleX,
+ m_aCropRectangle.Top() * aScaleY,
+ m_aCropRectangle.Right() * aScaleX,
+ m_aCropRectangle.Bottom()* aScaleY);
+ }
+ else
+ {
+ return m_aCropRectangle;
+ }
+}
+Graphic CompressGraphicsDialog::GetCompressedGraphic()
+{
+ if ( m_dResolution > 0.0 )
+ {
SvMemoryStream aMemStream;
aMemStream.SetVersion( SOFFICE_FILEFORMAT_CURRENT );
Compress( aMemStream );
aMemStream.Seek( STREAM_SEEK_TO_BEGIN );
Graphic aResultGraphic;
GraphicFilter& rFilter = GraphicFilter::GetGraphicFilter();
- rFilter.ImportGraphic( aResultGraphic, String("import"), aMemStream );
+ rFilter.ImportGraphic( aResultGraphic, OUString("import"), aMemStream );
- pNewObject->SetGraphic( aResultGraphic );
+ return aResultGraphic;
+ }
+ return Graphic();
+}
+
+SdrGrafObj* CompressGraphicsDialog::GetCompressedSdrGrafObj()
+{
+ if ( m_dResolution > 0.0 )
+ {
+ SdrGrafObj* pNewObject = (SdrGrafObj*) m_pGraphicObj->Clone();
+
+ if ( m_pReduceResolutionCB->IsChecked() )
+ {
+ Rectangle aScaledCropedRectangle = GetScaledCropRectangle();
+ SdrGrafCropItem aNewCrop(
+ aScaledCropedRectangle.Left(),
+ aScaledCropedRectangle.Top(),
+ aScaledCropedRectangle.Right(),
+ aScaledCropedRectangle.Bottom());
+
+ pNewObject->SetMergedItem(aNewCrop);
+ }
+ pNewObject->SetGraphic( GetCompressedGraphic() );
return pNewObject;
}