xref: /AOO41X/main/filter/source/graphicfilter/icgm/outact.hxx (revision 22e87013b212da8c80c93e291ad90de8f36964c2)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef CGM_OUTACT_HXX_
25 #define CGM_OUTACT_HXX_
26 
27 #include <com/sun/star/awt/Gradient.hpp>
28 #include <com/sun/star/drawing/XDrawPages.hpp>
29 #include <com/sun/star/drawing/XDrawPage.hpp>
30 #include <com/sun/star/drawing/XShape.hpp>
31 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
32 #include <com/sun/star/beans/XPropertySet.hpp>
33 
34 
35 #define CGM_OUTACT_MAX_GROUP_LEVEL 64
36 
37 #include "cgm.hxx"
38 #include <chart.hxx>
39 #include <tools/poly.hxx>
40 
41 typedef struct NodeFrameSet
42 {
43     Point       nTopLeft;
44     Point       nBottomRight;
45     ::com::sun::star::awt::Size     nSize;
46 } NodeFrameSet;
47 
48 class CGM;
49 class VclGradient;
50 class CGMOutAct
51 {
52     protected:
53         sal_uInt16                  mnCurrentPage;          // defaulted to zero
54 
55         sal_uInt32                  mnGroupActCount;        // grouping
56         sal_uInt32                  mnGroupLevel;
57         sal_uInt32*                 mpGroupLevel;
58 
59         sal_uInt16                  mnIndex;                // figure
60         sal_uInt8*                  mpFlags;
61         Point*                  mpPoints;
62         PolyPolygon             maPolyPolygon;
63         ::com::sun::star::awt::Gradient*            mpGradient;
64 
65         CGM*                    mpCGM;
66 
67     public:
68                                 CGMOutAct( CGM& rCGM );
69     virtual                     ~CGMOutAct();
FirstOutPut()70     virtual void                FirstOutPut() { mpCGM->mbFirstOutPut = sal_False; } ;
InsertPage()71     virtual void                InsertPage() { mnCurrentPage++; } ;
BeginGroup()72     virtual void                BeginGroup() {} ;
EndGroup()73     virtual void                EndGroup() {};
EndGrouping()74     virtual void                EndGrouping() {} ;
75     void                        BeginFigure() ;
76     void                        CloseRegion() ;
77     void                        NewRegion() ;
78     void                        EndFigure() ;
79     void                        RegPolyLine( Polygon&, sal_Bool bReverse = sal_False ) ;
80     void                        SetGradientOffset( long nHorzOfs, long nVertOfs, sal_uInt32 nType );
81     void                        SetGradientAngle( long nAngle );
82     void                        SetGradientDescriptor( sal_uInt32 nColorFrom, sal_uInt32 nColorTo );
83     void                        SetGradientStyle( sal_uInt32 nStyle, double fRatio );
DrawRectangle(FloatRect &)84     virtual void                DrawRectangle( FloatRect& ) {} ;
DrawEllipse(FloatPoint &,FloatPoint &,double &)85     virtual void                DrawEllipse( FloatPoint&, FloatPoint&, double& ) {} ;
DrawEllipticalArc(FloatPoint &,FloatPoint &,double &,sal_uInt32,double &,double &)86     virtual void                DrawEllipticalArc( FloatPoint&, FloatPoint&, double&,
87                                     sal_uInt32, double&, double&) {} ;
DrawBitmap(CGMBitmapDescriptor *)88     virtual void                DrawBitmap( CGMBitmapDescriptor* ) {} ;
DrawPolygon(Polygon &)89     virtual void                DrawPolygon( Polygon& ) {} ;
DrawPolyLine(Polygon &)90     virtual void                DrawPolyLine( Polygon& ) {} ;
DrawPolybezier(Polygon &)91     virtual void                DrawPolybezier( Polygon& ) {} ;
DrawPolyPolygon(PolyPolygon &)92     virtual void                DrawPolyPolygon( PolyPolygon& ) {} ;
DrawText(::com::sun::star::awt::Point &,::com::sun::star::awt::Size &,char *,sal_uInt32,FinalFlag)93     virtual void                DrawText( ::com::sun::star::awt::Point&, ::com::sun::star::awt::Size&, char*, sal_uInt32, FinalFlag ) {} ;
AppendText(char *,sal_uInt32,FinalFlag)94     virtual void                AppendText( char*, sal_uInt32, FinalFlag ) {} ;
DrawText(TextEntry *,NodeFrameSet &,sal_uInt32)95     virtual sal_uInt32              DrawText( TextEntry*, NodeFrameSet&, sal_uInt32 ) { return 0; } ;
DrawChart()96     virtual void                DrawChart(){} ;
97 };
98 
99 class CGMImpressOutAct : public CGMOutAct
100 {
101     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPages >               maXDrawPages;
102     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >                maXDrawPage;
103 
104 //  ::com::sun::star::uno::Reference< XServiceRegistry >            maXServiceRegistry;
105     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >        maXMultiServiceFactory;
106     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >        maXServiceManagerSC;
107     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >                   maXShape;
108     sal_Bool                        ImplCreateShape( const ::rtl::OUString& rType );
109 
110     ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >           maXPropSet;
111     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >                  maXShapes;
112 
113     sal_uInt32                      nFinalTextCount;
114 
115     sal_Bool                        ImplInitPage();
116     void                        ImplSetOrientation( FloatPoint& RefPoint, double& Orientation ) ;
117     void                        ImplSetLineBundle() ;
118     void                        ImplSetFillBundle() ;
119     void                        ImplSetTextBundle( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & ) ;
120 public:
121                                 CGMImpressOutAct( CGM&, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & ) ;
~CGMImpressOutAct()122                                 ~CGMImpressOutAct() {} ;
123     virtual void                InsertPage() ;
124     virtual void                BeginGroup() ;
125     virtual void                EndGroup() ;
126     virtual void                EndGrouping() ;
127     virtual void                DrawRectangle( FloatRect& ) ;
128     virtual void                DrawEllipse( FloatPoint& center, FloatPoint&, double& Orientation ) ;
129     virtual void                DrawEllipticalArc( FloatPoint& center, FloatPoint& size, double& orientation,
130                                     sal_uInt32 etype, double& startangle, double& endangle ) ;
131     virtual void                DrawBitmap( CGMBitmapDescriptor* ) ;
132     virtual void                DrawPolygon( Polygon& ) ;
133     virtual void                DrawPolyLine( Polygon& ) ;
134     virtual void                DrawPolybezier( Polygon& ) ;
135     virtual void                DrawPolyPolygon( PolyPolygon& ) ;
136     virtual void                DrawText( ::com::sun::star::awt::Point& TextRectPos, ::com::sun::star::awt::Size& TextRectSize, char* String, sal_uInt32 StringSize, FinalFlag ) ;
137     virtual void                AppendText( char* String, sal_uInt32 StringSize, FinalFlag ) ;
138     virtual sal_uInt32              DrawText( TextEntry*, NodeFrameSet&, sal_uInt32 ) ;
139     virtual void                DrawChart();
140 };
141 
142 
143 #endif
144 
145