Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #ifndef INCLUDED_SD_SOURCE_UI_INC_FUMORPH_HXX
21 : #define INCLUDED_SD_SOURCE_UI_INC_FUMORPH_HXX
22 :
23 : #include "fupoor.hxx"
24 :
25 : #include <math.h>
26 : #include <vector>
27 :
28 : namespace basegfx {
29 : class B2DPolyPolygon;
30 : class B2DPolygon;
31 : class B2DPoint;
32 : }
33 :
34 : namespace sd {
35 :
36 0 : class FuMorph
37 : : public FuPoor
38 : {
39 : public:
40 : TYPEINFO_OVERRIDE();
41 :
42 : static rtl::Reference<FuPoor> Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq );
43 : virtual void DoExecute( SfxRequest& rReq ) SAL_OVERRIDE;
44 :
45 : private:
46 : typedef ::std::vector< ::basegfx::B2DPolyPolygon* > B2DPolyPolygonList_impl;
47 :
48 : FuMorph (
49 : ViewShell* pViewSh,
50 : ::sd::Window* pWin,
51 : ::sd::View* pView,
52 : SdDrawDocument* pDoc,
53 : SfxRequest& rReq);
54 :
55 : void ImpInsertPolygons(
56 : B2DPolyPolygonList_impl& rPolyPolyList3D,
57 : bool bAttributeFade,
58 : const SdrObject* pObj1,
59 : const SdrObject* pObj2
60 : );
61 :
62 : static ::basegfx::B2DPolyPolygon* ImpCreateMorphedPolygon(
63 : const ::basegfx::B2DPolyPolygon& rPolyPolyStart,
64 : const ::basegfx::B2DPolyPolygon& rPolyPolyEnd,
65 : double fMorphingFactor
66 : );
67 :
68 : static bool ImpMorphPolygons(
69 : const ::basegfx::B2DPolyPolygon& rPolyPoly1,
70 : const ::basegfx::B2DPolyPolygon& rPolyPoly2,
71 : const sal_uInt16 nSteps,
72 : B2DPolyPolygonList_impl& rPolyPolyList3D
73 : );
74 :
75 : static void ImpAddPolys(
76 : ::basegfx::B2DPolyPolygon& rSmaller,
77 : const ::basegfx::B2DPolyPolygon& rBigger
78 : );
79 :
80 : static void ImpEqualizePolyPointCount(
81 : ::basegfx::B2DPolygon& rSmall,
82 : const ::basegfx::B2DPolygon& rBig
83 : );
84 :
85 : static sal_uInt32 ImpGetNearestIndex(
86 : const ::basegfx::B2DPolygon& rPoly,
87 : const ::basegfx::B2DPoint& rPos
88 : );
89 : };
90 :
91 : } // end of namespace sd
92 :
93 : #endif
94 :
95 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|