Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : :
30 : : #include <main.hxx>
31 : : #include <chart.hxx>
32 : : #include <outact.hxx>
33 : :
34 : : // ---------------------------------------------------------------
35 : :
36 : 0 : void CGM::ImplDoClass7()
37 : : {
38 : 0 : switch ( mnElementID )
39 : : {
40 : 0 : case 0x01 : /*Message */break;
41 : : case 0x02 :
42 : : {
43 : 0 : sal_uInt8* pAppData = mpSource + 12;
44 : 0 : sal_uInt16* pTemp = (sal_uInt16*)mpSource;
45 : 0 : sal_uInt16 nOpcode = pTemp[ 4 ];
46 : :
47 : 0 : if ( mpChart || ( nOpcode == 0 ) )
48 : : {
49 : 0 : switch ( nOpcode )
50 : : {
51 : : case 0x000 : /*AppData - Beginning of File Opcodes*/
52 : : {
53 : 0 : if ( mpChart == NULL )
54 : 0 : mpChart = new CGMChart( *this );
55 : 0 : mpChart->mnCurrentFileType = pAppData[ 3 ];
56 : : }
57 : 0 : break;
58 : 0 : case 0x001 : /*AppData - End of File Opcodes */break;
59 : 0 : case 0x190 : /*AppData - FDESC */break;
60 : 0 : case 0x192 : /*AppData - FNOTES */break;
61 : 0 : case 0x1F4 : /*AppData - BOGENFILE */break;
62 : 0 : case 0x1F5 : /*AppData - EOGENFILE */break;
63 : 0 : case 0x1F8 : /*AppData - BOCHTGROUP */break;
64 : 0 : case 0x1F9 : /*AppData - EOCHTGROUP */break;
65 : 0 : case 0x1FC : /*AppData - BOCHTDATA */break;
66 : : case 0x1FD : /*AppData - EOCHTDATA*/
67 : : {
68 : 0 : mpOutAct->DrawChart();
69 : : }
70 : 0 : break;
71 : 0 : case 0x200 : /*AppData - BOSYMGROUP */break;
72 : 0 : case 0x201 : /*AppData - EOSYMGROUP */break;
73 : 0 : case 0x204 : /*AppData - BEGSYMBOL */break;
74 : 0 : case 0x205 : /*AppData - ENDSYMBOL */break;
75 : 0 : case 0x208 : /*AppData - BOSHWGROUP */break;
76 : 0 : case 0x209 : /*AppData - EOSHWGROUP */break;
77 : 0 : case 0x260 : /*AppData - BEGGROUP */break;
78 : 0 : case 0x262 : /*AppData - ENDGROUP */break;
79 : : case 0x264 : /*AppData - DATANODE*/
80 : : {
81 : 0 : mpChart->mDataNode[ 0 ] = *(DataNode*)( pAppData );
82 : 0 : sal_Int8 nZoneEnum = mpChart->mDataNode[ 0 ].nZoneEnum;
83 : 0 : if ( nZoneEnum && ( nZoneEnum <= 6 ) )
84 : 0 : mpChart->mDataNode[ nZoneEnum ] = *(DataNode*)( pAppData );
85 : : }
86 : 0 : break;
87 : : case 0x2BE : /*AppData - SHWSLIDEREC*/
88 : : {
89 : 0 : if ( mnMode & CGM_EXPORT_IMPRESS )
90 : : {
91 : 0 : if ( pAppData[ 16 ] == 0 ) // a blank template ?
92 : : {
93 : 0 : if ( pAppData[ 2 ] == 46 )
94 : : {
95 : : // this starts the document -> maybe we could insert a new document
96 : : }
97 : 0 : else if ( pAppData[ 2 ] & 0x80 )
98 : : {
99 : : // this is a template
100 : : }
101 : : else
102 : : {
103 : 0 : mpOutAct->InsertPage();
104 : : }
105 : : }
106 : 0 : mpChart->ResetAnnotation();
107 : : }
108 : : }
109 : 0 : break;
110 : 0 : case 0x2C0 : /*AppData - SHWKEYTABLE */break;
111 : 0 : case 0x2C2 : /*AppData - SHWBUTTONTAB */break;
112 : 0 : case 0x2C4 : /*AppData - SHWGLOBAL */break;
113 : 0 : case 0x2C6 : /*AppData - SHWTITLE */break;
114 : 0 : case 0x2CA : /*AppData - SHWAPP */break;
115 : : case 0x320 : /*AppData - TEXT*/
116 : : {
117 : 0 : TextEntry* pTextEntry = new TextEntry;
118 : 0 : pTextEntry->nTypeOfText = *((sal_uInt16*)( pAppData ) );
119 : 0 : pTextEntry->nRowOrLineNum = *((sal_uInt16*)( pAppData + 2 ) );
120 : 0 : pTextEntry->nColumnNum = *((sal_uInt16*)( pAppData + 4 ) );
121 : 0 : sal_uInt16 nAttributes = *( (sal_uInt16*)( pAppData + 6 ) );
122 : 0 : pTextEntry->nZoneSize = nAttributes & 0xff;
123 : 0 : pTextEntry->nLineType = ( nAttributes >> 8 ) & 0xf;
124 : 0 : nAttributes >>= 12;
125 : 0 : pTextEntry->nAttributes = nAttributes;
126 : 0 : pAppData += 8;
127 : 0 : sal_uInt32 nLen = strlen( (char*)( pAppData ) ) + 1;
128 : 0 : pTextEntry->pText = new char[ nLen ];
129 : 0 : memcpy( pTextEntry->pText, pAppData, nLen );
130 : 0 : pAppData += nLen;
131 : :
132 : 0 : TextAttribute* pTextOld = 0;
133 : 0 : for ( sal_uInt16 i = 0; i < nAttributes; i++ )
134 : : {
135 : 0 : TextAttribute* pTextAttr = new TextAttribute;
136 : :
137 : 0 : *pTextAttr = *(TextAttribute*)( pAppData );
138 : :
139 : 0 : pTextAttr->pNextAttribute = NULL;
140 : 0 : if ( i == 0 )
141 : 0 : pTextEntry->pAttribute = pTextAttr;
142 : : else
143 : 0 : pTextOld->pNextAttribute = pTextAttr;
144 : :
145 : 0 : pAppData += sizeof( TextAttribute ) - 4;
146 : 0 : pTextOld = pTextAttr;
147 : : }
148 : 0 : mpChart->InsertTextEntry( pTextEntry );
149 : : }
150 : 0 : break;
151 : 0 : case 0x321 : /*AppData - IOC_TABS */break;
152 : : case 0x322 : /*AppData - CHARTZONE*/
153 : : {
154 : 0 : mpChart->mChartZone = *( ChartZone* )( pAppData );
155 : : }
156 : 0 : break;
157 : 0 : case 0x324 : /*AppData - TITLEZONE */break;
158 : 0 : case 0x328 : /*AppData - FOOTNOTEZONE */break;
159 : 0 : case 0x32A : /*AppData - LEGENDZONE */break;
160 : : case 0x330 : /*AppData - PAGEORIENTDIM*/
161 : : {
162 : 0 : mpChart->mPageOrientDim = *( PageOrientDim*)( pAppData );
163 : : }
164 : 0 : break;
165 : : case 0x334 : /*AppData - CHTZONEOPTN*/
166 : : {
167 : 0 : mpChart->mZoneOption = *( ZoneOption*)( pAppData );
168 : : }
169 : 0 : break;
170 : : case 0x336 : /*AppData - CHTINTL*/
171 : : {
172 : 0 : mpChart->mIntSettings = *( IntSettings*)( pAppData );
173 : : }
174 : 0 : break;
175 : 0 : case 0x338 : /*AppData - CHTLINESPC */break;
176 : 0 : case 0x384 : /*AppData - ORGGRIDSTATE */break;
177 : 0 : case 0x386 : /*AppData - ORGSCRSTATE */break;
178 : 0 : case 0x388 : /*AppData - ORGTREESTATE */break;
179 : 0 : case 0x38A : /*AppData - ORGTEXTOPTN */break;
180 : 0 : case 0x38E : /*AppData - ORGBOXOPTN */break;
181 : 0 : case 0x390 : /*AppData - ORGBOXDIM */break;
182 : 0 : case 0x392 : /*AppData - ORGBOX */break;
183 : 0 : case 0x3EA : /*AppData - TTLTEXTOPTN */break;
184 : 0 : case 0x3EE : /*AppData - TTLAUTOBUILD */break;
185 : 0 : case 0x44E : /*AppData - BULTEXTOPTN */break;
186 : : case 0x452 : /*AppData - BULLETOPTN*/
187 : : {
188 : 0 : mpChart->mBulletOption = *( BulletOption*)( pAppData );
189 : : }
190 : 0 : break;
191 : : case 0x454 : /*AppData - BULLETLINES*/
192 : : {
193 : 0 : mpChart->mBulletLines = *( BulletLines*)( pAppData );
194 : : }
195 : 0 : break;
196 : 0 : case 0x456 : /*AppData - BULAUTOBUILD */break;
197 : 0 : case 0x4B2 : /*AppData - TBLTEXTOPTN */break;
198 : 0 : case 0x4B6 : /*AppData - TBLOPTN */break;
199 : 0 : case 0x4B8 : /*AppData - TBLCOLOPTN */break;
200 : 0 : case 0x4BA : /*AppData - TBLLEGENDOPTN */break;
201 : 0 : case 0x4BC : /*AppData - TBLRANGEOPTN */break;
202 : 0 : case 0x4BE : /*AppData - TBLROWOPTN */break;
203 : 0 : case 0x4C0 : /*AppData - TBLAUTOBUILD */break;
204 : 0 : case 0x518 : /*AppData - PIECHARTOPTN */break;
205 : 0 : case 0x51A : /*AppData - PIELEGENDOPTN */break;
206 : 0 : case 0x51C : /*AppData - PIETEXTOPTN */break;
207 : 0 : case 0x51E : /*AppData - PIEOPTN */break;
208 : 0 : case 0x520 : /*AppData - PIEPCTLABOPTN */break;
209 : 0 : case 0x522 : /*AppData - PIEVALLABOPTN */break;
210 : 0 : case 0x524 : /*AppData - PIESLICE */break;
211 : 0 : case 0x57A : /*AppData - XYAXISOPTN */break;
212 : 0 : case 0x57C : /*AppData - XYGRIDOPTN */break;
213 : 0 : case 0x57D : /*AppData - XYGRIDSHOWFILL */break;
214 : 0 : case 0x57E : /*AppData - XYSERIESOPTN */break;
215 : 0 : case 0x580 : /*AppData - XYSTYLEOPTN */break;
216 : 0 : case 0x582 : /*AppData - XYTABLEOPTN */break;
217 : 0 : case 0x584 : /*AppData - XYTEXTOPTN */break;
218 : 0 : case 0x586 : /*AppData - XYDATAOPTN */break;
219 : 0 : case 0x58A : /*AppData - XYLEGENDOPN */break;
220 : 0 : case 0x58C : /*AppData - XYCALCULATION */break;
221 : 0 : case 0x58E : /*AppData - XYXVALUE */break;
222 : 0 : case 0x590 : /*AppData - XYYVALUE */break;
223 : 0 : case 0x592 : /*AppData - XYXEXTVALUE */break;
224 : 0 : case 0x618 : /*AppData - IOC_CHTCOLRTAB */break;
225 : 0 : case 0x619 : /*AppData - IOC_CHTFONTTAB */break;
226 : 0 : case 0x1fff : /*AppData - 0x1fff */break;
227 : 0 : default : /*UNKNOWN Application Data */break;
228 : : }
229 : : }
230 : 0 : mnParaSize = mnElementSize;
231 : 0 : break;
232 : : }
233 : 0 : default: break;
234 : : }
235 : 0 : };
236 : :
237 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|