sc/sdi/graphsh.sdi | 6 + sc/source/ui/drawfunc/graphsh.cxx | 56 ++++++++++++++++- sc/source/ui/drawfunc/objdraw.src | 1 sc/source/ui/inc/graphsh.hxx | 3 sd/sdi/_drvwsh.sdi | 5 + sd/source/ui/app/popup2_tmpl.src | 1 sd/source/ui/slidesorter/cache/SlsBitmapFactory.cxx | 14 +--- sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx | 4 - sd/source/ui/slidesorter/view/SlideSorterView.cxx | 2 sd/source/ui/view/drviews2.cxx | 47 ++++++++++++++ 10 files changed, 126 insertions(+), 13 deletions(-)
New commits: commit 6f221adc31e8323284720e7ccfe4818430a9bd66 Author: Tomaž Vajngerl <[email protected]> Date: Thu Oct 4 07:40:24 2012 +0200 Improve quality of page previews in Impress/Draw with supersampling Change-Id: I9c5b28fc32b73b2147162f74919b21d99401b501 diff --git a/sd/source/ui/slidesorter/cache/SlsBitmapFactory.cxx b/sd/source/ui/slidesorter/cache/SlsBitmapFactory.cxx index 2d901ef..6b31439 100644 --- a/sd/source/ui/slidesorter/cache/SlsBitmapFactory.cxx +++ b/sd/source/ui/slidesorter/cache/SlsBitmapFactory.cxx @@ -41,10 +41,6 @@ #include <vcl/bmpacc.hxx> #include <vcl/pngwrite.hxx> -const static sal_Int32 gnSuperSampleFactor (2); -const static bool gbAllowSuperSampling (false); - - namespace sd { namespace slidesorter { namespace view { class SlideSorterView; class PageObjectViewObjectContact; @@ -73,10 +69,12 @@ Bitmap BitmapFactory::CreateBitmap ( const bool bDoSuperSampling) { Size aSize (rPixelSize); - if (bDoSuperSampling && gbAllowSuperSampling) + if (bDoSuperSampling) { - aSize.Width() *= gnSuperSampleFactor; - aSize.Height() *= gnSuperSampleFactor; + // Supersampling factor + int aSuperSamplingFactor = 2; + aSize.Width() *= aSuperSamplingFactor; + aSize.Height() *= aSuperSamplingFactor; } Bitmap aPreview (maRenderer.RenderPage ( @@ -85,7 +83,7 @@ Bitmap BitmapFactory::CreateBitmap ( String(), true, false).GetBitmapEx().GetBitmap()); - if (bDoSuperSampling && gbAllowSuperSampling) + if (bDoSuperSampling) { aPreview.Scale(rPixelSize, BMP_SCALE_BEST); } diff --git a/sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx b/sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx index db3f12d..27c263d 100644 --- a/sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx +++ b/sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx @@ -147,7 +147,7 @@ Bitmap GenericPageCache::GetPreviewBitmap ( // i.e. the bitmap is not empty. if (bResize && aBitmapSize.Width()>0 && aBitmapSize.Height()>0) { - aPreview.Scale(maPreviewSize, BMP_SCALE_FAST); + aPreview.Scale(maPreviewSize); } bMayBeUpToDate = false; } @@ -184,7 +184,7 @@ Bitmap GenericPageCache::GetMarkedPreviewBitmap ( // i.e. the bitmap is not empty. if (aBitmapSize.Width()>0 && aBitmapSize.Height()>0) { - aMarkedPreview.Scale(maPreviewSize, BMP_SCALE_FAST); + aMarkedPreview.Scale(maPreviewSize); } } diff --git a/sd/source/ui/slidesorter/view/SlideSorterView.cxx b/sd/source/ui/slidesorter/view/SlideSorterView.cxx index 23516a9..66c3cdf 100644 --- a/sd/source/ui/slidesorter/view/SlideSorterView.cxx +++ b/sd/source/ui/slidesorter/view/SlideSorterView.cxx @@ -819,7 +819,7 @@ void SlideSorterView::ConfigurationChanged ( mpPreviewCache.reset( new cache::PageCache( mpLayouter->GetPageObjectSize(), - false, + true, cache::SharedCacheContext(new ViewCacheContext(mrSlideSorter)))); } commit 1e6985da53b91fd0f2a3d44cd30dd3a73dcd6919 Author: Tomaž Vajngerl <[email protected]> Date: Wed Oct 3 22:27:41 2012 +0200 Add "Compress Graphic" menu entry for bitmaps to Calc Change-Id: I591c544f600361b5bc9c59b5627f6cdd9f9b09db diff --git a/sc/sdi/graphsh.sdi b/sc/sdi/graphsh.sdi index 6eb051b..6c9ae7a 100644 --- a/sc/sdi/graphsh.sdi +++ b/sc/sdi/graphsh.sdi @@ -140,6 +140,12 @@ interface GraphSelection ExecMethod = ExecuteExternalEdit; StateMethod = GetExternalEditState; ] + + SID_COMPRESS_GRAPHIC + [ + ExecMethod = ExecuteCompressGraphic; + StateMethod = GetCompressGraphicState; + ] } // =========================================================================== diff --git a/sc/source/ui/drawfunc/graphsh.cxx b/sc/source/ui/drawfunc/graphsh.cxx index f2258e8..8ecbd7d 100644 --- a/sc/source/ui/drawfunc/graphsh.cxx +++ b/sc/source/ui/drawfunc/graphsh.cxx @@ -33,6 +33,8 @@ #include <svx/svdograf.hxx> #include <svx/grfflt.hxx> #include <svx/grafctrl.hxx> +#include <svx/compressgraphicdialog.hxx> +#include <vcl/msgbox.hxx> #include "graphsh.hxx" #include "sc.hrc" @@ -48,11 +50,11 @@ class ScExternalToolEdit : public ExternalToolEdit { - ScDrawView* m_pView; + FmFormView* m_pView; SdrObject* m_pObj; public: - ScExternalToolEdit ( ScDrawView* pView, SdrObject* pObj ) : + ScExternalToolEdit ( FmFormView* pView, SdrObject* pObj ) : m_pView (pView), m_pObj (pObj) {} @@ -204,4 +206,54 @@ void ScGraphicShell::ExecuteExternalEdit( SfxRequest& ) Invalidate(); } + +void ScGraphicShell::GetCompressGraphicState( SfxItemSet& rSet ) +{ + ScDrawView* pView = GetViewData()->GetScDrawView(); + const SdrMarkList& rMarkList = pView->GetMarkedObjectList(); + bool bEnable = false; + if( rMarkList.GetMarkCount() == 1 ) + { + SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj(); + + if( pObj && pObj->ISA( SdrGrafObj ) && ( ( (SdrGrafObj*) pObj )->GetGraphicType() == GRAPHIC_BITMAP ) ) + bEnable = true; + } + + if( !bEnable ) + rSet.DisableItem( SID_COMPRESS_GRAPHIC ); +} + +void ScGraphicShell::ExecuteCompressGraphic( SfxRequest& ) +{ + ScDrawView* pView = GetViewData()->GetScDrawView(); + const SdrMarkList& rMarkList = pView->GetMarkedObjectList(); + + if( rMarkList.GetMarkCount() == 1 ) + { + SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj(); + + if( pObj && pObj->ISA( SdrGrafObj ) && ( (SdrGrafObj*) pObj )->GetGraphicType() == GRAPHIC_BITMAP ) + { + GraphicObject aGraphicObject( ( (SdrGrafObj*) pObj )->GetGraphicObject() ); + CompressGraphicsDialog dialog( GetViewData()->GetDialogParent(), aGraphicObject.GetGraphic(), pObj->GetLogicRect().GetSize(), GetViewData()->GetBindings() ); + if ( dialog.Execute() == RET_OK ) + { + SdrGrafObj* pNewObject = (SdrGrafObj*) pObj->Clone(); + const Graphic aNewGraphic = dialog.GetCompressedGraphic(); + SdrPageView* pPageView = pView->GetSdrPageView(); + pNewObject->SetEmptyPresObj( sal_False ); + pNewObject->SetGraphic( aNewGraphic ); + String aUndoString( pView->GetDescriptionOfMarkedObjects() ); + aUndoString += (sal_Unicode) ' '; + aUndoString += String( "Compress" ); + pView->BegUndo( aUndoString ); + pView->ReplaceObjectAtView( pObj, *pPageView, pNewObject ); + pView->EndUndo(); + } + } + } + + Invalidate(); +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/drawfunc/objdraw.src b/sc/source/ui/drawfunc/objdraw.src index 02fc435..a2ed29e 100644 --- a/sc/source/ui/drawfunc/objdraw.src +++ b/sc/source/ui/drawfunc/objdraw.src @@ -527,6 +527,7 @@ Menu RID_POPUP_GRAPHIC MN_EDITLNK MN_DELLNK MenuItem { ITEM_OPEN_HYPERLINK }; + MenuItem { ITEM_COMPRESS_GRAPHIC }; MenuItem { ITEM_EXTERNAL_EDIT }; }; }; diff --git a/sc/source/ui/inc/graphsh.hxx b/sc/source/ui/inc/graphsh.hxx index 3c700c7..31d2d35 100644 --- a/sc/source/ui/inc/graphsh.hxx +++ b/sc/source/ui/inc/graphsh.hxx @@ -47,6 +47,9 @@ public: void ExecuteExternalEdit(SfxRequest& rReq); void GetExternalEditState(SfxItemSet &rSet); + + void ExecuteCompressGraphic(SfxRequest& rReq); + void GetCompressGraphicState(SfxItemSet &rSet); }; #endif commit 7895ebdab0b0ed7d2a9b361d6d5ab02b0e9361d6 Author: Tomaž Vajngerl <[email protected]> Date: Wed Oct 3 21:37:14 2012 +0200 Add "External Edit" menu function for bitmaps to Impress and Draw Change-Id: I77f2c03d9e4aadebe2468c13f0a703eb389155d7 diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi index 4b09d0c..cc811d5 100644 --- a/sd/sdi/_drvwsh.sdi +++ b/sd/sdi/_drvwsh.sdi @@ -80,6 +80,11 @@ interface DrawView ExecMethod = FuTemporary ; StateMethod = GetMenuState ; ] + SID_EXTERNAL_EDIT + [ + ExecMethod = FuTemporary ; + StateMethod = GetMenuState ; + ] SID_CUT // ole : no, status : ? [ ExecMethod = FuSupport ; diff --git a/sd/source/ui/app/popup2_tmpl.src b/sd/source/ui/app/popup2_tmpl.src index 6762879..4520e60 100644 --- a/sd/source/ui/app/popup2_tmpl.src +++ b/sd/source/ui/app/popup2_tmpl.src @@ -660,6 +660,7 @@ SEPARATOR MenuItem { ITEM_SAVE_GRAPHIC }; MenuItem { ITEM_COMPRESS_GRAPHIC }; + MenuItem { ITEM_EXTERNAL_EDIT }; }; }; diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx index 75ff0f1..53e3a76 100644 --- a/sd/source/ui/view/drviews2.cxx +++ b/sd/source/ui/view/drviews2.cxx @@ -49,6 +49,7 @@ #include <svx/xlineit0.hxx> #include <svx/graphichelper.hxx> #include <svx/compressgraphicdialog.hxx> +#include <svx/extedit.hxx> #include <svx/svdoutl.hxx> #include <svx/xlnwtit.hxx> #include <svx/svdoattr.hxx> @@ -93,6 +94,34 @@ using namespace ::com::sun::star::uno; namespace sd { +class SdExternalToolEdit : public ExternalToolEdit +{ + FmFormView* m_pView; + SdrObject* m_pObj; + +public: + SdExternalToolEdit ( FmFormView* pView, SdrObject* pObj ) : + m_pView (pView), + m_pObj (pObj) + {} + + virtual void Update( Graphic& aGraphic ) + { + SdrPageView* pPageView = m_pView->GetSdrPageView(); + if( pPageView ) + { + SdrGrafObj* pNewObj = (SdrGrafObj*) m_pObj->Clone(); + String aStr( m_pView->GetDescriptionOfMarkedObjects() ); + aStr.Append( sal_Unicode(' ') ); + aStr.Append( String( "External Edit" ) ); + m_pView->BegUndo( aStr ); + pNewObj->SetGraphicObject( aGraphic ); + m_pView->ReplaceObjectAtView( m_pObj, *pPageView, pNewObj ); + m_pView->EndUndo(); + } + } +}; + /************************************************************************* |* |* SfxRequests fuer temporaere Funktionen @@ -950,6 +979,24 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) } break; + case SID_EXTERNAL_EDIT: + { + const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList(); + if( rMarkList.GetMarkCount() == 1 ) + { + SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj(); + if( pObj && pObj->ISA( SdrGrafObj ) && ( (SdrGrafObj*) pObj )->GetGraphicType() == GRAPHIC_BITMAP ) + { + GraphicObject aGraphicObject( ( (SdrGrafObj*) pObj )->GetGraphicObject() ); + SdExternalToolEdit* aExternalToolEdit = new SdExternalToolEdit( mpDrawView, pObj ); + aExternalToolEdit->Edit( &aGraphicObject ); + } + } + Cancel(); + rReq.Ignore(); + } + break; + case SID_COMPRESS_GRAPHIC: { const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
