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