1*2ee96f1cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*2ee96f1cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*2ee96f1cSAndrew Rist * or more contributor license agreements. See the NOTICE file
5*2ee96f1cSAndrew Rist * distributed with this work for additional information
6*2ee96f1cSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*2ee96f1cSAndrew Rist * to you under the Apache License, Version 2.0 (the
8*2ee96f1cSAndrew Rist * "License"); you may not use this file except in compliance
9*2ee96f1cSAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11*2ee96f1cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13*2ee96f1cSAndrew Rist * Unless required by applicable law or agreed to in writing,
14*2ee96f1cSAndrew Rist * software distributed under the License is distributed on an
15*2ee96f1cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2ee96f1cSAndrew Rist * KIND, either express or implied. See the License for the
17*2ee96f1cSAndrew Rist * specific language governing permissions and limitations
18*2ee96f1cSAndrew Rist * under the License.
19cdf0e10cSrcweir *
20*2ee96f1cSAndrew Rist *************************************************************/
21*2ee96f1cSAndrew Rist
22*2ee96f1cSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_cui.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir #include <tools/shl.hxx>
28cdf0e10cSrcweir #include <vcl/msgbox.hxx>
29cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
30cdf0e10cSrcweir #include <sfx2/viewsh.hxx>
31cdf0e10cSrcweir #include <sfx2/objsh.hxx>
32cdf0e10cSrcweir #include <sfx2/request.hxx>
33cdf0e10cSrcweir #include <dialmgr.hxx>
34cdf0e10cSrcweir #include "cuigrfflt.hxx"
35cdf0e10cSrcweir #include "grfflt.hrc"
36cdf0e10cSrcweir #include <cuires.hrc>
37cdf0e10cSrcweir #include <svx/dialogs.hrc> // RID_SVX_GRFFILTER_DLG_...
38cdf0e10cSrcweir
39cdf0e10cSrcweir // --------------------
40cdf0e10cSrcweir // - SvxGraphicFilter -
41cdf0e10cSrcweir // --------------------
42cdf0e10cSrcweir /*
43cdf0e10cSrcweir sal_uLong SvxGraphicFilter::ExecuteGrfFilterSlot( SfxRequest& rReq, GraphicObject& rFilterObject )
44cdf0e10cSrcweir {
45cdf0e10cSrcweir const Graphic& rGraphic = rFilterObject.GetGraphic();
46cdf0e10cSrcweir sal_uLong nRet;
47cdf0e10cSrcweir
48cdf0e10cSrcweir if( rGraphic.GetType() == GRAPHIC_BITMAP )
49cdf0e10cSrcweir {
50cdf0e10cSrcweir SfxViewFrame* pViewFrame = SfxViewFrame::Current();
51cdf0e10cSrcweir SfxObjectShell* pShell = pViewFrame ? pViewFrame->GetObjectShell() : NULL;
52cdf0e10cSrcweir Window* pWindow = ( pViewFrame && pViewFrame->GetViewShell() ) ? pViewFrame->GetViewShell()->GetWindow() : NULL;
53cdf0e10cSrcweir Graphic aGraphic;
54cdf0e10cSrcweir
55cdf0e10cSrcweir switch( rReq.GetSlot() )
56cdf0e10cSrcweir {
57cdf0e10cSrcweir case( SID_GRFFILTER_INVERT ):
58cdf0e10cSrcweir {
59cdf0e10cSrcweir if( pShell )
60cdf0e10cSrcweir pShell->SetWaitCursor( sal_True );
61cdf0e10cSrcweir
62cdf0e10cSrcweir if( rGraphic.IsAnimated() )
63cdf0e10cSrcweir {
64cdf0e10cSrcweir Animation aAnimation( rGraphic.GetAnimation() );
65cdf0e10cSrcweir
66cdf0e10cSrcweir if( aAnimation.Invert() )
67cdf0e10cSrcweir aGraphic = aAnimation;
68cdf0e10cSrcweir }
69cdf0e10cSrcweir else
70cdf0e10cSrcweir {
71cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
72cdf0e10cSrcweir
73cdf0e10cSrcweir if( aBmpEx.Invert() )
74cdf0e10cSrcweir aGraphic = aBmpEx;
75cdf0e10cSrcweir }
76cdf0e10cSrcweir
77cdf0e10cSrcweir if( pShell )
78cdf0e10cSrcweir pShell->SetWaitCursor( sal_False );
79cdf0e10cSrcweir }
80cdf0e10cSrcweir break;
81cdf0e10cSrcweir
82cdf0e10cSrcweir case( SID_GRFFILTER_SMOOTH ):
83cdf0e10cSrcweir {
84cdf0e10cSrcweir if( pShell )
85cdf0e10cSrcweir pShell->SetWaitCursor( sal_True );
86cdf0e10cSrcweir
87cdf0e10cSrcweir if( rGraphic.IsAnimated() )
88cdf0e10cSrcweir {
89cdf0e10cSrcweir Animation aAnimation( rGraphic.GetAnimation() );
90cdf0e10cSrcweir
91cdf0e10cSrcweir if( aAnimation.Filter( BMP_FILTER_SMOOTH ) )
92cdf0e10cSrcweir aGraphic = aAnimation;
93cdf0e10cSrcweir }
94cdf0e10cSrcweir else
95cdf0e10cSrcweir {
96cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
97cdf0e10cSrcweir
98cdf0e10cSrcweir if( aBmpEx.Filter( BMP_FILTER_SMOOTH ) )
99cdf0e10cSrcweir aGraphic = aBmpEx;
100cdf0e10cSrcweir }
101cdf0e10cSrcweir
102cdf0e10cSrcweir if( pShell )
103cdf0e10cSrcweir pShell->SetWaitCursor( sal_False );
104cdf0e10cSrcweir }
105cdf0e10cSrcweir break;
106cdf0e10cSrcweir
107cdf0e10cSrcweir case( SID_GRFFILTER_SHARPEN ):
108cdf0e10cSrcweir {
109cdf0e10cSrcweir if( pShell )
110cdf0e10cSrcweir pShell->SetWaitCursor( sal_True );
111cdf0e10cSrcweir
112cdf0e10cSrcweir if( rGraphic.IsAnimated() )
113cdf0e10cSrcweir {
114cdf0e10cSrcweir Animation aAnimation( rGraphic.GetAnimation() );
115cdf0e10cSrcweir
116cdf0e10cSrcweir if( aAnimation.Filter( BMP_FILTER_SHARPEN ) )
117cdf0e10cSrcweir aGraphic = aAnimation;
118cdf0e10cSrcweir }
119cdf0e10cSrcweir else
120cdf0e10cSrcweir {
121cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
122cdf0e10cSrcweir
123cdf0e10cSrcweir if( aBmpEx.Filter( BMP_FILTER_SHARPEN ) )
124cdf0e10cSrcweir aGraphic = aBmpEx;
125cdf0e10cSrcweir }
126cdf0e10cSrcweir
127cdf0e10cSrcweir if( pShell )
128cdf0e10cSrcweir pShell->SetWaitCursor( sal_False );
129cdf0e10cSrcweir }
130cdf0e10cSrcweir break;
131cdf0e10cSrcweir
132cdf0e10cSrcweir case( SID_GRFFILTER_REMOVENOISE ):
133cdf0e10cSrcweir {
134cdf0e10cSrcweir if( pShell )
135cdf0e10cSrcweir pShell->SetWaitCursor( sal_True );
136cdf0e10cSrcweir
137cdf0e10cSrcweir if( rGraphic.IsAnimated() )
138cdf0e10cSrcweir {
139cdf0e10cSrcweir Animation aAnimation( rGraphic.GetAnimation() );
140cdf0e10cSrcweir
141cdf0e10cSrcweir if( aAnimation.Filter( BMP_FILTER_REMOVENOISE ) )
142cdf0e10cSrcweir aGraphic = aAnimation;
143cdf0e10cSrcweir }
144cdf0e10cSrcweir else
145cdf0e10cSrcweir {
146cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
147cdf0e10cSrcweir
148cdf0e10cSrcweir if( aBmpEx.Filter( BMP_FILTER_REMOVENOISE ) )
149cdf0e10cSrcweir aGraphic = aBmpEx;
150cdf0e10cSrcweir }
151cdf0e10cSrcweir
152cdf0e10cSrcweir if( pShell )
153cdf0e10cSrcweir pShell->SetWaitCursor( sal_False );
154cdf0e10cSrcweir }
155cdf0e10cSrcweir break;
156cdf0e10cSrcweir
157cdf0e10cSrcweir case( SID_GRFFILTER_SOBEL ):
158cdf0e10cSrcweir {
159cdf0e10cSrcweir if( pShell )
160cdf0e10cSrcweir pShell->SetWaitCursor( sal_True );
161cdf0e10cSrcweir
162cdf0e10cSrcweir if( rGraphic.IsAnimated() )
163cdf0e10cSrcweir {
164cdf0e10cSrcweir Animation aAnimation( rGraphic.GetAnimation() );
165cdf0e10cSrcweir
166cdf0e10cSrcweir if( aAnimation.Filter( BMP_FILTER_SOBEL_GREY ) )
167cdf0e10cSrcweir aGraphic = aAnimation;
168cdf0e10cSrcweir }
169cdf0e10cSrcweir else
170cdf0e10cSrcweir {
171cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
172cdf0e10cSrcweir
173cdf0e10cSrcweir if( aBmpEx.Filter( BMP_FILTER_SOBEL_GREY ) )
174cdf0e10cSrcweir aGraphic = aBmpEx;
175cdf0e10cSrcweir }
176cdf0e10cSrcweir
177cdf0e10cSrcweir if( pShell )
178cdf0e10cSrcweir pShell->SetWaitCursor( sal_False );
179cdf0e10cSrcweir }
180cdf0e10cSrcweir break;
181cdf0e10cSrcweir
182cdf0e10cSrcweir case( SID_GRFFILTER_MOSAIC ):
183cdf0e10cSrcweir {
184cdf0e10cSrcweir GraphicFilterMosaic aDlg( pWindow, rGraphic, 4, 4, sal_False );
185cdf0e10cSrcweir
186cdf0e10cSrcweir if( aDlg.Execute() == RET_OK )
187cdf0e10cSrcweir aGraphic = aDlg.GetFilteredGraphic( rGraphic, 1.0, 1.0 );
188cdf0e10cSrcweir }
189cdf0e10cSrcweir break;
190cdf0e10cSrcweir
191cdf0e10cSrcweir case( SID_GRFFILTER_EMBOSS ):
192cdf0e10cSrcweir {
193cdf0e10cSrcweir GraphicFilterEmboss aDlg( pWindow, rGraphic, RP_MM );
194cdf0e10cSrcweir
195cdf0e10cSrcweir if( aDlg.Execute() == RET_OK )
196cdf0e10cSrcweir aGraphic = aDlg.GetFilteredGraphic( rGraphic, 1.0, 1.0 );
197cdf0e10cSrcweir }
198cdf0e10cSrcweir break;
199cdf0e10cSrcweir
200cdf0e10cSrcweir case( SID_GRFFILTER_POSTER ):
201cdf0e10cSrcweir {
202cdf0e10cSrcweir GraphicFilterPoster aDlg( pWindow, rGraphic, 16 );
203cdf0e10cSrcweir
204cdf0e10cSrcweir if( aDlg.Execute() == RET_OK )
205cdf0e10cSrcweir aGraphic = aDlg.GetFilteredGraphic( rGraphic, 1.0, 1.0 );
206cdf0e10cSrcweir }
207cdf0e10cSrcweir break;
208cdf0e10cSrcweir
209cdf0e10cSrcweir case( SID_GRFFILTER_POPART ):
210cdf0e10cSrcweir {
211cdf0e10cSrcweir if( pShell )
212cdf0e10cSrcweir pShell->SetWaitCursor( sal_True );
213cdf0e10cSrcweir
214cdf0e10cSrcweir if( rGraphic.IsAnimated() )
215cdf0e10cSrcweir {
216cdf0e10cSrcweir Animation aAnimation( rGraphic.GetAnimation() );
217cdf0e10cSrcweir
218cdf0e10cSrcweir if( aAnimation.Filter( BMP_FILTER_POPART ) )
219cdf0e10cSrcweir aGraphic = aAnimation;
220cdf0e10cSrcweir }
221cdf0e10cSrcweir else
222cdf0e10cSrcweir {
223cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
224cdf0e10cSrcweir
225cdf0e10cSrcweir if( aBmpEx.Filter( BMP_FILTER_POPART ) )
226cdf0e10cSrcweir aGraphic = aBmpEx;
227cdf0e10cSrcweir }
228cdf0e10cSrcweir
229cdf0e10cSrcweir if( pShell )
230cdf0e10cSrcweir pShell->SetWaitCursor( sal_False );
231cdf0e10cSrcweir }
232cdf0e10cSrcweir break;
233cdf0e10cSrcweir
234cdf0e10cSrcweir case( SID_GRFFILTER_SEPIA ):
235cdf0e10cSrcweir {
236cdf0e10cSrcweir GraphicFilterSepia aDlg( pWindow, rGraphic, 10 );
237cdf0e10cSrcweir
238cdf0e10cSrcweir if( aDlg.Execute() == RET_OK )
239cdf0e10cSrcweir aGraphic = aDlg.GetFilteredGraphic( rGraphic, 1.0, 1.0 );
240cdf0e10cSrcweir }
241cdf0e10cSrcweir break;
242cdf0e10cSrcweir
243cdf0e10cSrcweir case( SID_GRFFILTER_SOLARIZE ):
244cdf0e10cSrcweir {
245cdf0e10cSrcweir GraphicFilterSolarize aDlg( pWindow, rGraphic, 128, sal_False );
246cdf0e10cSrcweir
247cdf0e10cSrcweir if( aDlg.Execute() == RET_OK )
248cdf0e10cSrcweir aGraphic = aDlg.GetFilteredGraphic( rGraphic, 1.0, 1.0 );
249cdf0e10cSrcweir }
250cdf0e10cSrcweir break;
251cdf0e10cSrcweir
252cdf0e10cSrcweir default:
253cdf0e10cSrcweir {
254cdf0e10cSrcweir DBG_ERROR( "SvxGraphicFilter: selected filter slot not yet implemented" );
255cdf0e10cSrcweir nRet = SVX_GRAPHICFILTER_UNSUPPORTED_SLOT;
256cdf0e10cSrcweir }
257cdf0e10cSrcweir break;
258cdf0e10cSrcweir }
259cdf0e10cSrcweir
260cdf0e10cSrcweir if( aGraphic.GetType() != GRAPHIC_NONE )
261cdf0e10cSrcweir {
262cdf0e10cSrcweir rFilterObject.SetGraphic( aGraphic );
263cdf0e10cSrcweir nRet = SVX_GRAPHICFILTER_ERRCODE_NONE;
264cdf0e10cSrcweir }
265cdf0e10cSrcweir }
266cdf0e10cSrcweir else
267cdf0e10cSrcweir nRet = SVX_GRAPHICFILTER_UNSUPPORTED_GRAPHICTYPE;
268cdf0e10cSrcweir
269cdf0e10cSrcweir return nRet;
270cdf0e10cSrcweir }
271cdf0e10cSrcweir
272cdf0e10cSrcweir // -----------------------------------------------------------------------------
273cdf0e10cSrcweir
274cdf0e10cSrcweir void SvxGraphicFilter::DisableGraphicFilterSlots( SfxItemSet& rSet )
275cdf0e10cSrcweir {
276cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER ) )
277cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER );
278cdf0e10cSrcweir
279cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER_INVERT ) )
280cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER_INVERT );
281cdf0e10cSrcweir
282cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER_SMOOTH ) )
283cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER_SMOOTH );
284cdf0e10cSrcweir
285cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER_SHARPEN ) )
286cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER_SHARPEN );
287cdf0e10cSrcweir
288cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER_REMOVENOISE ) )
289cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER_REMOVENOISE );
290cdf0e10cSrcweir
291cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER_SOBEL ) )
292cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER_SOBEL );
293cdf0e10cSrcweir
294cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER_MOSAIC ) )
295cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER_MOSAIC );
296cdf0e10cSrcweir
297cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER_EMBOSS ) )
298cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER_EMBOSS );
299cdf0e10cSrcweir
300cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER_POSTER ) )
301cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER_POSTER );
302cdf0e10cSrcweir
303cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER_POPART ) )
304cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER_POPART );
305cdf0e10cSrcweir
306cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER_SEPIA ) )
307cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER_SEPIA );
308cdf0e10cSrcweir
309cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( SID_GRFFILTER_SOLARIZE ) )
310cdf0e10cSrcweir rSet.DisableItem( SID_GRFFILTER_SOLARIZE );
311cdf0e10cSrcweir };
312cdf0e10cSrcweir */
313cdf0e10cSrcweir // --------------------------------------
314cdf0e10cSrcweir // - GraphicFilterDialog::PreviewWindow -
315cdf0e10cSrcweir // --------------------------------------
316cdf0e10cSrcweir
PreviewWindow(Window * pParent,const ResId & rResId)317cdf0e10cSrcweir GraphicFilterDialog::PreviewWindow::PreviewWindow( Window* pParent, const ResId& rResId ) :
318cdf0e10cSrcweir Control( pParent, rResId )
319cdf0e10cSrcweir {
320cdf0e10cSrcweir }
321cdf0e10cSrcweir
322cdf0e10cSrcweir // -----------------------------------------------------------------------------
323cdf0e10cSrcweir
~PreviewWindow()324cdf0e10cSrcweir GraphicFilterDialog::PreviewWindow::~PreviewWindow()
325cdf0e10cSrcweir {
326cdf0e10cSrcweir }
327cdf0e10cSrcweir
328cdf0e10cSrcweir // -----------------------------------------------------------------------------
329cdf0e10cSrcweir
Paint(const Rectangle & rRect)330cdf0e10cSrcweir void GraphicFilterDialog::PreviewWindow::Paint( const Rectangle& rRect )
331cdf0e10cSrcweir {
332cdf0e10cSrcweir Control::Paint( rRect );
333cdf0e10cSrcweir
334cdf0e10cSrcweir const Size aGrfSize( LogicToPixel( maGraphic.GetPrefSize(), maGraphic.GetPrefMapMode() ) );
335cdf0e10cSrcweir const Size aOutSize( GetOutputSizePixel() );
336cdf0e10cSrcweir const Point aGrfPos( ( aOutSize.Width() - aGrfSize.Width() ) >> 1,
337cdf0e10cSrcweir ( aOutSize.Height() - aGrfSize.Height() ) >> 1 );
338cdf0e10cSrcweir
339cdf0e10cSrcweir if( maGraphic.IsAnimated() )
340cdf0e10cSrcweir maGraphic.StartAnimation( this , aGrfPos, aGrfSize );
341cdf0e10cSrcweir else
342cdf0e10cSrcweir maGraphic.Draw( this, aGrfPos, aGrfSize );
343cdf0e10cSrcweir }
344cdf0e10cSrcweir
345cdf0e10cSrcweir // -----------------------------------------------------------------------------
346cdf0e10cSrcweir
SetGraphic(const Graphic & rGraphic)347cdf0e10cSrcweir void GraphicFilterDialog::PreviewWindow::SetGraphic( const Graphic& rGraphic )
348cdf0e10cSrcweir {
349cdf0e10cSrcweir maGraphic = rGraphic;
350cdf0e10cSrcweir
351cdf0e10cSrcweir if( maGraphic.IsAnimated() || maGraphic.IsTransparent() )
352cdf0e10cSrcweir Invalidate();
353cdf0e10cSrcweir else
354cdf0e10cSrcweir Paint( Rectangle( Point(), GetOutputSizePixel() ) );
355cdf0e10cSrcweir }
356cdf0e10cSrcweir
357cdf0e10cSrcweir // -----------------------
358cdf0e10cSrcweir // - GraphicFilterDialog -
359cdf0e10cSrcweir // -----------------------
360cdf0e10cSrcweir
GraphicFilterDialog(Window * pParent,const ResId & rResId,const Graphic & rGraphic)361cdf0e10cSrcweir GraphicFilterDialog::GraphicFilterDialog( Window* pParent, const ResId& rResId, const Graphic& rGraphic ) :
362cdf0e10cSrcweir ModalDialog ( pParent, rResId ),
363cdf0e10cSrcweir maModifyHdl ( LINK( this, GraphicFilterDialog, ImplModifyHdl ) ),
364cdf0e10cSrcweir mfScaleX ( 0.0 ),
365cdf0e10cSrcweir mfScaleY ( 0.0 ),
366cdf0e10cSrcweir maSizePixel ( LogicToPixel( rGraphic.GetPrefSize(), rGraphic.GetPrefMapMode() ) ),
367cdf0e10cSrcweir maPreview ( this, CUI_RES( CTL_PREVIEW ) ),
368cdf0e10cSrcweir maBtnOK ( this, CUI_RES( BTN_OK ) ),
369cdf0e10cSrcweir maBtnCancel ( this, CUI_RES( BTN_CANCEL ) ),
370cdf0e10cSrcweir maBtnHelp ( this, CUI_RES( BTN_HELP ) ),
371cdf0e10cSrcweir maFlParameter ( this, CUI_RES( FL_PARAMETER ) )
372cdf0e10cSrcweir {
373cdf0e10cSrcweir const Size aPreviewSize( maPreview.GetOutputSizePixel() );
374cdf0e10cSrcweir Size aGrfSize( maSizePixel );
375cdf0e10cSrcweir
376cdf0e10cSrcweir if( rGraphic.GetType() == GRAPHIC_BITMAP &&
377cdf0e10cSrcweir aPreviewSize.Width() && aPreviewSize.Height() &&
378cdf0e10cSrcweir aGrfSize.Width() && aGrfSize.Height() )
379cdf0e10cSrcweir {
380cdf0e10cSrcweir const double fGrfWH = (double) aGrfSize.Width() / aGrfSize.Height();
381cdf0e10cSrcweir const double fPreWH = (double) aPreviewSize.Width() / aPreviewSize.Height();
382cdf0e10cSrcweir
383cdf0e10cSrcweir if( fGrfWH < fPreWH )
384cdf0e10cSrcweir {
385cdf0e10cSrcweir aGrfSize.Width() = (long) ( aPreviewSize.Height() * fGrfWH );
386cdf0e10cSrcweir aGrfSize.Height()= aPreviewSize.Height();
387cdf0e10cSrcweir }
388cdf0e10cSrcweir else
389cdf0e10cSrcweir {
390cdf0e10cSrcweir aGrfSize.Width() = aPreviewSize.Width();
391cdf0e10cSrcweir aGrfSize.Height()= (long) ( aPreviewSize.Width() / fGrfWH);
392cdf0e10cSrcweir }
393cdf0e10cSrcweir
394cdf0e10cSrcweir mfScaleX = (double) aGrfSize.Width() / maSizePixel.Width();
395cdf0e10cSrcweir mfScaleY = (double) aGrfSize.Height() / maSizePixel.Height();
396cdf0e10cSrcweir
397cdf0e10cSrcweir if( !rGraphic.IsAnimated() )
398cdf0e10cSrcweir {
399cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
400cdf0e10cSrcweir
401cdf0e10cSrcweir if( aBmpEx.Scale( aGrfSize, BMP_SCALE_INTERPOLATE ) )
402cdf0e10cSrcweir maGraphic = aBmpEx;
403cdf0e10cSrcweir }
404cdf0e10cSrcweir }
405cdf0e10cSrcweir
406cdf0e10cSrcweir maTimer.SetTimeoutHdl( LINK( this, GraphicFilterDialog, ImplPreviewTimeoutHdl ) );
407cdf0e10cSrcweir maTimer.SetTimeout( 100 );
408cdf0e10cSrcweir ImplModifyHdl( NULL );
409cdf0e10cSrcweir }
410cdf0e10cSrcweir
411cdf0e10cSrcweir // -----------------------------------------------------------------------------
412cdf0e10cSrcweir
~GraphicFilterDialog()413cdf0e10cSrcweir GraphicFilterDialog::~GraphicFilterDialog()
414cdf0e10cSrcweir {
415cdf0e10cSrcweir }
416cdf0e10cSrcweir
417cdf0e10cSrcweir // -----------------------------------------------------------------------------
418cdf0e10cSrcweir
IMPL_LINK(GraphicFilterDialog,ImplPreviewTimeoutHdl,Timer *,EMPTYARG)419cdf0e10cSrcweir IMPL_LINK( GraphicFilterDialog, ImplPreviewTimeoutHdl, Timer*, EMPTYARG )
420cdf0e10cSrcweir {
421cdf0e10cSrcweir maTimer.Stop();
422cdf0e10cSrcweir maPreview.SetGraphic( GetFilteredGraphic( maGraphic, mfScaleX, mfScaleY ) );
423cdf0e10cSrcweir
424cdf0e10cSrcweir return 0;
425cdf0e10cSrcweir }
426cdf0e10cSrcweir
427cdf0e10cSrcweir // -----------------------------------------------------------------------------
428cdf0e10cSrcweir
IMPL_LINK(GraphicFilterDialog,ImplModifyHdl,void *,EMPTYARG)429cdf0e10cSrcweir IMPL_LINK( GraphicFilterDialog, ImplModifyHdl, void*, EMPTYARG )
430cdf0e10cSrcweir {
431cdf0e10cSrcweir if( maGraphic.GetType() == GRAPHIC_BITMAP )
432cdf0e10cSrcweir {
433cdf0e10cSrcweir maTimer.Stop();
434cdf0e10cSrcweir maTimer.Start();
435cdf0e10cSrcweir }
436cdf0e10cSrcweir
437cdf0e10cSrcweir return 0;
438cdf0e10cSrcweir }
439cdf0e10cSrcweir
440cdf0e10cSrcweir // ----------------
441cdf0e10cSrcweir // - FilterMosaic -
442cdf0e10cSrcweir // ----------------
443cdf0e10cSrcweir
GraphicFilterMosaic(Window * pParent,const Graphic & rGraphic,sal_uInt16 nTileWidth,sal_uInt16 nTileHeight,sal_Bool bEnhanceEdges)444cdf0e10cSrcweir GraphicFilterMosaic::GraphicFilterMosaic( Window* pParent, const Graphic& rGraphic,
445cdf0e10cSrcweir sal_uInt16 nTileWidth, sal_uInt16 nTileHeight, sal_Bool bEnhanceEdges ) :
446cdf0e10cSrcweir GraphicFilterDialog( pParent, CUI_RES( RID_SVX_GRFFILTER_DLG_MOSAIC ), rGraphic ),
447cdf0e10cSrcweir maFtWidth ( this, CUI_RES( DLG_FILTERMOSAIC_FT_WIDTH ) ),
448cdf0e10cSrcweir maMtrWidth ( this, CUI_RES( DLG_FILTERMOSAIC_MTR_WIDTH ) ),
449cdf0e10cSrcweir maFtHeight ( this, CUI_RES( DLG_FILTERMOSAIC_FT_HEIGHT ) ),
450cdf0e10cSrcweir maMtrHeight ( this, CUI_RES( DLG_FILTERMOSAIC_MTR_HEIGHT ) ),
451cdf0e10cSrcweir maCbxEdges ( this, CUI_RES( DLG_FILTERMOSAIC_CBX_EDGES ) )
452cdf0e10cSrcweir {
453cdf0e10cSrcweir FreeResource();
454cdf0e10cSrcweir
455cdf0e10cSrcweir maMtrWidth.SetValue( nTileWidth );
456cdf0e10cSrcweir maMtrWidth.SetLast( GetGraphicSizePixel().Width() );
457cdf0e10cSrcweir maMtrWidth.SetModifyHdl( GetModifyHdl() );
458cdf0e10cSrcweir
459cdf0e10cSrcweir maMtrHeight.SetValue( nTileHeight );
460cdf0e10cSrcweir maMtrHeight.SetLast( GetGraphicSizePixel().Height() );
461cdf0e10cSrcweir maMtrHeight.SetModifyHdl( GetModifyHdl() );
462cdf0e10cSrcweir
463cdf0e10cSrcweir maCbxEdges.Check( bEnhanceEdges );
464cdf0e10cSrcweir maCbxEdges.SetToggleHdl( GetModifyHdl() );
465cdf0e10cSrcweir
466cdf0e10cSrcweir maMtrWidth.GrabFocus();
467cdf0e10cSrcweir
468cdf0e10cSrcweir maFtWidth.SetAccessibleRelationMemberOf(&maFlParameter);
469cdf0e10cSrcweir maMtrWidth.SetAccessibleRelationMemberOf(&maFlParameter);
470cdf0e10cSrcweir maFtHeight.SetAccessibleRelationMemberOf(&maFlParameter);
471cdf0e10cSrcweir maMtrHeight.SetAccessibleRelationMemberOf(&maFlParameter);
472cdf0e10cSrcweir maCbxEdges.SetAccessibleRelationMemberOf(&maFlParameter);
473cdf0e10cSrcweir }
474cdf0e10cSrcweir
475cdf0e10cSrcweir // -----------------------------------------------------------------------------
476cdf0e10cSrcweir
~GraphicFilterMosaic()477cdf0e10cSrcweir GraphicFilterMosaic::~GraphicFilterMosaic()
478cdf0e10cSrcweir {
479cdf0e10cSrcweir }
480cdf0e10cSrcweir
481cdf0e10cSrcweir // -----------------------------------------------------------------------------
482cdf0e10cSrcweir
GetFilteredGraphic(const Graphic & rGraphic,double fScaleX,double fScaleY)483cdf0e10cSrcweir Graphic GraphicFilterMosaic::GetFilteredGraphic( const Graphic& rGraphic,
484cdf0e10cSrcweir double fScaleX, double fScaleY )
485cdf0e10cSrcweir {
486cdf0e10cSrcweir Graphic aRet;
487cdf0e10cSrcweir const Size aSize( Max( FRound( GetTileWidth() * fScaleX ), 1L ),
488cdf0e10cSrcweir Max( FRound( GetTileHeight() * fScaleY ), 1L ) );
489cdf0e10cSrcweir BmpFilterParam aParam( aSize );
490cdf0e10cSrcweir
491cdf0e10cSrcweir if( rGraphic.IsAnimated() )
492cdf0e10cSrcweir {
493cdf0e10cSrcweir Animation aAnim( rGraphic.GetAnimation() );
494cdf0e10cSrcweir
495cdf0e10cSrcweir if( aAnim.Filter( BMP_FILTER_MOSAIC, &aParam ) )
496cdf0e10cSrcweir {
497cdf0e10cSrcweir if( IsEnhanceEdges() )
498cdf0e10cSrcweir aAnim.Filter( BMP_FILTER_SHARPEN );
499cdf0e10cSrcweir
500cdf0e10cSrcweir aRet = aAnim;
501cdf0e10cSrcweir }
502cdf0e10cSrcweir }
503cdf0e10cSrcweir else
504cdf0e10cSrcweir {
505cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
506cdf0e10cSrcweir
507cdf0e10cSrcweir if( aBmpEx.Filter( BMP_FILTER_MOSAIC, &aParam ) )
508cdf0e10cSrcweir {
509cdf0e10cSrcweir if( IsEnhanceEdges() )
510cdf0e10cSrcweir aBmpEx.Filter( BMP_FILTER_SHARPEN );
511cdf0e10cSrcweir
512cdf0e10cSrcweir aRet = aBmpEx;
513cdf0e10cSrcweir }
514cdf0e10cSrcweir }
515cdf0e10cSrcweir
516cdf0e10cSrcweir return aRet;
517cdf0e10cSrcweir }
518cdf0e10cSrcweir
519cdf0e10cSrcweir // ------------------
520cdf0e10cSrcweir // - GraphicFilterSolarize -
521cdf0e10cSrcweir // ------------------
522cdf0e10cSrcweir
GraphicFilterSolarize(Window * pParent,const Graphic & rGraphic,sal_uInt8 cGreyThreshold,sal_Bool bInvert)523cdf0e10cSrcweir GraphicFilterSolarize::GraphicFilterSolarize( Window* pParent, const Graphic& rGraphic,
524cdf0e10cSrcweir sal_uInt8 cGreyThreshold, sal_Bool bInvert ) :
525cdf0e10cSrcweir GraphicFilterDialog ( pParent, CUI_RES( RID_SVX_GRFFILTER_DLG_SOLARIZE ), rGraphic ),
526cdf0e10cSrcweir maFtThreshold ( this, CUI_RES( DLG_FILTERSOLARIZE_FT_THRESHOLD ) ),
527cdf0e10cSrcweir maMtrThreshold ( this, CUI_RES( DLG_FILTERSOLARIZE_MTR_THRESHOLD ) ),
528cdf0e10cSrcweir maCbxInvert ( this, CUI_RES( DLG_FILTERSOLARIZE_CBX_INVERT ) )
529cdf0e10cSrcweir {
530cdf0e10cSrcweir FreeResource();
531cdf0e10cSrcweir
532cdf0e10cSrcweir maMtrThreshold.SetValue( FRound( cGreyThreshold / 2.55 ) );
533cdf0e10cSrcweir maMtrThreshold.SetModifyHdl( GetModifyHdl() );
534cdf0e10cSrcweir
535cdf0e10cSrcweir maCbxInvert.Check( bInvert );
536cdf0e10cSrcweir maCbxInvert.SetToggleHdl( GetModifyHdl() );
537cdf0e10cSrcweir }
538cdf0e10cSrcweir
539cdf0e10cSrcweir // -----------------------------------------------------------------------------
540cdf0e10cSrcweir
~GraphicFilterSolarize()541cdf0e10cSrcweir GraphicFilterSolarize::~GraphicFilterSolarize()
542cdf0e10cSrcweir {
543cdf0e10cSrcweir }
544cdf0e10cSrcweir
545cdf0e10cSrcweir // -----------------------------------------------------------------------------
546cdf0e10cSrcweir
GetFilteredGraphic(const Graphic & rGraphic,double,double)547cdf0e10cSrcweir Graphic GraphicFilterSolarize::GetFilteredGraphic( const Graphic& rGraphic,
548cdf0e10cSrcweir double /*fScaleX*/, double /*fScaleY*/ )
549cdf0e10cSrcweir {
550cdf0e10cSrcweir Graphic aRet;
551cdf0e10cSrcweir BmpFilterParam aParam( GetGreyThreshold() );
552cdf0e10cSrcweir
553cdf0e10cSrcweir if( rGraphic.IsAnimated() )
554cdf0e10cSrcweir {
555cdf0e10cSrcweir Animation aAnim( rGraphic.GetAnimation() );
556cdf0e10cSrcweir
557cdf0e10cSrcweir if( aAnim.Filter( BMP_FILTER_SOLARIZE, &aParam ) )
558cdf0e10cSrcweir {
559cdf0e10cSrcweir if( IsInvert() )
560cdf0e10cSrcweir aAnim.Invert();
561cdf0e10cSrcweir
562cdf0e10cSrcweir aRet = aAnim;
563cdf0e10cSrcweir }
564cdf0e10cSrcweir }
565cdf0e10cSrcweir else
566cdf0e10cSrcweir {
567cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
568cdf0e10cSrcweir
569cdf0e10cSrcweir if( aBmpEx.Filter( BMP_FILTER_SOLARIZE, &aParam ) )
570cdf0e10cSrcweir {
571cdf0e10cSrcweir if( IsInvert() )
572cdf0e10cSrcweir aBmpEx.Invert();
573cdf0e10cSrcweir
574cdf0e10cSrcweir aRet = aBmpEx;
575cdf0e10cSrcweir }
576cdf0e10cSrcweir }
577cdf0e10cSrcweir
578cdf0e10cSrcweir return aRet;
579cdf0e10cSrcweir }
580cdf0e10cSrcweir
581cdf0e10cSrcweir // ----------------------
582cdf0e10cSrcweir // - GraphicFilterSepia -
583cdf0e10cSrcweir // ----------------------
584cdf0e10cSrcweir
GraphicFilterSepia(Window * pParent,const Graphic & rGraphic,sal_uInt16 nSepiaPercent)585cdf0e10cSrcweir GraphicFilterSepia::GraphicFilterSepia( Window* pParent, const Graphic& rGraphic,
586cdf0e10cSrcweir sal_uInt16 nSepiaPercent ) :
587cdf0e10cSrcweir GraphicFilterDialog ( pParent, CUI_RES( RID_SVX_GRFFILTER_DLG_SEPIA ), rGraphic ),
588cdf0e10cSrcweir maFtSepia ( this, CUI_RES( DLG_FILTERSEPIA_FT_SEPIA ) ),
589cdf0e10cSrcweir maMtrSepia ( this, CUI_RES( DLG_FILTERSEPIA_MTR_SEPIA ) )
590cdf0e10cSrcweir {
591cdf0e10cSrcweir FreeResource();
592cdf0e10cSrcweir
593cdf0e10cSrcweir maMtrSepia.SetValue( nSepiaPercent );
594cdf0e10cSrcweir maMtrSepia.SetModifyHdl( GetModifyHdl() );
595cdf0e10cSrcweir }
596cdf0e10cSrcweir
597cdf0e10cSrcweir // -----------------------------------------------------------------------------
598cdf0e10cSrcweir
~GraphicFilterSepia()599cdf0e10cSrcweir GraphicFilterSepia::~GraphicFilterSepia()
600cdf0e10cSrcweir {
601cdf0e10cSrcweir }
602cdf0e10cSrcweir
603cdf0e10cSrcweir // -----------------------------------------------------------------------------
604cdf0e10cSrcweir
GetFilteredGraphic(const Graphic & rGraphic,double,double)605cdf0e10cSrcweir Graphic GraphicFilterSepia::GetFilteredGraphic( const Graphic& rGraphic,
606cdf0e10cSrcweir double /*fScaleX*/, double /*fScaleY*/ )
607cdf0e10cSrcweir {
608cdf0e10cSrcweir Graphic aRet;
609cdf0e10cSrcweir BmpFilterParam aParam( GetSepiaPercent() );
610cdf0e10cSrcweir
611cdf0e10cSrcweir if( rGraphic.IsAnimated() )
612cdf0e10cSrcweir {
613cdf0e10cSrcweir Animation aAnim( rGraphic.GetAnimation() );
614cdf0e10cSrcweir
615cdf0e10cSrcweir if( aAnim.Filter( BMP_FILTER_SEPIA, &aParam ) )
616cdf0e10cSrcweir aRet = aAnim;
617cdf0e10cSrcweir }
618cdf0e10cSrcweir else
619cdf0e10cSrcweir {
620cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
621cdf0e10cSrcweir
622cdf0e10cSrcweir if( aBmpEx.Filter( BMP_FILTER_SEPIA, &aParam ) )
623cdf0e10cSrcweir aRet = aBmpEx;
624cdf0e10cSrcweir }
625cdf0e10cSrcweir
626cdf0e10cSrcweir return aRet;
627cdf0e10cSrcweir }
628cdf0e10cSrcweir
629cdf0e10cSrcweir // -----------------------
630cdf0e10cSrcweir // - GraphicFilterPoster -
631cdf0e10cSrcweir // -----------------------
632cdf0e10cSrcweir
GraphicFilterPoster(Window * pParent,const Graphic & rGraphic,sal_uInt16 nPosterCount)633cdf0e10cSrcweir GraphicFilterPoster::GraphicFilterPoster( Window* pParent, const Graphic& rGraphic,
634cdf0e10cSrcweir sal_uInt16 nPosterCount ) :
635cdf0e10cSrcweir GraphicFilterDialog ( pParent, CUI_RES( RID_SVX_GRFFILTER_DLG_POSTER ), rGraphic ),
636cdf0e10cSrcweir maFtPoster ( this, CUI_RES( DLG_FILTERPOSTER_FT_POSTER ) ),
637cdf0e10cSrcweir maNumPoster ( this, CUI_RES( DLG_FILTERPOSTER_NUM_POSTER ) )
638cdf0e10cSrcweir {
639cdf0e10cSrcweir FreeResource();
640cdf0e10cSrcweir
641cdf0e10cSrcweir maNumPoster.SetFirst( 2 );
642cdf0e10cSrcweir maNumPoster.SetLast( rGraphic.GetBitmapEx().GetBitCount() );
643cdf0e10cSrcweir maNumPoster.SetValue( nPosterCount );
644cdf0e10cSrcweir maNumPoster.SetModifyHdl( GetModifyHdl() );
645cdf0e10cSrcweir }
646cdf0e10cSrcweir
647cdf0e10cSrcweir // -----------------------------------------------------------------------------
648cdf0e10cSrcweir
~GraphicFilterPoster()649cdf0e10cSrcweir GraphicFilterPoster::~GraphicFilterPoster()
650cdf0e10cSrcweir {
651cdf0e10cSrcweir }
652cdf0e10cSrcweir
653cdf0e10cSrcweir // -----------------------------------------------------------------------------
654cdf0e10cSrcweir
GetFilteredGraphic(const Graphic & rGraphic,double,double)655cdf0e10cSrcweir Graphic GraphicFilterPoster::GetFilteredGraphic( const Graphic& rGraphic,
656cdf0e10cSrcweir double /*fScaleX*/, double /*fScaleY*/ )
657cdf0e10cSrcweir {
658cdf0e10cSrcweir Graphic aRet;
659cdf0e10cSrcweir const sal_uInt16 nPosterCount = GetPosterColorCount();
660cdf0e10cSrcweir
661cdf0e10cSrcweir if( rGraphic.IsAnimated() )
662cdf0e10cSrcweir {
663cdf0e10cSrcweir Animation aAnim( rGraphic.GetAnimation() );
664cdf0e10cSrcweir
665cdf0e10cSrcweir if( aAnim.ReduceColors( nPosterCount, BMP_REDUCE_POPULAR ) )
666cdf0e10cSrcweir aRet = aAnim;
667cdf0e10cSrcweir }
668cdf0e10cSrcweir else
669cdf0e10cSrcweir {
670cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
671cdf0e10cSrcweir
672cdf0e10cSrcweir if( aBmpEx.ReduceColors( nPosterCount, BMP_REDUCE_POPULAR ) )
673cdf0e10cSrcweir aRet = aBmpEx;
674cdf0e10cSrcweir }
675cdf0e10cSrcweir
676cdf0e10cSrcweir return aRet;
677cdf0e10cSrcweir }
678cdf0e10cSrcweir
679cdf0e10cSrcweir // -----------------------
680cdf0e10cSrcweir // - GraphicFilterEmboss -
681cdf0e10cSrcweir // -----------------------
682cdf0e10cSrcweir
MouseButtonDown(const MouseEvent & rEvt)683cdf0e10cSrcweir void GraphicFilterEmboss::EmbossControl::MouseButtonDown( const MouseEvent& rEvt )
684cdf0e10cSrcweir {
685cdf0e10cSrcweir const RECT_POINT eOldRP = GetActualRP();
686cdf0e10cSrcweir
687cdf0e10cSrcweir SvxRectCtl::MouseButtonDown( rEvt );
688cdf0e10cSrcweir
689cdf0e10cSrcweir if( GetActualRP() != eOldRP )
690cdf0e10cSrcweir maModifyHdl.Call( this );
691cdf0e10cSrcweir }
692cdf0e10cSrcweir
693cdf0e10cSrcweir // -----------------------------------------------------------------------------
694cdf0e10cSrcweir
GraphicFilterEmboss(Window * pParent,const Graphic & rGraphic,RECT_POINT eLightSource)695cdf0e10cSrcweir GraphicFilterEmboss::GraphicFilterEmboss( Window* pParent, const Graphic& rGraphic,
696cdf0e10cSrcweir RECT_POINT eLightSource ) :
697cdf0e10cSrcweir GraphicFilterDialog ( pParent, CUI_RES( RID_SVX_GRFFILTER_DLG_EMBOSS ), rGraphic ),
698cdf0e10cSrcweir maFtLight ( this, CUI_RES( DLG_FILTEREMBOSS_FT_LIGHT ) ),
699cdf0e10cSrcweir maCtlLight ( this, CUI_RES( DLG_FILTEREMBOSS_CTL_LIGHT ), eLightSource )
700cdf0e10cSrcweir {
701cdf0e10cSrcweir FreeResource();
702cdf0e10cSrcweir
703cdf0e10cSrcweir maCtlLight.SetModifyHdl( GetModifyHdl() );
704cdf0e10cSrcweir maCtlLight.GrabFocus();
705cdf0e10cSrcweir }
706cdf0e10cSrcweir
707cdf0e10cSrcweir // -----------------------------------------------------------------------------
708cdf0e10cSrcweir
~GraphicFilterEmboss()709cdf0e10cSrcweir GraphicFilterEmboss::~GraphicFilterEmboss()
710cdf0e10cSrcweir {
711cdf0e10cSrcweir }
712cdf0e10cSrcweir
713cdf0e10cSrcweir // -----------------------------------------------------------------------------
714cdf0e10cSrcweir
GetFilteredGraphic(const Graphic & rGraphic,double,double)715cdf0e10cSrcweir Graphic GraphicFilterEmboss::GetFilteredGraphic( const Graphic& rGraphic,
716cdf0e10cSrcweir double /*fScaleX*/, double /*fScaleY*/ )
717cdf0e10cSrcweir {
718cdf0e10cSrcweir Graphic aRet;
719cdf0e10cSrcweir sal_uInt16 nAzim, nElev;
720cdf0e10cSrcweir
721cdf0e10cSrcweir switch( maCtlLight.GetActualRP() )
722cdf0e10cSrcweir {
723cdf0e10cSrcweir default: DBG_ERROR("svx::GraphicFilterEmboss::GetFilteredGraphic(), unknown Reference Point!" );
724cdf0e10cSrcweir case( RP_LT ): nAzim = 4500, nElev = 4500; break;
725cdf0e10cSrcweir case( RP_MT ): nAzim = 9000, nElev = 4500; break;
726cdf0e10cSrcweir case( RP_RT ): nAzim = 13500, nElev = 4500; break;
727cdf0e10cSrcweir case( RP_LM ): nAzim = 0, nElev = 4500; break;
728cdf0e10cSrcweir case( RP_MM ): nAzim = 0, nElev = 9000; break;
729cdf0e10cSrcweir case( RP_RM ): nAzim = 18000, nElev = 4500; break;
730cdf0e10cSrcweir case( RP_LB ): nAzim = 31500, nElev = 4500; break;
731cdf0e10cSrcweir case( RP_MB ): nAzim = 27000, nElev = 4500; break;
732cdf0e10cSrcweir case( RP_RB ): nAzim = 22500, nElev = 4500; break;
733cdf0e10cSrcweir }
734cdf0e10cSrcweir
735cdf0e10cSrcweir BmpFilterParam aParam( nAzim, nElev );
736cdf0e10cSrcweir
737cdf0e10cSrcweir if( rGraphic.IsAnimated() )
738cdf0e10cSrcweir {
739cdf0e10cSrcweir Animation aAnim( rGraphic.GetAnimation() );
740cdf0e10cSrcweir
741cdf0e10cSrcweir if( aAnim.Filter( BMP_FILTER_EMBOSS_GREY, &aParam ) )
742cdf0e10cSrcweir aRet = aAnim;
743cdf0e10cSrcweir }
744cdf0e10cSrcweir else
745cdf0e10cSrcweir {
746cdf0e10cSrcweir BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
747cdf0e10cSrcweir
748cdf0e10cSrcweir if( aBmpEx.Filter( BMP_FILTER_EMBOSS_GREY, &aParam ) )
749cdf0e10cSrcweir aRet = aBmpEx;
750cdf0e10cSrcweir }
751cdf0e10cSrcweir
752cdf0e10cSrcweir return aRet;
753cdf0e10cSrcweir }
754