summaryrefslogtreecommitdiff
path: root/goodies
diff options
context:
space:
mode:
Diffstat (limited to 'goodies')
-rw-r--r--goodies/inc/agapidll.hxx80
-rw-r--r--goodies/inc/agsdkdll.hxx153
-rw-r--r--goodies/inc/b3dtrans.hxx354
-rw-r--r--goodies/inc/chagent.hxx199
-rw-r--r--goodies/inc/chanapi.hxx84
-rw-r--r--goodies/inc/channel.hxx113
-rw-r--r--goodies/inc/chlist.hxx219
-rw-r--r--goodies/inc/chresid.hxx44
-rw-r--r--goodies/inc/chtuner.hxx94
-rw-r--r--goodies/inc/crypt.hxx62
-rw-r--r--goodies/inc/goodies.hrc60
-rw-r--r--goodies/inc/grfmgr.hxx576
-rw-r--r--goodies/inc/mailenum.hxx98
-rw-r--r--goodies/inc/makefile.mk51
-rw-r--r--goodies/inc/pch/precompiled_goodies.cxx32
-rw-r--r--goodies/inc/pch/precompiled_goodies.hxx174
-rw-r--r--goodies/prj/build.lst31
-rw-r--r--goodies/prj/d.lst82
-rw-r--r--goodies/source/base3d/b3dtrans.cxx1017
-rw-r--r--goodies/source/base3d/makefile.mk47
-rw-r--r--goodies/source/filter.vcl/egif/dlgegif.cxx111
-rw-r--r--goodies/source/filter.vcl/egif/dlgegif.hrc39
-rw-r--r--goodies/source/filter.vcl/egif/dlgegif.hxx74
-rw-r--r--goodies/source/filter.vcl/egif/dlgegif.src121
-rw-r--r--goodies/source/filter.vcl/egif/egif.cxx632
-rw-r--r--goodies/source/filter.vcl/egif/egifstr.src42
-rw-r--r--goodies/source/filter.vcl/egif/exports.map8
-rw-r--r--goodies/source/filter.vcl/egif/giflzwc.cxx259
-rw-r--r--goodies/source/filter.vcl/egif/giflzwc.hxx68
-rw-r--r--goodies/source/filter.vcl/egif/makefile.mk82
-rw-r--r--goodies/source/filter.vcl/egif/strings.hrc31
-rw-r--r--goodies/source/filter.vcl/eos2met/dlgeos2.cxx182
-rw-r--r--goodies/source/filter.vcl/eos2met/dlgeos2.hrc44
-rw-r--r--goodies/source/filter.vcl/eos2met/dlgeos2.hxx83
-rw-r--r--goodies/source/filter.vcl/eos2met/dlgeos2.src165
-rw-r--r--goodies/source/filter.vcl/eos2met/eos2met.cxx2651
-rw-r--r--goodies/source/filter.vcl/eos2met/eos2mstr.src41
-rw-r--r--goodies/source/filter.vcl/eos2met/exports.map8
-rw-r--r--goodies/source/filter.vcl/eos2met/makefile.mk78
-rw-r--r--goodies/source/filter.vcl/eos2met/strings.hrc32
-rw-r--r--goodies/source/filter.vcl/epbm/dlgepbm.cxx102
-rw-r--r--goodies/source/filter.vcl/epbm/dlgepbm.hrc37
-rw-r--r--goodies/source/filter.vcl/epbm/dlgepbm.hxx74
-rw-r--r--goodies/source/filter.vcl/epbm/dlgepbm.src109
-rw-r--r--goodies/source/filter.vcl/epbm/epbm.cxx275
-rw-r--r--goodies/source/filter.vcl/epbm/epbmstr.src38
-rw-r--r--goodies/source/filter.vcl/epbm/exports.map8
-rw-r--r--goodies/source/filter.vcl/epbm/makefile.mk79
-rw-r--r--goodies/source/filter.vcl/epbm/strings.hrc30
-rw-r--r--goodies/source/filter.vcl/epgm/dlgepgm.cxx100
-rw-r--r--goodies/source/filter.vcl/epgm/dlgepgm.hrc37
-rw-r--r--goodies/source/filter.vcl/epgm/dlgepgm.hxx74
-rw-r--r--goodies/source/filter.vcl/epgm/dlgepgm.src108
-rw-r--r--goodies/source/filter.vcl/epgm/epgm.cxx300
-rw-r--r--goodies/source/filter.vcl/epgm/epgmstr.src38
-rw-r--r--goodies/source/filter.vcl/epgm/exports.map8
-rw-r--r--goodies/source/filter.vcl/epgm/makefile.mk80
-rw-r--r--goodies/source/filter.vcl/epgm/strings.hrc30
-rw-r--r--goodies/source/filter.vcl/epict/dlgepct.cxx186
-rw-r--r--goodies/source/filter.vcl/epict/dlgepct.hrc44
-rw-r--r--goodies/source/filter.vcl/epict/dlgepct.hxx83
-rw-r--r--goodies/source/filter.vcl/epict/dlgepct.src166
-rw-r--r--goodies/source/filter.vcl/epict/epict.cxx2306
-rw-r--r--goodies/source/filter.vcl/epict/epictstr.src41
-rw-r--r--goodies/source/filter.vcl/epict/exports.map8
-rw-r--r--goodies/source/filter.vcl/epict/makefile.mk80
-rw-r--r--goodies/source/filter.vcl/epict/strings.hrc32
-rw-r--r--goodies/source/filter.vcl/eppm/dlgeppm.cxx99
-rw-r--r--goodies/source/filter.vcl/eppm/dlgeppm.hrc37
-rw-r--r--goodies/source/filter.vcl/eppm/dlgeppm.hxx74
-rw-r--r--goodies/source/filter.vcl/eppm/dlgeppm.src109
-rw-r--r--goodies/source/filter.vcl/eppm/eppm.cxx308
-rw-r--r--goodies/source/filter.vcl/eppm/eppmstr.src38
-rw-r--r--goodies/source/filter.vcl/eppm/exports.map8
-rw-r--r--goodies/source/filter.vcl/eppm/makefile.mk80
-rw-r--r--goodies/source/filter.vcl/eppm/strings.hrc30
-rw-r--r--goodies/source/filter.vcl/eps/dlgeps.cxx209
-rw-r--r--goodies/source/filter.vcl/eps/dlgeps.hrc46
-rw-r--r--goodies/source/filter.vcl/eps/dlgeps.hxx85
-rw-r--r--goodies/source/filter.vcl/eps/dlgeps.src163
-rw-r--r--goodies/source/filter.vcl/eps/eps.cxx2743
-rw-r--r--goodies/source/filter.vcl/eps/epsstr.src73
-rw-r--r--goodies/source/filter.vcl/eps/exports.map8
-rw-r--r--goodies/source/filter.vcl/eps/makefile.mk83
-rw-r--r--goodies/source/filter.vcl/eps/strings.hrc32
-rw-r--r--goodies/source/filter.vcl/eras/eras.cxx320
-rw-r--r--goodies/source/filter.vcl/eras/exports.map7
-rw-r--r--goodies/source/filter.vcl/eras/makefile.mk71
-rw-r--r--goodies/source/filter.vcl/etiff/etiff.cxx651
-rw-r--r--goodies/source/filter.vcl/etiff/exports.map7
-rw-r--r--goodies/source/filter.vcl/etiff/makefile.mk69
-rw-r--r--goodies/source/filter.vcl/expm/expm.cxx305
-rw-r--r--goodies/source/filter.vcl/expm/exports.map7
-rw-r--r--goodies/source/filter.vcl/expm/makefile.mk70
-rw-r--r--goodies/source/filter.vcl/icgm/actimpr.cxx1137
-rw-r--r--goodies/source/filter.vcl/icgm/bitmap.cxx413
-rw-r--r--goodies/source/filter.vcl/icgm/bitmap.hxx90
-rw-r--r--goodies/source/filter.vcl/icgm/bundles.cxx291
-rw-r--r--goodies/source/filter.vcl/icgm/bundles.hxx176
-rw-r--r--goodies/source/filter.vcl/icgm/cgm.cxx930
-rw-r--r--goodies/source/filter.vcl/icgm/cgm.hxx181
-rw-r--r--goodies/source/filter.vcl/icgm/cgmres.hrc31
-rw-r--r--goodies/source/filter.vcl/icgm/cgmtypes.hxx148
-rw-r--r--goodies/source/filter.vcl/icgm/chart.cxx103
-rw-r--r--goodies/source/filter.vcl/icgm/chart.hxx217
-rw-r--r--goodies/source/filter.vcl/icgm/class0.cxx141
-rw-r--r--goodies/source/filter.vcl/icgm/class1.cxx234
-rw-r--r--goodies/source/filter.vcl/icgm/class2.cxx230
-rw-r--r--goodies/source/filter.vcl/icgm/class3.cxx147
-rw-r--r--goodies/source/filter.vcl/icgm/class4.cxx864
-rw-r--r--goodies/source/filter.vcl/icgm/class5.cxx527
-rw-r--r--goodies/source/filter.vcl/icgm/class7.cxx240
-rw-r--r--goodies/source/filter.vcl/icgm/classx.cxx265
-rw-r--r--goodies/source/filter.vcl/icgm/elements.cxx398
-rw-r--r--goodies/source/filter.vcl/icgm/elements.hxx148
-rw-r--r--goodies/source/filter.vcl/icgm/exports.map7
-rw-r--r--goodies/source/filter.vcl/icgm/main.hxx66
-rw-r--r--goodies/source/filter.vcl/icgm/makefile.mk84
-rw-r--r--goodies/source/filter.vcl/icgm/outact.cxx203
-rw-r--r--goodies/source/filter.vcl/icgm/outact.hxx151
-rw-r--r--goodies/source/filter.vcl/idxf/dxf2mtf.cxx983
-rw-r--r--goodies/source/filter.vcl/idxf/dxf2mtf.hxx131
-rw-r--r--goodies/source/filter.vcl/idxf/dxfblkrd.cxx142
-rw-r--r--goodies/source/filter.vcl/idxf/dxfblkrd.hxx90
-rw-r--r--goodies/source/filter.vcl/idxf/dxfentrd.cxx874
-rw-r--r--goodies/source/filter.vcl/idxf/dxfentrd.hxx605
-rw-r--r--goodies/source/filter.vcl/idxf/dxfgrprd.cxx364
-rw-r--r--goodies/source/filter.vcl/idxf/dxfgrprd.hxx158
-rw-r--r--goodies/source/filter.vcl/idxf/dxfreprd.cxx388
-rw-r--r--goodies/source/filter.vcl/idxf/dxfreprd.hxx141
-rw-r--r--goodies/source/filter.vcl/idxf/dxftblrd.cxx351
-rw-r--r--goodies/source/filter.vcl/idxf/dxftblrd.hxx186
-rw-r--r--goodies/source/filter.vcl/idxf/dxfvec.cxx257
-rw-r--r--goodies/source/filter.vcl/idxf/dxfvec.hxx264
-rw-r--r--goodies/source/filter.vcl/idxf/exports.map7
-rw-r--r--goodies/source/filter.vcl/idxf/idxf.cxx85
-rw-r--r--goodies/source/filter.vcl/idxf/makefile.mk83
-rw-r--r--goodies/source/filter.vcl/ieps/exports.map7
-rw-r--r--goodies/source/filter.vcl/ieps/ieps.cxx732
-rw-r--r--goodies/source/filter.vcl/ieps/makefile.mk70
-rw-r--r--goodies/source/filter.vcl/ios2met/exports.map7
-rw-r--r--goodies/source/filter.vcl/ios2met/ios2met.cxx2787
-rw-r--r--goodies/source/filter.vcl/ios2met/makefile.mk72
-rw-r--r--goodies/source/filter.vcl/ipbm/exports.map7
-rw-r--r--goodies/source/filter.vcl/ipbm/ipbm.cxx567
-rw-r--r--goodies/source/filter.vcl/ipbm/makefile.mk72
-rw-r--r--goodies/source/filter.vcl/ipcd/exports.map7
-rw-r--r--goodies/source/filter.vcl/ipcd/ipcd.cxx425
-rw-r--r--goodies/source/filter.vcl/ipcd/makefile.mk71
-rw-r--r--goodies/source/filter.vcl/ipcx/exports.map7
-rw-r--r--goodies/source/filter.vcl/ipcx/ipcx.cxx461
-rw-r--r--goodies/source/filter.vcl/ipcx/makefile.mk71
-rw-r--r--goodies/source/filter.vcl/ipict/exports.map7
-rw-r--r--goodies/source/filter.vcl/ipict/ipict.cxx1940
-rw-r--r--goodies/source/filter.vcl/ipict/makefile.mk72
-rw-r--r--goodies/source/filter.vcl/ipsd/exports.map7
-rw-r--r--goodies/source/filter.vcl/ipsd/ipsd.cxx766
-rw-r--r--goodies/source/filter.vcl/ipsd/makefile.mk71
-rw-r--r--goodies/source/filter.vcl/iras/exports.map7
-rw-r--r--goodies/source/filter.vcl/iras/iras.cxx386
-rw-r--r--goodies/source/filter.vcl/iras/makefile.mk71
-rw-r--r--goodies/source/filter.vcl/itga/exports.map7
-rw-r--r--goodies/source/filter.vcl/itga/itga.cxx761
-rw-r--r--goodies/source/filter.vcl/itga/makefile.mk71
-rw-r--r--goodies/source/filter.vcl/itiff/ccidecom.cxx1115
-rw-r--r--goodies/source/filter.vcl/itiff/ccidecom.hxx128
-rw-r--r--goodies/source/filter.vcl/itiff/exports.map7
-rw-r--r--goodies/source/filter.vcl/itiff/itiff.cxx1345
-rw-r--r--goodies/source/filter.vcl/itiff/lzwdecom.cxx195
-rw-r--r--goodies/source/filter.vcl/itiff/lzwdecom.hxx82
-rw-r--r--goodies/source/filter.vcl/itiff/makefile.mk75
-rw-r--r--goodies/source/graphic/grfattr.cxx121
-rw-r--r--goodies/source/graphic/grfcache.cxx1055
-rw-r--r--goodies/source/graphic/grfcache.hxx112
-rw-r--r--goodies/source/graphic/grfmgr.cxx1319
-rw-r--r--goodies/source/graphic/grfmgr2.cxx2385
-rw-r--r--goodies/source/graphic/makefile.mk61
-rw-r--r--goodies/source/inv/expl.cxx140
-rw-r--r--goodies/source/inv/expl.hxx71
-rw-r--r--goodies/source/inv/gegner.src163
-rw-r--r--goodies/source/inv/invader.cxx624
-rw-r--r--goodies/source/inv/invader.hrc63
-rw-r--r--goodies/source/inv/invader.hxx135
-rw-r--r--goodies/source/inv/invader1.cxx447
-rw-r--r--goodies/source/inv/makefile.mk159
-rw-r--r--goodies/source/inv/monst.cxx427
-rw-r--r--goodies/source/inv/monst.hxx135
-rw-r--r--goodies/source/inv/score.cxx155
-rw-r--r--goodies/source/inv/score.hxx61
-rw-r--r--goodies/source/inv/shapes.cxx485
-rw-r--r--goodies/source/inv/shapes.hxx194
-rw-r--r--goodies/source/inv/strings.hrc57
-rw-r--r--goodies/source/inv/strings.src136
-rw-r--r--goodies/source/inv/waves.hxx121
-rw-r--r--goodies/source/unographic/descriptor.cxx508
-rw-r--r--goodies/source/unographic/descriptor.hxx143
-rw-r--r--goodies/source/unographic/graphic.cxx308
-rw-r--r--goodies/source/unographic/graphic.hxx106
-rwxr-xr-xgoodies/source/unographic/graphicuno.cxx169
-rw-r--r--goodies/source/unographic/graphicunofactory.cxx106
-rwxr-xr-xgoodies/source/unographic/makefile.mk64
-rw-r--r--goodies/source/unographic/provider.cxx862
-rw-r--r--goodies/source/unographic/provider.hxx85
-rw-r--r--goodies/source/unographic/renderer.cxx351
-rw-r--r--goodies/source/unographic/renderer.hxx103
-rw-r--r--goodies/source/unographic/transformer.cxx162
-rw-r--r--goodies/source/unographic/transformer.hxx66
-rwxr-xr-xgoodies/util/goodies.dxp3
-rw-r--r--goodies/util/makefile.mk105
-rw-r--r--goodies/util/shelp.icobin6750 -> 0 bytes
210 files changed, 0 insertions, 55300 deletions
diff --git a/goodies/inc/agapidll.hxx b/goodies/inc/agapidll.hxx
deleted file mode 100644
index a8cd14dcc71d..000000000000
--- a/goodies/inc/agapidll.hxx
+++ /dev/null
@@ -1,80 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: agapidll.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _AGAPIDLL_HXX
-#define _AGAPIDLL_HXX
-
-#include "tools/agapi.hxx"
-#include "agsdkdll.hxx"
-
-class ChannelList;
-class ChannelAgentItem;
-class INetURLObject;
-class Library;
-
-class AgentApiDll : public AgentApi
-{
- Library* pAgentDll;
- ChannelApiFncs aChannelApiFncs;
-
- FncInitAgent fncInitAgent;
- FncShutDownAgent fncShutDownAgent;
- FncNewDataPermission fncNewDataPermission;
- FncNewData fncNewData;
- FncNotifyChannelObjFile fncNotifyChannelObjFile;
- FncNotifyChannelObjData fncNotifyChannelObjData;
- FncRegisterChannels fncRegisterChannels;
- FncRegisterUpdateTransmitter fncRegisterUpdateTransmitter;
-
-protected:
- friend class ChannelList;
- virtual BOOL StartAgent();
-
-public:
- AgentApiDll(ChannelAgentItem* pAgent);
- ~AgentApiDll();
-
- virtual void InitAgent();
- virtual void ShutDownAgent();
-
- virtual BOOL NewDataPermission(const String& rChannelName);
- virtual void NewData(const String& rChannelName, const INetURLObject& rURL);
-
- virtual void NotifyChannelObjFile(const INetURLObject& rURL,
- const String& rFileName);
- virtual void NotifyChannelObjData(const INetURLObject& rURL,
- void* pBuffer, long nOffset, long nLen, long nTotalLen);
-
- virtual void RegisterChannels();
- virtual void RegisterUpdateTransmitter();
-};
-
-#endif //_AGAPIDLL_HXX
-
diff --git a/goodies/inc/agsdkdll.hxx b/goodies/inc/agsdkdll.hxx
deleted file mode 100644
index 2cd9ef7d1e7f..000000000000
--- a/goodies/inc/agsdkdll.hxx
+++ /dev/null
@@ -1,153 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: agsdkdll.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _AGSDKDLL_HXX
-#define _AGSDKDLL_HXX
-
-#ifndef _SV_CALL
-#if defined(WIN) || defined(WNT) || ( defined(OS2) && !defined( ICC ))
-#define _SV_CALL _cdecl
-#elif defined( ICC ) && defined( OS2 )
-#define _SV_CALL __cdecl
-#else
-#define _SV_CALL
-#endif
-#endif
-
-#define AGSDKDLL_VERSION 2
-
-typedef void* AgentInst;
-
-////////////////////////////////////////////////////////////////////////////////
-// Channel API Functions
-//
-
-enum AgentStreamType {
- AS_LOCAL_FILE = 1,
- AS_MEMORY = 2
-};
-
-typedef void (_SV_CALL *FncChShutDownAgent)(AgentInst pAg);
-
-typedef void (_SV_CALL *FncChSetLastSuccUpd)(AgentInst pAg);
-
-typedef void (_SV_CALL *FncChGetChannelObj)(AgentInst pAg, const char* pURL,
- AgentStreamType eStreamType, const char* pFileName);
-
-typedef void (_SV_CALL *FncChAddChannelItem)(AgentInst pAg, const char* pName,
- const char* pTransmitter, const char* pChannel, unsigned short nUpdPeriode,
- const char* pAgentName );
-
-typedef void (_SV_CALL *FncChDelChannelItem)(AgentInst pAg, const char* pChName);
-
-typedef void (_SV_CALL *FncChSetTransmitter)(AgentInst pAg, const char* pChName,
- const char* pURL);
-
-typedef void (_SV_CALL *FncChSetChannel)(AgentInst pAg, const char* pChName,
- const char* pRelURL);
-
-typedef void (_SV_CALL *FncChSetChannelName)(AgentInst pAg, const char* pChName,
- const char* pNewChName);
-
-typedef void (_SV_CALL *FncChSetUpdPeriode)(AgentInst pAg, const char* pChName,
- unsigned short nUpdPeriode);
-
-typedef void (_SV_CALL *FncChSetChannelAgentName)(AgentInst pAg, const char* pChName,
- const char* pAgName);
-
-typedef void (_SV_CALL *FncChSetUpdateTransmitter)(AgentInst pAg,
- const char* pTransmitter);
-
-typedef const char* (_SV_CALL *FncChGetAgentSourceURL)(AgentInst pAg);
-
-struct ChannelApiFncs
-{
- unsigned short nVersion;
- FncChShutDownAgent fncShutDownAgent;
- FncChSetLastSuccUpd fncSetLastSuccUpd;
- FncChGetChannelObj fncGetChannelObj;
- FncChAddChannelItem fncAddChannelItem;
- FncChDelChannelItem fncDelChannelItem;
- FncChSetTransmitter fncSetTransmitter;
- FncChSetChannel fncSetChannel;
- FncChSetChannelName fncSetChannelName;
- FncChSetUpdPeriode fncSetUpdPeriode;
- FncChSetChannelAgentName fncSetChannelAgentName;
- FncChSetUpdateTransmitter fncSetUpdateTransmitter;
- FncChGetAgentSourceURL fncGetAgentSourceURL;
-};
-
-////////////////////////////////////////////////////////////////////////////////
-// Agent API Functions
-//
-
-#if defined(WIN) || defined(WNT) || defined(OS2) || defined(UNX)
-extern "C" {
-#endif
-
-typedef void (_SV_CALL *FncInitAgent)(AgentInst, ChannelApiFncs*);
-void _SV_CALL InitAgent(AgentInst, ChannelApiFncs*);
-
-typedef void (_SV_CALL *FncShutDownAgent)();
-void _SV_CALL ShutDownAgent();
-
-// NewDataPermission
-// ChannelName
-typedef unsigned char (_SV_CALL *FncNewDataPermission)(const char*);
-unsigned char _SV_CALL NewDataPermission(const char*);
-
-// NewData
-// ChannelName, URL
-typedef void (_SV_CALL *FncNewData)(const char*, const char*);
-void _SV_CALL NewData(const char*, const char*);
-
-// NotifyChannelObjFile
-// URL, abs. Filename
-typedef void (_SV_CALL *FncNotifyChannelObjFile)(const char*, const char*);
-void _SV_CALL NotifyChannelObjFile(const char*, const char*);
-
-// NotifyChannelObjData
-// URL, Buffer, Offset, Len, TotalLen
-typedef void (_SV_CALL *FncNotifyChannelObjData)(const char*, void*, long, long, long);
-void _SV_CALL NotifyChannelObjData(const char*, void*, long, long, long);
-
-typedef void (_SV_CALL *FncRegisterChannels)(AgentInst, ChannelApiFncs*);
-void _SV_CALL RegisterChannels(AgentInst, ChannelApiFncs*);
-
-typedef void (_SV_CALL *FncRegisterUpdateTransmitter)(AgentInst, ChannelApiFncs*);
-void _SV_CALL RegisterUpdateTransmitter(AgentInst, ChannelApiFncs*);
-
-#if defined(WIN) || defined(WNT) || defined(OS2) || defined(UNX)
-}
-#endif
-
-#endif //_AGSDKDLL_HXX
-
-
diff --git a/goodies/inc/b3dtrans.hxx b/goodies/inc/b3dtrans.hxx
deleted file mode 100644
index 0d78c918c22c..000000000000
--- a/goodies/inc/b3dtrans.hxx
+++ /dev/null
@@ -1,354 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: b3dtrans.hxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _B3D_B3DTRANS_HXX
-#define _B3D_B3DTRANS_HXX
-
-// Zu verwendender DephRange des Z-Buffers
-#define ZBUFFER_DEPTH_RANGE ((double)(256L * 256L * 256L))
-
-#include <basegfx/matrix/b3dhommatrix.hxx>
-#include <basegfx/range/b3drange.hxx>
-#include <tools/gen.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/point/b2dpoint.hxx>
-
-// Vorausdeklarationen
-
-/*************************************************************************
-|*
-|* Unterstuetzte Methoden, um das Seitenverhaeltnis einzuhalten
-|*
-\************************************************************************/
-
-enum Base3DRatio
-{
- Base3DRatioGrow = 1,
- Base3DRatioShrink,
- Base3DRatioMiddle
-};
-
-/*************************************************************************
-|*
-|* Typ der Projektion
-|*
-\************************************************************************/
-
-enum Base3DProjectionType
-{
- Base3DProjectionTypeParallel = 1,
- Base3DProjectionTypePerspective
-};
-
-/*************************************************************************
-|*
-|* Transformationen fuer alle 3D Ausgaben
-|*
-\************************************************************************/
-
-class B3dTransformationSet
-{
-private:
- // Object Matrix Object -> World
- basegfx::B3DHomMatrix maObjectTrans;
- basegfx::B3DHomMatrix maInvObjectTrans;
-
- // Orientation Matrix
- basegfx::B3DHomMatrix maOrientation;
- basegfx::B3DHomMatrix maInvOrientation;
-
- // Projection Matrix
- basegfx::B3DHomMatrix maProjection;
- basegfx::B3DHomMatrix maInvProjection;
-
- // Texture Matrices
- basegfx::B2DHomMatrix maTexture;
-
- // Speziell zum Umwandeln von Punkten Objekt -> Device
- basegfx::B3DHomMatrix maObjectToDevice;
-
- // Transponierte Inverse fuer Vectortransformationen
- basegfx::B3DHomMatrix maInvTransObjectToEye;
-
- // Transformation World->View
- basegfx::B3DHomMatrix maMatFromWorldToView;
- basegfx::B3DHomMatrix maInvMatFromWorldToView;
-
- // Parameters for ViewportTransformation
- basegfx::B3DVector maScale;
- basegfx::B3DVector maTranslate;
-
- // ViewPlane DeviceRectangle (vom Benutzer gesetzt)
- double mfLeftBound;
- double mfRightBound;
- double mfBottomBound;
- double mfTopBound;
-
- // Near and far clipping planes
- double mfNearBound;
- double mfFarBound;
-
- // Seitenverhaeltnis der 3D Abbildung (Y / X)
- // default ist 1:1 -> 1.0
- // Deaktivieren mit 0.0 als Wert
- double mfRatio;
-
- // Der gesetzte Ausgabebereich (in logischen Koordinaten)
- // und der dazugehoerige sichtbare Bereich
- Rectangle maViewportRectangle;
- Rectangle maVisibleRectangle;
-
- // Die tatsaechlich von CalcViewport gesetzten Abmessungen
- // des sichtbaren Bereichs (in logischen Koordinaten)
- Rectangle maSetBound;
-
- // Methode zur Aufrechterhaltung des Seitenverhaeltnisses
- // default ist Base3DRatioGrow
- Base3DRatio meRatio;
-
- // Flags
- unsigned mbPerspective : 1;
- unsigned mbWorldToViewValid : 1;
- unsigned mbInvTransObjectToEyeValid : 1;
- unsigned mbObjectToDeviceValid : 1;
- unsigned mbProjectionValid : 1;
-
-public:
- B3dTransformationSet();
- virtual ~B3dTransformationSet();
-
- // Zurueck auf Standard
- void Reset();
-
- // ObjectTrans
- void SetObjectTrans(const basegfx::B3DHomMatrix& rObj);
- const basegfx::B3DHomMatrix& GetObjectTrans() { return maObjectTrans; }
- const basegfx::B3DHomMatrix& GetInvObjectTrans() { return maInvObjectTrans; }
-
- // Orientation
- void SetOrientation(
- basegfx::B3DPoint aVRP = basegfx::B3DPoint(0.0,0.0,1.0),
- basegfx::B3DVector aVPN = basegfx::B3DVector(0.0,0.0,1.0),
- basegfx::B3DVector aVUP = basegfx::B3DVector(0.0,1.0,0.0));
- void SetOrientation(basegfx::B3DHomMatrix& mOrient);
- const basegfx::B3DHomMatrix& GetOrientation() { return maOrientation; }
- const basegfx::B3DHomMatrix& GetInvOrientation() { return maInvOrientation; }
-
- // Projection
- void SetProjection(const basegfx::B3DHomMatrix& mProject);
- const basegfx::B3DHomMatrix& GetProjection();
- const basegfx::B3DHomMatrix& GetInvProjection();
-
- // Texture
- void SetTexture(const basegfx::B2DHomMatrix& rTxt);
- const basegfx::B2DHomMatrix& GetTexture() { return maTexture; }
-
- // Seitenverhaeltnis und Modus zu dessen Aufrechterhaltung
- double GetRatio() { return mfRatio; }
- void SetRatio(double fNew=1.0);
- Base3DRatio GetRatioMode() { return meRatio; }
- void SetRatioMode(Base3DRatio eNew=Base3DRatioGrow);
-
- // Parameter der ViewportTransformation
- void SetDeviceRectangle(double fL=-1.0, double fR=1.0, double fB=-1.0, double fT=1.0, sal_Bool bBroadCastChange=sal_True);
- void SetDeviceVolume(const basegfx::B3DRange& rVol, sal_Bool bBroadCastChange=sal_True);
- void GetDeviceRectangle(double &fL, double &fR, double& fB, double& fT);
- basegfx::B3DRange GetDeviceVolume();
- double GetDeviceRectangleWidth() const { return mfRightBound - mfLeftBound; }
- double GetDeviceRectangleHeight() const { return mfTopBound - mfBottomBound; }
- void SetFrontClippingPlane(double fF=0.0);
- double GetFrontClippingPlane() { return mfNearBound; }
- void SetBackClippingPlane(double fB=1.0);
- double GetBackClippingPlane() { return mfFarBound; }
- void SetPerspective(sal_Bool bNew);
- sal_Bool GetPerspective() { return mbPerspective; }
- void SetViewportRectangle(Rectangle& rRect, Rectangle& rVisible);
- void SetViewportRectangle(Rectangle& rRect) { SetViewportRectangle(rRect, rRect); }
- const Rectangle& GetViewportRectangle() { return maViewportRectangle; }
- void CalcViewport();
-
- // Spezielle Matritzen anfordern
- basegfx::B3DHomMatrix GetMatFromObjectToView();
-
- // Transponierte Inverse fuer Vectortransformationen
- const basegfx::B3DHomMatrix& GetInvTransObjectToEye();
-
- // Speziell zum Umwandeln von Punkten Objekt -> Device
- const basegfx::B3DHomMatrix& GetObjectToDevice();
-
- // Speziell zum Umwandeln von Punkten World -> View
- const basegfx::B3DHomMatrix& GetMatFromWorldToView();
- const basegfx::B3DHomMatrix& GetInvMatFromWorldToView();
-
- // Bounds des Viewports lesen
- const Rectangle& GetLogicalViewportBounds();
- const basegfx::B3DVector& GetScale();
- const basegfx::B3DVector& GetTranslate();
-
- // Direkter Zugriff auf verschiedene Transformationen
- const basegfx::B3DPoint WorldToEyeCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint EyeToWorldCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint EyeToViewCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint ViewToEyeCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint WorldToViewCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint ViewToWorldCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint DeviceToViewCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint ViewToDeviceCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint ObjectToWorldCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint WorldToObjectCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint ObjectToViewCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint ViewToObjectCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint ObjectToEyeCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint EyeToObjectCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint DeviceToEyeCoor(const basegfx::B3DPoint& rVec);
- const basegfx::B3DPoint EyeToDeviceCoor(const basegfx::B3DPoint& rVec);
-
- const basegfx::B3DPoint InvTransObjectToEye(const basegfx::B3DPoint& rVec);
- const basegfx::B2DPoint TransTextureCoor(const basegfx::B2DPoint& rVec);
-
- static void Frustum(
- basegfx::B3DHomMatrix& rTarget,
- double fLeft = -1.0, double fRight = 1.0,
- double fBottom = -1.0, double fTop = 1.0,
- double fNear = 0.001, double fFar = 1.0);
- static void Ortho(
- basegfx::B3DHomMatrix& rTarget,
- double fLeft = -1.0, double fRight = 1.0,
- double fBottom = -1.0, double fTop = 1.0,
- double fNear = 0.0, double fFar = 1.0);
- static void Orientation(
- basegfx::B3DHomMatrix& rTarget,
- basegfx::B3DPoint aVRP = basegfx::B3DPoint(0.0,0.0,1.0),
- basegfx::B3DVector aVPN = basegfx::B3DVector(0.0,0.0,1.0),
- basegfx::B3DVector aVUP = basegfx::B3DVector(0.0,1.0,0.0));
-
-protected:
- void PostSetObjectTrans();
- void PostSetOrientation();
- void PostSetProjection();
- void PostSetTexture();
- void PostSetViewport();
-
- void CalcMatObjectToDevice();
- void CalcMatFromWorldToView();
- void CalcMatInvTransObjectToEye();
-
- virtual void DeviceRectangleChange();
-};
-
-/*************************************************************************
-|*
-|* Viewport fuer B3D
-|*
-|* Verwendet wird hier ein vereinfachtes System, bei dem der abzubildende
-|* Punkt durch VRP repraesentiert wird
-|*
-\************************************************************************/
-
-class B3dViewport : public B3dTransformationSet
-{
-private:
- basegfx::B3DPoint aVRP; // View Reference Point
- basegfx::B3DVector aVPN; // View Plane Normal
- basegfx::B3DVector aVUV; // View Up Vector
-
-public:
- B3dViewport();
- virtual ~B3dViewport();
-
- void SetVRP(const basegfx::B3DPoint& rNewVRP);
- void SetVPN(const basegfx::B3DVector& rNewVPN);
- void SetVUV(const basegfx::B3DVector& rNewVUV);
- void SetViewportValues(
- const basegfx::B3DPoint& rNewVRP,
- const basegfx::B3DVector& rNewVPN,
- const basegfx::B3DVector& rNewVUV);
-
- const basegfx::B3DPoint& GetVRP() const { return aVRP; }
- const basegfx::B3DVector& GetVPN() const { return aVPN; }
- const basegfx::B3DVector& GetVUV() const { return aVUV; }
-
-protected:
- void CalcOrientation();
-};
-
-/*************************************************************************
-|*
-|* Kamera fuer B3D
-|*
-\************************************************************************/
-
-class B3dCamera : public B3dViewport
-{
-private:
- basegfx::B3DPoint aPosition;
- basegfx::B3DPoint aCorrectedPosition;
- basegfx::B3DVector aLookAt;
- double fFocalLength;
- double fBankAngle;
-
- unsigned bUseFocalLength : 1;
-
-public:
- B3dCamera(
- const basegfx::B3DPoint& rPos = basegfx::B3DPoint(0.0, 0.0, 1.0),
- const basegfx::B3DVector& rLkAt = basegfx::B3DVector(0.0, 0.0, 0.0),
- double fFocLen = 35.0, double fBnkAng = 0.0,
- sal_Bool bUseFocLen = sal_False);
- virtual ~B3dCamera();
-
- // Positionen
- void SetPosition(const basegfx::B3DPoint& rNewPos);
- const basegfx::B3DPoint& GetPosition() const { return aPosition; }
- void SetLookAt(const basegfx::B3DVector& rNewLookAt);
- const basegfx::B3DVector& GetLookAt() const { return aLookAt; }
- void SetPositionAndLookAt(const basegfx::B3DPoint& rNewPos, const basegfx::B3DVector& rNewLookAt);
-
- // Brennweite in mm
- void SetFocalLength(double fLen);
- double GetFocalLength() const { return fFocalLength; }
-
- // Neigung links/rechts
- void SetBankAngle(double fAngle);
- double GetBankAngle() const { return fBankAngle; }
-
- // FocalLength Flag
- void SetUseFocalLength(sal_Bool bNew);
- sal_Bool GetUseFocalLength() const { return (sal_Bool)bUseFocalLength; }
-
-protected:
- void CalcNewViewportValues();
- sal_Bool CalcFocalLength();
-
- virtual void DeviceRectangleChange();
-};
-
-
-#endif // _B3D_B3DTRANS_HXX
diff --git a/goodies/inc/chagent.hxx b/goodies/inc/chagent.hxx
deleted file mode 100644
index fcd78184db37..000000000000
--- a/goodies/inc/chagent.hxx
+++ /dev/null
@@ -1,199 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: chagent.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CHAGENT_HXX
-#define _CHAGENT_HXX
-
-#include <tools/list.hxx>
-#include <tools/urlobj.hxx>
-
-#include <tools/agitem.hxx>
-
-class ChannelAgentItem;
-class ChannelItem;
-
-DECLARE_LIST(ChannelAgentItemList,ChannelAgentItem*)
-
-enum AgentType
-{
- AG_TYP_DONTKNOW = 0,
- AG_TYP_DLL = 1,
- AG_TYP_BASIC = 2,
- AG_TYP_JAVA = 3
-};
-
-#define STR_AG_TYP_DLL "DLL"
-#define STR_AG_TYP_BASIC "BASIC"
-#define STR_AG_TYP_JAVA "JAVA"
-
-class ChannelAgentItem : public AgentItem
-{
- AgentType eAgentType;
- String aChAgentName;
- INetURLObject aLocation;
- ULONG nLastSuccUpdDate;
- long nLastSuccUpdTime;
- INetURLObject aSource;
- BOOL bEnabled;
- DateTime aLastCheckDate;
-
- // runtime
- BOOL bIsActive;
- BOOL bIsInUpdate;
- BOOL bRestartAfterUpdate;
-
- ULONG nChObjDate;
- long nChObjTime;
- ChannelItem* pActChannel;
- AgentApi* pAgentApi;
- ChannelApi* pChannelApi;
- INetURLObject aSourceURL;
-
- Link aBTXShutdownCallback;
-
-protected:
- friend class ChannelApi;
- void DeleteApis();
-
-public:
- ChannelAgentItem();
- ~ChannelAgentItem();
-
- // Set / Get AgentType
- void SetChannelAgentType(AgentType eNew)
- { eAgentType = eNew; }
- AgentType GetChannelAgentType() const
- { return eAgentType; }
-
- // Set / Get ChAgentName
- void SetChAgentName(const String& rNew)
- { aChAgentName = rNew; }
- virtual const String& GetChAgentName() const
- { return aChAgentName; }
-
- // Set / Get Location
- void SetLocation(const INetURLObject& rNew)
- { aLocation = rNew; }
- virtual const INetURLObject& GetLocation() const
- { return aLocation; }
-
- // Set / Get LastSuccUpdDate
- void SetLastSuccUpdDate(ULONG nNew)
- { nLastSuccUpdDate = nNew; }
- ULONG GetLastSuccUpdDate() const
- { return nLastSuccUpdDate; }
-
- // Set / Get LastSuccUpdTime
- void SetLastSuccUpdTime(ULONG nNew)
- { nLastSuccUpdTime = nNew; }
- ULONG GetLastSuccUpdTime() const
- { return nLastSuccUpdTime; }
-
- // Set / Get LastCheckDate
- void SetLastCheckDate( const DateTime& rNew )
- { aLastCheckDate = rNew; }
- const DateTime& GetLastCheckDate()
- { return aLastCheckDate; }
-
- // Set / Get Source
- void SetSource(const INetURLObject& rNew)
- { aSource = rNew; }
- const INetURLObject& GetSource() const
- { return aSource; }
-
- // Set / Get Enabled
- virtual void SetEnabled(BOOL bNew = TRUE)
- { bEnabled = bNew; }
- virtual BOOL IsEnabled() const
- { return bEnabled; }
-
- // Set / Get IsActive
- virtual void SetIsActive(BOOL bNew)
- { bIsActive = bNew; }
- virtual BOOL IsActive() const
- { return bIsActive; }
-
- // runtime ////////////////////////////////////////////////////////////////
-
- const INetURLObject& GetAgentSourceURL() const
- { return aSourceURL; }
- void SetAgentSourceURL(const INetURLObject& rNew)
- { aSourceURL = rNew; }
-
- // Set / Get ActiveChannel
- void SetActiveChannel(ChannelItem* pChItem)
- { pActChannel = pChItem; }
- ChannelItem* GetActiveChannel() const
- { return pActChannel; }
-
- // Set / Get IsInUpdate
- void SetIsInUpdate( BOOL bNew )
- { bIsInUpdate = bNew; }
- BOOL IsInUpdate() const
- { return bIsInUpdate; }
-
- // Set / Get RestartAfterUpdate
- void SetRestartAfterUpdate( BOOL bNew )
- { bRestartAfterUpdate = bNew; }
- BOOL RestartAfterUpdate() const
- { return bRestartAfterUpdate; }
-
- // AgentAPI
- void SetApi(AgentApi* pNew )
- { pAgentApi = pNew; }
- virtual AgentApi* GetApi() const
- { return pAgentApi; }
-
- // ChannelAPI
- void SetChApi(ChannelApi* pNew )
- { pChannelApi = pNew; }
- virtual ChApi* GetChApi() const
- { return (ChApi*)pChannelApi; }
-
- // Set / Get ChObjDate
- void SetChObjDate(ULONG nNew)
- { nChObjDate = nNew; }
- ULONG GetChObjDate() const
- { return nChObjDate; }
-
- // Set / Get ChObjTime
- void SetChObjTime(long nNew)
- { nChObjTime = nNew; }
- long GetChObjTime() const
- { return nChObjTime; }
-
- void SetBTXShutDownCallBack(const Link& rLnk )
- { aBTXShutdownCallback = rLnk; }
- const Link& GetBTXShutDownCallBack()
- { return aBTXShutdownCallback; }
-
-};
-
-#endif // _CHAGENT_HXX
diff --git a/goodies/inc/chanapi.hxx b/goodies/inc/chanapi.hxx
deleted file mode 100644
index abbb272ef22f..000000000000
--- a/goodies/inc/chanapi.hxx
+++ /dev/null
@@ -1,84 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: chanapi.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CHANAPI_HXX
-#define _CHANAPI_HXX
-
-
-#include <tools/list.hxx>
-#include <tools/chapi.hxx>
-
-#ifndef _INETSES_HXX //autogen
-#include <inet/inetsess.hxx>
-#endif
-
-class ChannelAgentItem;
-class ChannelList;
-class INetURLObject;
-class GetChannelObj;
-
-DECLARE_LIST(GetChObjList, GetChannelObj*);
-
-class ChannelApi : public ChApi
-{
- INetSessionRef xINetSession;
-
- ChannelAgentItem* pChAgent;
- ChannelList* pChannelList;
-
- GetChObjList* pGetChObjList;
-
- DECL_LINK(CloseAgentEvt, void*);
- DECL_LINK(CloseChannelObjEvt, void*);
- DECL_LINK(GetChannelObjNotify, GetChannelObj*);
-public:
- ChannelApi( ChannelAgentItem* pAgent, INetSession* pISess,
- ChannelList* pChLst );
- ~ChannelApi();
-
- void ShutDownAgent();
- void SetLastSuccUpd();
-
- void GetChannelObject( const INetURLObject& rURL, RequestType eStreamType,
- const String& rFileName );
- void AddChannelItem( const String& aChName, const INetURLObject& aTransmitter,
- const String& aChannel, USHORT nUpdPeriode,
- const String& rChAgentName );
- void DelChannelItem( const String& aChName );
- void SetChTransmitter( const String& aChName, const String& rNewVal );
- void SetChannel( const String& aChName, const String& rNewVal );
- void SetChannelName( const String& aChName, const String& rNewVal );
- void SetChUpdPeriode( const String& aChName, USHORT nUpdPeriode );
- void SetChannelAgentName( const String& aChName, const String& rNewVal );
-
- void SetUpdateTransmitter(ChannelAgentItem* pAgent, const INetURLObject& rTransmitter);
-};
-
-#endif //_CHANAPI_HXX
diff --git a/goodies/inc/channel.hxx b/goodies/inc/channel.hxx
deleted file mode 100644
index bd609bb8d544..000000000000
--- a/goodies/inc/channel.hxx
+++ /dev/null
@@ -1,113 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: channel.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CHANNEL_HXX
-#define _CHANNEL_HXX
-
-#include <tools/list.hxx>
-#include <tools/urlobj.hxx>
-
-class ChannelItem;
-DECLARE_LIST(ChannelItemList,ChannelItem*)
-
-class ChannelItem
-{
- INetURLObject aTransmitter;
- String aChannel;
- String aChannelName;
- String aChannelAgentName;
- ULONG nUpdatePeriode;
- ULONG nLastTimerTick;
- ULONG nLastSuccUpdDate;
- long nLastSuccUpdTime;
-
- BOOL bAgentUpdChannel;
-
-public:
- ChannelItem();
- ~ChannelItem();
-
- // Set / Get Transmitter
- void SetTransmitter(const INetURLObject& rNew)
- { aTransmitter = rNew; }
- const INetURLObject& GetTransmitter() const
- { return aTransmitter; }
-
- // Set / Get Channel
- void SetChannel(const String& rNew)
- { aChannel = rNew; }
- const String& GetChannel() const
- { return aChannel; }
-
- // Set / Get ChannelName
- void SetChannelName(const String& rNew)
- { aChannelName = rNew; }
- const String& GetChannelName() const
- { return aChannelName; }
-
- // Set / Get ChannelAgentName
- void SetChannelAgentName(const String& rNew)
- { aChannelAgentName = rNew; }
- const String& GetChannelAgentName() const
- { return aChannelAgentName; }
-
- // Set / Get UpdatePeriode
- void SetUpdatePeriode(ULONG nNew)
- { nUpdatePeriode = nNew; }
- ULONG GetUpdatePeriode() const
- { return nUpdatePeriode; }
-
- // Set / Get LastTimerTick
- void SetLastTimerTick(ULONG nNew)
- { nLastTimerTick = nNew; }
- ULONG GetLastTimerTick() const
- { return nLastTimerTick; }
-
- // Set / Get LastSuccUpdDate
- void SetLastSuccUpdDate(ULONG nNew)
- { nLastSuccUpdDate = nNew; }
- ULONG GetLastSuccUpdDate() const
- { return nLastSuccUpdDate; }
-
- // Set / Get LastSuccUpdTime
- void SetLastSuccUpdTime(long nNew)
- { nLastSuccUpdTime = nNew; }
- long GetLastSuccUpdTime() const
- { return nLastSuccUpdTime; }
-
- // Set / Get AgentUpdChannel
- void SetAgentUpdChannel(BOOL bNew)
- { bAgentUpdChannel = bNew; }
- BOOL GetAgentUpdChannel() const
- { return bAgentUpdChannel; }
-};
-
-#endif // _CHANNEL_HXX
-
diff --git a/goodies/inc/chlist.hxx b/goodies/inc/chlist.hxx
deleted file mode 100644
index cabf4f381576..000000000000
--- a/goodies/inc/chlist.hxx
+++ /dev/null
@@ -1,219 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: chlist.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CHLIST_HXX
-#define _CHLIST_HXX
-
-#include <tools/urlobj.hxx>
-#include <tools/datetime.hxx>
-#include <tools/string.hxx>
-#include <vcl/timer.hxx>
-#include <tools/list.hxx>
-#ifndef _INETSES_HXX //autogen
-#include <inet/inetsess.hxx>
-#endif
-
-class Downloader;
-class ChannelAgentItem;
-class ChannelItem;
-class ChannelItemList;
-class ChannelAgentItemList;
-class ChannelTuner;
-class ChannelApi;
-class GetChannelObj;
-class GetChObjList;
-class NotifyItem;
-class Date;
-class Time;
-class ResMgr;
-
-struct UiAgentItem
-{
- String aName;
- ULONG aUpdPeriode;
- DateTime aLastDataDate;
- DateTime aLastUpdDate;
- BOOL bUnregister;
- BOOL bIsEnabled;
-};
-
-DECLARE_LIST(UiAgentList, UiAgentItem*)
-DECLARE_LIST(NotifyList, NotifyItem*)
-
-#ifndef STRING_LIST
-#define STRING_LIST
-#define _TOOLS_STRINGLIST
-#include <tools/sstring.hxx>
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-//
-//
-#define JOBID_DOWNLOAD_AGENT 1
-#define JOBID_UPDATE_AGENT 2
-#define JOBID_CHECK_TRANSMITTER 3
-
-struct BTXResponse
-{
- USHORT nJobId;
- BOOL bFinish;
- ULONG nTransferStatus;
- String aLocalFileName;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-//
-class ChannelList
-{
- ResMgr* pResMgr;
- ChannelAgentItemList* pAgentList;
- ChannelItemList* pChannelList;
- NotifyList* pNotifyList;
- GetChObjList* pGetChObjList;
- UiAgentList* pUiAgentList;
-
- ChannelTuner* pChannelTuner;
-
- String aAgentPath;
- AutoTimer aTimer;
- INetSessionRef xINetSession;
-
- Link aNotifyPermissionHdl;
- Link aCheckFinishHdl;
- // wird von der ChannelList gehandelt; sollte ausgebaut werden; auch im SFX
- Link aAgentUpdateHdl;
- Downloader* pBTXDecoder;
-
- void MakeGodChannel(ChannelAgentItem* pAgent);
- void DeleteUiAgentList();
-
- BOOL StartAgent(ChannelAgentItem* pAgent);
-
- void DoNotifyAgents();
- void NotifyAgent(ChannelAgentItem* pAgent, ULONG nNotifyItemIdx);
-
- void UpdateAgent(ChannelAgentItem* pAgent, ULONG nNotifyItemIdx);
- void SendItemToTuner(ChannelItem* pItem);
-
- BOOL ParseDateTime(const String& rSrc, Date& rDate, Time& rTime);
-
- void UnZipAgent(ChannelAgentItem* pAgent);
- static void EnumFilesCallBack(char *pFile, void *pObject);
-
- DECL_LINK(CheckChannels, void*);
- DECL_LINK(CloseChannelObjEvt, void*);
- DECL_LINK(GetChannelObjNotify, GetChannelObj*);
-protected:
- friend class ChannelApi;
- friend class ChannelTuner;
-
- ChannelItem* GetChannelItemByName(const String& rName);
- ChannelAgentItem* GetAgentItemByName(const String& rName);
-
- void ReadChannelList();
- void ReadAgentList();
- void WriteChannelItem(ChannelItem* pItem);
- void WriteAgentItem(ChannelAgentItem* pChAgent);
- void SetLastSuccUpdChannel(ChannelAgentItem* pChAgent);
- void SetLastSuccUpdAgent(ChannelAgentItem* pChAgent);
- void SetEnabledAgent(ChannelAgentItem* pChAgent);
-
- void DeleteAgentItem(ChannelAgentItem* pItem);
- void DeleteChannelItem(ChannelItem* pItem);
- void RegisterNewChannelItem(ChannelItem* pItem);
-
- void CancelBTX();
- Downloader* GetBTXDecoder() const { return pBTXDecoder; }
- ResMgr* GetResMgr() const { return pResMgr; }
-
- DECL_LINK(CheckBTXFinishHdl, void*);
-
- void NotifyTransmitterMsg(const String& rStr);
-
-public:
- ChannelList(const String& rAgentPath);
- ~ChannelList();
-
- void SubscribeNewAgent(const INetURLObject& rURL);
-
- void SetINetSession(INetSession* pNewSess);
- void SetBTXDecoder(Downloader* pDecoder);
-
- void SetNotifyPermissionHdl(const Link& rHdl) { aNotifyPermissionHdl = rHdl; }
- void SetAgentUpdateHdl(const Link& rHdl) { aAgentUpdateHdl = rHdl; }
-
- void SetTimerInterval(ULONG nNew);
- void StartCheckChannels();
- void StopCheckChannels();
-
- void CheckAgentNow(const String& rAgName, BOOL bCheckGOD = FALSE);
- void SetCheckFinishHdl(const Link& rHdl) { aCheckFinishHdl = rHdl; }
- const Link& GetCheckFinishHdl() const { return aCheckFinishHdl;};
-
- UiAgentList* GetUiAgentList();
- void JoinUiAgentList();
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-//
-class NotifyItem
-{
- ChannelItem* pChItem;
-
- USHORT nGMTOffset;
- ULONG nDateLastUpd;
- long nTimeLastUpd;
- INetURLObject aChObjURL;
- String aChName;
-public:
- NotifyItem( ChannelItem* pItem, short nGMTOff, ULONG nLastDate,
- ULONG nLastTime, const INetURLObject& rChObjURL,
- const String& rChName);
- ~NotifyItem();
-
- ChannelItem* GetChannelItem() const { return pChItem; }
-
- const String& GetChannelName() const { return aChName; }
- const INetURLObject GetChannelObjURL() const { return aChObjURL; }
-
- void SetDateLastUpd(ULONG nNew) { nDateLastUpd = nNew; }
- ULONG GetDateLastUpd() const { return nDateLastUpd; }
-
- void SetTimeLastUpd(long nNew) { nTimeLastUpd = nNew; }
- long GetTimeLastUpd() const { return nTimeLastUpd; }
-
- const String& GetChAgentName() const;
-
-};
-
-#endif // _CHLIST_HXX
-
diff --git a/goodies/inc/chresid.hxx b/goodies/inc/chresid.hxx
deleted file mode 100644
index aff5898f8003..000000000000
--- a/goodies/inc/chresid.hxx
+++ /dev/null
@@ -1,44 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: chresid.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _CHRESID_HXX
-#define _CHRESID_HXX
-
-///////////////////////////////////////////////////////////////////////////////
-// legt den ResourceManager fuer die ChannelList in den APPDaten ab.
-//
-class ChannelResDll
-{
-public:
- ChannelResDll();
- ~ChannelResDll();
-};
-
-#endif //_CHRESID_HXX
-
diff --git a/goodies/inc/chtuner.hxx b/goodies/inc/chtuner.hxx
deleted file mode 100644
index 7a54c1e05a41..000000000000
--- a/goodies/inc/chtuner.hxx
+++ /dev/null
@@ -1,94 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: chtuner.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CHTUNER_HXX
-#define _CHTUNER_HXX
-
-#include <vcl/timer.hxx>
-#include <tools/list.hxx>
-#ifndef _INETSESS_HXX
-#include <inet/inetsess.hxx>
-#endif
-
-
-#include <svl/lstner.hxx>
-
-class ChannelItem;
-class ChannelList;
-class INetRequest;
-class Downloader;
-class StringList;
-
-struct RetryInformation
-{
- String aURL;
- Time aErrorTime;
-};
-
-DECLARE_LIST(ReqList,INetRequest*)
-DECLARE_LIST(RetryList,RetryInformation*)
-
-class ChannelTuner : public SfxListener
-{
- ChannelList* pChannelList;
- INetSessionRef xINetSession;
- ReqList* pReqList;
-
- Link aBTXCallBack;
- Downloader* pBTXDecoder;
- String aBTXFileName;
-
- AutoTimer aRetryTimer;
- RetryList* pRetryList;
-
- void SendHttpReq(const INetURLObject& rURL);
- void SendFtpReq(const INetURLObject& rURL);
- void SendBTXReq(const INetURLObject& rURL);
- void GetFileTrans(const INetURLObject& rURL);
-
- void RemoveRequest(INetRequest* pReq);
- void NotifyChannelList(String& rStr);
-
- virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType,
- const SfxHint& rHint, const TypeId& rHintType);
-
- DECL_LINK(RetryCallBack, void*);
- DECL_LINK(BTXCallBack, void*);
-public:
- ChannelTuner(INetSession* pSess, ChannelList* pChList);
- ~ChannelTuner();
-
- BOOL RequestChannel(ChannelItem* pItem, const Link& rBTXCallBack);
-
- void SetINetSession(INetSession* pNewSess);
- void SetBTXDecoder(Downloader* pDecoder);
-};
-
-#endif // _CHTUNER_HXX
diff --git a/goodies/inc/crypt.hxx b/goodies/inc/crypt.hxx
deleted file mode 100644
index 24e4215a3fda..000000000000
--- a/goodies/inc/crypt.hxx
+++ /dev/null
@@ -1,62 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: crypt.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// include ---------------------------------------------------------------
-#include <tools/gen.hxx>
-
-// define ----------------------------------------------------------------
-
-#define nInOfs 0x00010000UL
-#define nOutOfs 0x00020000UL
-
-// cryptit ---------------------------------------------------------------
-
-extern "C"
-{
-//ULONG testdll(const String& ,const String& , const String&, BOOL DoCrypt );
-//ULONG __EXPORT testdll(const char* pCrInName, const char* pCrOutName,
-// const char* pCrKey, BOOL DoCrypt=1);
-#if defined (UNX)
-extern ULONG cryptit(const char* pCrInName, const char* pCrOutName,
-#else
-#ifdef WNT
-extern ULONG __stdcall cryptit(const char* pCrInName, const char* pCrOutName,
-#else
-#if defined( MTW ) || defined( ICC )
-extern ULONG cryptit(const char* pCrInName, const char* pCrOutName,
-#else
-extern ULONG __pascal cryptit(const char* pCrInName, const char* pCrOutName,
-#endif
-#endif
-#endif
- const char* pCrKey, USHORT DoCrypt);
-}
-
-
diff --git a/goodies/inc/goodies.hrc b/goodies/inc/goodies.hrc
deleted file mode 100644
index 139987c4f6ee..000000000000
--- a/goodies/inc/goodies.hrc
+++ /dev/null
@@ -1,60 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: goodies.hrc,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _GOODIES_HRC
-#define _GOODIES_HRC
-
-#ifndef _SOLAR_HRC
-#include <svl/solar.hrc>
-#endif
-
-// Dialoge ---------------------------------------------------------------
-
-#define DLG_EXPORT_EPCT (RID_GOODIES_START+ 0)
-#define DLG_EXPORT_GIF (RID_GOODIES_START+ 1)
-#define DLG_EXPORT_EMET (RID_GOODIES_START+ 2)
-#define DLG_EXPORT_JPG (RID_GOODIES_START+ 3)
-#define DLG_IMPORT_PCD (RID_GOODIES_START+ 4)
-#define DLG_EXPORT_EPNG (RID_GOODIES_START+ 5)
-#define DLG_EXPORT_EPS (RID_GOODIES_START+ 8)
-#define DLG_EXPORT_EPBM (RID_GOODIES_START+ 9)
-#define DLG_EXPORT_EPGM (RID_GOODIES_START+ 10)
-#define DLG_EXPORT_EPPM (RID_GOODIES_START+ 11)
-#define DLG_SSL_NEWCERT (RID_GOODIES_START+ 12)
-#define DLG_SSL_INFCERT (RID_GOODIES_START+ 13)
-#define PAGE_SSL_NEWCERT_OPEN (RID_GOODIES_START+ 14)
-#define PAGE_SSL_NEWCERT_SHOWCERT (RID_GOODIES_START+ 15)
-#define PAGE_SSL_NEWCERT_ACCEPTCERT (RID_GOODIES_START+ 16)
-#define PAGE_SSL_NEWCERT_WARNCERT (RID_GOODIES_START+ 17)
-#define PAGE_SSL_NEWCERT_READYCERT (RID_GOODIES_START+ 18)
-#define WIN_SSL_INFCERT (RID_GOODIES_START+ 19)
-#define WIN_SSL_INFCERT_EDIT (RID_GOODIES_START+ 20)
-
-#endif
-
diff --git a/goodies/inc/grfmgr.hxx b/goodies/inc/grfmgr.hxx
deleted file mode 100644
index 2cc2146af70a..000000000000
--- a/goodies/inc/grfmgr.hxx
+++ /dev/null
@@ -1,576 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: grfmgr.hxx,v $
- * $Revision: 1.23 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _GRFMGR_HXX
-#define _GRFMGR_HXX
-
-#include <vcl/graph.hxx>
-
-// -----------
-// - Defines -
-// -----------
-
-#define GRFMGR_DRAW_NOTCACHED 0x00000000UL
-#define GRFMGR_DRAW_CACHED 0x00000001UL
-#define GRFMGR_DRAW_BILINEAR 0x00000002UL
-#define GRFMGR_DRAW_USE_DRAWMODE_SETTINGS 0x00000004UL
-#define GRFMGR_DRAW_SUBSTITUTE 0x00000008UL
-#define GRFMGR_DRAW_NO_SUBSTITUTE 0x00000010UL
-#define GRFMGR_DRAW_STANDARD (GRFMGR_DRAW_CACHED|GRFMGR_DRAW_BILINEAR)
-
-// --------------------
-// - AutoSwap Defines -
-// --------------------
-
-#define GRFMGR_AUTOSWAPSTREAM_LINK ((SvStream*)0x00000000UL)
-#define GRFMGR_AUTOSWAPSTREAM_LOADED ((SvStream*)0xfffffffdUL)
-#define GRFMGR_AUTOSWAPSTREAM_TEMP ((SvStream*)0xfffffffeUL)
-#define GRFMGR_AUTOSWAPSTREAM_NONE ((SvStream*)0xffffffffUL)
-
-// ----------------------
-// - Adjustment Defines -
-// ----------------------
-
-#define ADJUSTMENT_NONE 0x00000000UL
-#define ADJUSTMENT_DRAWMODE 0x00000001UL
-#define ADJUSTMENT_COLORS 0x00000002UL
-#define ADJUSTMENT_MIRROR 0x00000004UL
-#define ADJUSTMENT_ROTATE 0x00000008UL
-#define ADJUSTMENT_TRANSPARENCY 0x00000010UL
-#define ADJUSTMENT_ALL 0xFFFFFFFFUL
-
-// ---------
-// - Enums -
-// ---------
-
-enum GraphicDrawMode
-{
- GRAPHICDRAWMODE_STANDARD = 0,
- GRAPHICDRAWMODE_GREYS = 1,
- GRAPHICDRAWMODE_MONO = 2,
- GRAPHICDRAWMODE_WATERMARK = 3
-};
-
-// ------------
-// - Forwards -
-// ------------
-
-class GraphicManager;
-class SvStream;
-class BitmapWriteAccess;
-class GraphicCache;
-class VirtualDevice;
-struct GrfSimpleCacheObj;
-struct ImplTileInfo;
-
-// ---------------
-// - GraphicAttr -
-// ---------------
-
-class GraphicAttr
-{
-private:
-
- long mnDummy1;
- long mnDummy2;
- double mfGamma;
- sal_uInt32 mnMirrFlags;
- long mnLeftCrop;
- long mnTopCrop;
- long mnRightCrop;
- long mnBottomCrop;
- USHORT mnRotate10;
- short mnContPercent;
- short mnLumPercent;
- short mnRPercent;
- short mnGPercent;
- short mnBPercent;
- BOOL mbInvert;
- BYTE mcTransparency;
- GraphicDrawMode meDrawMode;
-
- void* mpDummy;
-
-public:
-
- GraphicAttr();
- ~GraphicAttr();
-
- BOOL operator==( const GraphicAttr& rAttr ) const;
- BOOL operator!=( const GraphicAttr& rAttr ) const { return !( *this == rAttr ); }
-
- void SetDrawMode( GraphicDrawMode eDrawMode ) { meDrawMode = eDrawMode; }
- GraphicDrawMode GetDrawMode() const { return meDrawMode; }
-
- void SetMirrorFlags( ULONG nMirrFlags ) { mnMirrFlags = nMirrFlags; }
- ULONG GetMirrorFlags() const { return mnMirrFlags; }
-
- void SetCrop( long nLeft_100TH_MM, long nTop_100TH_MM, long nRight_100TH_MM, long nBottom_100TH_MM )
- {
- mnLeftCrop = nLeft_100TH_MM; mnTopCrop = nTop_100TH_MM;
- mnRightCrop = nRight_100TH_MM; mnBottomCrop = nBottom_100TH_MM;
- }
- long GetLeftCrop() const { return mnLeftCrop; }
- long GetTopCrop() const { return mnTopCrop; }
- long GetRightCrop() const { return mnRightCrop; }
- long GetBottomCrop() const { return mnBottomCrop; }
-
- void SetRotation( USHORT nRotate10 ) { mnRotate10 = nRotate10; }
- USHORT GetRotation() const { return mnRotate10; }
-
- void SetLuminance( short nLuminancePercent ) { mnLumPercent = nLuminancePercent; }
- short GetLuminance() const { return mnLumPercent; }
-
- void SetContrast( short nContrastPercent ) { mnContPercent = nContrastPercent; }
- short GetContrast() const { return mnContPercent; }
-
- void SetChannelR( short nChannelRPercent ) { mnRPercent = nChannelRPercent; }
- short GetChannelR() const { return mnRPercent; }
-
- void SetChannelG( short nChannelGPercent ) { mnGPercent = nChannelGPercent; }
- short GetChannelG() const { return mnGPercent; }
-
- void SetChannelB( short nChannelBPercent ) { mnBPercent = nChannelBPercent; }
- short GetChannelB() const { return mnBPercent; }
-
- void SetGamma( double fGamma ) { mfGamma = fGamma; }
- double GetGamma() const { return mfGamma; }
-
- void SetInvert( BOOL bInvert ) { mbInvert = bInvert; }
- BOOL IsInvert() const { return mbInvert; }
-
- void SetTransparency( BYTE cTransparency ) { mcTransparency = cTransparency; }
- BYTE GetTransparency() const { return mcTransparency; }
-
- BOOL IsSpecialDrawMode() const { return( meDrawMode != GRAPHICDRAWMODE_STANDARD ); }
- BOOL IsMirrored() const { return( mnMirrFlags != 0UL ); }
- BOOL IsCropped() const
- {
- return( mnLeftCrop != 0 || mnTopCrop != 0 ||
- mnRightCrop != 0 || mnBottomCrop != 0 );
- }
- BOOL IsRotated() const { return( ( mnRotate10 % 3600 ) != 0 ); }
- BOOL IsTransparent() const { return( mcTransparency > 0 ); }
- BOOL IsAdjusted() const
- {
- return( mnLumPercent != 0 || mnContPercent != 0 || mnRPercent != 0 ||
- mnGPercent != 0 || mnBPercent != 0 || mfGamma != 1.0 || mbInvert );
- }
-
- friend SvStream& operator<<( SvStream& rOStm, const GraphicAttr& rAttr );
- friend SvStream& operator>>( SvStream& rIStm, GraphicAttr& rAttr );
-};
-
-// -----------------
-// - GraphicObject -
-// -----------------
-
-class GraphicObject : public SvDataCopyStream
-{
- friend class GraphicManager;
-
-private:
-
- static GraphicManager* mpGlobalMgr;
-
- Graphic maGraphic;
- GraphicAttr maAttr;
- Size maPrefSize;
- MapMode maPrefMapMode;
- ULONG mnSizeBytes;
- GraphicType meType;
- GraphicManager* mpMgr;
- String* mpLink;
- Link* mpSwapStreamHdl;
- String* mpUserData;
- Timer* mpSwapOutTimer;
- GrfSimpleCacheObj* mpSimpleCache;
- ULONG mnAnimationLoopCount;
- void* mpDummy1;
- void* mpDummy2;
- BOOL mbAutoSwapped : 1;
- BOOL mbTransparent : 1;
- BOOL mbAnimated : 1;
- BOOL mbEPS : 1;
- BOOL mbIsInSwapIn : 1;
- BOOL mbIsInSwapOut : 1;
- BOOL mbAlpha : 1;
- BOOL mbDummyFlag8 : 1;
-
-//#if 0 // _SOLAR__PRIVATE
-
- void ImplConstruct();
- void ImplAssignGraphicData();
- void ImplSetGraphicManager( const GraphicManager* pMgr,
- const ByteString* pID = NULL,
- const GraphicObject* pCopyObj = NULL );
- void ImplAutoSwapIn();
- BOOL ImplIsAutoSwapped() const { return mbAutoSwapped; }
- BOOL ImplGetCropParams( OutputDevice* pOut, Point& rPt, Size& rSz, const GraphicAttr* pAttr,
- PolyPolygon& rClipPolyPoly, BOOL& bRectClipRegion ) const;
-
- /** Render a given number of tiles in an optimized way
-
- This method recursively subdivides the tile rendering problem
- in smaller parts, i.e. rendering output size x with few tiles
- of size y, which in turn are generated from the original
- bitmap in a recursive fashion. The subdivision size can be
- controlled by the exponent argument, which specifies the
- minimal number of smaller tiles used in one recursion
- step. The resulting tile size is given as the integer number
- of repetitions of the original bitmap along x and y. As the
- exponent need not necessarily divide these numbers without
- remainder, the repetition counts are effectively converted to
- base-exponent numbers, where each place denotes the number of
- times the corresponding tile size is rendered.
-
- @param rVDev
- Virtual device to render everything into
-
- @param nExponent
- Number of repetitions per subdivision step, _must_ be greater than 1
-
- @param nNumTilesX
- Number of original tiles to generate in x direction
-
- @param nNumTilesY
- Number of original tiles to generate in y direction
-
- @param rTileSizePixel
- Size in pixel of the original tile bitmap to render it in
-
- @param pAttr
- Graphic attributes to be used for rendering
-
- @param nFlags
- Graphic flags to be used for rendering
-
- @param rCurrPos
- Current output point for this recursion level (should start with (0,0))
-
- @return true, if everything was successfully rendered.
- */
- bool ImplRenderTempTile( VirtualDevice& rVDev, int nExponent,
- int nNumTilesX, int nNumTilesY,
- const Size& rTileSizePixel,
- const GraphicAttr* pAttr, ULONG nFlags );
-
- /// internally called by ImplRenderTempTile()
- bool ImplRenderTileRecursive( VirtualDevice& rVDev, int nExponent, int nMSBFactor,
- int nNumOrigTilesX, int nNumOrigTilesY,
- int nRemainderTilesX, int nRemainderTilesY,
- const Size& rTileSizePixel, const GraphicAttr* pAttr,
- ULONG nFlags, ImplTileInfo& rTileInfo );
-
- bool ImplDrawTiled( OutputDevice* pOut, const Rectangle& rArea, const Size& rSizePixel,
- const Size& rOffset, const GraphicAttr* pAttr, ULONG nFlags, int nTileCacheSize1D );
-
- bool ImplDrawTiled( OutputDevice& rOut, const Point& rPos,
- int nNumTilesX, int nNumTilesY,
- const Size& rTileSize,
- const GraphicAttr* pAttr, ULONG nFlags );
-
- void ImplTransformBitmap( BitmapEx& rBmpEx,
- const GraphicAttr& rAttr,
- const Size& rCropLeftTop,
- const Size& rCropRightBottom,
- const Rectangle& rCropRect,
- const Size& rDstSize,
- BOOL bEnlarge ) const;
-
- DECL_LINK( ImplAutoSwapOutHdl, void* );
-
-//#endif // _SOLAR__PRIVATE
-
-protected:
-
- virtual void GraphicManagerDestroyed();
- virtual SvStream* GetSwapStream() const;
-
- // !!! to be removed
- virtual ULONG GetReleaseFromCache() const;
-
- virtual void Load( SvStream& );
- virtual void Save( SvStream& );
- virtual void Assign( const SvDataCopyStream& );
-
-public:
-
- TYPEINFO();
-
- GraphicObject( const GraphicManager* pMgr = NULL );
- GraphicObject( const Graphic& rGraphic, const GraphicManager* pMgr = NULL );
- GraphicObject( const Graphic& rGraphic, const String& rLink, const GraphicManager* pMgr = NULL );
- GraphicObject( const GraphicObject& rCacheObj, const GraphicManager* pMgr = NULL );
- GraphicObject( const ByteString& rUniqueID, const GraphicManager* pMgr = NULL );
- ~GraphicObject();
-
- GraphicObject& operator=( const GraphicObject& rCacheObj );
- BOOL operator==( const GraphicObject& rCacheObj ) const;
- BOOL operator!=( const GraphicObject& rCacheObj ) const { return !( *this == rCacheObj ); }
-
- BOOL HasSwapStreamHdl() const { return( mpSwapStreamHdl != NULL && mpSwapStreamHdl->IsSet() ); }
- void SetSwapStreamHdl();
- void SetSwapStreamHdl( const Link& rHdl, const ULONG nSwapOutTimeout = 0UL );
- Link GetSwapStreamHdl() const;
- ULONG GetSwapOutTimeout() const { return( mpSwapOutTimer ? mpSwapOutTimer->GetTimeout() : 0 ); }
-
- void FireSwapInRequest();
- void FireSwapOutRequest();
-
- void SetGraphicManager( const GraphicManager& rMgr );
- GraphicManager& GetGraphicManager() const { return *mpMgr; }
-
- BOOL IsCached( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicAttr* pAttr = NULL, ULONG nFlags = GRFMGR_DRAW_STANDARD) const;
- void ReleaseFromCache();
-
- const Graphic& GetGraphic() const;
- void SetGraphic( const Graphic& rGraphic );
- void SetGraphic( const Graphic& rGraphic, const String& rLink );
-
- /** Get graphic transformed according to given attributes
-
- This method returns a Graphic transformed, cropped and scaled
- to the given parameters, ready to be rendered to printer or
- display. The returned graphic has the same visual appearance
- as if it had been drawn via GraphicObject::Draw() to a
- specific output device.
-
- @param rDestSize
- Desired output size in logical coordinates. The mapmode to
- interpret these logical coordinates in is given by the second
- parameter, rDestMap.
-
- @param rDestMap
- Mapmode the output should be interpreted in. This is used to
- interpret rDestSize, to set the appropriate PrefMapMode on the
- returned Graphic, and to deal correctly with metafile graphics.
-
- @param rAttr
- Graphic attributes used to transform the graphic. This
- includes cropping, rotation, mirroring, and various color
- adjustment parameters.
-
- @return the readily transformed Graphic
- */
- Graphic GetTransformedGraphic( const Size& rDestSize, const MapMode& rDestMap, const GraphicAttr& rAttr ) const;
- Graphic GetTransformedGraphic( const GraphicAttr* pAttr = NULL ) const; // TODO: Change to Impl
-
- void SetAttr( const GraphicAttr& rAttr );
- const GraphicAttr& GetAttr() const { return maAttr; }
-
- BOOL HasLink() const { return( mpLink != NULL && mpLink->Len() > 0 ); }
- void SetLink();
- void SetLink( const String& rLink );
- String GetLink() const;
-
- BOOL HasUserData() const { return( mpUserData != NULL && mpUserData->Len() > 0 ); }
- void SetUserData();
- void SetUserData( const String& rUserData );
- String GetUserData() const;
-
- ByteString GetUniqueID() const;
-
- GraphicType GetType() const { return meType; }
- const Size& GetPrefSize() const { return maPrefSize; }
- const MapMode& GetPrefMapMode() const { return maPrefMapMode; }
- ULONG GetSizeBytes() const { return mnSizeBytes; }
- ULONG GetChecksum() const;
- BOOL IsTransparent() const { return mbTransparent; }
- BOOL IsAlpha() const { return mbAlpha; }
- BOOL IsAnimated() const { return mbAnimated; }
- BOOL IsEPS() const { return mbEPS; }
-
- void ResetAnimationLoopCount();
- List* GetAnimationInfoList() const;
- Link GetAnimationNotifyHdl() const { return maGraphic.GetAnimationNotifyHdl(); }
- void SetAnimationNotifyHdl( const Link& rLink );
-
- BOOL SwapOut();
- BOOL SwapOut( SvStream* pOStm );
- BOOL SwapIn();
- BOOL SwapIn( SvStream* pIStm );
-
- BOOL IsInSwapIn() const { return mbIsInSwapIn; }
- BOOL IsInSwapOut() const { return mbIsInSwapOut; }
- BOOL IsInSwap() const { return( mbIsInSwapOut || mbIsInSwapOut ); }
- BOOL IsSwappedOut() const { return( mbAutoSwapped || maGraphic.IsSwapOut() ); }
- void SetSwapState();
-
- BOOL Draw( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicAttr* pAttr = NULL, ULONG nFlags = GRFMGR_DRAW_STANDARD );
-
- /** Draw the graphic repeatedly into the given output rectangle
-
- @param pOut
- OutputDevice where the rendering should take place
-
- @param rArea
- The output area that is filled with tiled instances of this graphic
-
- @param rSize
- The actual size of a single tile
-
- @param rOffset
- Offset from the left, top position of rArea, where to start
- the tiling. The upper left corner of the graphic tilings will
- virtually start at this position. Concretely, only that many
- tiles are drawn to completely fill the given output area.
-
- @param pAttr
- Optional GraphicAttr
-
- @param nFlags
- Optional rendering flags
-
- @param nTileCacheSize1D
- Optional dimension of the generated cache tiles. The pOut sees
- a number of tile draws, which have approximately
- nTileCacheSize1D times nTileCacheSize1D bitmap sizes if the
- tile bitmap is smaller. Otherwise, the tile is drawn as
- is. This is useful if e.g. you want only a few, very large
- bitmap drawings appear on the outdev.
-
- @return TRUE, if drawing completed successfully
- */
- BOOL DrawTiled( OutputDevice* pOut, const Rectangle& rArea, const Size& rSize,
- const Size& rOffset, const GraphicAttr* pAttr = NULL,
- ULONG nFlags = GRFMGR_DRAW_STANDARD, int nTileCacheSize1D=128 );
-
- BOOL StartAnimation( OutputDevice* pOut, const Point& rPt, const Size& rSz, long nExtraData = 0L,
- const GraphicAttr* pAttr = NULL, ULONG nFlags = GRFMGR_DRAW_STANDARD,
- OutputDevice* pFirstFrameOutDev = NULL );
-
- void StopAnimation( OutputDevice* pOut = NULL, long nExtraData = 0L );
-
- friend SvStream& operator<<( SvStream& rOStm, const GraphicObject& rGraphicObj );
- friend SvStream& operator>>( SvStream& rIStm, GraphicObject& rGraphicObj );
-
- static GraphicObject CreateGraphicObjectFromURL( const ::rtl::OUString &rURL );
-};
-
-// ------------------
-// - GraphicManager -
-// ------------------
-
-class GraphicManager
-{
- friend class GraphicObject;
- friend class GraphicDisplayCacheEntry;
-
-private:
-
- List maObjList;
- GraphicCache* mpCache;
-
- GraphicManager( const GraphicManager& ) {}
- GraphicManager& operator=( const GraphicManager& ) { return *this; }
-
-//#if 0 // _SOLAR__PRIVATE
-
- BOOL ImplDraw( OutputDevice* pOut, const Point& rPt,
- const Size& rSz, GraphicObject& rObj,
- const GraphicAttr& rAttr,
- const ULONG nFlags, BOOL& rCached );
-
- BOOL ImplCreateOutput( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const BitmapEx& rBmpEx, const GraphicAttr& rAttr,
- const ULONG nFlags, BitmapEx* pBmpEx = NULL );
- BOOL ImplCreateOutput( OutputDevice* pOut,
- const Point& rPt, const Size& rSz,
- const GDIMetaFile& rMtf, const GraphicAttr& rAttr,
- const ULONG nFlags, GDIMetaFile& rOutMtf, BitmapEx& rOutBmpEx );
-
- BOOL ImplCreateScaled( const BitmapEx& rBmpEx,
- long* pMapIX, long* pMapFX, long* pMapIY, long* pMapFY,
- long nStartX, long nEndX, long nStartY, long nEndY,
- BitmapEx& rOutBmpEx );
-
- BOOL ImplCreateRotatedScaled( const BitmapEx& rBmpEx,
- USHORT nRot10, const Size& rOutSzPix, const Size& rUntSzPix,
- long* pMapIX, long* pMapFX, long* pMapIY, long* pMapFY,
- long nStartX, long nEndX, long nStartY, long nEndY,
- BitmapEx& rOutBmpEx );
-
- static void ImplAdjust( BitmapEx& rBmpEx, const GraphicAttr& rAttr, ULONG nAdjustmentFlags );
- static void ImplAdjust( GDIMetaFile& rMtf, const GraphicAttr& rAttr, ULONG nAdjustmentFlags );
- static void ImplAdjust( Animation& rAnimation, const GraphicAttr& rAttr, ULONG nAdjustmentFlags );
-
- static void ImplDraw( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GDIMetaFile& rMtf, const GraphicAttr& rAttr );
-
- // Only used by GraphicObject's Ctor's and Dtor's
- void ImplRegisterObj( const GraphicObject& rObj, Graphic& rSubstitute,
- const ByteString* pID = NULL,
- const GraphicObject* pCopyObj = NULL );
- void ImplUnregisterObj( const GraphicObject& rObj );
- inline BOOL ImplHasObjects() const { return( maObjList.Count() > 0UL ); }
-
- // Only used in swap case by GraphicObject
- void ImplGraphicObjectWasSwappedOut( const GraphicObject& rObj );
- BOOL ImplFillSwappedGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute );
- void ImplGraphicObjectWasSwappedIn( const GraphicObject& rObj );
-
- ByteString ImplGetUniqueID( const GraphicObject& rObj ) const;
-
-//#endif // _SOLAR__PRIVATE
-
-public:
-
- GraphicManager( ULONG nCacheSize = 10000000UL, ULONG nMaxObjCacheSize = 2400000UL );
- ~GraphicManager();
-
- void SetMaxCacheSize( ULONG nNewCacheSize );
- ULONG GetMaxCacheSize() const;
-
- void SetMaxObjCacheSize( ULONG nNewMaxObjSize, BOOL bDestroyGreaterCached = FALSE );
- ULONG GetMaxObjCacheSize() const;
-
- ULONG GetUsedCacheSize() const;
- ULONG GetFreeCacheSize() const;
-
- void SetCacheTimeout( ULONG nTimeoutSeconds );
- ULONG GetCacheTimeout() const;
-
- void ClearCache();
-
- void ReleaseFromCache( const GraphicObject& rObj );
-
- BOOL IsInCache( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr ) const;
-
- BOOL DrawObj( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- GraphicObject& rObj, const GraphicAttr& rAttr,
- const ULONG nFlags, BOOL& rCached );
-};
-
-#endif // _GRFMGR_HXX
-
diff --git a/goodies/inc/mailenum.hxx b/goodies/inc/mailenum.hxx
deleted file mode 100644
index ac6b78ac86a2..000000000000
--- a/goodies/inc/mailenum.hxx
+++ /dev/null
@@ -1,98 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: mailenum.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _MAILENUM_HXX
-#define _MAILENUM_HXX
-
-// enum ------------------------------------------------------------------
-
-enum MailState
-{
- MAIL_STATE_SUCCESS = 0,
- MAIL_STATE_FAILURE,
- MAIL_STATE_ATTACHED_NOT_FOUND,
- MAIL_STATE_NO_MEMORY,
- MAIL_STATE_LOGIN_FAILURE,
- MAIL_STATE_RECEIVER_NOT_FOUND,
- MAIL_STATE_TOO_MANY_FILES,
- MAIL_STATE_TOO_MANY_RECEIVERS,
- MAIL_STATE_NO_RECEIVERS,
- MAIL_STATE_USER_CANCEL,
- MAIL_STATE_DRIVER_NOT_AVAILABLE
-};
-
-enum MailDriver
-{
- MAIL_DRIVER_DETECT = 0,
- MAIL_DRIVER_BEGIN,
- MAIL_DRIVER_VIM = MAIL_DRIVER_BEGIN,
- MAIL_DRIVER_MAPI,
- MAIL_DRIVER_CMC,
- MAIL_DRIVER_SMP,
- MAIL_DRIVER_UNIX,
- MAIL_DRIVER_SMTP,
- MAIL_DRIVER_END
-};
-
-enum MailPriority
-{
- MAIL_PRIORITY_LOW = 0,
- MAIL_PRIORITY_NORMAL,
- MAIL_PRIORITY_URGENT
-};
-
-enum MailReceiverRole
-{
- MAIL_RECEIVER_TO = 0,
- MAIL_RECEIVER_CC,
- MAIL_RECEIVER_BCC,
- MAIL_RECEIVER_NEWSGROUP
-};
-
-enum MailAction
-{
- MAIL_ACTION_DYING, // Server stirbt
- MAIL_ACTION_SEND, // Mail wurde versendet
- MAIL_ACTION_READ, // Mail wurde als gelesen gekennzeichnet
- MAIL_ACTION_REMOVED, // Mail wurde gel"oscht
- MAIL_ACTION_UPDATED, // alle Mails wurden neu eingelesen
- MAIL_ACTION_NEXT, // Sprung zur n"achsten Mail
- MAIL_ACTION_PREV // Sprung zur vorherigen Mail
-};
-
-// Textformat zum Versenden von Nachrichten ------------------------------
-
-#define TXTFORMAT_ASCII ((BYTE)0x01)
-#define TXTFORMAT_HTML ((BYTE)0x02)
-#define TXTFORMAT_RTF ((BYTE)0x04)
-#define TXTFORMAT_OFFICE ((BYTE)0x08)
-
-
-#endif
-
diff --git a/goodies/inc/makefile.mk b/goodies/inc/makefile.mk
deleted file mode 100644
index 98924a5a1192..000000000000
--- a/goodies/inc/makefile.mk
+++ /dev/null
@@ -1,51 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-PRJ=..
-
-PRJNAME=goodies
-TARGET=inc
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-# --- Targets -------------------------------------------------------
-
-.INCLUDE : target.mk
-
-.IF "$(ENABLE_PCH)"!=""
-ALLTAR : \
- $(SLO)$/precompiled.pch \
- $(SLO)$/precompiled_ex.pch
-
-.ENDIF # "$(ENABLE_PCH)"!=""
-
diff --git a/goodies/inc/pch/precompiled_goodies.cxx b/goodies/inc/pch/precompiled_goodies.cxx
deleted file mode 100644
index 663a76ec3160..000000000000
--- a/goodies/inc/pch/precompiled_goodies.cxx
+++ /dev/null
@@ -1,32 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: precompiled_goodies.cxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "precompiled_goodies.hxx"
-
diff --git a/goodies/inc/pch/precompiled_goodies.hxx b/goodies/inc/pch/precompiled_goodies.hxx
deleted file mode 100644
index fe6f2ec433e5..000000000000
--- a/goodies/inc/pch/precompiled_goodies.hxx
+++ /dev/null
@@ -1,174 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: precompiled_goodies.hxx,v $
- * $Revision: 1.4.42.1 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:44.889563
-
-#ifdef PRECOMPILED_HEADERS
-
-//---MARKER---
-#include "sal/types.h"
-
-#include "com/sun/star/awt/FontDescriptor.hpp"
-#include "com/sun/star/awt/FontUnderline.hpp"
-#include "com/sun/star/awt/FontWeight.hpp"
-#include "com/sun/star/awt/Gradient.hpp"
-#include "com/sun/star/awt/Rectangle.hpp"
-#include "com/sun/star/awt/Size.hpp"
-#include "com/sun/star/awt/XBitmap.hpp"
-#include "com/sun/star/awt/XDevice.hpp"
-#include "com/sun/star/beans/PropertyAttribute.hpp"
-#include "com/sun/star/beans/PropertyState.hpp"
-#include "com/sun/star/beans/XPropertySet.hpp"
-#include "com/sun/star/drawing/CircleKind.hpp"
-#include "com/sun/star/drawing/FillStyle.hpp"
-#include "com/sun/star/drawing/FlagSequence.hpp"
-#include "com/sun/star/drawing/Hatch.hpp"
-#include "com/sun/star/drawing/LineDash.hpp"
-#include "com/sun/star/drawing/LineStyle.hpp"
-#include "com/sun/star/drawing/PointSequence.hpp"
-#include "com/sun/star/drawing/PointSequenceSequence.hpp"
-#include "com/sun/star/drawing/PolyPolygonBezierCoords.hpp"
-#include "com/sun/star/drawing/TextAdjust.hpp"
-#include "com/sun/star/drawing/XDrawPage.hpp"
-#include "com/sun/star/drawing/XDrawPages.hpp"
-#include "com/sun/star/drawing/XDrawPagesSupplier.hpp"
-#include "com/sun/star/drawing/XShape.hpp"
-#include "com/sun/star/drawing/XShapeGrouper.hpp"
-#include "com/sun/star/frame/XModel.hpp"
-#include "com/sun/star/graphic/GraphicType.hpp"
-#include "com/sun/star/graphic/XGraphic.hpp"
-#include "com/sun/star/graphic/XGraphicProvider.hpp"
-#include "com/sun/star/graphic/XGraphicRenderer.hpp"
-#include "com/sun/star/io/XStream.hpp"
-#include "com/sun/star/lang/XMultiServiceFactory.hpp"
-#include "com/sun/star/lang/XServiceInfo.hpp"
-#include "com/sun/star/lang/XUnoTunnel.hpp"
-#include "com/sun/star/registry/XRegistryKey.hpp"
-#include "com/sun/star/style/HorizontalAlignment.hpp"
-#include "com/sun/star/task/XStatusIndicator.hpp"
-#include "com/sun/star/text/XText.hpp"
-#include "com/sun/star/text/XTextRange.hpp"
-
-#include "comphelper/processfactory.hxx"
-#include "comphelper/propertysethelper.hxx"
-#include "comphelper/propertysetinfo.hxx"
-
-#include "cppuhelper/factory.hxx"
-#include "cppuhelper/implbase1.hxx"
-#include "cppuhelper/servicefactory.hxx"
-
-
-#include "osl/diagnose.h"
-#include "osl/endian.h"
-#include "osl/file.hxx"
-#include "osl/process.h"
-
-#include "rtl/alloc.h"
-#include "rtl/math.hxx"
-#include "rtl/ustring.hxx"
-#include "rtl/uuid.h"
-
-#include "svtools/FilterConfigItem.hxx"
-#include "unotools/cacheoptions.hxx"
-#include "svtools/fltcall.hxx"
-#include "svl/itemprop.hxx"
-#include "svl/lstner.hxx"
-#include "svl/solar.hrc"
-#include "svtools/stdctrl.hxx"
-#include "svl/svarray.hxx"
-
-#include "toolkit/helper/vclunohelper.hxx"
-
-#include "tools/agapi.hxx"
-#include "tools/agitem.hxx"
-#include "tools/bigint.hxx"
-#include "tools/chapi.hxx"
-#include "tools/color.hxx"
-#include "tools/datetime.hxx"
-#include "tools/debug.hxx"
-#include "tools/gen.hxx"
-#include "tools/list.hxx"
-#include "tools/poly.hxx"
-#include "tools/rcid.h"
-#include "tools/ref.hxx"
-#include "tools/resid.hxx"
-#include "tools/resmgr.hxx"
-#include "tools/rtti.hxx"
-#include "tools/shl.hxx"
-#include "tools/solar.h"
-#include "tools/string.hxx"
-#include "tools/table.hxx"
-#include "tools/tempfile.hxx"
-#include "tools/time.hxx"
-#include "tools/urlobj.hxx"
-#include "tools/vcompat.hxx"
-#include "tools/vector2d.hxx"
-
-#include "uno/mapping.hxx"
-
-#include "unotools/localfilehelper.hxx"
-#include "unotools/processfactory.hxx"
-
-#include "vcl/alpha.hxx"
-#include "vcl/animate.hxx"
-#include "vcl/bitmap.hxx"
-#include "vcl/bitmapex.hxx"
-#include "vcl/bmpacc.hxx"
-#include "vcl/button.hxx"
-#include "vcl/dialog.hxx"
-#include "vcl/field.hxx"
-#include "vcl/fixed.hxx"
-#include "vcl/floatwin.hxx"
-#include "vcl/font.hxx"
-#include "vcl/gdimtf.hxx"
-#include "vcl/gradient.hxx"
-#include "vcl/graph.h"
-#include "vcl/hatch.hxx"
-#include "vcl/image.hxx"
-#include "vcl/imagerepository.hxx"
-#include "vcl/lineinfo.hxx"
-#include "vcl/lstbox.hxx"
-#include "vcl/metric.hxx"
-#include "vcl/msgbox.hxx"
-#include "vcl/outdev.hxx"
-#include "vcl/region.hxx"
-#include "vcl/salbtype.hxx"
-#include "vcl/sv.h"
-#include "vcl/svapp.hxx"
-#include "vcl/timer.hxx"
-#include "vcl/virdev.hxx"
-#include "vcl/window.hxx"
-
-#include "vos/macros.hxx"
-#include "vos/mutex.hxx"
-#include "vos/timer.hxx"
-//---MARKER---
-
-#endif
diff --git a/goodies/prj/build.lst b/goodies/prj/build.lst
deleted file mode 100644
index f8edce86c4f8..000000000000
--- a/goodies/prj/build.lst
+++ /dev/null
@@ -1,31 +0,0 @@
-go goodies : l10n svtools NULL
-go goodies usr1 - all g_mkout NULL
-go goodies\inc nmake - all g_inc NULL
-go goodies\prj get - all g_prj NULL
-go goodies\source\base3d nmake - all g_base3d g_inc NULL
-go goodies\source\inv nmake - all g_inv g_inc NULL
-go goodies\source\graphic nmake - all g_graph g_inc NULL
-go goodies\source\filter.vcl\eos2met nmake - all g_vfeom g_inc NULL
-go goodies\source\filter.vcl\ios2met nmake - all g_vfiom g_inc NULL
-go goodies\source\filter.vcl\epict nmake - all g_vfept g_inc NULL
-go goodies\source\filter.vcl\egif nmake - all g_vfegf g_inc NULL
-go goodies\source\filter.vcl\ipcd nmake - all g_vfipc g_inc NULL
-go goodies\source\filter.vcl\ipcx nmake - all g_vfipx g_inc NULL
-go goodies\source\filter.vcl\ipict nmake - all g_vfipt g_inc NULL
-go goodies\source\filter.vcl\idxf nmake - all g_vfidx g_inc NULL
-go goodies\source\filter.vcl\itiff nmake - all g_vfitf g_inc NULL
-go goodies\source\filter.vcl\ipbm nmake - all g_vfpbm g_inc NULL
-go goodies\source\filter.vcl\epbm nmake - all g_epbm g_inc NULL
-go goodies\source\filter.vcl\epgm nmake - all g_epgm g_inc NULL
-go goodies\source\filter.vcl\eppm nmake - all g_eppm g_inc NULL
-go goodies\source\filter.vcl\iras nmake - all g_iras g_inc NULL
-go goodies\source\filter.vcl\expm nmake - all g_expm g_inc NULL
-go goodies\source\filter.vcl\eras nmake - all g_eras g_inc NULL
-go goodies\source\filter.vcl\etiff nmake - all g_etiff g_inc NULL
-go goodies\source\filter.vcl\eps nmake - all g_eps g_inc NULL
-go goodies\source\filter.vcl\itga nmake - all g_itga g_inc NULL
-go goodies\source\filter.vcl\ipsd nmake - all g_ipsd g_inc NULL
-go goodies\source\filter.vcl\ieps nmake - all g_ieps g_inc NULL
-go goodies\source\filter.vcl\icgm nmake - all g_icgm g_inc NULL
-go goodies\source\unographic nmake - all g_unographic g_inc NULL
-go goodies\util nmake - all g_util g_base3d g_inv g_graph g_unographic NULL
diff --git a/goodies/prj/d.lst b/goodies/prj/d.lst
deleted file mode 100644
index f30ca516b5da..000000000000
--- a/goodies/prj/d.lst
+++ /dev/null
@@ -1,82 +0,0 @@
-mkdir: %COMMON_DEST%\bin%_EXT%\hid
-..\%COMMON_OUTDIR%\misc\*.hid %COMMON_DEST%\bin%_EXT%\hid\*.hid
-..\%__SRC%\lib\mail.lib %_DEST%\lib%_EXT%\mail.lib
-..\%__SRC%\lib\crypt.lib %_DEST%\lib%_EXT%\crypt.lib
-..\%__SRC%\lib\icrp.lib %_DEST%\lib%_EXT%\icrp.lib
-..\%__SRC%\lib\igo.lib %_DEST%\lib%_EXT%\go.lib
-..\%__SRC%\lib\igo.lib %_DEST%\lib%_EXT%\igo.lib
-..\%__SRC%\lib\itfu.lib %_DEST%\lib%_EXT%\itfu.lib
-..\%__SRC%\slb\go.lib %_DEST%\lib%_EXT%\xgo.lib
-..\%__SRC%\slb\gol.lib %_DEST%\lib%_EXT%\gol.lib
-..\%__SRC%\bin\ma?????.* %_DEST%\bin%_EXT%\ma?????.*
-..\%__SRC%\bin\tfu?????.dll %_DEST%\bin%_EXT%\tfu?????.dll
-..\%__SRC%\bin\tfu?????.sym %_DEST%\bin%_EXT%\tfu?????.sym
-..\%__SRC%\bin\crp?????.dll %_DEST%\bin%_EXT%\crp?????.dll
-..\%__SRC%\bin\crp?????.sym %_DEST%\bin%_EXT%\crp?????.sym
-..\%__SRC%\bin\solarvim.dll %_DEST%\bin%_EXT%\solarvim.dll
-..\%__SRC%\misc\*.map %_DEST%\bin%_EXT%\*.map
-..\%__SRC%\bin\ept?????.dll %_DEST%\bin%_EXT%\ept?????.dll
-..\%__SRC%\bin\ept?????.sym %_DEST%\bin%_EXT%\ept?????.sym
-..\%__SRC%\bin\eme?????.dll %_DEST%\bin%_EXT%\eme?????.dll
-..\%__SRC%\bin\eme?????.sym %_DEST%\bin%_EXT%\eme?????.sym
-..\%__SRC%\bin\egi?????.dll %_DEST%\bin%_EXT%\egi?????.dll
-..\%__SRC%\bin\egi?????.sym %_DEST%\bin%_EXT%\egi?????.sym
-..\%__SRC%\bin\eti?????.dll %_DEST%\bin%_EXT%\eti?????.dll
-..\%__SRC%\bin\eti?????.sym %_DEST%\bin%_EXT%\eti?????.sym
-..\%__SRC%\bin\era?????.dll %_DEST%\bin%_EXT%\era?????.dll
-..\%__SRC%\bin\era?????.sym %_DEST%\bin%_EXT%\era?????.sym
-..\%__SRC%\bin\eps?????.dll %_DEST%\bin%_EXT%\eps?????.dll
-..\%__SRC%\bin\eps?????.sym %_DEST%\bin%_EXT%\eps?????.sym
-..\%__SRC%\bin\exp?????.dll %_DEST%\bin%_EXT%\exp?????.dll
-..\%__SRC%\bin\exp?????.sym %_DEST%\bin%_EXT%\exp?????.sym
-..\%__SRC%\bin\epb?????.dll %_DEST%\bin%_EXT%\epb?????.dll
-..\%__SRC%\bin\epb?????.sym %_DEST%\bin%_EXT%\epb?????.sym
-..\%__SRC%\bin\epg?????.dll %_DEST%\bin%_EXT%\epg?????.dll
-..\%__SRC%\bin\epg?????.sym %_DEST%\bin%_EXT%\epg?????.sym
-..\%__SRC%\bin\epp?????.dll %_DEST%\bin%_EXT%\epp?????.dll
-..\%__SRC%\bin\epp?????.sym %_DEST%\bin%_EXT%\epp?????.sym
-..\%__SRC%\bin\ime?????.dll %_DEST%\bin%_EXT%\ime?????.dll
-..\%__SRC%\bin\ime?????.sym %_DEST%\bin%_EXT%\ime?????.sym
-..\%__SRC%\bin\ipt?????.dll %_DEST%\bin%_EXT%\ipt?????.dll
-..\%__SRC%\bin\ipt?????.sym %_DEST%\bin%_EXT%\ipt?????.sym
-..\%__SRC%\bin\icd?????.dll %_DEST%\bin%_EXT%\icd?????.dll
-..\%__SRC%\bin\icd?????.sym %_DEST%\bin%_EXT%\icd?????.sym
-..\%__SRC%\bin\ipx?????.dll %_DEST%\bin%_EXT%\ipx?????.dll
-..\%__SRC%\bin\ipx?????.sym %_DEST%\bin%_EXT%\ipx?????.sym
-..\%__SRC%\bin\icg?????.dll %_DEST%\bin%_EXT%\icg?????.dll
-..\%__SRC%\bin\icg?????.sym %_DEST%\bin%_EXT%\icg?????.sym
-..\%__SRC%\bin\ira?????.dll %_DEST%\bin%_EXT%\ira?????.dll
-..\%__SRC%\bin\ira?????.sym %_DEST%\bin%_EXT%\ira?????.sym
-..\%__SRC%\bin\itg?????.dll %_DEST%\bin%_EXT%\itg?????.dll
-..\%__SRC%\bin\itg?????.sym %_DEST%\bin%_EXT%\itg?????.sym
-..\%__SRC%\bin\ipd?????.dll %_DEST%\bin%_EXT%\ipd?????.dll
-..\%__SRC%\bin\ipd?????.sym %_DEST%\bin%_EXT%\ipd?????.sym
-..\%__SRC%\bin\ips?????.dll %_DEST%\bin%_EXT%\ips?????.dll
-..\%__SRC%\bin\ips?????.sym %_DEST%\bin%_EXT%\ips?????.sym
-..\%__SRC%\bin\ipb?????.dll %_DEST%\bin%_EXT%\ipb?????.dll
-..\%__SRC%\bin\ipb?????.sym %_DEST%\bin%_EXT%\ipb?????.sym
-..\%__SRC%\bin\iti?????.dll %_DEST%\bin%_EXT%\iti?????.dll
-..\%__SRC%\bin\iti?????.sym %_DEST%\bin%_EXT%\iti?????.sym
-..\%__SRC%\bin\igi?????.dll %_DEST%\bin%_EXT%\igi?????.dll
-..\%__SRC%\bin\igi?????.sym %_DEST%\bin%_EXT%\igi?????.sym
-..\%__SRC%\bin\idx?????.dll %_DEST%\bin%_EXT%\idx?????.dll
-..\%__SRC%\bin\idx?????.sym %_DEST%\bin%_EXT%\idx?????.sym
-..\%__SRC%\bin\ixb?????.dll %_DEST%\bin%_EXT%\ixb?????.dll
-..\%__SRC%\bin\ixb?????.sym %_DEST%\bin%_EXT%\ixb?????.sym
-..\%__SRC%\bin\jpg?????.dll %_DEST%\bin%_EXT%\jpg?????.dll
-..\%__SRC%\bin\jpg?????.sym %_DEST%\bin%_EXT%\jpg?????.sym
-..\%__SRC%\bin\go?????.dll %_DEST%\bin%_EXT%\go?????.dll
-..\%__SRC%\bin\go?????.sym %_DEST%\bin%_EXT%\go?????.sym
-..\%__SRC%\bin\gol?????.dll %_DEST%\bin%_EXT%\gol?????.dll
-..\%__SRC%\bin\gol?????.sym %_DEST%\bin%_EXT%\gol?????.sym
-
-..\%__SRC%\lib\lib*.* %_DEST%\lib%_EXT%\lib*.*
-..\%__SRC%\lib\*.a %_DEST%\lib%_EXT%\*.a
-..\%__SRC%\bin\*.res %_DEST%\bin%_EXT%\*.res
-..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib
-
-mkdir: %_DEST%\inc%_EXT%\goodies
-..\inc\grfmgr.hxx %_DEST%\inc%_EXT%\goodies\grfmgr.hxx
-..\inc\mailenum.hxx %_DEST%\inc%_EXT%\goodies\mailenum.hxx
-..\inc\b3dtrans.hxx %_DEST%\inc%_EXT%\goodies\b3dtrans.hxx
-..\inc\agsdkdll.hxx %_DEST%\inc%_EXT%\goodies\agsdkdll.hxx
diff --git a/goodies/source/base3d/b3dtrans.cxx b/goodies/source/base3d/b3dtrans.cxx
deleted file mode 100644
index fd2908c3ea2e..000000000000
--- a/goodies/source/base3d/b3dtrans.cxx
+++ /dev/null
@@ -1,1017 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: b3dtrans.cxx,v $
- * $Revision: 1.10.42.1 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include "b3dtrans.hxx"
-#include <tools/debug.hxx>
-
-/*************************************************************************
-|*
-|* Transformationen fuer alle 3D Ausgaben
-|*
-\************************************************************************/
-
-B3dTransformationSet::B3dTransformationSet()
-{
- Reset();
-}
-
-B3dTransformationSet::~B3dTransformationSet()
-{
-}
-
-void B3dTransformationSet::Orientation(basegfx::B3DHomMatrix& rTarget, basegfx::B3DPoint aVRP, basegfx::B3DVector aVPN, basegfx::B3DVector aVUP)
-{
- rTarget.translate( -aVRP.getX(), -aVRP.getY(), -aVRP.getZ());
- aVUP.normalize();
- aVPN.normalize();
- basegfx::B3DVector aRx(aVUP);
- basegfx::B3DVector aRy(aVPN);
- aRx = aRx.getPerpendicular(aRy);
- aRx.normalize();
- aRy = aRy.getPerpendicular(aRx);
- aRy.normalize();
- basegfx::B3DHomMatrix aTemp;
- aTemp.set(0, 0, aRx.getX());
- aTemp.set(0, 1, aRx.getY());
- aTemp.set(0, 2, aRx.getZ());
- aTemp.set(1, 0, aRy.getX());
- aTemp.set(1, 1, aRy.getY());
- aTemp.set(1, 2, aRy.getZ());
- aTemp.set(2, 0, aVPN.getX());
- aTemp.set(2, 1, aVPN.getY());
- aTemp.set(2, 2, aVPN.getZ());
- rTarget *= aTemp;
-}
-
-void B3dTransformationSet::Frustum(basegfx::B3DHomMatrix& rTarget, double fLeft, double fRight, double fBottom, double fTop, double fNear, double fFar)
-{
- if(!(fNear > 0.0))
- {
- fNear = 0.001;
- }
- if(!(fFar > 0.0))
- {
- fFar = 1.0;
- }
- if(fNear == fFar)
- {
- fFar = fNear + 1.0;
- }
- if(fLeft == fRight)
- {
- fLeft -= 1.0;
- fRight += 1.0;
- }
- if(fTop == fBottom)
- {
- fBottom -= 1.0;
- fTop += 1.0;
- }
- basegfx::B3DHomMatrix aTemp;
-
- aTemp.set(0, 0, 2.0 * fNear / (fRight - fLeft));
- aTemp.set(1, 1, 2.0 * fNear / (fTop - fBottom));
- aTemp.set(0, 2, (fRight + fLeft) / (fRight - fLeft));
- aTemp.set(1, 2, (fTop + fBottom) / (fTop - fBottom));
- aTemp.set(2, 2, -1.0 * ((fFar + fNear) / (fFar - fNear)));
- aTemp.set(3, 2, -1.0);
- aTemp.set(2, 3, -1.0 * ((2.0 * fFar * fNear) / (fFar - fNear)));
- aTemp.set(3, 3, 0.0);
-
- rTarget *= aTemp;
-}
-
-void B3dTransformationSet::Ortho(basegfx::B3DHomMatrix& rTarget, double fLeft, double fRight, double fBottom, double fTop, double fNear, double fFar)
-{
- if(fNear == fFar)
- {
- DBG_ERROR("Near and far clipping plane in Ortho definition are identical");
- fFar = fNear + 1.0;
- }
- if(fLeft == fRight)
- {
- DBG_ERROR("Left and right in Ortho definition are identical");
- fLeft -= 1.0;
- fRight += 1.0;
- }
- if(fTop == fBottom)
- {
- DBG_ERROR("Top and bottom in Ortho definition are identical");
- fBottom -= 1.0;
- fTop += 1.0;
- }
- basegfx::B3DHomMatrix aTemp;
-
- aTemp.set(0, 0, 2.0 / (fRight - fLeft));
- aTemp.set(1, 1, 2.0 / (fTop - fBottom));
- aTemp.set(2, 2, -1.0 * (2.0 / (fFar - fNear)));
- aTemp.set(0, 3, -1.0 * ((fRight + fLeft) / (fRight - fLeft)));
- aTemp.set(1, 3, -1.0 * ((fTop + fBottom) / (fTop - fBottom)));
- aTemp.set(2, 3, -1.0 * ((fFar + fNear) / (fFar - fNear)));
-
- rTarget *= aTemp;
-}
-
-/*************************************************************************
-|*
-|* Reset der Werte
-|*
-\************************************************************************/
-
-void B3dTransformationSet::Reset()
-{
- // Matritzen auf Einheitsmatritzen
- maObjectTrans.identity();
- PostSetObjectTrans();
-
- Orientation(maOrientation);
- PostSetOrientation();
-
- maTexture.identity();
-
- mfLeftBound = mfBottomBound = -1.0;
- mfRightBound = mfTopBound = 1.0;
- mfNearBound = 0.001;
- mfFarBound = 1.001;
-
- meRatio = Base3DRatioGrow;
- mfRatio = 0.0;
-
- maViewportRectangle = Rectangle(-1, -1, 2, 2);
- maVisibleRectangle = maViewportRectangle;
-
- mbPerspective = sal_True;
-
- mbProjectionValid = sal_False;
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
-
- CalcViewport();
-}
-
-/*************************************************************************
-|*
-|* Objekttransformation
-|*
-\************************************************************************/
-
-void B3dTransformationSet::SetObjectTrans(const basegfx::B3DHomMatrix& rObj)
-{
- maObjectTrans = rObj;
-
- mbObjectToDeviceValid = sal_False;
- mbInvTransObjectToEyeValid = sal_False;
-
- PostSetObjectTrans();
-}
-
-void B3dTransformationSet::PostSetObjectTrans()
-{
- // Zuweisen und Inverse bestimmen
- maInvObjectTrans = maObjectTrans;
- maInvObjectTrans.invert();
-}
-
-/*************************************************************************
-|*
-|* Orientierungstransformation
-|*
-\************************************************************************/
-
-void B3dTransformationSet::SetOrientation( basegfx::B3DPoint aVRP, basegfx::B3DVector aVPN, basegfx::B3DVector aVUP)
-{
- maOrientation.identity();
- Orientation(maOrientation, aVRP, aVPN, aVUP);
-
- mbInvTransObjectToEyeValid = sal_False;
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
-
- PostSetOrientation();
-}
-
-void B3dTransformationSet::SetOrientation(basegfx::B3DHomMatrix& mOrient)
-{
- maOrientation = mOrient;
-
- mbInvTransObjectToEyeValid = sal_False;
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
-
- PostSetOrientation();
-}
-
-void B3dTransformationSet::PostSetOrientation()
-{
- // Zuweisen und Inverse bestimmen
- maInvOrientation = maOrientation;
- maInvOrientation.invert();
-}
-
-/*************************************************************************
-|*
-|* Projektionstransformation
-|*
-\************************************************************************/
-
-void B3dTransformationSet::SetProjection(const basegfx::B3DHomMatrix& mProject)
-{
- maProjection = mProject;
- PostSetProjection();
-}
-
-const basegfx::B3DHomMatrix& B3dTransformationSet::GetProjection()
-{
- if(!mbProjectionValid)
- CalcViewport();
- return maProjection;
-}
-
-const basegfx::B3DHomMatrix& B3dTransformationSet::GetInvProjection()
-{
- if(!mbProjectionValid)
- CalcViewport();
- return maInvProjection;
-}
-
-void B3dTransformationSet::PostSetProjection()
-{
- // Zuweisen und Inverse bestimmen
- maInvProjection = GetProjection();
- maInvProjection.invert();
-
- // Abhaengige Matritzen invalidieren
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
-}
-
-/*************************************************************************
-|*
-|* Texturtransformation
-|*
-\************************************************************************/
-
-void B3dTransformationSet::SetTexture(const basegfx::B2DHomMatrix& rTxt)
-{
- maTexture = rTxt;
- PostSetTexture();
-}
-
-void B3dTransformationSet::PostSetTexture()
-{
-}
-
-/*************************************************************************
-|*
-|* Viewport-Transformation
-|*
-\************************************************************************/
-
-void B3dTransformationSet::CalcViewport()
-{
- // Faktoren fuer die Projektion
- double fLeft(mfLeftBound);
- double fRight(mfRightBound);
- double fBottom(mfBottomBound);
- double fTop(mfTopBound);
-
- // Soll das Seitenverhaeltnis Beachtung finden?
- // Falls ja, Bereich der Projektion an Seitenverhaeltnis anpassen
- if(GetRatio() != 0.0)
- {
- // Berechne aktuelles Seitenverhaeltnis der Bounds
- double fBoundWidth = (double)(maViewportRectangle.GetWidth() + 1);
- double fBoundHeight = (double)(maViewportRectangle.GetHeight() + 1);
- double fActRatio = 1;
- double fFactor;
-
- if(fBoundWidth != 0.0)
- fActRatio = fBoundHeight / fBoundWidth;
- // FIXME else in this case has a lot of problems, should this return.
-
- switch(meRatio)
- {
- case Base3DRatioShrink :
- {
- // Kleineren Teil vergroessern
- if(fActRatio > mfRatio)
- {
- // X vergroessern
- fFactor = 1.0 / fActRatio;
- fRight *= fFactor;
- fLeft *= fFactor;
- }
- else
- {
- // Y vergroessern
- fFactor = fActRatio;
- fTop *= fFactor;
- fBottom *= fFactor;
- }
- break;
- }
- case Base3DRatioGrow :
- {
- // GroesserenTeil verkleinern
- if(fActRatio > mfRatio)
- {
- // Y verkleinern
- fFactor = fActRatio;
- fTop *= fFactor;
- fBottom *= fFactor;
- }
- else
- {
- // X verkleinern
- fFactor = 1.0 / fActRatio;
- fRight *= fFactor;
- fLeft *= fFactor;
- }
- break;
- }
- case Base3DRatioMiddle :
- {
- // Mitteln
- fFactor = ((1.0 / fActRatio) + 1.0) / 2.0;
- fRight *= fFactor;
- fLeft *= fFactor;
- fFactor = (fActRatio + 1.0) / 2.0;
- fTop *= fFactor;
- fBottom *= fFactor;
- break;
- }
- }
- }
-
- // Ueberschneiden sich Darstellungsflaeche und Objektflaeche?
- maSetBound = maViewportRectangle;
-
- // Mit den neuen Werten Projektion und ViewPort setzen
- basegfx::B3DHomMatrix aNewProjection;
-
- // #i36281#
- // OpenGL needs a little more rough additional size to not let
- // the front face vanish. Changed from SMALL_DVALUE to 0.000001,
- // which is 1/10000th, comared with 1/tenth of a million from SMALL_DVALUE.
- const double fDistPart((mfFarBound - mfNearBound) * 0.0001);
-
- // Near, Far etwas grosszuegiger setzen, um falsches,
- // zu kritisches clippen zu verhindern
- if(mbPerspective)
- {
- Frustum(aNewProjection, fLeft, fRight, fBottom, fTop, mfNearBound - fDistPart, mfFarBound + fDistPart);
- }
- else
- {
- Ortho(aNewProjection, fLeft, fRight, fBottom, fTop, mfNearBound - fDistPart, mfFarBound + fDistPart);
- }
-
- // jetzt schon auf gueltig setzen um Endlosschleife zu vermeiden
- mbProjectionValid = sal_True;
-
- // Neue Projektion setzen
- SetProjection(aNewProjection);
-
- // fill parameters for ViewportTransformation
- // Translation
- maTranslate.setX((double)maSetBound.Left() + ((maSetBound.GetWidth() - 1L) / 2.0));
- maTranslate.setY((double)maSetBound.Top() + ((maSetBound.GetHeight() - 1L) / 2.0));
- maTranslate.setZ(ZBUFFER_DEPTH_RANGE / 2.0);
-
- // Skalierung
- maScale.setX((maSetBound.GetWidth() - 1L) / 2.0);
- maScale.setY((maSetBound.GetHeight() - 1L) / -2.0);
- maScale.setZ(ZBUFFER_DEPTH_RANGE / 2.0);
-
- // Auf Veraenderung des ViewPorts reagieren
- PostSetViewport();
-}
-
-void B3dTransformationSet::SetRatio(double fNew)
-{
- if(mfRatio != fNew)
- {
- mfRatio = fNew;
- mbProjectionValid = sal_False;
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
- }
-}
-
-void B3dTransformationSet::SetRatioMode(Base3DRatio eNew)
-{
- if(meRatio != eNew)
- {
- meRatio = eNew;
- mbProjectionValid = sal_False;
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
- }
-}
-
-void B3dTransformationSet::SetDeviceRectangle(double fL, double fR, double fB, double fT,
- sal_Bool bBroadCastChange)
-{
- if(fL != mfLeftBound || fR != mfRightBound || fB != mfBottomBound || fT != mfTopBound)
- {
- mfLeftBound = fL;
- mfRightBound = fR;
- mfBottomBound = fB;
- mfTopBound = fT;
-
- mbProjectionValid = sal_False;
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
-
- // Aenderung bekanntmachen
- if(bBroadCastChange)
- DeviceRectangleChange();
- }
-}
-
-void B3dTransformationSet::SetDeviceVolume(const basegfx::B3DRange& rVol, sal_Bool bBroadCastChange)
-{
- SetDeviceRectangle(rVol.getMinX(), rVol.getMaxX(), rVol.getMinY(), rVol.getMaxY(), bBroadCastChange);
- SetFrontClippingPlane(rVol.getMinZ());
- SetBackClippingPlane(rVol.getMaxZ());
-}
-
-void B3dTransformationSet::DeviceRectangleChange()
-{
-}
-
-void B3dTransformationSet::GetDeviceRectangle(double &fL, double &fR, double& fB, double& fT)
-{
- fL = mfLeftBound;
- fR = mfRightBound;
- fB = mfBottomBound;
- fT = mfTopBound;
-
- mbProjectionValid = sal_False;
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
-}
-
-basegfx::B3DRange B3dTransformationSet::GetDeviceVolume()
-{
- basegfx::B3DRange aRet;
-
- aRet.expand(basegfx::B3DTuple(mfLeftBound, mfBottomBound, mfNearBound));
- aRet.expand(basegfx::B3DTuple(mfRightBound, mfTopBound, mfFarBound));
-
- return aRet;
-}
-
-void B3dTransformationSet::SetFrontClippingPlane(double fF)
-{
- if(mfNearBound != fF)
- {
- mfNearBound = fF;
- mbProjectionValid = sal_False;
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
- }
-}
-
-void B3dTransformationSet::SetBackClippingPlane(double fB)
-{
- if(mfFarBound != fB)
- {
- mfFarBound = fB;
- mbProjectionValid = sal_False;
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
- }
-}
-
-void B3dTransformationSet::SetPerspective(sal_Bool bNew)
-{
- if(mbPerspective != bNew)
- {
- mbPerspective = bNew;
- mbProjectionValid = sal_False;
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
- }
-}
-
-void B3dTransformationSet::SetViewportRectangle(Rectangle& rRect, Rectangle& rVisible)
-{
- if(rRect != maViewportRectangle || rVisible != maVisibleRectangle)
- {
- maViewportRectangle = rRect;
- maVisibleRectangle = rVisible;
-
- mbProjectionValid = sal_False;
- mbObjectToDeviceValid = sal_False;
- mbWorldToViewValid = sal_False;
- }
-}
-
-void B3dTransformationSet::PostSetViewport()
-{
-}
-
-const Rectangle& B3dTransformationSet::GetLogicalViewportBounds()
-{
- if(!mbProjectionValid)
- CalcViewport();
- return maSetBound;
-}
-
-const basegfx::B3DVector& B3dTransformationSet::GetScale()
-{
- if(!mbProjectionValid)
- CalcViewport();
- return maScale;
-}
-
-const basegfx::B3DVector& B3dTransformationSet::GetTranslate()
-{
- if(!mbProjectionValid)
- CalcViewport();
- return maTranslate;
-}
-
-/*************************************************************************
-|*
-|* Hilfsmatrixberechnungsroutinen
-|*
-\************************************************************************/
-
-void B3dTransformationSet::CalcMatObjectToDevice()
-{
- // ObjectToDevice berechnen (Orientation * Projection * Object)
- maObjectToDevice = maObjectTrans;
- maObjectToDevice *= maOrientation;
- maObjectToDevice *= GetProjection();
-
- // auf gueltig setzen
- mbObjectToDeviceValid = sal_True;
-}
-
-const basegfx::B3DHomMatrix& B3dTransformationSet::GetObjectToDevice()
-{
- if(!mbObjectToDeviceValid)
- CalcMatObjectToDevice();
- return maObjectToDevice;
-}
-
-void B3dTransformationSet::CalcMatInvTransObjectToEye()
-{
- maInvTransObjectToEye = maObjectTrans;
- maInvTransObjectToEye *= maOrientation;
- maInvTransObjectToEye.invert();
- maInvTransObjectToEye.transpose();
-
- // eventuelle Translationen rausschmeissen, da diese
- // Matrix nur zur Transformation von Vektoren gedacht ist
- maInvTransObjectToEye.set(3, 0, 0.0);
- maInvTransObjectToEye.set(3, 1, 0.0);
- maInvTransObjectToEye.set(3, 2, 0.0);
- maInvTransObjectToEye.set(3, 3, 1.0);
-
- // auf gueltig setzen
- mbInvTransObjectToEyeValid = sal_True;
-}
-
-const basegfx::B3DHomMatrix& B3dTransformationSet::GetInvTransObjectToEye()
-{
- if(!mbInvTransObjectToEyeValid)
- CalcMatInvTransObjectToEye();
- return maInvTransObjectToEye;
-}
-
-basegfx::B3DHomMatrix B3dTransformationSet::GetMatFromObjectToView()
-{
- basegfx::B3DHomMatrix aFromObjectToView = GetObjectToDevice();
-
- const basegfx::B3DVector& rScale(GetScale());
- aFromObjectToView.scale(rScale.getX(), rScale.getY(), rScale.getZ());
- const basegfx::B3DVector& rTranslate(GetTranslate());
- aFromObjectToView.translate(rTranslate.getX(), rTranslate.getY(), rTranslate.getZ());
-
- return aFromObjectToView;
-}
-
-void B3dTransformationSet::CalcMatFromWorldToView()
-{
- maMatFromWorldToView = maOrientation;
- maMatFromWorldToView *= GetProjection();
- const basegfx::B3DVector& rScale(GetScale());
- maMatFromWorldToView.scale(rScale.getX(), rScale.getY(), rScale.getZ());
- const basegfx::B3DVector& rTranslate(GetTranslate());
- maMatFromWorldToView.translate(rTranslate.getX(), rTranslate.getY(), rTranslate.getZ());
- maInvMatFromWorldToView = maMatFromWorldToView;
- maInvMatFromWorldToView.invert();
-
- // gueltig setzen
- mbWorldToViewValid = sal_True;
-}
-
-const basegfx::B3DHomMatrix& B3dTransformationSet::GetMatFromWorldToView()
-{
- if(!mbWorldToViewValid)
- CalcMatFromWorldToView();
- return maMatFromWorldToView;
-}
-
-const basegfx::B3DHomMatrix& B3dTransformationSet::GetInvMatFromWorldToView()
-{
- if(!mbWorldToViewValid)
- CalcMatFromWorldToView();
- return maInvMatFromWorldToView;
-}
-
-/*************************************************************************
-|*
-|* Direkter Zugriff auf verschiedene Transformationen
-|*
-\************************************************************************/
-
-const basegfx::B3DPoint B3dTransformationSet::WorldToEyeCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetOrientation();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::EyeToWorldCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetInvOrientation();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::EyeToViewCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetProjection();
- aVec *= GetScale();
- aVec += GetTranslate();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::ViewToEyeCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec -= GetTranslate();
- aVec = aVec / GetScale();
- aVec *= GetInvProjection();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::WorldToViewCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetMatFromWorldToView();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::ViewToWorldCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetInvMatFromWorldToView();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::DeviceToViewCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetScale();
- aVec += GetTranslate();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::ViewToDeviceCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec -= GetTranslate();
- aVec = aVec / GetScale();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::ObjectToWorldCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetObjectTrans();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::WorldToObjectCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetInvObjectTrans();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::ObjectToViewCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetObjectTrans();
- aVec *= GetMatFromWorldToView();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::ViewToObjectCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetInvMatFromWorldToView();
- aVec *= GetInvObjectTrans();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::ObjectToEyeCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetObjectTrans();
- aVec *= GetOrientation();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::EyeToObjectCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetInvOrientation();
- aVec *= GetInvObjectTrans();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::DeviceToEyeCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetInvProjection();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::EyeToDeviceCoor(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetProjection();
- return aVec;
-}
-
-const basegfx::B3DPoint B3dTransformationSet::InvTransObjectToEye(const basegfx::B3DPoint& rVec)
-{
- basegfx::B3DPoint aVec(rVec);
- aVec *= GetInvTransObjectToEye();
- return aVec;
-}
-
-const basegfx::B2DPoint B3dTransformationSet::TransTextureCoor(const basegfx::B2DPoint& rVec)
-{
- basegfx::B2DPoint aVec(rVec);
- aVec *= GetTexture();
- return aVec;
-}
-
-/*************************************************************************
-|*
-|* Konstruktor B3dViewport
-|*
-\************************************************************************/
-
-B3dViewport::B3dViewport()
-: B3dTransformationSet(),
- aVRP(0, 0, 0),
- aVPN(0, 0, 1),
- aVUV(0, 1, 0)
-{
- CalcOrientation();
-}
-
-B3dViewport::~B3dViewport()
-{
-}
-
-void B3dViewport::SetVRP(const basegfx::B3DPoint& rNewVRP)
-{
- aVRP = rNewVRP;
- CalcOrientation();
-}
-
-void B3dViewport::SetVPN(const basegfx::B3DVector& rNewVPN)
-{
- aVPN = rNewVPN;
- CalcOrientation();
-}
-
-void B3dViewport::SetVUV(const basegfx::B3DVector& rNewVUV)
-{
- aVUV = rNewVUV;
- CalcOrientation();
-}
-
-void B3dViewport::SetViewportValues(
- const basegfx::B3DPoint& rNewVRP,
- const basegfx::B3DVector& rNewVPN,
- const basegfx::B3DVector& rNewVUV)
-{
- aVRP = rNewVRP;
- aVPN = rNewVPN;
- aVUV = rNewVUV;
- CalcOrientation();
-}
-
-void B3dViewport::CalcOrientation()
-{
- SetOrientation(aVRP, aVPN, aVUV);
-}
-
-/*************************************************************************
-|*
-|* Konstruktor B3dViewport
-|*
-\************************************************************************/
-
-B3dCamera::B3dCamera(
- const basegfx::B3DPoint& rPos, const basegfx::B3DVector& rLkAt,
- double fFocLen, double fBnkAng, sal_Bool bUseFocLen)
-: B3dViewport(),
- aPosition(rPos),
- aCorrectedPosition(rPos),
- aLookAt(rLkAt),
- fFocalLength(fFocLen),
- fBankAngle(fBnkAng),
- bUseFocalLength(bUseFocLen)
-{
- CalcNewViewportValues();
-}
-
-B3dCamera::~B3dCamera()
-{
-}
-
-void B3dCamera::SetPosition(const basegfx::B3DPoint& rNewPos)
-{
- if(rNewPos != aPosition)
- {
- // Zuweisen
- aCorrectedPosition = aPosition = rNewPos;
-
- // Neuberechnung
- CalcNewViewportValues();
- }
-}
-
-void B3dCamera::SetLookAt(const basegfx::B3DVector& rNewLookAt)
-{
- if(rNewLookAt != aLookAt)
- {
- // Zuweisen
- aLookAt = rNewLookAt;
-
- // Neuberechnung
- CalcNewViewportValues();
- }
-}
-
-void B3dCamera::SetPositionAndLookAt(const basegfx::B3DPoint& rNewPos, const basegfx::B3DVector& rNewLookAt)
-{
- if(rNewPos != aPosition || rNewLookAt != aLookAt)
- {
- // Zuweisen
- aPosition = rNewPos;
- aLookAt = rNewLookAt;
-
- // Neuberechnung
- CalcNewViewportValues();
- }
-}
-
-void B3dCamera::SetFocalLength(double fLen)
-{
- if(fLen != fFocalLength)
- {
- // Zuweisen
- if(fLen < 5.0)
- fLen = 5.0;
- fFocalLength = fLen;
-
- // Neuberechnung
- CalcNewViewportValues();
- }
-}
-
-void B3dCamera::SetBankAngle(double fAngle)
-{
- if(fAngle != fBankAngle)
- {
- // Zuweisen
- fBankAngle = fAngle;
-
- // Neuberechnung
- CalcNewViewportValues();
- }
-}
-
-void B3dCamera::SetUseFocalLength(sal_Bool bNew)
-{
- if(bNew != (sal_Bool)bUseFocalLength)
- {
- // Zuweisen
- bUseFocalLength = bNew;
-
- // Neuberechnung
- CalcNewViewportValues();
- }
-}
-
-void B3dCamera::DeviceRectangleChange()
-{
- // call parent
- B3dViewport::DeviceRectangleChange();
-
- // Auf Aenderung reagieren
- CalcNewViewportValues();
-}
-
-void B3dCamera::CalcNewViewportValues()
-{
- basegfx::B3DVector aViewVector(aPosition - aLookAt);
- basegfx::B3DVector aNewVPN(aViewVector);
-
- basegfx::B3DVector aNewVUV(0.0, 1.0, 0.0);
- if(aNewVPN.getLength() < aNewVPN.getY())
- aNewVUV.setX(0.5);
-
- aNewVUV.normalize();
- aNewVPN.normalize();
-
- basegfx::B3DVector aNewToTheRight = aNewVPN;
- aNewToTheRight = aNewToTheRight.getPerpendicular(aNewVUV);
- aNewToTheRight.normalize();
- aNewVUV = aNewToTheRight.getPerpendicular(aNewVPN);
- aNewVUV.normalize();
-
- SetViewportValues(aPosition, aNewVPN, aNewVUV);
- if(CalcFocalLength())
- SetViewportValues(aCorrectedPosition, aNewVPN, aNewVUV);
-
- if(fBankAngle != 0.0)
- {
- basegfx::B3DHomMatrix aRotMat;
- aRotMat.rotate(0.0, 0.0, fBankAngle);
- basegfx::B3DVector aUp(0.0, 1.0, 0.0);
- aUp *= aRotMat;
- aUp = EyeToWorldCoor(aUp);
- aUp.normalize();
- SetVUV(aUp);
- }
-}
-
-sal_Bool B3dCamera::CalcFocalLength()
-{
- double fWidth = GetDeviceRectangleWidth();
- sal_Bool bRetval = sal_False;
-
- if(bUseFocalLength)
- {
- // Position aufgrund der FocalLength korrigieren
- aCorrectedPosition = basegfx::B3DPoint(0.0, 0.0, fFocalLength * fWidth / 35.0);
- aCorrectedPosition = EyeToWorldCoor(aCorrectedPosition);
- bRetval = sal_True;
- }
- else
- {
- // FocalLength anhand der Position anpassen
- basegfx::B3DPoint aOldPosition;
- aOldPosition = WorldToEyeCoor(aOldPosition);
- if(fWidth != 0.0)
- fFocalLength = aOldPosition.getZ() / fWidth * 35.0;
- if(fFocalLength < 5.0)
- fFocalLength = 5.0;
- }
- return bRetval;
-}
-
-// eof
diff --git a/goodies/source/base3d/makefile.mk b/goodies/source/base3d/makefile.mk
deleted file mode 100644
index 0203f7e1d3d4..000000000000
--- a/goodies/source/base3d/makefile.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.6.42.1 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..
-
-PRJNAME=goodies
-TARGET=base3d
-AUTOSEG=true
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-
-SLOFILES = $(SLO)$/b3dtrans.obj
-
-.INCLUDE : target.mk
-
diff --git a/goodies/source/filter.vcl/egif/dlgegif.cxx b/goodies/source/filter.vcl/egif/dlgegif.cxx
deleted file mode 100644
index d0aa11d3238f..000000000000
--- a/goodies/source/filter.vcl/egif/dlgegif.cxx
+++ /dev/null
@@ -1,111 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgegif.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#ifndef GCC
-#endif
-#include <tools/ref.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include <vcl/msgbox.hxx>
-#include "dlgegif.hxx"
-#include "dlgegif.hrc"
-#include "strings.hrc"
-
-/*************************************************************************
-|*
-|* Ctor
-|*
-\************************************************************************/
-
-DlgExportEGIF::DlgExportEGIF( FltCallDialogParameter& rPara ) :
- ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_GIF, *rPara.pResMgr ) ),
- rFltCallPara ( rPara ),
- aCbxInterlaced ( this, ResId( CBX_INTERLACED, *rPara.pResMgr ) ),
- aCbxTranslucent ( this, ResId( CBX_TRANSLUCENT, *rPara.pResMgr ) ),
- aGrpMode ( this, ResId( GRP_MODE, *rPara.pResMgr ) ),
- aGrpDraw ( this, ResId( GRP_DRAW, *rPara.pResMgr ) ),
- aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
- aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
- aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
- pMgr ( rPara.pResMgr )
-{
- FreeResource();
-
- String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/GIF" ) );
- pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
-
- String aInterlaceStr( ResId( KEY_INTER, *pMgr ) );
- String aTranslucentStr( ResId( KEY_TRANS, *pMgr ) );
- // Config-Parameter lesen
- sal_Bool bInterlaced = pConfigItem->ReadInt32( aInterlaceStr, 1 ) != 0;
- sal_Bool bTranslucent = pConfigItem->ReadInt32( aTranslucentStr, 1 ) != 0;
-
- aCbxInterlaced.Check( bInterlaced );
- aCbxTranslucent.Check( bTranslucent );
-
- aBtnOK.SetClickHdl( LINK( this, DlgExportEGIF, OK ) );
-}
-
-DlgExportEGIF::~DlgExportEGIF()
-{
- delete pConfigItem;
-}
-
-/*************************************************************************
-|*
-|* Speichert eingestellte Werte in ini-Datei
-|*
-\************************************************************************/
-
-IMPL_LINK( DlgExportEGIF, OK, void *, EMPTYARG )
-{
-
- // Config-Parameter schreiben
- String aInterlaceStr( ResId( KEY_INTER, *pMgr ) );
- String aTranslucentStr( ResId( KEY_TRANS, *pMgr ) );
-
- sal_Int32 nValue = 0;
- if ( aCbxInterlaced.IsChecked() )
- nValue++;
- pConfigItem->WriteInt32( aInterlaceStr, nValue );
-
- nValue = 0;
- if ( aCbxTranslucent.IsChecked() )
- nValue++;
- pConfigItem->WriteInt32( aTranslucentStr, nValue );
- rFltCallPara.aFilterData = pConfigItem->GetFilterData();
- EndDialog( RET_OK );
-
- return 0;
-}
-
-
-
diff --git a/goodies/source/filter.vcl/egif/dlgegif.hrc b/goodies/source/filter.vcl/egif/dlgegif.hrc
deleted file mode 100644
index 72196101f288..000000000000
--- a/goodies/source/filter.vcl/egif/dlgegif.hrc
+++ /dev/null
@@ -1,39 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgegif.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "goodies.hrc"
-
-#define BTN_OK 1
-#define BTN_CANCEL 1
-#define BTN_HELP 1
-#define FI_DESCR 1
-#define GRP_MODE 1
-#define GRP_DRAW 2
-#define CBX_INTERLACED 1
-#define CBX_TRANSLUCENT 2
diff --git a/goodies/source/filter.vcl/egif/dlgegif.hxx b/goodies/source/filter.vcl/egif/dlgegif.hxx
deleted file mode 100644
index d6c93ba862b4..000000000000
--- a/goodies/source/filter.vcl/egif/dlgegif.hxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgegif.hxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#ifndef _DLGEGIF_HXX_
-#define _DLGEGIF_HXX_
-
-#include <svtools/fltcall.hxx>
-#include <vcl/dialog.hxx>
-#include <vcl/button.hxx>
-#include <vcl/fixed.hxx>
-
-/*************************************************************************
-|*
-|* Dialog zum Einstellen von Filteroptionen
-|*
-\************************************************************************/
-
-class FilterConfigItem;
-class ResMgr;
-
-class DlgExportEGIF : public ModalDialog
-{
-private:
-
- FltCallDialogParameter& rFltCallPara;
-
- CheckBox aCbxInterlaced;
- CheckBox aCbxTranslucent;
- FixedLine aGrpMode;
- FixedLine aGrpDraw;
- OKButton aBtnOK;
- CancelButton aBtnCancel;
- HelpButton aBtnHelp;
-
- FilterConfigItem* pConfigItem;
- ResMgr* pMgr;
-
- DECL_LINK( OK, void * );
-
-public:
- DlgExportEGIF( FltCallDialogParameter& rPara );
- ~DlgExportEGIF();
-};
-
-#endif // _DLGEGIF_HXX_
-
diff --git a/goodies/source/filter.vcl/egif/dlgegif.src b/goodies/source/filter.vcl/egif/dlgegif.src
deleted file mode 100644
index c9e1bdbf6a1a..000000000000
--- a/goodies/source/filter.vcl/egif/dlgegif.src
+++ /dev/null
@@ -1,121 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgegif.src,v $
- * $Revision: 1.30 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "dlgegif.hrc"
-ModalDialog DLG_EXPORT_GIF
-{
- OutputSize = TRUE ;
- SVLook = TRUE ;
- Size = MAP_APPFONT ( 169 , 70 ) ;
- Moveable = TRUE ;
- Closeable = TRUE ;
- Text [ en-US ] = "GIF Options" ;
- OKButton BTN_OK
- {
- Pos = MAP_APPFONT ( 113 , 6 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- DefButton = TRUE ;
- };
- CancelButton BTN_CANCEL
- {
- Pos = MAP_APPFONT ( 113 , 23 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- HelpButton BTN_HELP
- {
- Pos = MAP_APPFONT ( 113 , 43 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- FixedLine GRP_MODE
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 100 , 8 ) ;
- Text [ en-US ] = "Mode" ;
- };
- CheckBox CBX_INTERLACED
- {
- Pos = MAP_APPFONT ( 12 , 14 ) ;
- Size = MAP_APPFONT ( 86 , 12 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Interlaced" ;
- };
- FixedLine GRP_DRAW
- {
- Pos = MAP_APPFONT ( 6 , 32 ) ;
- Size = MAP_APPFONT ( 100 , 8 ) ;
- Text [ en-US ] = "Drawing objects" ;
- };
- CheckBox CBX_TRANSLUCENT
- {
- Pos = MAP_APPFONT ( 12 , 43 ) ;
- Size = MAP_APPFONT ( 86 , 12 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "Save ~transparency" ;
- };
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/goodies/source/filter.vcl/egif/egif.cxx b/goodies/source/filter.vcl/egif/egif.cxx
deleted file mode 100644
index 9f2aeaddd686..000000000000
--- a/goodies/source/filter.vcl/egif/egif.cxx
+++ /dev/null
@@ -1,632 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: egif.cxx,v $
- * $Revision: 1.10 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/graph.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/msgbox.hxx>
-#include <vcl/window.hxx>
-#include <svl/solar.hrc>
-#include <svtools/fltcall.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include "giflzwc.hxx"
-#include "strings.hrc"
-#include "dlgegif.hrc"
-#include "dlgegif.hxx"
-
-// -------------
-// - GIFWriter -
-// -------------
-
-class GIFWriter
-{
- Bitmap aAccBmp;
- BitmapReadAccess* pAcc;
- SvStream* pGIF;
- ULONG nMinPercent;
- ULONG nMaxPercent;
- ULONG nLastPercent;
- long nActX;
- long nActY;
- sal_Int32 nInterlaced;
- BOOL bStatus;
- BOOL bTransparent;
-
- void MayCallback( ULONG nPercent );
- void WriteSignature( BOOL bGIF89a );
- void WriteGlobalHeader( const Size& rSize );
- void WriteLoopExtension( const Animation& rAnimation );
- void WriteLogSizeExtension( const Size& rSize100 );
- void WriteImageExtension( long nTimer, Disposal eDisposal );
- void WriteLocalHeader();
- void WritePalette();
- void WriteAccess();
- void WriteTerminator();
-
- BOOL CreateAccess( const BitmapEx& rBmpEx );
- void DestroyAccess();
-
- void WriteAnimation( const Animation& rAnimation );
- void WriteBitmapEx( const BitmapEx& rBmpEx, const Point& rPoint, BOOL bExtended,
- long nTimer = 0, Disposal eDisposal = DISPOSE_NOT );
-
- com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
-
-public:
-
- GIFWriter() {}
- ~GIFWriter() {}
-
- BOOL WriteGIF( const Graphic& rGraphic, SvStream& rGIF,
- FilterConfigItem* pConfigItem );
-};
-
-// ------------------------------------------------------------------------
-
-BOOL GIFWriter::WriteGIF( const Graphic& rGraphic, SvStream& rGIF,
- FilterConfigItem* pFilterConfigItem )
-{
- if ( pFilterConfigItem )
- {
- xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
- if ( xStatusIndicator.is() )
- {
- rtl::OUString aMsg;
- xStatusIndicator->start( aMsg, 100 );
- }
- }
-
- Size aSize100;
- const MapMode aMap( rGraphic.GetPrefMapMode() );
- BOOL bLogSize = ( aMap.GetMapUnit() != MAP_PIXEL );
-
- if( bLogSize )
- aSize100 = Application::GetDefaultDevice()->LogicToLogic( rGraphic.GetPrefSize(), aMap, MAP_100TH_MM );
-
- pGIF = &rGIF;
- bStatus = TRUE;
- nLastPercent = 0;
- nInterlaced = 0;
- pAcc = NULL;
-
- if ( pFilterConfigItem )
- nInterlaced = pFilterConfigItem->ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "Interlaced" ) ), 0 );
-
- pGIF->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
-
- if( rGraphic.IsAnimated() )
- {
- const Animation& rAnimation = rGraphic.GetAnimation();
-
- WriteSignature( TRUE );
-
- if ( bStatus )
- {
- WriteGlobalHeader( rAnimation.GetDisplaySizePixel() );
-
- if( bStatus )
- {
- WriteLoopExtension( rAnimation );
-
- if( bStatus )
- WriteAnimation( rAnimation );
- }
- }
- }
- else
- {
- const BOOL bGrafTrans = rGraphic.IsTransparent();
-
- BitmapEx aBmpEx;
-
- if( bGrafTrans )
- aBmpEx = rGraphic.GetBitmapEx();
- else
- aBmpEx = BitmapEx( rGraphic.GetBitmap() );
-
- nMinPercent = 0;
- nMaxPercent = 100;
-
- WriteSignature( bGrafTrans || bLogSize );
-
- if( bStatus )
- {
- WriteGlobalHeader( aBmpEx.GetSizePixel() );
-
- if( bStatus )
- WriteBitmapEx( aBmpEx, Point(), bGrafTrans );
- }
- }
-
- if( bStatus )
- {
- if( bLogSize )
- WriteLogSizeExtension( aSize100 );
-
- WriteTerminator();
- }
-
- if ( xStatusIndicator.is() )
- xStatusIndicator->end();
-
- return bStatus;
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::WriteBitmapEx( const BitmapEx& rBmpEx, const Point& rPoint,
- BOOL bExtended, long nTimer, Disposal eDisposal )
-{
- if( CreateAccess( rBmpEx ) )
- {
- nActX = rPoint.X();
- nActY = rPoint.Y();
-
- if( bExtended )
- WriteImageExtension( nTimer, eDisposal );
-
- if( bStatus )
- {
- WriteLocalHeader();
-
- if( bStatus )
- {
- WritePalette();
-
- if( bStatus )
- WriteAccess();
- }
- }
-
- DestroyAccess();
- }
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::WriteAnimation( const Animation& rAnimation )
-{
- const USHORT nCount = rAnimation.Count();
-
- if( nCount )
- {
- const double fStep = 100. / nCount;
-
- nMinPercent = 0L;
- nMaxPercent = (ULONG) fStep;
-
- for( USHORT i = 0; i < nCount; i++ )
- {
- const AnimationBitmap& rAnimBmp = rAnimation.Get( i );
-
- WriteBitmapEx( rAnimBmp.aBmpEx, rAnimBmp.aPosPix, TRUE,
- rAnimBmp.nWait, rAnimBmp.eDisposal );
- nMinPercent = nMaxPercent;
- nMaxPercent = (ULONG) ( nMaxPercent + fStep );
- }
- }
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::MayCallback( ULONG nPercent )
-{
- if ( xStatusIndicator.is() )
- {
- if( nPercent >= nLastPercent + 3 )
- {
- nLastPercent = nPercent;
- if ( nPercent <= 100 )
- xStatusIndicator->setValue( nPercent );
- }
- }
-}
-
-// ------------------------------------------------------------------------
-
-BOOL GIFWriter::CreateAccess( const BitmapEx& rBmpEx )
-{
- if( bStatus )
- {
- Bitmap aMask( rBmpEx.GetMask() );
-
- aAccBmp = rBmpEx.GetBitmap();
- bTransparent = FALSE;
-
- if( !!aMask )
- {
- if( aAccBmp.Convert( BMP_CONVERSION_8BIT_TRANS ) )
- {
- aMask.Convert( BMP_CONVERSION_1BIT_THRESHOLD );
- aAccBmp.Replace( aMask, BMP_COL_TRANS );
- bTransparent = TRUE;
- }
- else
- aAccBmp.Convert( BMP_CONVERSION_8BIT_COLORS );
- }
- else
- aAccBmp.Convert( BMP_CONVERSION_8BIT_COLORS );
-
- pAcc = aAccBmp.AcquireReadAccess();
-
- if( !pAcc )
- bStatus = FALSE;
- }
-
- return bStatus;
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::DestroyAccess()
-{
- aAccBmp.ReleaseAccess( pAcc );
- pAcc = NULL;
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::WriteSignature( BOOL bGIF89a )
-{
- if( bStatus )
- {
- pGIF->Write( bGIF89a ? "GIF89a" : "GIF87a" , 6 );
-
- if( pGIF->GetError() )
- bStatus = FALSE;
- }
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::WriteGlobalHeader( const Size& rSize )
-{
- if( bStatus )
- {
- // 256 Farben
- const UINT16 nWidth = (UINT16) rSize.Width();
- const UINT16 nHeight = (UINT16) rSize.Height();
- const BYTE cFlags = 128 | ( 7 << 4 );
-
- // Werte rausschreiben
- *pGIF << nWidth;
- *pGIF << nHeight;
- *pGIF << cFlags;
- *pGIF << (BYTE) 0x00;
- *pGIF << (BYTE) 0x00;
-
- // Dummy-Palette mit zwei Eintraegen (Schwarz/Weiss) schreiben;
- // dieses nur wegen Photoshop-Bug, da die keine Bilder ohne
- // globale Farbpalette lesen koennen
- *pGIF << (UINT16) 0;
- *pGIF << (UINT16) 255;
- *pGIF << (UINT16) 65535;
-
- if( pGIF->GetError() )
- bStatus = FALSE;
- }
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::WriteLoopExtension( const Animation& rAnimation )
-{
- DBG_ASSERT( rAnimation.Count() > 0, "Animation has no bitmaps!" );
-
- USHORT nLoopCount = (USHORT) rAnimation.GetLoopCount();
-
- // falls nur ein Durchlauf stattfinden soll,
- // wird keine LoopExtension geschrieben;
- // Default ist dann immer ein Durchlauf
- if( nLoopCount != 1 )
- {
- // Netscape interpretiert den LoopCount
- // als reine Anzahl der _Wiederholungen_
- if( nLoopCount )
- nLoopCount--;
-
- const BYTE cLoByte = (const BYTE) nLoopCount;
- const BYTE cHiByte = (const BYTE) ( nLoopCount >> 8 );
-
- *pGIF << (BYTE) 0x21;
- *pGIF << (BYTE) 0xff;
- *pGIF << (BYTE) 0x0b;
- pGIF->Write( "NETSCAPE2.0", 11 );
- *pGIF << (BYTE) 0x03;
- *pGIF << (BYTE) 0x01;
- *pGIF << cLoByte;
- *pGIF << cHiByte;
- *pGIF << (BYTE) 0x00;
- }
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::WriteLogSizeExtension( const Size& rSize100 )
-{
- // PrefSize in 100th-mm als ApplicationExtension schreiben
- if( rSize100.Width() && rSize100.Height() )
- {
- *pGIF << (BYTE) 0x21;
- *pGIF << (BYTE) 0xff;
- *pGIF << (BYTE) 0x0b;
- pGIF->Write( "STARDIV 5.0", 11 );
- *pGIF << (BYTE) 0x09;
- *pGIF << (BYTE) 0x01;
- *pGIF << (UINT32) rSize100.Width();
- *pGIF << (UINT32) rSize100.Height();
- *pGIF << (BYTE) 0x00;
- }
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::WriteImageExtension( long nTimer, Disposal eDisposal )
-{
- if( bStatus )
- {
- const UINT16 nDelay = (UINT16) nTimer;
- BYTE cFlags = 0;
-
- // Transparent-Flag setzen
- if( bTransparent )
- cFlags |= 1;
-
- // Disposal-Wert setzen
- if( eDisposal == DISPOSE_BACK )
- cFlags |= ( 2 << 2 );
- else if( eDisposal == DISPOSE_PREVIOUS )
- cFlags |= ( 3 << 2 );
-
- *pGIF << (BYTE) 0x21;
- *pGIF << (BYTE) 0xf9;
- *pGIF << (BYTE) 0x04;
- *pGIF << cFlags;
- *pGIF << nDelay;
- *pGIF << (BYTE) pAcc->GetBestPaletteIndex( BMP_COL_TRANS );
- *pGIF << (BYTE) 0x00;
-
- if( pGIF->GetError() )
- bStatus = FALSE;
- }
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::WriteLocalHeader()
-{
- if( bStatus )
- {
- const UINT16 nPosX = (UINT16) nActX;
- const UINT16 nPosY = (UINT16) nActY;
- const UINT16 nWidth = (UINT16) pAcc->Width();
- const UINT16 nHeight = (UINT16) pAcc->Height();
- BYTE cFlags = (BYTE) ( pAcc->GetBitCount() - 1 );
-
- // Interlaced-Flag setzen
- if( nInterlaced )
- cFlags |= 0x40;
-
- // Flag fuer lokale Farbpalette setzen
- cFlags |= 0x80;
-
- // alles rausschreiben
- *pGIF << (BYTE) 0x2c;
- *pGIF << nPosX;
- *pGIF << nPosY;
- *pGIF << nWidth;
- *pGIF << nHeight;
- *pGIF << cFlags;
-
- if( pGIF->GetError() )
- bStatus = FALSE;
- }
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::WritePalette()
-{
- if( bStatus && pAcc->HasPalette() )
- {
- const USHORT nCount = pAcc->GetPaletteEntryCount();
- const USHORT nMaxCount = ( 1 << pAcc->GetBitCount() );
-
- for ( USHORT i = 0; i < nCount; i++ )
- {
- const BitmapColor& rColor = pAcc->GetPaletteColor( i );
-
- *pGIF << rColor.GetRed();
- *pGIF << rColor.GetGreen();
- *pGIF << rColor.GetBlue();
- }
-
- // Rest mit 0 auffuellen
- if( nCount < nMaxCount )
- pGIF->SeekRel( ( nMaxCount - nCount ) * 3 );
-
- if( pGIF->GetError() )
- bStatus = FALSE;
- }
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::WriteAccess()
-{
- GIFLZWCompressor aCompressor;
- const long nWidth = pAcc->Width();
- const long nHeight = pAcc->Height();
- BYTE* pBuffer = NULL;
- const ULONG nFormat = pAcc->GetScanlineFormat();
- long nY;
- long nT;
- long i;
- BOOL bNative = ( BMP_FORMAT_8BIT_PAL == nFormat );
-
- if( !bNative )
- pBuffer = new BYTE[ nWidth ];
-
- if( bStatus && ( 8 == pAcc->GetBitCount() ) && pAcc->HasPalette() )
- {
- aCompressor.StartCompression( *pGIF, pAcc->GetBitCount() );
-
- for( i = 0; i < nHeight; i++ )
- {
- if( nInterlaced )
- {
- nY = i << 3;
-
- if( nY >= nHeight )
- {
- nT = i - ( ( nHeight + 7 ) >> 3 );
- nY= ( nT << 3 ) + 4;
-
- if( nY >= nHeight )
- {
- nT -= ( nHeight + 3 ) >> 3;
- nY = ( nT << 2 ) + 2;
-
- if ( nY >= nHeight )
- {
- nT -= ( ( nHeight + 1 ) >> 2 );
- nY = ( nT << 1 ) + 1;
- }
- }
- }
- }
- else
- nY = i;
-
- if( bNative )
- aCompressor.Compress( pAcc->GetScanline( nY ), nWidth );
- else
- {
- for( long nX = 0L; nX < nWidth; nX++ )
- pBuffer[ nX ] = (BYTE) pAcc->GetPixel( nY, nX );
-
- aCompressor.Compress( pBuffer, nWidth );
- }
-
- if ( pGIF->GetError() )
- bStatus = FALSE;
-
- MayCallback( nMinPercent + ( nMaxPercent - nMinPercent ) * i / nHeight );
-
- if( !bStatus )
- break;
- }
-
- aCompressor.EndCompression();
-
- if ( pGIF->GetError() )
- bStatus = FALSE;
- }
-
- delete[] pBuffer;
-}
-
-// ------------------------------------------------------------------------
-
-void GIFWriter::WriteTerminator()
-{
- if( bStatus )
- {
- *pGIF << (BYTE) 0x3b;
-
- if( pGIF->GetError() )
- bStatus = FALSE;
- }
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic,
- FilterConfigItem* pConfigItem, BOOL )
-{
- return GIFWriter().WriteGIF( rGraphic, rStream, pConfigItem );
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" BOOL __LOADONCALLAPI DoExportDialog( FltCallDialogParameter& rPara )
-{
- BOOL bRet = FALSE;
-
- if ( rPara.pWindow )
- {
- ByteString aResMgrName( "egi" );
- ResMgr* pResMgr;
-
- pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
-
- if( pResMgr )
- {
- rPara.pResMgr = pResMgr;
- bRet = ( DlgExportEGIF( rPara ).Execute() == RET_OK );
- delete pResMgr;
- }
- else
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-// ------------------------------------------------------------------------
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0;
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
diff --git a/goodies/source/filter.vcl/egif/egifstr.src b/goodies/source/filter.vcl/egif/egifstr.src
deleted file mode 100644
index b9d63708e5d9..000000000000
--- a/goodies/source/filter.vcl/egif/egifstr.src
+++ /dev/null
@@ -1,42 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: egifstr.src,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#include "strings.hrc"
-
-// Key fuer den Dialog
-String KEY_INTER
-{
- Text = "Interlaced";
-};
-String KEY_TRANS
-{
- Text = "Translucent";
-};
diff --git a/goodies/source/filter.vcl/egif/exports.map b/goodies/source/filter.vcl/egif/exports.map
deleted file mode 100644
index 10820132c0ce..000000000000
--- a/goodies/source/filter.vcl/egif/exports.map
+++ /dev/null
@@ -1,8 +0,0 @@
-GIFEXPORTER_1_0 {
- global:
- GraphicExport;
- DoExportDialog;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/egif/giflzwc.cxx b/goodies/source/filter.vcl/egif/giflzwc.cxx
deleted file mode 100644
index a542cff8b7fa..000000000000
--- a/goodies/source/filter.vcl/egif/giflzwc.cxx
+++ /dev/null
@@ -1,259 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: giflzwc.cxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <tools/stream.hxx>
-#include "giflzwc.hxx"
-
-// ----------------------------
-// - GIFImageDataOutputStream -
-// ----------------------------
-
-class GIFImageDataOutputStream
-{
-private:
-
- void FlushBlockBuf();
- inline void FlushBitsBufsFullBytes();
-
- SvStream& rStream;
- BYTE* pBlockBuf;
- BYTE nBlockBufSize;
- ULONG nBitsBuf;
- USHORT nBitsBufSize;
-
-public:
-
- GIFImageDataOutputStream( SvStream & rGIF, BYTE nLZWDataSize );
- ~GIFImageDataOutputStream();
-
- inline void WriteBits( USHORT nCode, USHORT nCodeLen );
-};
-
-// ------------------------------------------------------------------------
-
-inline void GIFImageDataOutputStream::FlushBitsBufsFullBytes()
-{
- while (nBitsBufSize>=8)
- {
- if( nBlockBufSize==255 )
- FlushBlockBuf();
-
- pBlockBuf[nBlockBufSize++] = (BYTE) nBitsBuf;
- nBitsBuf >>= 8;
- nBitsBufSize -= 8;
- }
-}
-
-// ------------------------------------------------------------------------
-
-inline void GIFImageDataOutputStream::WriteBits( USHORT nCode, USHORT nCodeLen )
-{
- if( nBitsBufSize+nCodeLen>32 )
- FlushBitsBufsFullBytes();
-
- nBitsBuf |= (ULONG) nCode << nBitsBufSize;
- nBitsBufSize = nBitsBufSize + nCodeLen;
-}
-
-// ------------------------------------------------------------------------
-
-GIFImageDataOutputStream::GIFImageDataOutputStream( SvStream & rGIF, BYTE nLZWDataSize ) :
- rStream(rGIF)
-{
- pBlockBuf = new BYTE[ 255 ];
- nBlockBufSize = 0;
- nBitsBufSize = 0;
- nBitsBuf = 0;
- rStream << nLZWDataSize;
-}
-
-// ------------------------------------------------------------------------
-
-
-GIFImageDataOutputStream::~GIFImageDataOutputStream()
-{
- WriteBits(0,7);
- FlushBitsBufsFullBytes();
- FlushBlockBuf();
- rStream << (BYTE)0;
- delete[] pBlockBuf;
-}
-
-// ------------------------------------------------------------------------
-
-void GIFImageDataOutputStream::FlushBlockBuf()
-{
- if( nBlockBufSize )
- {
- rStream << (BYTE) nBlockBufSize;
- rStream.Write( pBlockBuf,nBlockBufSize );
- nBlockBufSize = 0;
- }
-}
-
-// -------------------
-// - GIFLZWCTreeNode -
-// -------------------
-
-struct GIFLZWCTreeNode
-{
-
- GIFLZWCTreeNode* pBrother; // naechster Knoten, der den selben Vater hat
- GIFLZWCTreeNode* pFirstChild; // erster Sohn
- USHORT nCode; // Der Code fuer den String von Pixelwerten, der sich ergibt, wenn
- USHORT nValue; // Der Pixelwert
-};
-
-// --------------------
-// - GIFLZWCompressor -
-// --------------------
-
-GIFLZWCompressor::GIFLZWCompressor()
-{
- pIDOS=NULL;
-}
-
-// ------------------------------------------------------------------------
-
-GIFLZWCompressor::~GIFLZWCompressor()
-{
- if (pIDOS!=NULL) EndCompression();
-}
-
-// ------------------------------------------------------------------------
-
-void GIFLZWCompressor::StartCompression( SvStream& rGIF, USHORT nPixelSize )
-{
- if( !pIDOS )
- {
- USHORT i;
-
- nDataSize = nPixelSize;
-
- if( nDataSize < 2 )
- nDataSize=2;
-
- nClearCode=1<<nDataSize;
- nEOICode=nClearCode+1;
- nTableSize=nEOICode+1;
- nCodeSize=nDataSize+1;
-
- pIDOS=new GIFImageDataOutputStream(rGIF,(BYTE)nDataSize);
- pTable=new GIFLZWCTreeNode[4096];
-
- for (i=0; i<4096; i++)
- {
- pTable[i].pBrother = pTable[i].pFirstChild = NULL;
- pTable[i].nValue = (BYTE) ( pTable[i].nCode = i );
- }
-
- pPrefix = NULL;
- pIDOS->WriteBits( nClearCode,nCodeSize );
- }
-}
-
-// ------------------------------------------------------------------------
-
-void GIFLZWCompressor::Compress( HPBYTE pSrc, ULONG nSize )
-{
- if( pIDOS )
- {
- GIFLZWCTreeNode* p;
- USHORT i;
- BYTE nV;
-
- if( !pPrefix && nSize )
- {
- pPrefix=pTable+(*pSrc++);
- nSize--;
- }
-
- while( nSize )
- {
- nSize--;
- nV=*pSrc++;
- for( p=pPrefix->pFirstChild; p!=NULL; p=p->pBrother )
- {
- if (p->nValue==nV)
- break;
- }
-
- if( p)
- pPrefix=p;
- else
- {
- pIDOS->WriteBits(pPrefix->nCode,nCodeSize);
-
- if (nTableSize==4096)
- {
- pIDOS->WriteBits(nClearCode,nCodeSize);
-
- for (i=0; i<nClearCode; i++)
- pTable[i].pFirstChild=NULL;
-
- nCodeSize=nDataSize+1;
- nTableSize=nEOICode+1;
- }
- else
- {
- if(nTableSize==(USHORT)(1<<nCodeSize))
- nCodeSize++;
-
- p=pTable+(nTableSize++);
- p->pBrother=pPrefix->pFirstChild;
- pPrefix->pFirstChild=p;
- p->nValue=nV;
- p->pFirstChild=NULL;
- }
-
- pPrefix=pTable+nV;
- }
- }
- }
-}
-
-// ------------------------------------------------------------------------
-
-void GIFLZWCompressor::EndCompression()
-{
- if( pIDOS )
- {
- if( pPrefix )
- pIDOS->WriteBits(pPrefix->nCode,nCodeSize);
-
- pIDOS->WriteBits( nEOICode,nCodeSize );
- delete[] pTable;
- delete pIDOS;
- pIDOS=NULL;
- }
-}
diff --git a/goodies/source/filter.vcl/egif/giflzwc.hxx b/goodies/source/filter.vcl/egif/giflzwc.hxx
deleted file mode 100644
index 51d7842a59db..000000000000
--- a/goodies/source/filter.vcl/egif/giflzwc.hxx
+++ /dev/null
@@ -1,68 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: giflzwc.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _GIFLZWC_HXX
-#define _GIFLZWC_HXX
-
-#ifndef _BMPACC_HXX
-#include <vcl/bmpacc.hxx>
-#endif
-
-// --------------------
-// - GIFLZWCompressor -
-// --------------------
-
-class GIFImageDataOutputStream;
-struct GIFLZWCTreeNode;
-
-class GIFLZWCompressor
-{
-private:
-
- GIFImageDataOutputStream* pIDOS;
- GIFLZWCTreeNode* pTable;
- GIFLZWCTreeNode* pPrefix;
- USHORT nDataSize;
- USHORT nClearCode;
- USHORT nEOICode;
- USHORT nTableSize;
- USHORT nCodeSize;
-
-public:
-
- GIFLZWCompressor();
- ~GIFLZWCompressor();
-
- void StartCompression( SvStream& rGIF, USHORT nPixelSize );
- void Compress( HPBYTE pSrc, ULONG nSize );
- void EndCompression();
-};
-
-#endif // _GIFLZWC_HXX
diff --git a/goodies/source/filter.vcl/egif/makefile.mk b/goodies/source/filter.vcl/egif/makefile.mk
deleted file mode 100644
index 418af69c7bf8..000000000000
--- a/goodies/source/filter.vcl/egif/makefile.mk
+++ /dev/null
@@ -1,82 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.14 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=egif
-TARGET2=egi
-DEPTARGET=vegif
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-
-SRS1NAME=$(TARGET)
-SRC1FILES = dlgegif.src \
- egifstr.src
-.IF "$(L10N_framework)"==""
-SLOFILES= $(SLO)$/egif.obj \
- $(SLO)$/dlgegif.obj \
- $(SLO)$/giflzwc.obj
-.ENDIF
-
-# ==========================================================================
-
-RESLIB1NAME=$(TARGET2)
-RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-
-.IF "$(L10N_framework)"==""
-SHL1TARGET= egi$(DLLPOSTFIX)
-SHL1IMPLIB= egif
-SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
-
-SHL1LIBS= $(SLB)$/egif.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/egif.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/egif/strings.hrc b/goodies/source/filter.vcl/egif/strings.hrc
deleted file mode 100644
index 8d1231753f49..000000000000
--- a/goodies/source/filter.vcl/egif/strings.hrc
+++ /dev/null
@@ -1,31 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: strings.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#define KEY_INTER 256
-#define KEY_TRANS 257
diff --git a/goodies/source/filter.vcl/eos2met/dlgeos2.cxx b/goodies/source/filter.vcl/eos2met/dlgeos2.cxx
deleted file mode 100644
index c42c04aa86ed..000000000000
--- a/goodies/source/filter.vcl/eos2met/dlgeos2.cxx
+++ /dev/null
@@ -1,182 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeos2.cxx,v $
- * $Revision: 1.10 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#ifndef GCC
-#endif
-#include <com/sun/star/awt/Size.hpp>
-#include <vcl/msgbox.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include "dlgeos2.hxx"
-#include "dlgeos2.hrc"
-#include "strings.hrc"
-
-/*************************************************************************
-|*
-|* Ctor
-|*
-\************************************************************************/
-
-DlgExportEMET::DlgExportEMET( FltCallDialogParameter& rPara ) :
- ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EMET, *rPara.pResMgr ) ),
- rFltCallPara ( rPara ),
- aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
- aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
- aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
- aRbOriginal ( this, ResId( RB_ORIGINAL, *rPara.pResMgr ) ),
- aRbSize ( this, ResId( RB_SIZE, *rPara.pResMgr ) ),
- aGrpMode ( this, ResId( GRP_MODE, *rPara.pResMgr ) ),
- aFtSizeX ( this, ResId( FT_SIZEX, *rPara.pResMgr ) ),
- aMtfSizeX ( this, ResId( MTF_SIZEX, *rPara.pResMgr ) ),
- aFtSizeY ( this, ResId( FT_SIZEY, *rPara.pResMgr ) ),
- aMtfSizeY ( this, ResId( MTF_SIZEY, *rPara.pResMgr ) ),
- aGrpSize ( this, ResId( GRP_SIZE, *rPara.pResMgr ) ),
- pMgr ( rPara.pResMgr )
-{
- FreeResource();
-
- String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/MET" ) );
- pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
-
- aBtnOK.SetClickHdl( LINK( this, DlgExportEMET, OK ) );
- aRbOriginal.SetClickHdl( LINK( this, DlgExportEMET, ClickRbOriginal ) );
- aRbSize.SetClickHdl( LINK( this, DlgExportEMET, ClickRbSize ) );
-
- // Config-Parameter lesen
- sal_Int32 nMode = pConfigItem->ReadInt32( String( ResId( KEY_MODE, *pMgr ) ), 0 );
- ::com::sun::star::awt::Size aDefault( 10000, 10000 );
- ::com::sun::star::awt::Size aSize;
- aSize = pConfigItem->ReadSize( String( ResId( KEY_SIZE, *pMgr ) ), aDefault );
-
- aMtfSizeX.SetDefaultUnit( FUNIT_MM );
- aMtfSizeY.SetDefaultUnit( FUNIT_MM );
-
- aMtfSizeX.SetValue( aSize.Width );
- aMtfSizeY.SetValue( aSize.Height );
-
- switch ( rPara.eFieldUnit )
- {
-// case FUNIT_NONE :
-// case FUNIT_KM :
-// case FUNIT_PERCENT :
-// case FUNIT_CUSTOM :
-// case FUNIT_MILE :
-// case FUNIT_FOOT :
-// case FUNIT_M :
- case FUNIT_MM :
- case FUNIT_CM :
- case FUNIT_TWIP :
- case FUNIT_POINT :
- case FUNIT_PICA :
- case FUNIT_INCH :
- case FUNIT_100TH_MM :
- {
- aMtfSizeX.SetUnit( rPara.eFieldUnit );
- aMtfSizeY.SetUnit( rPara.eFieldUnit );
- }
- break;
- default:
- break; // multiple other value not handled -Wall
- }
- if ( nMode == 1 )
- {
- aRbSize.Check( TRUE );
- ClickRbSize( NULL );
- }
- else
- {
- aRbOriginal.Check( TRUE );
- ClickRbOriginal( NULL );
- }
-}
-
-DlgExportEMET::~DlgExportEMET()
-{
- delete pConfigItem;
-}
-
-/*************************************************************************
-|*
-|* Speichert eingestellte Werte in ini-Datei
-|*
-\************************************************************************/
-
-IMPL_LINK( DlgExportEMET, OK, void *, EMPTYARG )
-{
- // Config-Parameter schreiben
- ::com::sun::star::awt::Size aSize(
- (sal_Int32)MetricField::ConvertDoubleValue( aMtfSizeX.GetValue(), 2, aMtfSizeX.GetUnit(), MAP_100TH_MM ),
- (sal_Int32)MetricField::ConvertDoubleValue( aMtfSizeY.GetValue(), 2, aMtfSizeY.GetUnit(), MAP_100TH_MM ) );
- sal_Int32 nStrMode = ( aRbSize.IsChecked() ) ? 1 : 0;
-
- pConfigItem->WriteInt32( String( ResId( KEY_MODE, *pMgr ) ), nStrMode );
- pConfigItem->WriteSize( String( ResId( KEY_SIZE, *pMgr ) ), aSize );
- rFltCallPara.aFilterData = pConfigItem->GetFilterData();
- EndDialog( RET_OK );
-
- return 0;
-}
-
-/*************************************************************************
-|*
-|* Enabled/Disabled Controls
-|*
-\************************************************************************/
-
-IMPL_LINK( DlgExportEMET, ClickRbOriginal, void*, EMPTYARG )
-{
- aGrpSize.Disable();
- aFtSizeX.Disable();
- aMtfSizeX.Disable();
- aFtSizeY.Disable();
- aMtfSizeY.Disable();
-
- return 0;
-}
-
-
-/*************************************************************************
-|*
-|* Enabled/Disabled Controls
-|*
-\************************************************************************/
-
-IMPL_LINK( DlgExportEMET, ClickRbSize, void*, EMPTYARG )
-{
- aGrpSize.Enable();
- aFtSizeX.Enable();
- aMtfSizeX.Enable();
- aFtSizeY.Enable();
- aMtfSizeY.Enable();
-
- return 0;
-}
-
diff --git a/goodies/source/filter.vcl/eos2met/dlgeos2.hrc b/goodies/source/filter.vcl/eos2met/dlgeos2.hrc
deleted file mode 100644
index 11c159632cc2..000000000000
--- a/goodies/source/filter.vcl/eos2met/dlgeos2.hrc
+++ /dev/null
@@ -1,44 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeos2.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "goodies.hrc"
-
-#define BTN_OK 1
-#define BTN_CANCEL 1
-#define BTN_HELP 1
-#define CBX_SIZE 2
-#define MTF_SIZEX 1
-#define MTF_SIZEY 2
-#define FT_SIZEX 1
-#define FT_SIZEY 2
-#define GRP_SIZE 1
-#define GRP_MODE 2
-#define RB_ORIGINAL 1
-#define RB_SIZE 2
-
diff --git a/goodies/source/filter.vcl/eos2met/dlgeos2.hxx b/goodies/source/filter.vcl/eos2met/dlgeos2.hxx
deleted file mode 100644
index c0820e6ba2bf..000000000000
--- a/goodies/source/filter.vcl/eos2met/dlgeos2.hxx
+++ /dev/null
@@ -1,83 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeos2.hxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#ifndef _DLGEOS2_HXX_
-#define _DLGEOS2_HXX_
-#include <svtools/fltcall.hxx>
-#include <vcl/dialog.hxx>
-#include <vcl/button.hxx>
-#include <vcl/fixed.hxx>
-#include <vcl/field.hxx>
-
-/*************************************************************************
-|*
-|* Dialog zum Einstellen von Filteroptionen bei Vektorformaten
-|*
-\************************************************************************/
-
-class FilterConfigItem;
-class ResMgr;
-
-class DlgExportEMET : public ModalDialog
-{
-private:
-
- FltCallDialogParameter& rFltCallPara;
-
- OKButton aBtnOK;
- CancelButton aBtnCancel;
- HelpButton aBtnHelp;
-
- RadioButton aRbOriginal;
- RadioButton aRbSize;
- FixedLine aGrpMode;
-
- FixedText aFtSizeX;
- MetricField aMtfSizeX;
- FixedText aFtSizeY;
- MetricField aMtfSizeY;
- FixedLine aGrpSize;
-
- FilterConfigItem* pConfigItem;
- ResMgr* pMgr;
-
- DECL_LINK( OK, void* p );
- DECL_LINK( ClickRbOriginal,void* p );
- DECL_LINK( ClickRbSize,void* p );
-
-public:
- DlgExportEMET( FltCallDialogParameter& rPara );
- ~DlgExportEMET();
-};
-
-
-#endif // _DLGEMET_HXX_
-
diff --git a/goodies/source/filter.vcl/eos2met/dlgeos2.src b/goodies/source/filter.vcl/eos2met/dlgeos2.src
deleted file mode 100644
index 9a311d565c3b..000000000000
--- a/goodies/source/filter.vcl/eos2met/dlgeos2.src
+++ /dev/null
@@ -1,165 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeos2.src,v $
- * $Revision: 1.20 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#include "dlgeos2.hrc"
-
-ModalDialog DLG_EXPORT_EMET
-{
- OutputSize = TRUE ;
- SVLook = TRUE ;
- Size = MAP_APPFONT ( 178 , 89 ) ;
- Moveable = TRUE ;
- Closeable = TRUE ;
- Text [ en-US ] = "MET Options" ;
- MetricField MTF_SIZEX
- {
- Border = TRUE ;
- Pos = MAP_APPFONT ( 60 , 55 ) ;
- Size = MAP_APPFONT ( 50 , 12 ) ;
- TabStop = TRUE ;
- Repeat = TRUE ;
- Spin = TRUE ;
- Minimum = 100 ;
- Maximum = 99999 ;
- StrictFormat = TRUE ;
- DecimalDigits = 2 ;
- Unit = FUNIT_MM ;
- First = 100 ;
- Last = 99999 ;
- SpinSize = 100 ;
- };
- MetricField MTF_SIZEY
- {
- Border = TRUE ;
- Pos = MAP_APPFONT ( 60 , 71 ) ;
- Size = MAP_APPFONT ( 50 , 12 ) ;
- TabStop = TRUE ;
- Repeat = TRUE ;
- Spin = TRUE ;
- Minimum = 100 ;
- Maximum = 99999 ;
- StrictFormat = TRUE ;
- DecimalDigits = 2 ;
- Unit = FUNIT_MM ;
- First = 100 ;
- Last = 99999 ;
- SpinSize = 100 ;
- };
- FixedLine GRP_SIZE
- {
- Pos = MAP_APPFONT ( 6 , 44 ) ;
- Size = MAP_APPFONT ( 110 , 8 ) ;
- Text [ en-US ] = "Size" ;
- };
- FixedText FT_SIZEX
- {
- Pos = MAP_APPFONT ( 12 , 56 ) ;
- Size = MAP_APPFONT ( 45 , 10 ) ;
- Text [ en-US ] = "Width" ;
- };
- FixedText FT_SIZEY
- {
- Pos = MAP_APPFONT ( 12 , 72 ) ;
- Size = MAP_APPFONT ( 45 , 10 ) ;
- Text [ en-US ] = "Height" ;
- };
- OKButton BTN_OK
- {
- Pos = MAP_APPFONT ( 122 , 6 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- DefButton = TRUE ;
- };
- CancelButton BTN_CANCEL
- {
- Pos = MAP_APPFONT ( 122 , 24 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- HelpButton BTN_HELP
- {
- Pos = MAP_APPFONT ( 122 , 43 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- RadioButton RB_ORIGINAL
- {
- Pos = MAP_APPFONT ( 12 , 14 ) ;
- Size = MAP_APPFONT ( 98 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Original" ;
- };
- RadioButton RB_SIZE
- {
- Pos = MAP_APPFONT ( 12 , 28 ) ;
- Size = MAP_APPFONT ( 98 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Size" ;
- };
- FixedLine GRP_MODE
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 110 , 8 ) ;
- Text [ en-US ] = "Mode" ;
- };
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/goodies/source/filter.vcl/eos2met/eos2met.cxx b/goodies/source/filter.vcl/eos2met/eos2met.cxx
deleted file mode 100644
index b818e9cd26ba..000000000000
--- a/goodies/source/filter.vcl/eos2met/eos2met.cxx
+++ /dev/null
@@ -1,2651 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: eos2met.cxx,v $
- * $Revision: 1.21 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <svtools/fltcall.hxx>
-
-#include <math.h>
-#include <tools/stream.hxx>
-#include <tools/bigint.hxx>
-#include <vcl/metaact.hxx>
-#include <vcl/salbtype.hxx>
-#include <tools/poly.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/gradient.hxx>
-#include <vcl/hatch.hxx>
-#include <vcl/metric.hxx>
-#include <vcl/font.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/msgbox.hxx>
-#include <svl/solar.hrc>
-#include "strings.hrc"
-#include "dlgeos2.hxx"
-
-// -----------------------------Feld-Typen-------------------------------
-
-#define BegDocumnMagic 0xA8A8 /* Begin Document */
-#define EndDocumnMagic 0xA8A9 /* End Document */
-
-#define BegResGrpMagic 0xC6A8 /* Begin Resource Group */
-#define EndResGrpMagic 0xC6A9 /* End Resource Group */
-
-#define BegColAtrMagic 0x77A8 /* Begin Color Attribute Table */
-#define EndColAtrMagic 0x77A9 /* End Color Attribute Table */
-#define BlkColAtrMagic 0x77B0 /* Color Attribute Table */
-#define MapColAtrMagic 0x77AB /* Map Color Attribute Table */
-
-#define BegImgObjMagic 0xFBA8 /* Begin Image Object */
-#define EndImgObjMagic 0xFBA9 /* End Image Object */
-#define DscImgObjMagic 0xFBA6 /* Image Data Descriptor */
-#define DatImgObjMagic 0xFBEE /* Image Picture Data */
-
-#define BegObjEnvMagic 0xC7A8 /* Begin Object Environment Group */
-#define EndObjEnvMagic 0xC7A9 /* End Object Environment Group */
-
-#define BegGrfObjMagic 0xBBA8 /* Begin Graphics Object */
-#define EndGrfObjMagic 0xBBA9 /* End Graphics Object */
-#define DscGrfObjMagic 0xBBA6 /* Graphics Data Descritor */
-#define DatGrfObjMagic 0xBBEE /* Graphics Data */
-
-#define MapCodFntMagic 0x8AAB /* Map Coded Font */
-#define MapDatResMagic 0xC3AB /* Map Data Resource */
-
-// Struktur des Metafiles
-// BegDocumn
-// BegResGrp
-// BegColAtr
-// BlkColAtr
-// EndColAtr
-// BegImgObj[0..n]
-// BegResGrp[]
-// BegColAtr[]
-// BlkColAtr
-// EndColAtr
-// EndResGrp
-// BegObjEnv[]
-// MapColAtr
-// EndObjEnv
-// DscImgObj
-// DatImgOb1
-// DatImgOb2[1..n]
-// EndImgObj
-// BegGrfObj
-// BegObjEnv[]
-// MapColAtr
-// MapCodFnt1
-// MapCodFnt2[0..n]
-// MapDatRes[0..n]
-// EndObjEnv
-// DscGrfObj
-// DatGrfObj[0..n]
-// EndGrfObj
-// EndResGrp
-// EndDocumn
-
-//============================== METWriter ===================================
-
-struct METChrSet
-{
- struct METChrSet * pSucc;
- BYTE nSet;
- String aName;
- FontWeight eWeight;
-};
-
-struct METGDIStackMember
-{
- struct METGDIStackMember * pSucc;
- Color aLineColor;
- Color aFillColor;
- RasterOp eRasterOp;
- Font aFont;
- MapMode aMapMode;
- Rectangle aClipRect;
-};
-
-class METWriter
-{
-private:
-
- BOOL bStatus;
- ULONG nLastPercent; // Mit welcher Zahl pCallback zuletzt aufgerufen wurde.
- SvStream* pMET;
- Rectangle aPictureRect;
- MapMode aPictureMapMode;
- MapMode aTargetMapMode;
- ULONG nActualFieldStartPos; // Anfangs-Position des aktuellen 'Field'
- ULONG nNumberOfDataFields; // Anzahl der angefangenen 'Graphcis Data Fields'
- Color aGDILineColor;
- Color aGDIFillColor;
- RasterOp eGDIRasterOp;
- Font aGDIFont;
- MapMode aGDIMapMode; // derzeit unbenutzt!
- Rectangle aGDIClipRect; // derzeit unbenutzt!
- METGDIStackMember* pGDIStack;
- Color aMETColor;
- Color aMETBackgroundColor;
- Color aMETPatternSymbol;
- RasterOp eMETMix ;
- long nMETStrokeLineWidth;
- Size aMETChrCellSize;
- short nMETChrAngle;
- BYTE nMETChrSet;
- METChrSet* pChrSetList; // Liste der Character-Sets
- BYTE nNextChrSetId; // die erste unbenutzte ChrSet-Id
- ULONG nActBitmapId; // Field-Id der naechsten Bitmap
- ULONG nNumberOfActions; // Anzahl der Actions im GDIMetafile
- ULONG nNumberOfBitmaps; // Anzahl der Bitmaps
- ULONG nWrittenActions; // Anzahl der bereits verarbeiteten Actions beim Schreiben der Orders
- ULONG nWrittenBitmaps; // Anzahl der bereits geschriebenen Bitmaps
- ULONG nActBitmapPercent; // Wieviel Prozent die naechste Bitmap schon geschrieben ist.
-
- com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
-
- void MayCallback();
- // Berechnet anhand der obigen 5 Parameter eine Prozentzahl
- // und macht dann ggf. einen Callback. Setzt bStatus auf FALSE wenn User abbrechen
- // moechte.
-
- void CountActionsAndBitmaps(const GDIMetaFile * pMTF);
- // Zaehlt die Bitmaps und Actions (nNumberOfActions und nNumberOfBitmaps muessen
- // zu Anfang auf 0 gesetzt werden, weil diese Methode rekursiv ist)
-
- void WriteBigEndianShort(USHORT nWord);
- void WriteBigEndianLong(ULONG nLong);
-
- void WritePoint(Point aPt);
- void WriteClipRect( const Rectangle& rRect );
- void WriteFieldIntroducer(USHORT nFieldSize, USHORT nFieldType,
- BYTE nFlags, USHORT nSegSeqNum);
- void UpdateFieldSize();
-
- void WriteFieldId(ULONG nId);
-
- void CreateChrSets(const GDIMetaFile * pMTF);
- void CreateChrSet(const Font & rFont);
- void WriteChrSets();
- BYTE FindChrSet(const Font & rFont);
-
- void WriteColorAttributeTable(ULONG nFieldId=4, BitmapPalette* pPalette=NULL,
- BYTE nBasePartFlags=0x40, BYTE nBasePartLCTID=0);
-
- void WriteImageObject(const Bitmap & rBitmap);
- void WriteImageObjects(const GDIMetaFile * pMTF);
-
- void WriteDataDescriptor(const GDIMetaFile * pMTF);
-
- void WillWriteOrder(ULONG nNextOrderMaximumLength);
-
- void METSetAndPushLineInfo( const LineInfo& rLineInfo );
- void METPopLineInfo( const LineInfo& rLineInfo );
- void METBitBlt(Point aPt, Size aSize, const Bitmap & rBitmap);
- void METBeginArea(BOOL bBoundaryLine);
- void METEndArea();
- void METBeginPath(sal_uInt32 nPathId);
- void METEndPath();
- void METFillPath(sal_uInt32 nPathId);
- void METOutlinePath(sal_uInt32 nPathId);
- void METCloseFigure();
- void METMove(Point aPt);
- void METLine(Point aPt1, Point aPt2);
- void METLine(const Polygon & rPolygon);
- void METLine(const PolyPolygon & rPolyPolygon);
- void METLineAtCurPos(Point aPt);
- void METBox(BOOL bFill, BOOL bBoundary,
- Rectangle aRect, sal_uInt32 nHAxis, sal_uInt32 nVAxis);
- void METFullArc(Point aCenter, double fMultiplier);
- void METPartialArcAtCurPos(Point aCenter, double fMultiplier,
- double fStartAngle, double fSweepAngle);
- void METChrStr(Point aPt, String aStr);
- void METSetArcParams(long nP, long nQ, long nR, long nS);
- void METSetColor(Color aColor);
- void METSetBackgroundColor(Color aColor);
- void METSetMix(RasterOp eROP);
- void METSetChrCellSize(Size aSize);
- void METSetChrAngle(short nAngle);
- void METSetChrSet(BYTE nSet);
-
- void WriteOrders(const GDIMetaFile * pMTF);
-
- void WriteObjectEnvironmentGroup(const GDIMetaFile * pMTF);
-
- void WriteGraphicsObject(const GDIMetaFile * pMTF);
-
- void WriteResourceGroup(const GDIMetaFile * pMTF);
-
- void WriteDocument(const GDIMetaFile * pMTF);
-
-public:
-
- METWriter() {}
-
- BOOL WriteMET( const GDIMetaFile & rMTF, SvStream & rTargetStream,
- FilterConfigItem* pConfigItem );
-};
-
-
-//========================== Methoden von METWriter ==========================
-
-void METWriter::MayCallback()
-{
- if ( xStatusIndicator.is() )
- {
- ULONG nPercent;
- nPercent=((nWrittenBitmaps<<14)+(nActBitmapPercent<<14)/100+nWrittenActions)
- *100/((nNumberOfBitmaps<<14)+nNumberOfActions);
-
- if (nPercent>=nLastPercent+3)
- {
- nLastPercent = nPercent;
- if ( nPercent <= 100 )
- xStatusIndicator->setValue( nPercent );
- }
- }
-}
-
-void METWriter::WriteClipRect( const Rectangle& rRect )
-{
- aGDIClipRect = rRect;
- sal_uInt32 nPathId = ( rRect.IsEmpty() ) ? 0 : 1;
- if ( nPathId )
- {
- Polygon aPoly( rRect );
- METBeginPath( nPathId );
- METLine( aPoly );
- METEndPath();
- }
- WillWriteOrder(8);
- *pMET << (BYTE)0xb4 << (BYTE)6
- << (BYTE)0x00 << (BYTE)0 << nPathId;
-}
-
-void METWriter::CountActionsAndBitmaps(const GDIMetaFile * pMTF)
-{
- const MetaAction* pMA;
-
- for( ULONG nAction = 0, nActionCount=pMTF->GetActionCount(); nAction < nActionCount; nAction++ )
- {
- pMA = pMTF->GetAction(nAction);
-
- switch (pMA->GetType())
- {
- case META_EPS_ACTION :
- {
- const GDIMetaFile aGDIMetaFile( ((const MetaEPSAction*)pMA)->GetSubstitute() );
- INT32 nCount = aGDIMetaFile.GetActionCount();
- INT32 i;
- for ( i = 0; i < nCount; i++ )
- if ( ((const MetaAction*)aGDIMetaFile.GetAction( i ))->GetType() == META_BMPSCALE_ACTION )
- break;
- if ( i == nCount)
- break;
- }
- case META_BMP_ACTION:
- case META_BMPSCALE_ACTION:
- case META_BMPSCALEPART_ACTION:
- case META_BMPEX_ACTION:
- case META_BMPEXSCALE_ACTION:
- case META_BMPEXSCALEPART_ACTION:
- nNumberOfBitmaps++;
- break;
- }
- nNumberOfActions++;
- }
-}
-
-
-void METWriter::WriteBigEndianShort(USHORT nWord)
-{
- *pMET << ((BYTE)(nWord>>8)) << ((BYTE)(nWord&0x00ff));
-}
-
-
-void METWriter::WriteBigEndianLong(ULONG nLong)
-{
- WriteBigEndianShort((USHORT)(nLong>>16));
- WriteBigEndianShort((USHORT)(nLong&0x0000ffff));
-}
-
-
-void METWriter::WritePoint(Point aPt)
-{
- Point aNewPt = OutputDevice::LogicToLogic( aPt, aPictureMapMode, aTargetMapMode );
-
- *pMET << (long) ( aNewPt.X() - aPictureRect.Left() )
- << (long) ( aPictureRect.Bottom() - aNewPt.Y() );
-}
-
-
-void METWriter::WriteFieldIntroducer(USHORT nFieldSize, USHORT nFieldType,
- BYTE nFlags, USHORT nSegSeqNum)
-{
- nActualFieldStartPos=pMET->Tell();
- WriteBigEndianShort(nFieldSize);
- *pMET << (BYTE)0xd3 << nFieldType << nFlags << nSegSeqNum;
-}
-
-
-void METWriter::UpdateFieldSize()
-{
- ULONG nPos;
-
- nPos=pMET->Tell();
- pMET->Seek(nActualFieldStartPos);
- WriteBigEndianShort((USHORT)(nPos-nActualFieldStartPos));
- pMET->Seek(nPos);
-}
-
-
-void METWriter::WriteFieldId(ULONG nId)
-{
- BYTE nbyte;
- short i;
-
- for (i=1; i<=8; i++) {
- nbyte= '0' + (BYTE)((nId >> (32-i*4)) & 0x0f);
- *pMET << nbyte;
- }
-}
-
-
-void METWriter::CreateChrSets(const GDIMetaFile * pMTF)
-{
- ULONG nAction, nActionCount;
- const MetaAction * pMA;
-
- if (bStatus==FALSE)
- return;
-
- nActionCount=pMTF->GetActionCount();
-
- for (nAction=0; nAction<nActionCount; nAction++)
- {
- pMA = pMTF->GetAction(nAction);
-
- switch (pMA->GetType())
- {
- case META_FONT_ACTION:
- {
- const MetaFontAction* pA = (const MetaFontAction*) pMA;
- CreateChrSet( pA->GetFont() );
- }
- break;
- }
- }
-}
-
-
-void METWriter::CreateChrSet(const Font & rFont)
-{
- METChrSet * pCS;
-
- if ( FindChrSet( rFont ) == 0 )
- {
- pCS = new METChrSet;
- pCS->pSucc = pChrSetList; pChrSetList=pCS;
- pCS->nSet = nNextChrSetId++;
- pCS->aName = rFont.GetName();
- pCS->eWeight = rFont.GetWeight();
- }
-}
-
-
-BYTE METWriter::FindChrSet(const Font & rFont)
-{
- METChrSet* pCS;
-
- for (pCS=pChrSetList; pCS!=NULL; pCS=pCS->pSucc)
- {
- if (pCS->aName==rFont.GetName() && pCS->eWeight==rFont.GetWeight() )
- return pCS->nSet;
- }
-
- return 0;
-}
-
-
-void METWriter::WriteChrSets()
-{
- USHORT i;
- char c = 0;
- METChrSet * pCS;
- BYTE nbyte;
-
- for (pCS=pChrSetList; pCS!=NULL; pCS=pCS->pSucc)
- {
-
- WriteFieldIntroducer(0x58,MapCodFntMagic,0,0);
-
- WriteBigEndianShort(0x0050);
-
- *pMET << (BYTE)0x0c << (BYTE)0x02 << (BYTE)0x84 << (BYTE)0x00;
- *pMET << (BYTE)0xa4 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x01;
- *pMET << (BYTE)0x01 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
-
- *pMET << (BYTE)0x04 << (BYTE)0x24 << (BYTE)0x05 << (BYTE)pCS->nSet;
-
- *pMET << (BYTE)0x14 << (BYTE)0x1f;
- switch (pCS->eWeight)
- {
- case WEIGHT_THIN: nbyte=1; break;
- case WEIGHT_ULTRALIGHT: nbyte=2; break;
- case WEIGHT_LIGHT: nbyte=3; break;
- case WEIGHT_SEMILIGHT: nbyte=4; break;
- case WEIGHT_NORMAL: nbyte=5; break;
- case WEIGHT_SEMIBOLD: nbyte=6; break;
- case WEIGHT_BOLD: nbyte=7; break;
- case WEIGHT_ULTRABOLD: nbyte=8; break;
- case WEIGHT_BLACK: nbyte=9; break;
- default: nbyte=5;
- }
- *pMET << nbyte;
- *pMET << (BYTE)0x05;
- *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
- *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
- *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
- *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x0c;
-
- *pMET << (BYTE)0x06 << (BYTE)0x20 << (BYTE)0x03 << (BYTE)0xd4;
- *pMET << (BYTE)0x03 << (BYTE)0x52;
-
- *pMET << (BYTE)0x24 << (BYTE)0x02 << (BYTE)0x08 << (BYTE)0x00;
- ByteString n(pCS->aName, gsl_getSystemTextEncoding());
- for (i=0; i<32; i++)
- {
- if ( i == 0 || c != 0 )
- c = n.GetChar( i );
- *pMET << c;
- }
- }
-}
-
-
-void METWriter::WriteColorAttributeTable(ULONG nFieldId, BitmapPalette* pPalette, BYTE nBasePartFlags, BYTE nBasePartLCTID)
-{
- USHORT nIndex,nNumI,i;
-
- if (bStatus==FALSE) return;
-
- //--- Das Feld 'Begin Color Attribute Table':
- WriteFieldIntroducer(16,BegColAtrMagic,0,0);
- WriteFieldId(nFieldId);
-
- //--- Das Feld 'Color Attribute Table':
- WriteFieldIntroducer(0,BlkColAtrMagic,0,0);
- *pMET << nBasePartFlags << (BYTE)0x00 << nBasePartLCTID; // 'Base Part'
- if (pPalette!=NULL)
- {
- nIndex=0;
- while (nIndex<pPalette->GetEntryCount())
- {
- nNumI=pPalette->GetEntryCount()-nIndex;
- if (nNumI>81) nNumI=81;
- *pMET << (BYTE)(11+nNumI*3); // Laenge des Parameters
- *pMET << (BYTE)1 << (BYTE)0 << (BYTE)1; // typ: element list, Reserved, Format: RGB
- *pMET << (BYTE)0; WriteBigEndianShort(nIndex); // Start-Index (3 Bytes)
- *pMET << (BYTE)8 << (BYTE)8 << (BYTE)8; // Bits je Komponente R,G,B
- *pMET << (BYTE)3; // Anzahl Bytes je Eintrag
- for (i=0; i<nNumI; i++)
- {
- const BitmapColor& rCol = (*pPalette)[ nIndex ];
-
- *pMET << (BYTE) rCol.GetRed();
- *pMET << (BYTE) rCol.GetGreen();
- *pMET << (BYTE) rCol.GetBlue();
- nIndex++;
- }
- }
- }
- else
- {
- // 'Trible Generating'
- *pMET << (BYTE)0x0a << (BYTE)0x02 << (BYTE)0x00 << (BYTE)0x01 << (BYTE)0x00;
- *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x08 << (BYTE)0x08 << (BYTE)0x08;
- }
- UpdateFieldSize();
-
- //--- Das Feld 'End Color Attribute Table':
- WriteFieldIntroducer(16,EndColAtrMagic,0,0);
- WriteFieldId(nFieldId);
-
- if (pMET->GetError())
- bStatus=FALSE;
-}
-
-
-void METWriter::WriteImageObject(const Bitmap & rBitmap)
-{
- SvMemoryStream aTemp(0x00010000,0x00010000);
- sal_uInt32 nWidth,nHeight,nResX,nResY;
- ULONG nBytesPerLine,i,j,nNumColors,ny,nLines;
- ULONG nActColMapId;
- USHORT nBitsPerPixel;
- BYTE nbyte, * pBuf;
-
- if (bStatus==FALSE)
- return;
-
- nActColMapId=((nActBitmapId>>24)&0x000000ff) | ((nActBitmapId>> 8)&0x0000ff00) |
- ((nActBitmapId<< 8)&0x00ff0000) | ((nActBitmapId<<24)&0xff000000);
-
- //--- Das Feld 'Begin Image Object':
- WriteFieldIntroducer(16,BegImgObjMagic,0,0);
- WriteFieldId(nActBitmapId);
-
- // Windows-BMP-Datei erzeugen:
- aTemp << rBitmap;
-
- // Header der Windows-BMP-Datei einlesen:
- aTemp.SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
- aTemp.Seek(18);
- aTemp >> nWidth >> nHeight;
- aTemp.SeekRel(2);
- aTemp >> nBitsPerPixel;
- aTemp.SeekRel(8);
- aTemp >> nResX >> nResY;
- aTemp.SeekRel(8);
-
- nNumColors=1<<nBitsPerPixel;
- nBytesPerLine=((nWidth*nBitsPerPixel+0x0000001f) & 0xffffffe0 ) >> 3;
-
- // ggf. Farbpalette einlesen und in die MET-Datei schreiben:
- if (nBitsPerPixel<=8)
- {
- BitmapPalette aPal( (USHORT) nNumColors );
- BYTE nr,ng,nb;
-
- for (i=0; i<nNumColors; i++)
- {
- aTemp >> nb >> ng >> nr; aTemp.SeekRel(1);
- aPal[ (USHORT) i ] = BitmapColor( nr, ng, nb );
- }
-
- //--- Das Feld 'Begin Resource Group':
- WriteFieldIntroducer(16,BegResGrpMagic,0,0);
- WriteFieldId(nActColMapId);
-
- //--- Farbtabelle schreiben:
- WriteColorAttributeTable(nActColMapId,&aPal,0,1);
-
- //--- Das Feld 'End Resource Group':
- WriteFieldIntroducer(16,EndResGrpMagic,0,0);
- WriteFieldId(nActColMapId);
-
- //--- Das Feld 'Begin Object Environment Group':
- WriteFieldIntroducer(16,BegObjEnvMagic,0,0);
- WriteFieldId(nActBitmapId);
-
- //--- Das Feld 'Map Color Attribute Table':
- WriteFieldIntroducer(26,MapColAtrMagic,0,0);
- WriteBigEndianShort(0x0012);
- *pMET << (BYTE)0x0c << (BYTE)0x02 << (BYTE)0x84 << (BYTE)0x00;
- WriteFieldId(nActColMapId);
- *pMET << (BYTE)0x04 << (BYTE)0x24 << (BYTE)0x07 << (BYTE)0x01;
-
- //--- Das Feld 'End Object Environment Group':
- WriteFieldIntroducer(16,EndObjEnvMagic,0,0);
- WriteFieldId(nActBitmapId);
- }
-
- //--- Das Feld 'Image Data Descriptor':
- WriteFieldIntroducer(17,DscImgObjMagic,0,0);
- *pMET << (BYTE)0x01; // Unit of measure: tens of centimeters
- WriteBigEndianShort((USHORT)nResX);
- WriteBigEndianShort((USHORT)nResY);
- WriteBigEndianShort((USHORT)nWidth);
- WriteBigEndianShort((USHORT)nHeight);
-
- //--- Das erste Feld 'Image Picture Data':
- WriteFieldIntroducer(0,DatImgObjMagic,0,0);
-
- // Begin Segment:
- *pMET << (BYTE)0x70 << (BYTE)0x00;
-
- // Begin Image Content:
- *pMET << (BYTE)0x91 << (BYTE)0x01 << (BYTE)0xff;
-
- // Image Size:
- *pMET << (BYTE)0x94 << (BYTE)0x09 << (BYTE)0x02;
- *pMET << (USHORT) 0 << (USHORT) 0;
- WriteBigEndianShort((USHORT)nHeight);
- WriteBigEndianShort((USHORT)nWidth);
-
- // Image Encoding:
- *pMET << (BYTE)0x95 << (BYTE)0x02 << (BYTE)0x03 << (BYTE)0x03;
-
- // Image IDE-Size:
- *pMET << (BYTE)0x96 << (BYTE)0x01 << (BYTE)nBitsPerPixel;
-
- if (nBitsPerPixel<=8) {
- // Image LUT-ID
- *pMET << (BYTE)0x97 << (BYTE)0x01 << (BYTE)0x01;
- }
- else {
- // IDE Structure
- *pMET << (BYTE)0x9b << (BYTE)0x08 << (BYTE)0x00 << (BYTE)0x01;
- *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x08;
- *pMET << (BYTE)0x08 << (BYTE)0x08;
- }
-
- pBuf=new BYTE[nBytesPerLine];
- ny=0;
- while (ny<nHeight) {
-
- // Abschliessen des vorherigen Feldes 'Image Picture Data':
- UpdateFieldSize();
-
- // Und ein neues Feld 'Image Picture Data' anfangen:
- WriteFieldIntroducer(0,DatImgObjMagic,0,0);
-
- // Einige Scanlines lesen und schreiben:
- nLines=nHeight-ny;
- if (nLines*nBytesPerLine>30000) nLines=30000/nBytesPerLine;
- if (nLines<1) nLines=1;
- WriteBigEndianShort(0xfe92);
- WriteBigEndianShort((USHORT)(nLines*nBytesPerLine));
- for (i=0; i<nLines; i++) {
- aTemp.Read(pBuf,nBytesPerLine);
- if (nBitsPerPixel==24) {
- for (j=2; j<nBytesPerLine; j+=3) {
- nbyte=pBuf[j]; pBuf[j]=pBuf[j-2]; pBuf[j-2]=nbyte;
- }
- }
- pMET->Write(pBuf,nBytesPerLine);
- ny++;
- }
- if (aTemp.GetError() || pMET->GetError()) bStatus=FALSE;
- nActBitmapPercent=(ny+1)*100/nHeight;
- MayCallback();
- if (bStatus==FALSE) { delete[] pBuf; return; }
- }
- delete[] pBuf;
-
- // End Image Content:
- *pMET << (BYTE)0x93 << (BYTE)0x00;
-
- // End Segment:
- *pMET << (BYTE)0x71 << (BYTE)0x00;
-
- // Abschliessen des letzten Feldes 'Image Picture Data':
- UpdateFieldSize();
-
- //--- Das Feld 'End Image Object':
- WriteFieldIntroducer(16,EndImgObjMagic,0,0);
- WriteFieldId(nActBitmapId);
-
- // Ids erhoehen:
- nActBitmapId++;
-
- // Bitmaps zaehlen:
- nWrittenBitmaps++;
- nActBitmapPercent=0;
-
- if (pMET->GetError()) bStatus=FALSE;
-}
-
-
-void METWriter::WriteImageObjects(const GDIMetaFile * pMTF)
-{
- const MetaAction* pMA;
-
- if (bStatus==FALSE)
- return;
-
- for ( ULONG nAction = 0, nActionCount = pMTF->GetActionCount(); nAction < nActionCount; nAction++)
- {
- pMA = pMTF->GetAction(nAction);
-
- switch (pMA->GetType())
- {
- case META_BMP_ACTION:
- {
- METSetMix( eGDIRasterOp );
- WriteImageObject( ( (MetaBmpAction*) pMA )->GetBitmap() );
- }
- break;
-
- case META_BMPSCALE_ACTION:
- {
- METSetMix( eGDIRasterOp );
- WriteImageObject( ( (MetaBmpScaleAction*) pMA )->GetBitmap() );
- }
- break;
-
- case META_BMPSCALEPART_ACTION:
- {
- METSetMix( eGDIRasterOp );
- WriteImageObject( ( (MetaBmpScalePartAction*) pMA )->GetBitmap() );
- }
- break;
-
- case META_BMPEX_ACTION:
- {
- METSetMix( eGDIRasterOp );
- WriteImageObject( Graphic( ( (MetaBmpExAction*) pMA )->GetBitmapEx() ).GetBitmap() );
- }
- break;
-
- case META_BMPEXSCALE_ACTION:
- {
- METSetMix( eGDIRasterOp );
- WriteImageObject( Graphic( ( (MetaBmpExScaleAction*) pMA )->GetBitmapEx() ).GetBitmap() );
- }
- break;
-
- case META_BMPEXSCALEPART_ACTION:
- {
- METSetMix( eGDIRasterOp );
- WriteImageObject( Graphic( ( (MetaBmpExScalePartAction*) pMA )->GetBitmapEx() ).GetBitmap() );
- }
- break;
-
- case META_EPS_ACTION :
- {
- const MetaEPSAction* pA = (const MetaEPSAction*)pMA;
- const GDIMetaFile aGDIMetaFile( pA->GetSubstitute() );
-
- INT32 nCount = aGDIMetaFile.GetActionCount();
- for ( INT32 i = 0; i < nCount; i++ )
- {
- const MetaAction* pMetaAct = aGDIMetaFile.GetAction( i );
- if ( pMetaAct->GetType() == META_BMPSCALE_ACTION )
- {
- const MetaBmpScaleAction* pBmpScaleAction = (const MetaBmpScaleAction*)pMetaAct;
- METSetMix( eGDIRasterOp );
- WriteImageObject( pBmpScaleAction->GetBitmap() );
- break;
- }
- }
- }
- break;
- }
-
- if (bStatus==FALSE)
- break;
- }
-
- if (pMET->GetError())
- bStatus=FALSE;
-}
-
-void METWriter::WriteDataDescriptor(const GDIMetaFile *)
-{
- if (bStatus==FALSE)
- return;
-
- WriteFieldIntroducer(0,DscGrfObjMagic,0,0);
-
- //------------------------------------------------------------------------------
- // Im Folgenden die OS2-Orginal-Dokumentation und die Implementation dazu (uff)
- //------------------------------------------------------------------------------
-
- // Parameters (all required and in this order)
-
- // 0 0xF7 Specify GVM Subset
- // 1 Length of following data 0x07
- // 2 0xB0 drawing order subset
- // 3-4 0x0000
- // 5 0x23 Level 3.2
- // 6 0x01 Version 1
- // 7 Length of following field 0x01
- // 8 Coordinate types in data
- // 0x04Intel16
- // 0x05Intel32
- *pMET << (BYTE)0xf7 << (BYTE)0x07 << (BYTE)0xb0 << (BYTE)0x00
- << (BYTE)0x00 << (BYTE)0x23 << (BYTE)0x01 << (BYTE)0x01
- << (BYTE)0x05;
-
- // 0 0xF6 Set Picture Descriptor
- // 1 Length of following data
- // 2 Flags
- // 0 B'0' Picture in 2D
- // 1 Picture Dimensions
- // B'0' Not absolute (PU_ARBITRARY PS)
- // B'1' Absolute (example: PU_TWIPS PS)
- // 2 Picture Elements
- // B'0' Not pels
- // B'1' Pels (PU_PELS PS)
- // (Bit 1 must also be set)
- // 3-7 B'00000'
- // 3 0x00 Reserved
- // 4 Picture frame size coordinate type
- // 0x04 Intel16
- // 0x05 Intel32
- // 5 UnitsOfMeasure
- // 0x00 Ten inches
- // 0x01 Decimeter
- // 6-11 or 6-17(2 or 4 bytes) Resolution.
- // GPS Units / UOM on x axis
- // GPS Units / UOM on y axis
- // GPS Units / UOM on z axis
- // 12-23 or 18-41(2 or 4 bytes) Window Size.
- // GPS X left, X right
- // GPS Y bottom, Y top
- // GPS Z near, Z far
- Size aUnitsPerDecimeter=OutputDevice::LogicToLogic(Size(10,10),MapMode(MAP_CM),aPictureMapMode);
- *pMET << (BYTE)0xf6 << (BYTE)0x28 << (BYTE)0x40 << (BYTE)0x00
- << (BYTE)0x05 << (BYTE)0x01
- << (sal_uInt32)(aUnitsPerDecimeter.Width())
- << (sal_uInt32)(aUnitsPerDecimeter.Height())
- << (sal_uInt32)0
- << (sal_uInt32)0 << (sal_uInt32)aPictureRect.GetWidth()
- << (sal_uInt32)0 << (sal_uInt32)aPictureRect.GetHeight()
- << (sal_uInt32)0 << (sal_uInt32)0;
-
- // 0 0x21 Set Current Defaults
- // 1 Length of following data
- // 2 Set Default Parameter Format 0x08
- // 3-4 Mask 0xE000
- // 5 Names 0x8F
- // 6 Coordinates
- // 0x00 Picture in 2D
- // 7 Transforms
- // 0x04 Intel16
- // 0x05 Intel32
- // 8 Geometrics
- // 0x04 Intel16
- // 0x05 Intel32
- *pMET << (BYTE)0x21 << (BYTE)0x07 << (BYTE)0x08 << (BYTE)0xe0
- << (BYTE)0x00 << (BYTE)0x8f << (BYTE)0x00 << (BYTE)0x05
- << (BYTE)0x05;
-
- // 0 0x21 Set Current Defaults
- // 1 Length of following data
- // 2 Set default viewing transform 0x07
- // 3-4 Mask 0xCC0C
- // 5 Names 0x8F
- // 6-n M11, M12, M21, M22, M41, M42 Matrix elements
- *pMET << (BYTE)0x21 << (BYTE)0x1c << (BYTE)0x07 << (BYTE)0xcc
- << (BYTE)0x0c << (BYTE)0x8f
- << (sal_uInt32)0x00010000 << (sal_uInt32)0x00000000 << (sal_uInt32)0x00000000
- << (sal_uInt32)0x00010000 << (sal_uInt32)0x00000000 << (sal_uInt32)0x00000000;
-
- // 0 0x21 Set Current Defaults
- // 1 Length of following data
- // 2 Set default line attributes 0x01
- // 3-4 Mask - OR of as many of the following bits as are required:
- // 0x8000 Line type
- // 0x4000 Line width
- // 0x2000 Line end
- // 0x1000 Line join
- // 0x0800 Stroke width
- // 0x0008 Line color
- // 0x0002 Line mix
- // 5 Flags
- //
- // 0x0F Set indicated default attributes to initial values. (Data field is not present in this
- // instance).
- // 0x8F Set indicated default attributes to specified values.
- // 6-n Data - data values as required, in the following order if present.
- // No space is reserved for attributes for which the corresponding mask flag was not
- // set.
- //
- // (1 byte) - Line type
- // (1 byte) - Line width
- // (1 byte) - Line end
- // (1 byte) - Line join
- // (G bytes) - Stroke width
- // (4 bytes) - Line color
- // (1 byte) - Line mix (G=2 or 4 depending on the Geometrics parameter of Set Default
- // Parameter Format)
- // Nanu! witziger-weise fehlt obiger Abschnitt in den Metadateien. Also lassen wir ihn auch weg
-
- // 0 0x21 Set Current Defaults
- // 1 Length of following data
- // 2 Set Default Character Attributes 0x02
- // 3-4 Mask - OR of as many of the following bits as are required:
- //
- // 0x8000 Character angle
- // 0x4000 Character box
- // 0x2000 Character direction
- // 0x1000 Character precision
- // 0x0800 Character set
- // 0x0400 Character shear
- // 0x0040 Character break extra
- // 0x0020 Character extra
- // 0x0008 Character color
- // 0x0004 Character background color
- // 0x0002 Character mix
- // 0x0001 Character background mix
- // 5 Flags
- // 0x0FSet indicated default attributes to initial values. (Data field is not present in this
- // case).
- // 0x8FSet indicated default attributes to specified values.
- // 6-n Data - data values as required, in the following order if present.
- // No space is reserved for attributes for which the corresponding Mask flag was not
- // set.
- // (2*G bytes) - Character angle
- // (2*G + 4 bytes)- Character box
- // (1 byte) - Character direction
- // (1 byte) - Character precision
- // (1 byte) - Character set
- // (2*G bytes) - Character shear
- // (4 bytes) - Character break extra
- // (4 bytes) - Character extra
- // (4 bytes) - Character color
- // (4 bytes) - Character background color
- // (1 byte) - Character mix
- // (1 byte) - Character background mix (G=2 or 4 depending on the Geometrics
- // parameter of Set Default Parameter Format)
- *pMET << (BYTE)0x21 << (BYTE)0x10 << (BYTE)0x02 << (BYTE)0x40
- << (BYTE)0x00 << (BYTE)0x8f
- << (BYTE)0xaa << (BYTE)0x02 << (BYTE)0x00 << (BYTE)0x00
- << (BYTE)0x44 << (BYTE)0x04 << (BYTE)0x00 << (BYTE)0x00
- << (BYTE)0xa8 << (BYTE)0xaa << (BYTE)0x40 << (BYTE)0x44;
-
- // 0 0x21 Set Current Defaults
- // 1 Length of following data
- // 2 Set Default Marker Attributes 0x03
- // 3-4 Mask - OR of as many of the following bits as are required:
- // 0x4000 Marker box
- // 0x1000 Marker precision
- // 0x0800 Marker set
- // 0x0100 Marker symbol
- // 0x0008 Marker color
- // 0x0004 Marker background color
- // 0x0002 Marker mix
- // 0x0001 Marker background mix
- // 5 Flags
- // 0x0F Set indicated default attributes to initial values.
- // (Data field is not present in this instance)
- // 0x8F Set indicated default attributes to specified values.
- // 6-n Data - data values as required, in this order if present.
- // No space is reserved for attributes for which the corresponding Mask flag was not
- // set.
- // (2*G bytes) - Marker box
- // (1 byte) - Marker precision
- // (1 byte) - Marker set
- // (1 byte) - Marker symbol
- // (4 bytes) - Marker color
- // (4 bytes) - Marker background color
- // (1 byte) - Marker mix
- // (1 byte) - Marker background mix (G=2 or 4 depending on the Geometrics
- // parameter of Set Default Parameter Format)
- *pMET << (BYTE)0x21 << (BYTE)0x0c << (BYTE)0x03 << (BYTE)0x40
- << (BYTE)0x00 << (BYTE)0x8f
- << (BYTE)0x66 << (BYTE)0x02 << (BYTE)0x00 << (BYTE)0x00
- << (BYTE)0x66 << (BYTE)0x02 << (BYTE)0x00 << (BYTE)0x00;
-
- // 0 0x21 Set Current Defaults
- // 1 Length of following data
- // 2 Set Default Pattern Attributes 0x04
- // 3-4 Mask - OR of as many of the following bits as are required:
- // 0x0800 Pattern set
- // 0x0100 Pattern symbol
- // 0x0080 Pattern reference point
- // 0x0008 Pattern color
- // 0x0004 Pattern background color
- // 0x0002 Pattern mix
- // 0x0001 Pattern background mix
- // 5 Flags
- //
- // 0x0F Set indicated default attributes to initial values.
- // (Data field is not present in this instance)
- // 0x8F Set indicated default attributes to specified values.
- // 6-n Data - data values as required, in this order if present.
- // No space is reserved for attributes for which the corresponding Mask flag was
- // not set.
- //
- // (1 byte) - Pattern set
- // (1 byte) - Pattern symbol
- // (2*G bytes) - Pattern reference point
- // (4 bytes) - Pattern color
- // (4 bytes) - Pattern background color
- // (1 byte) - Pattern mix
- // (1 byte) - Pattern background mix (G=2 or 4 depending on the Geometrics
- // parameter of Set Default Parameter Format)
- // 0 0x21 Set Current Defaults
- // 1 Length of following data
- // 2 Set Default Image Attributes 0x06
- // 3-4 Mask - OR of as many of these bits as are required:
- // 0x0008 Image color
- // 0x0004 Image background color
- // 0x0002 Image mix
- // 0x0001 Image background mix
- // 5 Flags
- // 0x0F Set indicated default attributes to initial values. (Data field is not present in
- // this instance)
- // 0x8F Set indicated default attributes to specified values.
- // 6-n Data - data values as required, in this order if present.
- // No space is reserved for attributes for which the corresponding Mask flag was
- // not set.
- // (4 bytes) - Image color
- // (4 bytes) - Image background color
- // (1 byte) - Image mix
- // (1 byte) - Image background mix
- // 0 0x21 Set Current Defaults
- // 1 Length of following data
- // 2 Set Default Viewing Window 0x05
- // 3-4 Mask - OR of as many of the following bits as are required:
- // 0x8000 x left limit
- // 0x4000 x right limit
- // 0x2000 y bottom limit
- // 0x1000 y top limit
- // 5 Flags
- // 0x0F Set indicated default attributes to initial values.
- // (Data field is not present in this case).
- // 0x8F Set indicated default attributes to specified values.
- // 6-n Data - data values as required, in the following order if present.
- // No space is reserved for attributes for which the corresponding Mask flag was
- // not set.
- // (2*G bytes) - x left limit
- // (2*G bytes) - x right limit
- // (2*G bytes) - y bottom limit
- // (2*G bytes) - y top limit (G=2 or 4 depending on the Geometrics parameter of Set
- // Default Parameter Format)
- // 0 0x21 Set Current Defaults
- // 1 Length of following data
- // 2 Set Default Arc Parameters 0x0B
- // 3-4 Mask - OR of as many of the following bits as are required:
- // 0x8000 P value
- // 0x4000 Q value
- // 0x2000 R value
- // 0x1000 S value
- // 5 Flags
- // 0x0F Set indicated default attributes to initial values.
- // (Data field is not present in this case).
- // 0x8F Set indicated default attributes to specified values.
- // 6-n Data - data values as required, in the following order if present.
- // No space is reserved for attributes for which the corresponding Mask flag was
- // not set.
- // (G bytes) - P value
- // (G bytes) - Q value
- // (G bytes) - R value
- // (G bytes) - S value (G=2 or 4 depending on the Geometrics parameter of Set
- // Default Parameter Format)
- // 0 0x21 Set Current Defaults
- // 1 Length of following data
- // 2 Set Default Pick Identifier 0x0C
- // 3-4 Mask - OR of as many of the following bits as are required:
- // 0x8000 Pick identifier
- // 5 Flags
- // 0x0F Set indicated default attributes to initial values.
- // (Data field is not present in this case).
- // 0x8F Set indicated default attributes to specified values.
- // 6-n Data - data values as required, in the following order if present.
- // No space is reserved for attributes for which the corresponding Mask flag was
- // not set.
- // (4 bytes) - Pick identifier
-
- // 0 0xE7 Set Bit-map Identifier
- // 1 Length of following data 0x07
- // 2-3 Usage Flags 0x8000
- // 4-7 Bit-map handle
- // 8 Lcid
- if (nNumberOfBitmaps>0) {
- *pMET << (BYTE)0xe7 << (BYTE)0x07 << (BYTE)0x80 << (BYTE)0x00;
- WriteBigEndianLong(nActBitmapId);
- *pMET << (BYTE)0xfe;
- }
-
- UpdateFieldSize();
-
- if (pMET->GetError()) bStatus=FALSE;
-}
-
-
-void METWriter::WillWriteOrder(ULONG nNextOrderMaximumLength)
-{
- // Die Parameter eines 'Graphics Data Fields' duerfen (laut OS2-Doku)
- // hoechstens 32759 Bytes umfassen. Gemeint ist die Laenge des Feldes minus
- // dem 'Structured Field Introducer' (groesse: 8). Also darf die Groesse
- // des ganzen Fields hoechstens 8+32759=32767=0x7fff sein.
- // Zur Sicherheit nehmen wir lieber 30000 als Grenze.
-
- if (pMET->Tell()-nActualFieldStartPos+nNextOrderMaximumLength>30000)
- {
- UpdateFieldSize();
- WriteFieldIntroducer(0,DatGrfObjMagic,0,0);
- nNumberOfDataFields++;
- }
-}
-
-
-
-void METWriter::METBitBlt(Point aPt, Size aSize, const Bitmap & rBitmap)
-{
- WillWriteOrder(46);
- *pMET << (BYTE)0xd6 << (BYTE)44 << (USHORT)0 << (USHORT) 0x00cc;
- WriteBigEndianLong(nActBitmapId++);
- *pMET << (BYTE)0x02 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
- WritePoint(Point(aPt.X(),aPt.Y()+aSize.Height()));
- WritePoint(Point(aPt.X()+aSize.Width(),aPt.Y()));
- *pMET << (sal_uInt32)0 << (sal_uInt32)0
- << (sal_uInt32)(rBitmap.GetSizePixel().Width())
- << (sal_uInt32)(rBitmap.GetSizePixel().Height());
-}
-
-void METWriter::METSetAndPushLineInfo( const LineInfo& rLineInfo )
-{
- INT32 nWidth = OutputDevice::LogicToLogic( Size( rLineInfo.GetWidth(),0 ), aPictureMapMode, aTargetMapMode ).Width();
-
- WillWriteOrder( 8 ); // set stroke linewidth
- *pMET << (BYTE)0x15
- << (BYTE)6
- << (BYTE)0 // Flags
- << (BYTE)0
- << nWidth;
-
- if ( rLineInfo.GetStyle() != LINE_SOLID )
- {
- BYTE nStyle = 0; // LineDefault;
-
- switch ( rLineInfo.GetStyle() )
- {
- case LINE_NONE :
- nStyle = 8;
- break;
-
- case LINE_DASH :
- {
- if ( rLineInfo.GetDotCount() )
- {
- if ( !rLineInfo.GetDashCount() )
- nStyle = 1; // LINE_DOT
- else
- nStyle = 3; // LINE_DASH_DOT
- }
- else
- nStyle = 2; // LINE_DASH
- }
- break;
- case LineStyle_SOLID:
- case LineStyle_FORCE_EQUAL_SIZE:
- break; // not handled -Wall
- }
- WillWriteOrder( 2 );
- *pMET << (BYTE)0x18 << nStyle; // set LineType
- }
-}
-
-void METWriter::METPopLineInfo( const LineInfo& rLineInfo )
-{
- WillWriteOrder( 8 ); // set stroke linewidth
- *pMET << (BYTE)0x15
- << (BYTE)6
- << (BYTE)0 // Flags
- << (BYTE)0
- << (UINT32)1;
-
- if ( rLineInfo.GetStyle() != LINE_SOLID )
- {
- WillWriteOrder( 2 );
- *pMET << (BYTE)0x18 << (BYTE)0; // set LineType
- }
-}
-
-void METWriter::METBeginArea(BOOL bBoundaryLine)
-{
- WillWriteOrder(2);
- *pMET << (BYTE)0x68;
- if (bBoundaryLine) *pMET << (BYTE)0xc0;
- else *pMET << (BYTE)0x80;
-}
-
-
-void METWriter::METEndArea()
-{
- WillWriteOrder(2);
- *pMET << (BYTE)0x60 << (BYTE)0;
-}
-
-
-void METWriter::METBeginPath(sal_uInt32 nPathId)
-{
- WillWriteOrder(8);
- *pMET << (BYTE)0xd0 << (BYTE)6 << (USHORT) 0 << nPathId;
-}
-
-
-void METWriter::METEndPath()
-{
- WillWriteOrder(2);
- *pMET << (BYTE)0x7f << (BYTE)0;
-}
-
-
-void METWriter::METFillPath(sal_uInt32 nPathId)
-{
- WillWriteOrder(8);
- *pMET << (BYTE)0xd7 << (BYTE)6
- << (BYTE)0x00 << (BYTE)0 << nPathId;
-}
-
-
-void METWriter::METOutlinePath(sal_uInt32 nPathId)
-{
- WillWriteOrder(8);
- *pMET << (BYTE)0xd4 << (BYTE)6
- << (BYTE)0 << (BYTE)0 << nPathId;
-}
-
-
-void METWriter::METCloseFigure()
-{
- WillWriteOrder(2);
- *pMET << (BYTE)0x7d << (BYTE)0;
-}
-
-
-void METWriter::METMove(Point aPt)
-{
- WillWriteOrder(10);
- *pMET << (BYTE)0x21 << (BYTE)8;
- WritePoint(aPt);
-}
-
-
-void METWriter::METLine(Point aPt1, Point aPt2)
-{
- WillWriteOrder(18);
- *pMET << (BYTE)0xc1 << (BYTE)16;
- WritePoint(aPt1); WritePoint(aPt2);
-}
-
-
-void METWriter::METLine(const Polygon & rPolygon)
-{
- USHORT nNumPoints,i,j,nOrderPoints;
- BOOL bFirstOrder;
-
- bFirstOrder=TRUE;
- i=0; nNumPoints=rPolygon.GetSize();
- while (i<nNumPoints) {
- nOrderPoints=nNumPoints-i;
- if (nOrderPoints>30) nOrderPoints=30;
- WillWriteOrder(nOrderPoints*8+2);
- if (bFirstOrder==TRUE) {
- *pMET << (BYTE)0xc1; // Line at given pos
- bFirstOrder=FALSE;
- }
- else {
- *pMET << (BYTE)0x81; // Line at current pos
- }
- *pMET << (BYTE)(nOrderPoints*8);
- for (j=0; j<nOrderPoints; j++) WritePoint(rPolygon.GetPoint(i++));
- }
-}
-
-
-void METWriter::METLine(const PolyPolygon & rPolyPolygon)
-{
- USHORT i,nCount;
- nCount=rPolyPolygon.Count();
- for (i=0; i<nCount; i++) {
- METLine(rPolyPolygon.GetObject(i));
- METCloseFigure();
- }
-}
-
-
-void METWriter::METLineAtCurPos(Point aPt)
-{
- WillWriteOrder(10);
- *pMET << (BYTE)0x81 << (BYTE)8;
- WritePoint(aPt);
-}
-
-
-void METWriter::METBox(BOOL bFill, BOOL bBoundary,
- Rectangle aRect, sal_uInt32 nHAxis, sal_uInt32 nVAxis)
-{
- BYTE nFlags=0;
- if (bFill) nFlags|=0x40;
- if (bBoundary) nFlags|=0x20;
-
- WillWriteOrder(28);
- *pMET << (BYTE)0xc0 << (BYTE)26 << nFlags << (BYTE)0;
- WritePoint(aRect.BottomLeft());
- WritePoint(aRect.TopRight());
- *pMET << nHAxis << nVAxis;
-}
-
-
-void METWriter::METFullArc(Point aCenter, double fMultiplier)
-{
- WillWriteOrder(14);
- *pMET << (BYTE)0xc7 << (BYTE)12;
- WritePoint(aCenter);
- *pMET << (long)(fMultiplier*65536.0+0.5);
-}
-
-
-void METWriter::METPartialArcAtCurPos(Point aCenter, double fMultiplier,
- double fStartAngle, double fSweepAngle)
-{
- fStartAngle*=180.0/3.14159265359;
- while (fStartAngle>360.0) fStartAngle-=360.0;
- while (fStartAngle<0.0) fStartAngle+=360.0;
- fSweepAngle*=180.0/3.14159265359;
- while (fSweepAngle>360.0) fSweepAngle-=360.0;
- while (fSweepAngle<.00) fSweepAngle+=360.0;
- WillWriteOrder(22);
- *pMET << (BYTE)0xa3 << (BYTE)20;
- WritePoint(aCenter);
- *pMET << (long)(fMultiplier*65536.0+0.5);
- *pMET << (long)(fStartAngle*65536.0+0.5);
- *pMET << (long)(fSweepAngle*65536.0+0.5);
-}
-
-
-void METWriter::METChrStr( Point aPt, String aUniStr )
-{
- USHORT nLen,i;
- ByteString aStr( aUniStr, gsl_getSystemTextEncoding() );
- nLen = aStr.Len();
- WillWriteOrder( 11 + nLen );
- *pMET << (BYTE)0xc3 << (BYTE)( 9 + nLen );
- WritePoint(aPt);
- for ( i = 0; i < nLen; i++ )
- *pMET << aStr.GetChar( i );
- *pMET << (BYTE)0;
-}
-
-
-void METWriter::METSetArcParams(long nP, long nQ, long nR, long nS)
-{
- WillWriteOrder(18);
- *pMET << (BYTE)0x22 << (BYTE)16 << nP << nQ << nR << nS;
-}
-
-
-void METWriter::METSetColor(Color aColor)
-{
- if (aColor==aMETColor) return;
- aMETColor=aColor;
-
- WillWriteOrder(6);
- *pMET << (BYTE)0xa6 << (BYTE)4 << (BYTE)0
- << (BYTE)(aColor.GetBlue())
- << (BYTE)(aColor.GetGreen())
- << (BYTE)(aColor.GetRed());
-}
-
-
-void METWriter::METSetBackgroundColor(Color aColor)
-{
- if (aColor==aMETBackgroundColor) return;
- aMETBackgroundColor=aColor;
-
- WillWriteOrder(6);
- *pMET << (BYTE)0xa7 << (BYTE)4 << (BYTE)0
- << (BYTE)(aColor.GetBlue())
- << (BYTE)(aColor.GetGreen())
- << (BYTE)(aColor.GetRed());
-}
-
-void METWriter::METSetMix(RasterOp eROP)
-{
- BYTE nMix;
-
- if (eMETMix==eROP)
- return;
-
- eMETMix=eROP;
-
- switch (eROP)
- {
- case ROP_INVERT: nMix=0x0c; break;
- case ROP_XOR: nMix=0x04; break;
- default: nMix=0x02;
- }
-
- WillWriteOrder(2);
- *pMET << (BYTE)0x0c << nMix;
-}
-
-
-void METWriter::METSetChrCellSize(Size aSize)
-{
- if (aMETChrCellSize==aSize)
- return;
-
- aMETChrCellSize=aSize;
- WillWriteOrder(10);
- if (aSize.Width()==0) aSize.Width()=aSize.Height();
- *pMET << (BYTE)0x33 << (BYTE)8 << (long)aSize.Width() << (long)aSize.Height();
-}
-
-
-void METWriter::METSetChrAngle(short nAngle)
-{
- double fa;
- long nax,nay;
-
- if (nMETChrAngle==nAngle) return;
- nMETChrAngle=nAngle;
-
- if (nAngle==0)
- {
- nax=256;
- nay=0;
- }
- else
- {
- fa=((double)nAngle)/1800.0*3.14159265359;
- nax=(long)(256.0*cos(fa)+0.5);
- nay=(long)(256.0*sin(fa)+0.5);
- }
-
- WillWriteOrder(10);
- *pMET << (BYTE)0x34 << (BYTE)8 << nax << nay;
-}
-
-
-void METWriter::METSetChrSet(BYTE nSet)
-{
- if (nMETChrSet==nSet)
- return;
-
- nMETChrSet=nSet;
- WillWriteOrder(2);
- *pMET << (BYTE)0x38 << nSet;
-}
-
-
-void METWriter::WriteOrders( const GDIMetaFile* pMTF )
-{
- if(bStatus==FALSE)
- return;
-
- for( ULONG nA = 0, nACount = pMTF->GetActionCount(); nA < nACount; nA++ )
- {
- const MetaAction* pMA = pMTF->GetAction( nA );
-
- switch (pMA->GetType())
- {
- case META_PIXEL_ACTION:
- {
- const MetaPixelAction* pA = (const MetaPixelAction*) pMA;
- METSetMix( eGDIRasterOp );
- METSetColor( pA->GetColor() );
- METLine( pA->GetPoint(),pA->GetPoint() );
- }
- break;
-
- case META_POINT_ACTION:
- {
- const MetaPointAction* pA = (const MetaPointAction*) pMA;
-
- METSetArcParams(1,1,0,0);
- METSetMix(eGDIRasterOp);
- METSetColor(aGDILineColor);
- METBeginArea(FALSE);
- METFullArc(pA->GetPoint(),0.5);
- METEndArea();
- }
- break;
-
- case META_LINE_ACTION:
- {
- const MetaLineAction* pA = (const MetaLineAction*) pMA;
-
- if( aGDILineColor != Color( COL_TRANSPARENT ) )
- {
- LineInfo aLineInfo( pA->GetLineInfo() );
- if ( ! ( aLineInfo.IsDefault() ) )
- METSetAndPushLineInfo( aLineInfo );
-
- METSetMix( eGDIRasterOp );
- METSetColor(aGDILineColor);
- METBeginPath( 1 );
- METLine( pA->GetStartPoint(), pA->GetEndPoint() );
- METEndPath();
- METOutlinePath( 1 );
-
- if ( ! ( aLineInfo.IsDefault() ) )
- METPopLineInfo( aLineInfo );
- }
- }
- break;
-
- case META_RECT_ACTION:
- {
- const MetaRectAction* pA = (const MetaRectAction*) pMA;
-
- if( aGDIFillColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix( eGDIRasterOp );
- METSetColor( aGDIFillColor );
- METSetBackgroundColor( aGDIFillColor );
- METBox( TRUE, FALSE, pA->GetRect(), 0, 0 );
- }
-
- if( aGDILineColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix( eGDIRasterOp );
- METSetColor( aGDILineColor );
- METBox( FALSE, TRUE, pA->GetRect(), 0, 0 );
- }
- }
- break;
-
- case META_ROUNDRECT_ACTION:
- {
- const MetaRoundRectAction* pA = (const MetaRoundRectAction*) pMA;
-
- if( aGDIFillColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix( eGDIRasterOp );
- METSetColor( aGDIFillColor );
- METSetBackgroundColor( aGDIFillColor );
- METBox( TRUE, FALSE, pA->GetRect(), pA->GetHorzRound(), pA->GetVertRound() );
- }
-
- if( aGDILineColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix( eGDIRasterOp );
- METSetColor( aGDILineColor );
- METBox( FALSE, TRUE, pA->GetRect(), pA->GetHorzRound(), pA->GetVertRound() );
- }
- }
- break;
-
- case META_ELLIPSE_ACTION:
- {
- const MetaEllipseAction* pA = (const MetaEllipseAction*) pMA;
- Point aCenter;
-
- aCenter.X()=(pA->GetRect().Left()+pA->GetRect().Right())/2;
- aCenter.Y()=(pA->GetRect().Top()+pA->GetRect().Bottom())/2;
-
- METSetArcParams(pA->GetRect().GetWidth(), pA->GetRect().GetHeight(),0,0);
-
- if( aGDIFillColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix( eGDIRasterOp );
- METSetColor( aGDIFillColor );
- METSetBackgroundColor( aGDIFillColor );
- METBeginArea(FALSE);
- METFullArc(aCenter,0.5);
- METEndArea();
- }
-
- if( aGDILineColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix( eGDIRasterOp );
- METSetColor( aGDILineColor );
- METFullArc( aCenter,0.5 );
- }
- }
- break;
-
- case META_ARC_ACTION:
- {
- const MetaArcAction* pA = (const MetaArcAction*) pMA;
- Point aStartPos,aCenter;
- double fdx,fdy,fa1,fa2;
-
- aCenter.X()=(pA->GetRect().Left()+pA->GetRect().Right())/2;
- aCenter.Y()=(pA->GetRect().Top()+pA->GetRect().Bottom())/2;
- fdx=(double)(pA->GetStartPoint().X()-aCenter.X());
- fdy=(double)(pA->GetStartPoint().Y()-aCenter.Y());
- fdx*=(double)pA->GetRect().GetHeight();
- fdy*=(double)pA->GetRect().GetWidth();
- if (fdx==0.0 && fdy==0.0) fdx=1.0;
- fa1=atan2(-fdy,fdx);
- fdx=(double)(pA->GetEndPoint().X()-aCenter.X());
- fdy=(double)(pA->GetEndPoint().Y()-aCenter.Y());
- fdx*=(double)pA->GetRect().GetHeight();
- fdy*=(double)pA->GetRect().GetWidth();
- if (fdx==0.0 && fdy==0.0) fdx=1.0;
- fa2=atan2(-fdy,fdx);
- aStartPos.X()=aCenter.X()+(long)(((double)pA->GetRect().GetWidth())*cos(fa1)/2.0+0.5);
- aStartPos.Y()=aCenter.Y()-(long)(((double)pA->GetRect().GetHeight())*sin(fa1)/2.0+0.5);
-
- if( aGDILineColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix( eGDIRasterOp );
- METSetColor( aGDILineColor );
- METSetArcParams(pA->GetRect().GetWidth(), pA->GetRect().GetHeight(),0,0);
- METBeginPath(1);
- METMove(aStartPos);
- METPartialArcAtCurPos(aCenter,0.5,fa1,fa2-fa1);
- METEndPath();
- METOutlinePath(1);
- }
- }
- break;
-
- case META_PIE_ACTION:
- {
- const MetaPieAction* pA = (const MetaPieAction*) pMA;
- Point aCenter;
- double fdx,fdy,fa1,fa2;
-
- aCenter.X()=(pA->GetRect().Left()+pA->GetRect().Right())/2;
- aCenter.Y()=(pA->GetRect().Top()+pA->GetRect().Bottom())/2;
- fdx=(double)(pA->GetStartPoint().X()-aCenter.X());
- fdy=(double)(pA->GetStartPoint().Y()-aCenter.Y());
- fdx*=(double)pA->GetRect().GetHeight();
- fdy*=(double)pA->GetRect().GetWidth();
- if (fdx==0.0 && fdy==0.0) fdx=1.0;
- fa1=atan2(-fdy,fdx);
- fdx=(double)(pA->GetEndPoint().X()-aCenter.X());
- fdy=(double)(pA->GetEndPoint().Y()-aCenter.Y());
- fdx*=(double)pA->GetRect().GetHeight();
- fdy*=(double)pA->GetRect().GetWidth();
- if (fdx==0.0 && fdy==0.0) fdx=1.0;
- fa2=atan2(-fdy,fdx);
-
- METSetArcParams(pA->GetRect().GetWidth(), pA->GetRect().GetHeight(),0,0);
-
- if( aGDIFillColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix( eGDIRasterOp );
- METSetColor( aGDIFillColor );
- METSetBackgroundColor( aGDIFillColor );
- METBeginPath(1);
- METMove(aCenter);
- METPartialArcAtCurPos(aCenter,0.5,fa1,fa2-fa1);
- METLineAtCurPos(aCenter);
- METEndPath();
- METFillPath(1);
- }
-
- if( aGDILineColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix( eGDIRasterOp );
- METSetColor( aGDILineColor );
- METBeginPath(1);
- METMove(aCenter);
- METPartialArcAtCurPos(aCenter,0.5,fa1,fa2-fa1);
- METLineAtCurPos(aCenter);
- METEndPath();
- METOutlinePath(1);
- }
- }
- break;
-
- case META_CHORD_ACTION:
- {
- const MetaChordAction* pA = (const MetaChordAction*) pMA;
- Point aStartPos,aCenter;
- double fdx,fdy,fa1,fa2;
-
- aCenter.X()=(pA->GetRect().Left()+pA->GetRect().Right())/2;
- aCenter.Y()=(pA->GetRect().Top()+pA->GetRect().Bottom())/2;
- fdx=(double)(pA->GetStartPoint().X()-aCenter.X());
- fdy=(double)(pA->GetStartPoint().Y()-aCenter.Y());
- fdx*=(double)pA->GetRect().GetHeight();
- fdy*=(double)pA->GetRect().GetWidth();
- if (fdx==0.0 && fdy==0.0) fdx=1.0;
- fa1=atan2(-fdy,fdx);
- fdx=(double)(pA->GetEndPoint().X()-aCenter.X());
- fdy=(double)(pA->GetEndPoint().Y()-aCenter.Y());
- fdx*=(double)pA->GetRect().GetHeight();
- fdy*=(double)pA->GetRect().GetWidth();
- if (fdx==0.0 && fdy==0.0) fdx=1.0;
- fa2=atan2(-fdy,fdx);
- aStartPos.X()=aCenter.X()+(long)(((double)pA->GetRect().GetWidth())*cos(fa1)/2.0+0.5);
- aStartPos.Y()=aCenter.Y()-(long)(((double)pA->GetRect().GetHeight())*sin(fa1)/2.0+0.5);
-
- if( aGDIFillColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix( eGDIRasterOp );
- METSetColor( aGDIFillColor );
- METSetBackgroundColor( aGDIFillColor );
- METBeginPath(1);
- METMove(aStartPos);
- METPartialArcAtCurPos(aCenter,0.5,fa1,fa2-fa1);
- METLineAtCurPos(aStartPos);
- METEndPath();
- METFillPath(1);
- }
-
- if( aGDILineColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix( eGDIRasterOp );
- METSetColor( aGDILineColor );
- METBeginPath(1);
- METMove(aStartPos);
- METPartialArcAtCurPos(aCenter,0.5,fa1,fa2-fa1);
- METLineAtCurPos(aStartPos);
- METEndPath();
- METOutlinePath(1);
- }
- }
- break;
-
- case META_POLYLINE_ACTION:
- {
- const MetaPolyLineAction* pA = (const MetaPolyLineAction*) pMA;
-
- if( aGDILineColor != Color( COL_TRANSPARENT ) )
- {
- LineInfo aLineInfo( pA->GetLineInfo() );
- if ( ! ( aLineInfo.IsDefault() ) )
- METSetAndPushLineInfo( aLineInfo );
-
- METSetMix(eGDIRasterOp);
- METSetColor(aGDILineColor);
- METBeginPath(1);
- Polygon aSimplePoly;
- const Polygon& rPoly = pA->GetPolygon();
- if ( rPoly.HasFlags() )
- rPoly.AdaptiveSubdivide( aSimplePoly );
- else
- aSimplePoly = rPoly;
- METLine( aSimplePoly );
- METEndPath();
- METOutlinePath(1);
-
- if ( ! ( aLineInfo.IsDefault() ) )
- METPopLineInfo( aLineInfo );
- }
- }
- break;
-
- case META_POLYGON_ACTION:
- {
- const MetaPolygonAction* pA = (const MetaPolygonAction*) pMA;
- Polygon aSimplePoly;
- const Polygon& rPoly = pA->GetPolygon();
- if ( rPoly.HasFlags() )
- rPoly.AdaptiveSubdivide( aSimplePoly );
- else
- aSimplePoly = rPoly;
- if( aGDIFillColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix(eGDIRasterOp);
- METSetColor(aGDIFillColor );
- METSetBackgroundColor(aGDIFillColor );
- METBeginPath(1);
- METLine( aSimplePoly );
- METEndPath();
- METFillPath(1);
- }
-
- if( aGDILineColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix(eGDIRasterOp);
- METSetColor(aGDILineColor );
- METBeginPath(1);
- METLine( aSimplePoly );
- METEndPath();
- METOutlinePath(1);
- }
- }
- break;
-
- case META_POLYPOLYGON_ACTION:
- {
- const MetaPolyPolygonAction* pA = (const MetaPolyPolygonAction*) pMA;
-
- PolyPolygon aSimplePolyPoly( pA->GetPolyPolygon() );
- sal_uInt16 i, nCount = aSimplePolyPoly.Count();
- for ( i = 0; i < nCount; i++ )
- {
- if ( aSimplePolyPoly[ i ].HasFlags() )
- {
- Polygon aSimplePoly;
- aSimplePolyPoly[ i ].AdaptiveSubdivide( aSimplePoly );
- aSimplePolyPoly[ i ] = aSimplePoly;
- }
- }
- if( aGDIFillColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix(eGDIRasterOp);
- METSetColor(aGDIFillColor);
- METSetBackgroundColor(aGDIFillColor);
- METBeginPath(1);
- METLine( aSimplePolyPoly );
- METEndPath();
- METFillPath(1);
- }
-
- if( aGDILineColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix(eGDIRasterOp);
- METSetColor(aGDILineColor);
- METBeginPath(1);
- METLine( aSimplePolyPoly );
- METEndPath();
- METOutlinePath(1);
- }
- }
- break;
-
- case META_TEXT_ACTION:
- {
- const MetaTextAction* pA = (const MetaTextAction*) pMA;
- Point aPt( pA->GetPoint() );
-
- if( aGDIFont.GetAlign() != ALIGN_BASELINE)
- {
- VirtualDevice aVDev;
-
- if( aGDIFont.GetAlign()==ALIGN_TOP )
- aPt.Y()+=(long)aVDev.GetFontMetric( aGDIFont ).GetAscent();
- else
- aPt.Y()-=(long)aVDev.GetFontMetric( aGDIFont ).GetDescent();
- }
-
- METSetMix(eGDIRasterOp);
- METSetColor(aGDIFont.GetColor());
- METSetBackgroundColor(aGDIFont.GetFillColor());
- METSetChrCellSize(aGDIFont.GetSize());
- METSetChrAngle(aGDIFont.GetOrientation());
- METSetChrSet(FindChrSet(aGDIFont));
- METChrStr(aPt, String(pA->GetText(),pA->GetIndex(),pA->GetLen()));
- }
- break;
-
- case META_TEXTARRAY_ACTION:
- {
- const MetaTextArrayAction* pA = (const MetaTextArrayAction*) pMA;
- USHORT i;
- String aStr;
- Polygon aPolyDummy(1);
- short nOrientation;
- Point aPt( pA->GetPoint() );
-
- if( aGDIFont.GetAlign() != ALIGN_BASELINE )
- {
- VirtualDevice aVDev;
- if( aGDIFont.GetAlign() == ALIGN_TOP )
- aPt.Y()+=(long)aVDev.GetFontMetric(aGDIFont).GetAscent();
- else
- aPt.Y()-=(long)aVDev.GetFontMetric(aGDIFont).GetDescent();
- }
-
- METSetMix(eGDIRasterOp);
- METSetColor(aGDIFont.GetColor());
- METSetBackgroundColor(aGDIFont.GetFillColor());
- METSetChrCellSize(aGDIFont.GetSize());
- METSetChrAngle( nOrientation = aGDIFont.GetOrientation() );
- METSetChrSet(FindChrSet(aGDIFont));
- aStr=String(pA->GetText(),pA->GetIndex(),pA->GetLen());
-
- if( pA->GetDXArray()!=NULL )
- {
- Point aPt2;
-
- for( i=0; i < aStr.Len(); i++ )
- {
- aPt2 = aPt;
- if ( i > 0 )
- {
- aPt2.X() += pA->GetDXArray()[i-1];
- if ( nOrientation )
- {
- aPolyDummy.SetPoint( aPt2, 0 );
- aPolyDummy.Rotate( aPt, nOrientation );
- aPt2 = aPolyDummy.GetPoint( 0 );
- }
- }
- METChrStr( aPt2, String( aStr.GetChar( i ) ) );
- }
- }
- else
- METChrStr( aPt, aStr );
- }
- break;
-
- case META_STRETCHTEXT_ACTION:
- {
- const MetaStretchTextAction* pA = (const MetaStretchTextAction*) pMA;
- VirtualDevice aVDev;
- USHORT i;
- sal_Int32* pDXAry;
- sal_Int32 nNormSize;
- String aStr;
- Polygon aPolyDummy(1);
- short nOrientation;
- Point aPt( pA->GetPoint() );
- Point aPt2;
-
- aVDev.SetFont( aGDIFont );
-
- if( aGDIFont.GetAlign() != ALIGN_BASELINE)
- {
- if( aGDIFont.GetAlign() == ALIGN_TOP )
- aPt.Y()+=(long)aVDev.GetFontMetric().GetAscent();
- else
- aPt.Y()-=(long)aVDev.GetFontMetric().GetDescent();
- }
-
- METSetMix(eGDIRasterOp);
- METSetColor(aGDIFont.GetColor());
- METSetBackgroundColor(aGDIFont.GetFillColor());
- METSetChrCellSize(aGDIFont.GetSize());
- METSetChrAngle( nOrientation = aGDIFont.GetOrientation() );
- METSetChrSet(FindChrSet(aGDIFont));
- aStr=String(pA->GetText(),pA->GetIndex(),pA->GetLen());
- pDXAry=new sal_Int32[aStr.Len()];
- nNormSize = aVDev.GetTextArray( aStr, pDXAry );
-
- for ( i = 0; i < aStr.Len(); i++ )
- {
- aPt2 = aPt;
- if ( i > 0 )
- {
- aPt2.X() += pDXAry[i-1]*((long)pA->GetWidth())/ nNormSize;
- if ( nOrientation )
- {
- aPolyDummy.SetPoint( aPt2, 0 );
- aPolyDummy.Rotate( aPt, nOrientation );
- aPt2 = aPolyDummy.GetPoint( 0 );
- }
- }
- METChrStr( aPt2, String( aStr.GetChar( i ) ) );
- }
-
- delete[] pDXAry;
- }
- break;
-
- case META_TEXTRECT_ACTION:
- {
-// DBG_ERROR( "Unsupported MET-Action: META_TEXTRECT_ACTION!" );
- }
- break;
-
- case META_BMP_ACTION:
- {
- const MetaBmpAction* pA = (const MetaBmpAction*) pMA;
-
- METSetMix(eGDIRasterOp);
- METBitBlt( pA->GetPoint(), pA->GetBitmap().GetSizePixel(), pA->GetBitmap() );
- }
- break;
-
- case META_BMPSCALE_ACTION:
- {
- const MetaBmpScaleAction* pA = (const MetaBmpScaleAction*) pMA;
-
- METSetMix(eGDIRasterOp);
- METBitBlt( pA->GetPoint(), pA->GetSize(), pA->GetBitmap() );
- }
- break;
-
- case META_BMPSCALEPART_ACTION:
- {
- const MetaBmpScalePartAction* pA = (const MetaBmpScalePartAction*) pMA;
- Bitmap aTmp( pA->GetBitmap() );
-
- aTmp.Crop( Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
- METSetMix( eGDIRasterOp );
- METBitBlt( pA->GetDestPoint(), pA->GetDestSize(), aTmp );
- }
- break;
-
- case META_BMPEX_ACTION:
- {
- const MetaBmpExAction* pA = (const MetaBmpExAction*) pMA;
- Bitmap aTmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
-
- METSetMix(eGDIRasterOp);
- METBitBlt( pA->GetPoint(), aTmp.GetSizePixel(), aTmp );
- }
- break;
-
- case META_BMPEXSCALE_ACTION:
- {
- const MetaBmpExScaleAction* pA = (const MetaBmpExScaleAction*) pMA;
- Bitmap aTmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
-
- METSetMix(eGDIRasterOp);
- METBitBlt( pA->GetPoint(), pA->GetSize(), aTmp );
- }
- break;
-
- case META_BMPEXSCALEPART_ACTION:
- {
- const MetaBmpExScalePartAction* pA = (const MetaBmpExScalePartAction*) pMA;
- Bitmap aTmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
-
- aTmp.Crop( Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
- METSetMix(eGDIRasterOp);
- METBitBlt( pA->GetDestPoint(), pA->GetDestSize(), aTmp );
- }
- break;
-
- case META_EPS_ACTION :
- {
- const MetaEPSAction* pA = (const MetaEPSAction*)pMA;
- const GDIMetaFile aGDIMetaFile( pA->GetSubstitute() );
-
- INT32 nCount = aGDIMetaFile.GetActionCount();
- for ( INT32 i = 0; i < nCount; i++ )
- {
- const MetaAction* pMetaAct = aGDIMetaFile.GetAction( i );
- if ( pMetaAct->GetType() == META_BMPSCALE_ACTION )
- {
- const MetaBmpScaleAction* pBmpScaleAction = (const MetaBmpScaleAction*)pMetaAct;
- METSetMix(eGDIRasterOp);
- METBitBlt( pA->GetPoint(), pA->GetSize(), pBmpScaleAction->GetBitmap() );
- break;
- }
- }
- }
- break;
-
- case META_MASK_ACTION:
- {
-// DBG_ERROR( "Unsupported MET-Action: META_MASK_ACTION!" );
- }
- break;
-
- case META_MASKSCALE_ACTION:
- {
-// DBG_ERROR( "Unsupported MET-Action: META_MASKSCALE_ACTION!" );
- }
- break;
-
- case META_MASKSCALEPART_ACTION:
- {
-// DBG_ERROR( "Unsupported MET-Action: META_MASKSCALEPART_ACTION!" );
- }
- break;
-
- case META_GRADIENT_ACTION:
- {
- VirtualDevice aVDev;
- GDIMetaFile aTmpMtf;
- const MetaGradientAction* pA = (const MetaGradientAction*) pMA;
-
- aVDev.SetMapMode( aTargetMapMode );
- aVDev.AddGradientActions( pA->GetRect(), pA->GetGradient(), aTmpMtf );
- WriteOrders( &aTmpMtf );
- }
- break;
-
- case META_HATCH_ACTION:
- {
- VirtualDevice aVDev;
- GDIMetaFile aTmpMtf;
- const MetaHatchAction* pA = (const MetaHatchAction*) pMA;
-
- aVDev.SetMapMode( aTargetMapMode );
- aVDev.AddHatchActions( pA->GetPolyPolygon(), pA->GetHatch(), aTmpMtf );
- WriteOrders( &aTmpMtf );
- }
- break;
-
- case META_WALLPAPER_ACTION:
- {
-// DBG_ERROR( "Unsupported MET-Action: META_WALLPAPER_ACTION!" );
- }
- break;
-
- case META_CLIPREGION_ACTION:
- {
-// DBG_ERROR( "Unsupported MET-Action: META_CLIPREGION_ACTION!" );
- }
- break;
-
- case META_ISECTRECTCLIPREGION_ACTION:
- {
- const MetaISectRectClipRegionAction* pA = (const MetaISectRectClipRegionAction*) pMA;
- WriteClipRect( pA->GetRect() );
- }
- break;
-
- case META_ISECTREGIONCLIPREGION_ACTION:
- {
-// DBG_ERROR( "Unsupported MET-Action: META_ISECTREGIONCLIPREGION_ACTION!" );
- }
- break;
-
- case META_MOVECLIPREGION_ACTION:
- {
-// DBG_ERROR( "Unsupported MET-Action: META_MOVECLIPREGION_ACTION!" );
- }
- break;
-
- case META_LINECOLOR_ACTION:
- {
- const MetaLineColorAction* pA = (const MetaLineColorAction*) pMA;
-
- if( pA->IsSetting() )
- aGDILineColor = pA->GetColor();
- else
- aGDILineColor = Color( COL_TRANSPARENT );
- }
- break;
-
- case META_FILLCOLOR_ACTION:
- {
- const MetaFillColorAction* pA = (const MetaFillColorAction*) pMA;
-
- if( pA->IsSetting() )
- aGDIFillColor = pA->GetColor();
- else
- aGDIFillColor = Color( COL_TRANSPARENT );
- }
- break;
-
- case META_TEXTCOLOR_ACTION:
- {
- const MetaTextColorAction* pA = (const MetaTextColorAction*) pMA;
- aGDIFont.SetColor( pA->GetColor() );
- }
- break;
-
- case META_TEXTFILLCOLOR_ACTION:
- {
- const MetaTextFillColorAction* pA = (const MetaTextFillColorAction*) pMA;
-
- if( pA->IsSetting() )
- aGDIFont.SetFillColor( pA->GetColor() );
- else
- aGDIFont.SetFillColor( Color( COL_TRANSPARENT ) );
- }
- break;
-
- case META_TEXTALIGN_ACTION:
- {
-// DBG_ERROR( "Unsupported MET-Action: META_TEXTALIGN_ACTION!" );
- }
- break;
-
- case META_MAPMODE_ACTION:
- {
- const MetaMapModeAction* pA = (const MetaMapModeAction*) pMA;
-
- if( aPictureMapMode != pA->GetMapMode() )
- {
- if ( pA->GetMapMode().GetMapUnit() == MAP_RELATIVE )
- {
- MapMode aMM = pA->GetMapMode();
- Fraction aScaleX = aMM.GetScaleX();
- Fraction aScaleY = aMM.GetScaleY();
-
- Point aOrigin = aPictureMapMode.GetOrigin();
- BigInt aX( aOrigin.X() );
- aX *= BigInt( aScaleX.GetDenominator() );
-
- if( aOrigin.X() >= 0 )
- {
- if( aScaleX.GetNumerator() >= 0 )
- aX += BigInt( aScaleX.GetNumerator()/2 );
- else
- aX -= BigInt( (aScaleX.GetNumerator()+1)/2 );
- }
- else
- {
- if( aScaleX.GetNumerator() >= 0 )
- aX -= BigInt( (aScaleX.GetNumerator()-1)/2 );
- else
- aX += BigInt( aScaleX.GetNumerator()/2 );
- }
-
- aX /= BigInt( aScaleX.GetNumerator() );
- aOrigin.X() = (long) aX + aMM.GetOrigin().X();
-
- BigInt aY( aOrigin.Y() );
- aY *= BigInt( aScaleY.GetDenominator() );
-
- if( aOrigin.Y() >= 0 )
- {
- if( aScaleY.GetNumerator() >= 0 )
- aY += BigInt( aScaleY.GetNumerator()/2 );
- else
- aY -= BigInt( (aScaleY.GetNumerator()+1)/2 );
- }
- else
- {
- if( aScaleY.GetNumerator() >= 0 )
- aY -= BigInt( (aScaleY.GetNumerator()-1)/2 );
- else
- aY += BigInt( aScaleY.GetNumerator()/2 );
- }
-
- aY /= BigInt( aScaleY.GetNumerator() );
- aOrigin.Y() = (long)aY + aMM.GetOrigin().Y();
- aPictureMapMode.SetOrigin( aOrigin );
-
- aScaleX *= aPictureMapMode.GetScaleX();
- aScaleY *= aPictureMapMode.GetScaleY();
- aPictureMapMode.SetScaleX( aScaleX );
- aPictureMapMode.SetScaleY( aScaleY );
- }
- else
- aPictureMapMode=pA->GetMapMode();
- }
- }
- break;
-
- case META_FONT_ACTION:
- {
- aGDIFont = ( (const MetaFontAction*) pMA )->GetFont();
- }
- break;
-
- case META_PUSH_ACTION:
- {
- METGDIStackMember* pGS = new METGDIStackMember;
-
- pGS->pSucc=pGDIStack; pGDIStack=pGS;
- pGS->aLineColor=aGDILineColor;
- pGS->aFillColor=aGDIFillColor;
- pGS->eRasterOp=eGDIRasterOp;
- pGS->aFont=aGDIFont;
- pGS->aMapMode=aPictureMapMode;
- pGS->aClipRect=aGDIClipRect;
- }
- break;
-
- case META_POP_ACTION:
- {
- METGDIStackMember* pGS;
-
- if( pGDIStack )
- {
- pGS=pGDIStack; pGDIStack=pGS->pSucc;
- aGDILineColor=pGS->aLineColor;
- aGDIFillColor=pGS->aFillColor;
- eGDIRasterOp=pGS->eRasterOp;
- aGDIFont=pGS->aFont;
- if ( pGS->aClipRect != aGDIClipRect )
- WriteClipRect( pGS->aClipRect );
- aPictureMapMode=pGS->aMapMode;
- delete pGS;
- }
- }
- break;
-
- case META_RASTEROP_ACTION:
- {
- eGDIRasterOp = ( (const MetaRasterOpAction*) pMA )->GetRasterOp();
- }
- break;
-
- case META_TRANSPARENT_ACTION:
- {
- if( aGDIFillColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix(eGDIRasterOp);
- METSetColor(aGDIFillColor);
- METSetBackgroundColor(aGDIFillColor);
- METBeginPath(1);
- METLine(( (const MetaTransparentAction*) pMA )->GetPolyPolygon());
- METEndPath();
- METFillPath(1);
- }
-
- if( aGDILineColor != Color( COL_TRANSPARENT ) )
- {
- METSetMix(eGDIRasterOp);
- METSetColor(aGDILineColor);
- METBeginPath(1);
- METLine(( (const MetaTransparentAction*) pMA )->GetPolyPolygon());
- METEndPath();
- METOutlinePath(1);
- }
- }
- break;
-
- case META_FLOATTRANSPARENT_ACTION:
- {
- const MetaFloatTransparentAction* pA = (const MetaFloatTransparentAction*) pMA;
-
- GDIMetaFile aTmpMtf( pA->GetGDIMetaFile() );
- Point aSrcPt( aTmpMtf.GetPrefMapMode().GetOrigin() );
- const Size aSrcSize( aTmpMtf.GetPrefSize() );
- const Point aDestPt( pA->GetPoint() );
- const Size aDestSize( pA->GetSize() );
- const double fScaleX = aSrcSize.Width() ? (double) aDestSize.Width() / aSrcSize.Width() : 1.0;
- const double fScaleY = aSrcSize.Height() ? (double) aDestSize.Height() / aSrcSize.Height() : 1.0;
- long nMoveX, nMoveY;
-
- if( fScaleX != 1.0 || fScaleY != 1.0 )
- {
- aTmpMtf.Scale( fScaleX, fScaleY );
- aSrcPt.X() = FRound( aSrcPt.X() * fScaleX ), aSrcPt.Y() = FRound( aSrcPt.Y() * fScaleY );
- }
-
- nMoveX = aDestPt.X() - aSrcPt.X(), nMoveY = aDestPt.Y() - aSrcPt.Y();
-
- if( nMoveX || nMoveY )
- aTmpMtf.Move( nMoveX, nMoveY );
-
- WriteOrders( &aTmpMtf );
- }
- break;
- }
-
- nWrittenActions++;
- MayCallback();
-
- if( pMET->GetError() )
- bStatus=FALSE;
-
- if( bStatus == FALSE )
- break;
- }
-}
-
-void METWriter::WriteObjectEnvironmentGroup(const GDIMetaFile * pMTF)
-{
- ULONG i, nId;
-
- //--- Das Feld 'Begin Object Environment Group':
- WriteFieldIntroducer(16,BegObjEnvMagic,0,0);
- WriteFieldId(7);
-
- //--- Das Feld 'Map Color Attribute Table':
- WriteFieldIntroducer(22,MapColAtrMagic,0,0);
- WriteBigEndianShort(0x000e);
- *pMET << (BYTE)0x0c << (BYTE)0x02 << (BYTE)0x84 << (BYTE)0x00;
- WriteFieldId(4);
-
- //--- Das erste Feld 'Map Coded Font':
- WriteFieldIntroducer(32,MapCodFntMagic,0,0);
- WriteBigEndianShort(0x0018);
- *pMET << (BYTE)0x0c << (BYTE)0x02 << (BYTE)0x84 << (BYTE)0x00;
- *pMET << (BYTE)0xff << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
- *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
- *pMET << (BYTE)0x04 << (BYTE)0x24 << (BYTE)0x05 << (BYTE)0x00;
- *pMET << (BYTE)0x06 << (BYTE)0x20;
- *pMET << (BYTE)0x03 << (BYTE)0x97 << (BYTE)0x01 << (BYTE)0xb5;
-
- //--- Die weiteren Felder 'Map Coded Font':
- CreateChrSets(pMTF);
- WriteChrSets();
-
- //--- Die Felder 'Map Data Resource':
- nId=nActBitmapId;
- for (i=0; i<nNumberOfBitmaps; i++)
- {
- WriteFieldIntroducer(29,MapDatResMagic,0,0);
- WriteBigEndianShort(0x0015);
- *pMET << (BYTE)0x0c << (BYTE)0x02 << (BYTE)0x84 << (BYTE)0x00;
- WriteFieldId(nId);
- *pMET << (BYTE)0x07 << (BYTE)0x22 << (BYTE)0x10;
- *pMET << (sal_uInt32)nId;
- nId++;
- }
-
- //--- Das Feld 'End Object Environment Group':
- WriteFieldIntroducer(16,EndObjEnvMagic,0,0);
- WriteFieldId(7);
-}
-
-
-void METWriter::WriteGraphicsObject(const GDIMetaFile * pMTF)
-{
- ULONG nSegmentSize,nPos,nDataFieldsStartPos;
-
- if( bStatus==FALSE )
- return;
-
- //--- Das Feld 'Begin Graphics Object':
- WriteFieldIntroducer(16,BegGrfObjMagic,0,0);
- WriteFieldId(7);
-
- // Map Color Attribute Table, Fonts und anderes:
- WriteObjectEnvironmentGroup(pMTF);
-
- //--- Das Feld 'Graphics Data Descriptor':
- WriteDataDescriptor(pMTF);
-
- // Zaehler fuer Data Fields initialisieren:
- nNumberOfDataFields=0;
-
- // Und Position des ersten Data Fields merken:
- nDataFieldsStartPos=pMET->Tell();
-
- //--- Anfang des ersten Feldes 'Graphics Data'
- WriteFieldIntroducer(0,DatGrfObjMagic,0,0);
- nNumberOfDataFields++;
-
- // Nun schreiben wir zunaechst den Kopf des Segments:
- *pMET << (BYTE)0x70 << (BYTE)0x0e << (sal_uInt32)0;
- *pMET << (BYTE)0x70 << (BYTE)0x10; // Flags
- *pMET << (USHORT)0; // Lo-Wort der Laenge der Segementdaten (Big Endian)
- *pMET << (sal_uInt32)0; // Reserved
- *pMET << (USHORT)0; // Hi-Wort der Laenge der Segementdaten (Big Endian) (Ohh Ohh OS2)
- // Anmerkung: die richtige Daten-Laenge schreiben wir weiter unten nochmal
-
- // Jetzt werden alle Orders rausgeschrieben:
- // (wobei die Sache ggf. in mehrere 'Graphics Data Fields' aufgeteilt
- // wird, per Methode WillWriteOrder(..))
- WriteOrders(pMTF);
-
- //--- Das letzte Feld 'Graphic Data' beenden:
- UpdateFieldSize();
-
- //--- Und schliesslich die Segmentgroesse richtigstellen:
- nPos=pMET->Tell();
- nSegmentSize=nPos-nDataFieldsStartPos;
- nSegmentSize-=nNumberOfDataFields*8; // Structured Field Introducers zaehlen nicht mit
- pMET->Seek(nDataFieldsStartPos+16); // Zum Lo-Wort der Segmentgroesse seeken
- WriteBigEndianShort((USHORT)(nSegmentSize&0x0000ffff)); // Und schreiben
- pMET->Seek(nDataFieldsStartPos+22); // Zum Hi-Wort der Segmentgroesse seeken
- WriteBigEndianShort((USHORT)(nSegmentSize>>16)); // Und schreiben
- pMET->Seek(nPos); // Zurueck zur Tagesordnung
-
- //--- Das Feld 'End Graphic Objects':
- WriteFieldIntroducer(16,EndGrfObjMagic,0,0);
- WriteFieldId(7);
-
- if( pMET->GetError() )
- bStatus=FALSE;
-}
-
-
-void METWriter::WriteResourceGroup(const GDIMetaFile * pMTF)
-{
- if( bStatus==FALSE )
- return;
-
- //--- Das Feld 'Begin Resource Group':
- WriteFieldIntroducer(16,BegResGrpMagic,0,0);
- WriteFieldId(2);
-
- //--- Der Inhalt:
- WriteColorAttributeTable();
- nActBitmapId=0x77777700;
- WriteImageObjects(pMTF);
- nActBitmapId=0x77777700;
- WriteGraphicsObject(pMTF);
-
- //--- Das Feld 'End Resource Group':
- WriteFieldIntroducer(16,EndResGrpMagic,0,0);
- WriteFieldId(2);
-
- if( pMET->GetError() )
- bStatus=FALSE;
-}
-
-
-void METWriter::WriteDocument(const GDIMetaFile * pMTF)
-{
- if( bStatus==FALSE )
- return;
-
- //--- Das Feld 'Begin Document':
- WriteFieldIntroducer(0,BegDocumnMagic,0,0);
- WriteFieldId(1);
- *pMET << (BYTE)0x00 << (BYTE)0x00;
- *pMET << (BYTE)0x05 << (BYTE)0x18 << (BYTE)0x03 << (BYTE)0x0c << (BYTE)0x00;
- *pMET << (BYTE)0x06 << (BYTE)0x01 << (BYTE)0x03 << (BYTE)0xd4 << (BYTE)0x03 << (BYTE)0x52;
- *pMET << (BYTE)0x03 << (BYTE)0x65 << (BYTE)0x00;
- UpdateFieldSize();
-
- //--- Der Inhalt:
- WriteResourceGroup(pMTF);
-
- //--- Das Feld 'End Document':
- WriteFieldIntroducer(16,EndDocumnMagic,0,0);
- WriteFieldId(1);
-
- if( pMET->GetError() )
- bStatus=FALSE;
-}
-
-BOOL METWriter::WriteMET( const GDIMetaFile& rMTF, SvStream& rTargetStream, FilterConfigItem* pFilterConfigItem )
-{
- if ( pFilterConfigItem )
- {
- xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
- if ( xStatusIndicator.is() )
- {
- rtl::OUString aMsg;
- xStatusIndicator->start( aMsg, 100 );
- }
- }
-
- METChrSet* pCS;
- METGDIStackMember* pGS;
-
- bStatus=TRUE;
- nLastPercent=0;
-
- pMET=&rTargetStream;
- pMET->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
-
- aPictureRect = Rectangle( Point(), rMTF.GetPrefSize() );
- aTargetMapMode = aPictureMapMode = rMTF.GetPrefMapMode();
-
- aGDILineColor=Color( COL_BLACK );
- aGDIFillColor=Color( COL_WHITE );
- eGDIRasterOp=ROP_OVERPAINT;
- aGDIFont=Font();
- aGDIMapMode=MapMode();
- aGDIClipRect=Rectangle();
- pGDIStack=NULL;
- aMETColor=Color(COL_BLACK);
- aMETBackgroundColor=Color(COL_WHITE);
- eMETMix=ROP_OVERPAINT;
- nMETStrokeLineWidth=1;
- aMETChrCellSize=Size(0,0);
- nMETChrAngle=0;
- nMETChrSet=0x00;
- pChrSetList=NULL;
- nNextChrSetId=1;
- nNumberOfActions=0;
- nNumberOfBitmaps=0;
- nWrittenActions=0;
- nWrittenBitmaps=0;
- nActBitmapPercent=0;
-
- CountActionsAndBitmaps(&rMTF);
-
- WriteDocument(&rMTF);
-
- while( pChrSetList )
- {
- pCS=pChrSetList;
- pChrSetList=pCS->pSucc;
- delete pCS;
- }
-
- while( pGDIStack )
- {
- pGS=pGDIStack;
- pGDIStack=pGS->pSucc;
- delete pGS;
- }
-
- if ( xStatusIndicator.is() )
- xStatusIndicator->end();
-
- return bStatus;
-}
-
-//================== GraphicExport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream & rStream, Graphic & rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
-{ METWriter aMETWriter;
-
- if ( rGraphic.GetType() == GRAPHIC_GDIMETAFILE )
- return aMETWriter.WriteMET( rGraphic.GetGDIMetaFile(), rStream, pFilterConfigItem );
- else
- {
- Bitmap aBmp=rGraphic.GetBitmap();
- GDIMetaFile aMTF;
- VirtualDevice aVirDev;
-
- aMTF.Record(&aVirDev);
- aVirDev.DrawBitmap(Point(),aBmp);
- aMTF.Stop();
- aMTF.SetPrefSize(aBmp.GetSizePixel());
- return aMETWriter.WriteMET( aMTF, rStream, pFilterConfigItem );
- }
-}
-
-//================== GraphicDialog - die exportierte Funktion ================
-
-extern "C" BOOL SAL_CALL DoExportDialog( FltCallDialogParameter& rPara )
-{
- BOOL bRet = FALSE;
-
- if ( rPara.pWindow )
- {
- ByteString aResMgrName( "eme" );
- ResMgr* pResMgr;
-
- pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
-
- if( pResMgr )
- {
- rPara.pResMgr = pResMgr;
- bRet = ( DlgExportEMET( rPara ).Execute() == RET_OK );
- delete pResMgr;
- }
- else
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-//================== ein bischen Muell fuer Windows ==========================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
diff --git a/goodies/source/filter.vcl/eos2met/eos2mstr.src b/goodies/source/filter.vcl/eos2met/eos2mstr.src
deleted file mode 100644
index 9f304706861b..000000000000
--- a/goodies/source/filter.vcl/eos2met/eos2mstr.src
+++ /dev/null
@@ -1,41 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: eos2mstr.src,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "strings.hrc"
-
-String KEY_MODE
-{
- Text = "ExportMode";
-};
-
-String KEY_SIZE
-{
- Text = "Size";
-};
diff --git a/goodies/source/filter.vcl/eos2met/exports.map b/goodies/source/filter.vcl/eos2met/exports.map
deleted file mode 100644
index ce76d3850094..000000000000
--- a/goodies/source/filter.vcl/eos2met/exports.map
+++ /dev/null
@@ -1,8 +0,0 @@
-METEXPORTER_1_0 {
- global:
- GraphicExport;
- DoExportDialog;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/eos2met/makefile.mk b/goodies/source/filter.vcl/eos2met/makefile.mk
deleted file mode 100644
index 05f2f032e342..000000000000
--- a/goodies/source/filter.vcl/eos2met/makefile.mk
+++ /dev/null
@@ -1,78 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=eos2met
-TARGET2=eme
-DEPTARGET=veos2met
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-
-SRS1NAME=$(TARGET)
-SRC1FILES= dlgeos2.src \
- eos2mstr.src
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/eos2met.obj \
- $(SLO)$/dlgeos2.obj
-.ENDIF
-# ==========================================================================
-
-RESLIB1NAME=$(TARGET2)
-RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-.IF "$(L10N_framework)"==""
-SHL1TARGET= eme$(DLLPOSTFIX)
-SHL1IMPLIB= eos2met
-SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(SVTOOLLIB) $(CPPULIB) $(SALLIB)
-
-SHL1LIBS= $(SLB)$/eos2met.lib
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/eos2met.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/eos2met/strings.hrc b/goodies/source/filter.vcl/eos2met/strings.hrc
deleted file mode 100644
index fe559eb8a2a9..000000000000
--- a/goodies/source/filter.vcl/eos2met/strings.hrc
+++ /dev/null
@@ -1,32 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: strings.hrc,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#define KEY_MODE 260
-#define KEY_SIZE 261
-
diff --git a/goodies/source/filter.vcl/epbm/dlgepbm.cxx b/goodies/source/filter.vcl/epbm/dlgepbm.cxx
deleted file mode 100644
index e43c40033025..000000000000
--- a/goodies/source/filter.vcl/epbm/dlgepbm.cxx
+++ /dev/null
@@ -1,102 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepbm.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#ifndef GCC
-#endif
-
-#include <tools/ref.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include <vcl/msgbox.hxx>
-#include "dlgepbm.hxx"
-#include "dlgepbm.hrc"
-#include "strings.hrc"
-
-/*************************************************************************
-|*
-|* Ctor
-|*
-\************************************************************************/
-
-DlgExportEPBM::DlgExportEPBM( FltCallDialogParameter& rPara ) :
- ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EPBM, *rPara.pResMgr ) ),
- rFltCallPara ( rPara ),
- aGrpFormat ( this, ResId( GRP_FORMAT, *rPara.pResMgr ) ),
- aRBRaw ( this, ResId( RB_RAW, *rPara.pResMgr ) ),
- aRBASCII ( this, ResId( RB_ASCII, *rPara.pResMgr ) ),
- aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
- aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
- aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
- pMgr ( rPara.pResMgr )
-{
- FreeResource();
-
- // Config-Parameter lesen
-
- String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/PBM" ) );
- pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
- sal_Int32 nFormat = pConfigItem->ReadInt32( String( ResId( KEY_FORMAT, *pMgr ) ), 1 );
-
- BOOL bCheck = FALSE;
- if ( !nFormat )
- bCheck ^= TRUE;
-
- aRBRaw.Check( bCheck );
- bCheck ^= TRUE;
- aRBASCII.Check( bCheck );
-
- aBtnOK.SetClickHdl( LINK( this, DlgExportEPBM, OK ) );
-}
-
-DlgExportEPBM::~DlgExportEPBM()
-{
- delete pConfigItem;
-}
-
-/*************************************************************************
-|*
-|* Speichert eingestellte Werte in ini-Datei
-|*
-\************************************************************************/
-
-IMPL_LINK( DlgExportEPBM, OK, void *, EMPTYARG )
-{
-
- // Config-Parameter schreiben
- sal_Int32 nFormat = 0;
- if ( aRBASCII.IsChecked() )
- nFormat++;
- pConfigItem->WriteInt32( String( ResId( KEY_FORMAT, *pMgr ) ), nFormat );
- rFltCallPara.aFilterData = pConfigItem->GetFilterData();
- EndDialog( RET_OK );
-
- return 0;
-}
diff --git a/goodies/source/filter.vcl/epbm/dlgepbm.hrc b/goodies/source/filter.vcl/epbm/dlgepbm.hrc
deleted file mode 100644
index 8c68bc82aee5..000000000000
--- a/goodies/source/filter.vcl/epbm/dlgepbm.hrc
+++ /dev/null
@@ -1,37 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepbm.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "goodies.hrc"
-
-#define BTN_OK 1
-#define BTN_CANCEL 1
-#define BTN_HELP 1
-#define GRP_FORMAT 1
-#define RB_RAW 1
-#define RB_ASCII 2
diff --git a/goodies/source/filter.vcl/epbm/dlgepbm.hxx b/goodies/source/filter.vcl/epbm/dlgepbm.hxx
deleted file mode 100644
index d6580007449e..000000000000
--- a/goodies/source/filter.vcl/epbm/dlgepbm.hxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepbm.hxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#ifndef _DLGEPBM_HXX_
-#define _DLGEPBM_HXX_
-#include <svtools/fltcall.hxx>
-#include <vcl/dialog.hxx>
-#include <vcl/button.hxx>
-#include <vcl/fixed.hxx>
-#include <vcl/field.hxx>
-#include <svtools/stdctrl.hxx>
-
-
-/*************************************************************************
-|*
-|* Dialog zum Einstellen von Filteroptionen
-|*
-\************************************************************************/
-
-class ResMgr;
-
-class FilterConfigItem;
-class DlgExportEPBM : public ModalDialog
-{
-private:
-
- FltCallDialogParameter& rFltCallPara;
-
- FixedLine aGrpFormat;
- RadioButton aRBRaw;
- RadioButton aRBASCII;
- OKButton aBtnOK;
- CancelButton aBtnCancel;
- HelpButton aBtnHelp;
-
- FilterConfigItem* pConfigItem;
- ResMgr* pMgr;
-
- DECL_LINK( OK, void * );
-
-public:
- DlgExportEPBM( FltCallDialogParameter& rPara );
- ~DlgExportEPBM();
-};
-
-#endif // _DLGEPBM_HXX_
diff --git a/goodies/source/filter.vcl/epbm/dlgepbm.src b/goodies/source/filter.vcl/epbm/dlgepbm.src
deleted file mode 100644
index 8ef55fc096b6..000000000000
--- a/goodies/source/filter.vcl/epbm/dlgepbm.src
+++ /dev/null
@@ -1,109 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepbm.src,v $
- * $Revision: 1.21 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "dlgepbm.hrc"
-ModalDialog DLG_EXPORT_EPBM
-{
- OutputSize = TRUE ;
- SVLook = TRUE ;
- Size = MAP_APPFONT ( 133 , 63 ) ;
- Moveable = TRUE ;
- Closeable = TRUE ;
- Text [ en-US ] = "PBM Options" ;
- OKButton BTN_OK
- {
- Pos = MAP_APPFONT ( 73 , 6 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- DefButton = TRUE ;
- };
- CancelButton BTN_CANCEL
- {
- Pos = MAP_APPFONT ( 73 , 23 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- HelpButton BTN_HELP
- {
- Pos = MAP_APPFONT ( 73 , 43 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- FixedLine GRP_FORMAT
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 60 , 8 ) ;
- Text [ en-US ] = "File format";
- };
- RadioButton RB_RAW
- {
- Pos = MAP_APPFONT ( 12 , 14 ) ;
- Size = MAP_APPFONT ( 45 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Binary";
- };
- RadioButton RB_ASCII
- {
- Pos = MAP_APPFONT ( 12 , 28 ) ;
- Size = MAP_APPFONT ( 45 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Text";
- };
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/goodies/source/filter.vcl/epbm/epbm.cxx b/goodies/source/filter.vcl/epbm/epbm.cxx
deleted file mode 100644
index a624e7f45cfb..000000000000
--- a/goodies/source/filter.vcl/epbm/epbm.cxx
+++ /dev/null
@@ -1,275 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: epbm.cxx,v $
- * $Revision: 1.12 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/svapp.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <vcl/msgbox.hxx>
-#include <svl/solar.hrc>
-#include <svtools/fltcall.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include "strings.hrc"
-#include "dlgepbm.hrc"
-#include "dlgepbm.hxx"
-
-//============================ PBMWriter ==================================
-
-class PBMWriter {
-
-private:
-
- SvStream* mpOStm; // Die auszugebende PBM-Datei
- USHORT mpOStmOldModus;
-
- BOOL mbStatus;
- sal_Int32 mnMode; // 0 -> raw, 1-> ascii
- BitmapReadAccess* mpAcc;
- ULONG mnWidth, mnHeight; // Bildausmass in Pixeln
-
- BOOL ImplWriteHeader();
- void ImplWriteBody();
- void ImplWriteNumber( sal_Int32 );
-
- com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
-
-public:
- PBMWriter();
- ~PBMWriter();
-
- BOOL WritePBM( const Graphic& rGraphic, SvStream& rPBM, FilterConfigItem* pFilterConfigItem );
-};
-
-//=================== Methoden von PBMWriter ==============================
-
-PBMWriter::PBMWriter() :
- mbStatus ( TRUE ),
- mpAcc ( NULL )
-{
-}
-
-// ------------------------------------------------------------------------
-
-PBMWriter::~PBMWriter()
-{
-}
-
-// ------------------------------------------------------------------------
-
-BOOL PBMWriter::WritePBM( const Graphic& rGraphic, SvStream& rPBM, FilterConfigItem* pFilterConfigItem )
-{
-
- mpOStm = &rPBM;
-
- if ( pFilterConfigItem )
- {
- mnMode = pFilterConfigItem->ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "FileFormat" ) ), 0 );
-
- xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
- if ( xStatusIndicator.is() )
- {
- rtl::OUString aMsg;
- xStatusIndicator->start( aMsg, 100 );
- }
- }
-
- BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
- Bitmap aBmp = aBmpEx.GetBitmap();
- aBmp.Convert( BMP_CONVERSION_1BIT_THRESHOLD );
-
- mpOStmOldModus = mpOStm->GetNumberFormatInt();
- mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
-
- mpAcc = aBmp.AcquireReadAccess();
- if( mpAcc )
- {
- if ( ImplWriteHeader() )
- ImplWriteBody();
-
- aBmp.ReleaseAccess( mpAcc );
- }
- else
- mbStatus = FALSE;
-
- mpOStm->SetNumberFormatInt( mpOStmOldModus );
-
- if ( xStatusIndicator.is() )
- xStatusIndicator->end();
-
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-BOOL PBMWriter::ImplWriteHeader()
-{
- mnWidth = mpAcc->Width();
- mnHeight = mpAcc->Height();
- if ( mnWidth && mnHeight )
- {
- if ( mnMode == 0 )
- *mpOStm << "P4\x0a";
- else
- *mpOStm << "P1\x0a";
-
- ImplWriteNumber( mnWidth );
- *mpOStm << (BYTE)32;
- ImplWriteNumber( mnHeight );
- *mpOStm << (BYTE)10;
- }
- else mbStatus = FALSE;
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-void PBMWriter::ImplWriteBody()
-{
- if ( mnMode == 0 )
- {
- BYTE nBYTE = 0;
- for ( ULONG y = 0; y < mnHeight; y++ )
- {
- ULONG x;
- for ( x = 0; x < mnWidth; x++ )
- {
- nBYTE <<= 1;
- if (!(mpAcc->GetPixel( y, x ) & 1 ) )
- nBYTE++;
- if ( ( x & 7 ) == 7 )
- *mpOStm << nBYTE;
- }
- if ( ( x & 7 ) != 0 )
- *mpOStm << (BYTE)( nBYTE << ( ( x ^ 7 ) + 1 ) );
- }
- }
- else
- {
- int nxCount;
- for ( ULONG y = 0; y < mnHeight; y++ )
- {
- nxCount = 70;
- for ( ULONG x = 0; x < mnWidth; x++ )
- {
- if (!( --nxCount ) )
- {
- nxCount = 69;
- *mpOStm << (BYTE)10;
- }
- *mpOStm << (BYTE)( ( mpAcc->GetPixel( y, x ) ^ 1 ) + '0' ) ;
- }
- *mpOStm << (BYTE)10;
- }
- }
-}
-
-// ------------------------------------------------------------------------
-// eine Dezimalzahl im ASCII format wird in den Stream geschrieben
-
-void PBMWriter::ImplWriteNumber( sal_Int32 nNumber )
-{
- const ByteString aNum( ByteString::CreateFromInt32( nNumber ) );
-
- for( sal_Int16 n = 0, nLen = aNum.Len(); n < nLen; n++ )
- *mpOStm << aNum.GetChar( n );
-
-}
-
-// ------------------------------------------------------------------------
-
-// ---------------------
-// - exported function -
-// ---------------------
-
-extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
-{
- PBMWriter aPBMWriter;
-
- return aPBMWriter.WritePBM( rGraphic, rStream, pFilterConfigItem );
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" BOOL __LOADONCALLAPI DoExportDialog( FltCallDialogParameter& rPara )
-{
- BOOL bRet = FALSE;
-
- if ( rPara.pWindow )
- {
- ByteString aResMgrName( "epb" );
- ResMgr* pResMgr;
-
- pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
-
- if( pResMgr )
- {
- rPara.pResMgr = pResMgr;
- bRet = ( DlgExportEPBM( rPara ).Execute() == RET_OK );
- delete pResMgr;
- }
- else
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-// ------------------------------------------------------------------------
-#ifndef GCC
-#endif
-
-// ---------------
-// - Win16 trash -
-// ---------------
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0;
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
- if ( nHeap )
- UnlockData( 0 );
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
diff --git a/goodies/source/filter.vcl/epbm/epbmstr.src b/goodies/source/filter.vcl/epbm/epbmstr.src
deleted file mode 100644
index 9fd48e8e5063..000000000000
--- a/goodies/source/filter.vcl/epbm/epbmstr.src
+++ /dev/null
@@ -1,38 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: epbmstr.src,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#include "strings.hrc"
-
-// Key fuer den Dialog
-String KEY_FORMAT
-{
- Text = "FileFormat";
-};
diff --git a/goodies/source/filter.vcl/epbm/exports.map b/goodies/source/filter.vcl/epbm/exports.map
deleted file mode 100644
index 2d09b0bdb752..000000000000
--- a/goodies/source/filter.vcl/epbm/exports.map
+++ /dev/null
@@ -1,8 +0,0 @@
-PBMEXPORTER_1_0 {
- global:
- GraphicExport;
- DoExportDialog;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/epbm/makefile.mk b/goodies/source/filter.vcl/epbm/makefile.mk
deleted file mode 100644
index f4411d04e0fd..000000000000
--- a/goodies/source/filter.vcl/epbm/makefile.mk
+++ /dev/null
@@ -1,79 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=epbm
-TARGET2=epb
-DEPTARGET=vepbm
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-
-SRS1NAME=$(TARGET)
-SRC1FILES= dlgepbm.src \
- epbmstr.src
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/epbm.obj \
- $(SLO)$/dlgepbm.obj
-.ENDIF
-# ==========================================================================
-
-RESLIB1NAME=$(TARGET2)
-RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-.IF "$(L10N_framework)"==""
-SHL1TARGET= epb$(DLLPOSTFIX)
-SHL1IMPLIB= epbm
-SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
-
-SHL1LIBS= $(SLB)$/epbm.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/epbm.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/epbm/strings.hrc b/goodies/source/filter.vcl/epbm/strings.hrc
deleted file mode 100644
index 1e280524839a..000000000000
--- a/goodies/source/filter.vcl/epbm/strings.hrc
+++ /dev/null
@@ -1,30 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: strings.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#define KEY_FORMAT 256
diff --git a/goodies/source/filter.vcl/epgm/dlgepgm.cxx b/goodies/source/filter.vcl/epgm/dlgepgm.cxx
deleted file mode 100644
index 13b63d6a21f7..000000000000
--- a/goodies/source/filter.vcl/epgm/dlgepgm.cxx
+++ /dev/null
@@ -1,100 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepgm.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#ifndef GCC
-#endif
-
-#include <tools/ref.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include <vcl/msgbox.hxx>
-#include "dlgepgm.hxx"
-#include "dlgepgm.hrc"
-#include "strings.hrc"
-
-/*************************************************************************
-|*
-|* Ctor
-|*
-\************************************************************************/
-
-DlgExportEPGM::DlgExportEPGM( FltCallDialogParameter& rPara ) :
- ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EPGM, *rPara.pResMgr ) ),
- rFltCallPara ( rPara ),
- aGrpFormat ( this, ResId( GRP_FORMAT, *rPara.pResMgr ) ),
- aRBRaw ( this, ResId( RB_RAW, *rPara.pResMgr ) ),
- aRBASCII ( this, ResId( RB_ASCII, *rPara.pResMgr ) ),
- aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
- aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
- aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
- pMgr ( rPara.pResMgr )
-{
- FreeResource();
-
- // Config-Parameter lesen
-
- String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/PGM" ) );
- pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
- sal_Int32 nFormat = pConfigItem->ReadInt32( String( ResId( KEY_FORMAT, *pMgr ) ), 0 );
-
- BOOL bCheck = FALSE;
- if ( !nFormat )
- bCheck ^= TRUE;
- aRBRaw.Check( bCheck );
- bCheck ^= TRUE;
- aRBASCII.Check( bCheck );
-
- aBtnOK.SetClickHdl( LINK( this, DlgExportEPGM, OK ) );
-}
-
-DlgExportEPGM::~DlgExportEPGM()
-{
- delete pConfigItem;
-}
-
-/*************************************************************************
-|*
-|* Speichert eingestellte Werte in ini-Datei
-|*
-\************************************************************************/
-
-IMPL_LINK( DlgExportEPGM, OK, void *, EMPTYARG )
-{
- // Config-Parameter schreiben
- sal_Int32 nFormat = 0;
- if ( aRBASCII.IsChecked() )
- nFormat++;
- pConfigItem->WriteInt32( String( ResId( KEY_FORMAT, *pMgr ) ), nFormat );
- rFltCallPara.aFilterData = pConfigItem->GetFilterData();
- EndDialog( RET_OK );
-
- return 0;
-}
diff --git a/goodies/source/filter.vcl/epgm/dlgepgm.hrc b/goodies/source/filter.vcl/epgm/dlgepgm.hrc
deleted file mode 100644
index 6239e4450ecd..000000000000
--- a/goodies/source/filter.vcl/epgm/dlgepgm.hrc
+++ /dev/null
@@ -1,37 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepgm.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "goodies.hrc"
-
-#define BTN_OK 1
-#define BTN_CANCEL 1
-#define BTN_HELP 1
-#define GRP_FORMAT 1
-#define RB_RAW 1
-#define RB_ASCII 2
diff --git a/goodies/source/filter.vcl/epgm/dlgepgm.hxx b/goodies/source/filter.vcl/epgm/dlgepgm.hxx
deleted file mode 100644
index 9a8f8b4df158..000000000000
--- a/goodies/source/filter.vcl/epgm/dlgepgm.hxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepgm.hxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#ifndef _DLGEPGM_HXX_
-#define _DLGEPGM_HXX_
-#include <svtools/fltcall.hxx>
-#include <vcl/dialog.hxx>
-#include <vcl/button.hxx>
-#include <vcl/fixed.hxx>
-#include <vcl/field.hxx>
-#include <svtools/stdctrl.hxx>
-
-
-/*************************************************************************
-|*
-|* Dialog zum Einstellen von Filteroptionen
-|*
-\************************************************************************/
-
-class FilterConfigItem;
-class ResMgr;
-
-class DlgExportEPGM : public ModalDialog
-{
-private:
-
- FltCallDialogParameter& rFltCallPara;
-
- FixedLine aGrpFormat;
- RadioButton aRBRaw;
- RadioButton aRBASCII;
- OKButton aBtnOK;
- CancelButton aBtnCancel;
- HelpButton aBtnHelp;
-
- FilterConfigItem* pConfigItem;
- ResMgr* pMgr;
-
- DECL_LINK( OK, void * );
-
-public:
- DlgExportEPGM( FltCallDialogParameter& rPara );
- ~DlgExportEPGM();
-};
-
-#endif // _DLGEPGM_HXX_
diff --git a/goodies/source/filter.vcl/epgm/dlgepgm.src b/goodies/source/filter.vcl/epgm/dlgepgm.src
deleted file mode 100644
index 4933b6750e7a..000000000000
--- a/goodies/source/filter.vcl/epgm/dlgepgm.src
+++ /dev/null
@@ -1,108 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepgm.src,v $
- * $Revision: 1.25 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "dlgepgm.hrc"
-ModalDialog DLG_EXPORT_EPGM
-{
- OutputSize = TRUE ;
- SVLook = TRUE ;
- Size = MAP_APPFONT ( 133 , 63 ) ;
- Moveable = TRUE ;
- Closeable = TRUE ;
- Text [ en-US ] = "PGM Options" ;
- OKButton BTN_OK
- {
- Pos = MAP_APPFONT ( 73 , 6 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- DefButton = TRUE ;
- };
- CancelButton BTN_CANCEL
- {
- Pos = MAP_APPFONT ( 73 , 23 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- HelpButton BTN_HELP
- {
- Pos = MAP_APPFONT ( 73 , 43 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- FixedLine GRP_FORMAT
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 60 , 8 ) ;
- Text [ en-US ] = "File format";
- };
- RadioButton RB_RAW
- {
- Pos = MAP_APPFONT ( 12 , 14 ) ;
- Size = MAP_APPFONT ( 45 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Binary";
- };
- RadioButton RB_ASCII
- {
- Pos = MAP_APPFONT ( 12 , 28 ) ;
- Size = MAP_APPFONT ( 45 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Text";
- };
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/goodies/source/filter.vcl/epgm/epgm.cxx b/goodies/source/filter.vcl/epgm/epgm.cxx
deleted file mode 100644
index 32d6e74a5cfe..000000000000
--- a/goodies/source/filter.vcl/epgm/epgm.cxx
+++ /dev/null
@@ -1,300 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: epgm.cxx,v $
- * $Revision: 1.12 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/svapp.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <vcl/msgbox.hxx>
-#include <svl/solar.hrc>
-#include <svtools/fltcall.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include "strings.hrc"
-#include "dlgepgm.hrc"
-#include "dlgepgm.hxx"
-
-//============================ PGMWriter ==================================
-
-class PGMWriter {
-
-private:
-
- SvStream* mpOStm; // Die auszugebende PGM-Datei
- USHORT mpOStmOldModus;
-
- BOOL mbStatus;
- UINT32 mnMode;
- BitmapReadAccess* mpAcc;
- ULONG mnWidth, mnHeight; // Bildausmass in Pixeln
-
- BOOL ImplWriteHeader();
- void ImplWriteBody();
- void ImplWriteNumber( sal_Int32 );
-
- com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
-
-public:
- PGMWriter();
- ~PGMWriter();
-
- BOOL WritePGM( const Graphic& rGraphic, SvStream& rPGM, FilterConfigItem* pFilterConfigItem );
-};
-
-//=================== Methoden von PGMWriter ==============================
-
-PGMWriter::PGMWriter() :
- mbStatus ( TRUE ),
- mpAcc ( NULL )
-{
-}
-
-// ------------------------------------------------------------------------
-
-PGMWriter::~PGMWriter()
-{
-}
-
-// ------------------------------------------------------------------------
-
-BOOL PGMWriter::WritePGM( const Graphic& rGraphic, SvStream& rPGM, FilterConfigItem* pFilterConfigItem )
-{
-
- mpOStm = &rPGM;
-
- if ( pFilterConfigItem )
- {
- mnMode = pFilterConfigItem->ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "FileFormat" ) ), 0 );
-
- xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
- if ( xStatusIndicator.is() )
- {
- rtl::OUString aMsg;
- xStatusIndicator->start( aMsg, 100 );
- }
- }
-
- BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
- Bitmap aBmp = aBmpEx.GetBitmap();
- aBmp.Convert( BMP_CONVERSION_8BIT_GREYS );
-
- mpOStmOldModus = mpOStm->GetNumberFormatInt();
- mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
-
- mpAcc = aBmp.AcquireReadAccess();
- if( mpAcc )
- {
- if ( ImplWriteHeader() )
- {
- ImplWriteBody();
- }
- aBmp.ReleaseAccess( mpAcc );
- }
- else
- mbStatus = FALSE;
-
- mpOStm->SetNumberFormatInt( mpOStmOldModus );
-
- if ( xStatusIndicator.is() )
- xStatusIndicator->end();
-
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-BOOL PGMWriter::ImplWriteHeader()
-{
- mnWidth = mpAcc->Width();
- mnHeight = mpAcc->Height();
- if ( mnWidth && mnHeight )
- {
- if ( mnMode == 0 )
- *mpOStm << "P5\x0a";
- else
- *mpOStm << "P2\x0a";
-
- ImplWriteNumber( mnWidth );
- *mpOStm << (BYTE)32;
- ImplWriteNumber( mnHeight );
- *mpOStm << (BYTE)32;
- ImplWriteNumber( 255 ); // max. gray value
- *mpOStm << (BYTE)10;
- }
- else
- mbStatus = FALSE;
-
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-void PGMWriter::ImplWriteBody()
-{
- if ( mnMode == 0 )
- {
- for ( ULONG y = 0; y < mnHeight; y++ )
- {
- for ( ULONG x = 0; x < mnWidth; x++ )
- {
- *mpOStm << (BYTE)( mpAcc->GetPixel( y, x ) );
- }
- }
- }
- else
- {
- for ( ULONG y = 0; y < mnHeight; y++ )
- {
- int nCount = 70;
- for ( ULONG x = 0; x < mnWidth; x++ )
- {
- BYTE nDat, nNumb;
- if ( nCount < 0 )
- {
- nCount = 69;
- *mpOStm << (BYTE)10;
- }
- nDat = (BYTE)mpAcc->GetPixel( y, x );
- nNumb = nDat / 100;
- if ( nNumb )
- {
- *mpOStm << (BYTE)( nNumb + '0' );
- nDat -= ( nNumb * 100 );
- nNumb = nDat / 10;
- *mpOStm << (BYTE)( nNumb + '0' );
- nDat -= ( nNumb * 10 );
- *mpOStm << (BYTE)( nDat + '0' );
- nCount -= 4;
- }
- else
- {
- nNumb = nDat / 10;
- if ( nNumb )
- {
- *mpOStm << (BYTE)( nNumb + '0' );
- nDat -= ( nNumb * 10 );
- *mpOStm << (BYTE)( nDat + '0' );
- nCount -= 3;
- }
- else
- {
- *mpOStm << (BYTE)( nDat + '0' );
- nCount -= 2;
- }
- }
- *mpOStm << (BYTE)' ';
- }
- *mpOStm << (BYTE)10;
- }
- }
-}
-
-// ------------------------------------------------------------------------
-// eine Dezimalzahl im ASCII format wird in den Stream geschrieben
-
-void PGMWriter::ImplWriteNumber( sal_Int32 nNumber )
-{
- const ByteString aNum( ByteString::CreateFromInt32( nNumber ) );
-
- for( sal_Int16 n = 0UL, nLen = aNum.Len(); n < nLen; n++ )
- *mpOStm << aNum.GetChar( n );
-
-}
-
-// ------------------------------------------------------------------------
-
-// ---------------------
-// - exported function -
-// ---------------------
-
-extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
-{
- PGMWriter aPGMWriter;
-
- return aPGMWriter.WritePGM( rGraphic, rStream, pFilterConfigItem );
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" BOOL __LOADONCALLAPI DoExportDialog( FltCallDialogParameter& rPara )
-{
- BOOL bRet = FALSE;
-
- if ( rPara.pWindow )
- {
- ByteString aResMgrName( "epg" );
- ResMgr* pResMgr;
-
- pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
-
- if( pResMgr )
- {
- rPara.pResMgr = pResMgr;
- bRet = ( DlgExportEPGM( rPara ).Execute() == RET_OK );
- delete pResMgr;
- }
- else
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-// ------------------------------------------------------------------------
-#ifndef GCC
-#endif
-
-// ---------------
-// - Win16 trash -
-// ---------------
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0;
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
- if ( nHeap )
- UnlockData( 0 );
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
diff --git a/goodies/source/filter.vcl/epgm/epgmstr.src b/goodies/source/filter.vcl/epgm/epgmstr.src
deleted file mode 100644
index b91380ae2797..000000000000
--- a/goodies/source/filter.vcl/epgm/epgmstr.src
+++ /dev/null
@@ -1,38 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: epgmstr.src,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#include "strings.hrc"
-
-// Key fuer den Dialog
-String KEY_FORMAT
-{
- Text = "FileFormat";
-};
diff --git a/goodies/source/filter.vcl/epgm/exports.map b/goodies/source/filter.vcl/epgm/exports.map
deleted file mode 100644
index 3967c4684f05..000000000000
--- a/goodies/source/filter.vcl/epgm/exports.map
+++ /dev/null
@@ -1,8 +0,0 @@
-PGMEXPORTER_1_0 {
- global:
- GraphicExport;
- DoExportDialog;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/epgm/makefile.mk b/goodies/source/filter.vcl/epgm/makefile.mk
deleted file mode 100644
index 579ee6858a78..000000000000
--- a/goodies/source/filter.vcl/epgm/makefile.mk
+++ /dev/null
@@ -1,80 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=epgm
-TARGET2=epg
-DEPTARGET=vepgm
-
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-
-SRS1NAME=$(TARGET)
-SRC1FILES= dlgepgm.src \
- epgmstr.src
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/epgm.obj \
- $(SLO)$/dlgepgm.obj
-.ENDIF
-# ==========================================================================
-
-RESLIB1NAME=$(TARGET2)
-RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-.IF "$(L10N_framework)"==""
-SHL1TARGET= epg$(DLLPOSTFIX)
-SHL1IMPLIB= epgm
-SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
-
-SHL1LIBS= $(SLB)$/epgm.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/epgm.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/epgm/strings.hrc b/goodies/source/filter.vcl/epgm/strings.hrc
deleted file mode 100644
index 1e280524839a..000000000000
--- a/goodies/source/filter.vcl/epgm/strings.hrc
+++ /dev/null
@@ -1,30 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: strings.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#define KEY_FORMAT 256
diff --git a/goodies/source/filter.vcl/epict/dlgepct.cxx b/goodies/source/filter.vcl/epict/dlgepct.cxx
deleted file mode 100644
index dd9f0c8a716f..000000000000
--- a/goodies/source/filter.vcl/epict/dlgepct.cxx
+++ /dev/null
@@ -1,186 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepct.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#ifndef GCC
-#endif
-
-#include <vcl/msgbox.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include <com/sun/star/awt/Size.hpp>
-#include "dlgepct.hxx"
-#include "dlgepct.hrc"
-#include "strings.hrc"
-
-/*************************************************************************
-|*
-|* Ctor
-|*
-\************************************************************************/
-
-DlgExportEPCT::DlgExportEPCT( FltCallDialogParameter& rPara ) :
- ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EPCT, *rPara.pResMgr ) ),
- rFltCallPara ( rPara ),
- aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
- aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
- aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
- aRbOriginal ( this, ResId( RB_ORIGINAL, *rPara.pResMgr ) ),
- aRbSize ( this, ResId( RB_SIZE, *rPara.pResMgr ) ),
- aGrpMode ( this, ResId( GRP_MODE, *rPara.pResMgr ) ),
- aFtSizeX ( this, ResId( FT_SIZEX, *rPara.pResMgr ) ),
- aMtfSizeX ( this, ResId( MTF_SIZEX, *rPara.pResMgr ) ),
- aFtSizeY ( this, ResId( FT_SIZEY, *rPara.pResMgr ) ),
- aMtfSizeY ( this, ResId( MTF_SIZEY, *rPara.pResMgr ) ),
- aGrpSize ( this, ResId( GRP_SIZE, *rPara.pResMgr ) ),
- pMgr ( rPara.pResMgr )
-{
- FreeResource();
-
- String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/PCT" ) );
- pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
-
- aBtnOK.SetClickHdl( LINK( this, DlgExportEPCT, OK ) );
- aRbOriginal.SetClickHdl( LINK( this, DlgExportEPCT, ClickRbOriginal ) );
- aRbSize.SetClickHdl( LINK( this, DlgExportEPCT, ClickRbSize ) );
-
- // Config-Parameter lesen
- sal_Int32 nStrMode = pConfigItem->ReadInt32( String( ResId( KEY_MODE, *pMgr ) ), 0 );
- ::com::sun::star::awt::Size aDefault( 10000, 10000 );
- ::com::sun::star::awt::Size aSize;
- aSize = pConfigItem->ReadSize( String( ResId( KEY_SIZE, *pMgr ) ), aDefault );
-
- aMtfSizeX.SetDefaultUnit( FUNIT_MM );
- aMtfSizeY.SetDefaultUnit( FUNIT_MM );
- aMtfSizeX.SetValue( aSize.Width );
- aMtfSizeY.SetValue( aSize.Height );
-
- switch ( rPara.eFieldUnit )
- {
- case FUNIT_NONE :
- case FUNIT_KM :
- case FUNIT_PERCENT :
- case FUNIT_CUSTOM :
- case FUNIT_MILE :
- case FUNIT_FOOT :
- case FUNIT_M :
- break; // -Wall not handled.
- case FUNIT_MM :
- case FUNIT_CM :
- case FUNIT_TWIP :
- case FUNIT_POINT :
- case FUNIT_PICA :
- case FUNIT_INCH :
- case FUNIT_100TH_MM :
- {
- aMtfSizeX.SetUnit( rPara.eFieldUnit );
- aMtfSizeY.SetUnit( rPara.eFieldUnit );
- }
- break;
- }
- if ( nStrMode == 1 )
- {
- aRbSize.Check( TRUE );
- ClickRbSize( NULL );
- }
- else
- {
- aRbOriginal.Check( TRUE );
- ClickRbOriginal( NULL );
- }
-}
-
-DlgExportEPCT::~DlgExportEPCT()
-{
- delete pConfigItem;
-}
-
-/*************************************************************************
-|*
-|* Speichert eingestellte Werte in ini-Datei
-|*
-\**************************************** ********************************/
-
-IMPL_LINK( DlgExportEPCT, OK, void *, EMPTYARG )
-{
- // Config-Parameter schreiben
- ::com::sun::star::awt::Size aSize(
- (sal_Int32)MetricField::ConvertDoubleValue( aMtfSizeX.GetValue(), 2, aMtfSizeX.GetUnit(), MAP_100TH_MM ),
- (sal_Int32)MetricField::ConvertDoubleValue( aMtfSizeY.GetValue(), 2, aMtfSizeY.GetUnit(), MAP_100TH_MM ) );
-
- sal_Int32 nStrMode = 0;
- if ( aRbSize.IsChecked() )
- nStrMode++;
-
- pConfigItem->WriteInt32( String( ResId( KEY_MODE, *pMgr ) ), nStrMode );
- pConfigItem->WriteSize( String( ResId( KEY_SIZE, *pMgr ) ), aSize );
- rFltCallPara.aFilterData = pConfigItem->GetFilterData();
- EndDialog( RET_OK );
-
- return 0;
-}
-
-/*************************************************************************
-|*
-|* Enabled/Disabled Controls
-|*
-\************************************************************************/
-
-IMPL_LINK( DlgExportEPCT, ClickRbOriginal, void*, EMPTYARG )
-{
- aGrpSize.Disable();
- aFtSizeX.Disable();
- aMtfSizeX.Disable();
- aFtSizeY.Disable();
- aMtfSizeY.Disable();
-
- return 0;
-}
-
-
-/*************************************************************************
-|*
-|* Enabled/Disabled Controls
-|*
-\************************************************************************/
-
-IMPL_LINK( DlgExportEPCT, ClickRbSize, void*, EMPTYARG )
-{
- aGrpSize.Enable();
- aFtSizeX.Enable();
- aMtfSizeX.Enable();
- aFtSizeY.Enable();
- aMtfSizeY.Enable();
-
- return 0;
-}
-
-
-
diff --git a/goodies/source/filter.vcl/epict/dlgepct.hrc b/goodies/source/filter.vcl/epict/dlgepct.hrc
deleted file mode 100644
index 32d817a7305b..000000000000
--- a/goodies/source/filter.vcl/epict/dlgepct.hrc
+++ /dev/null
@@ -1,44 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepct.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include <goodies.hrc>
-
-#define BTN_OK 1
-#define BTN_CANCEL 1
-#define BTN_HELP 1
-#define CBX_SIZE 2
-#define MTF_SIZEX 1
-#define MTF_SIZEY 2
-#define FT_SIZEX 1
-#define FT_SIZEY 2
-#define GRP_SIZE 1
-#define GRP_MODE 2
-#define RB_ORIGINAL 1
-#define RB_SIZE 2
-
diff --git a/goodies/source/filter.vcl/epict/dlgepct.hxx b/goodies/source/filter.vcl/epict/dlgepct.hxx
deleted file mode 100644
index b5cf3302c44a..000000000000
--- a/goodies/source/filter.vcl/epict/dlgepct.hxx
+++ /dev/null
@@ -1,83 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepct.hxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#ifndef _DLGEPCT_HXX_
-#define _DLGEPCT_HXX_
-
-#include <vcl/dialog.hxx>
-#include <vcl/button.hxx>
-#include <vcl/fixed.hxx>
-#include <vcl/field.hxx>
-#include <svtools/fltcall.hxx>
-
-/*************************************************************************
-|*
-|* Dialog zum Einstellen von Filteroptionen bei Vektorformaten
-|*
-\************************************************************************/
-
-class FilterConfigItem;
-class ResMgr;
-
-class DlgExportEPCT : public ModalDialog
-{
-private:
-
- FltCallDialogParameter& rFltCallPara;
-
- OKButton aBtnOK;
- CancelButton aBtnCancel;
- HelpButton aBtnHelp;
-
- RadioButton aRbOriginal;
- RadioButton aRbSize;
- FixedLine aGrpMode;
-
- FixedText aFtSizeX;
- MetricField aMtfSizeX;
- FixedText aFtSizeY;
- MetricField aMtfSizeY;
- FixedLine aGrpSize;
-
- FilterConfigItem* pConfigItem;
- ResMgr* pMgr;
-
- DECL_LINK( OK, void* p );
- DECL_LINK( ClickRbOriginal,void* p );
- DECL_LINK( ClickRbSize,void* p );
-
-public:
- DlgExportEPCT( FltCallDialogParameter& rPara );
- ~DlgExportEPCT();
-};
-
-#endif // _DLGEPCT_HXX_
-
diff --git a/goodies/source/filter.vcl/epict/dlgepct.src b/goodies/source/filter.vcl/epict/dlgepct.src
deleted file mode 100644
index a0a8020aa0cb..000000000000
--- a/goodies/source/filter.vcl/epict/dlgepct.src
+++ /dev/null
@@ -1,166 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgepct.src,v $
- * $Revision: 1.20 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "dlgepct.hrc"
-
-ModalDialog DLG_EXPORT_EPCT
-{
- OutputSize = TRUE ;
- SVLook = TRUE ;
- Size = MAP_APPFONT ( 178 , 89 ) ;
- Text [ en-US ] = "PICT Options" ;
- Moveable = TRUE ;
- Closeable = TRUE ;
- MetricField MTF_SIZEX
- {
- Border = TRUE ;
- Pos = MAP_APPFONT ( 60 , 55 ) ;
- Size = MAP_APPFONT ( 50 , 12 ) ;
- TabStop = TRUE ;
- Repeat = TRUE ;
- Spin = TRUE ;
- Minimum = 100 ;
- Maximum = 99999 ;
- StrictFormat = TRUE ;
- DecimalDigits = 2 ;
- Unit = FUNIT_MM ;
- First = 100 ;
- Last = 99999 ;
- SpinSize = 100 ;
- };
- MetricField MTF_SIZEY
- {
- Border = TRUE ;
- Pos = MAP_APPFONT ( 60 , 71 ) ;
- Size = MAP_APPFONT ( 50 , 12 ) ;
- TabStop = TRUE ;
- Repeat = TRUE ;
- Spin = TRUE ;
- Minimum = 100 ;
- Maximum = 99999 ;
- StrictFormat = TRUE ;
- DecimalDigits = 2 ;
- Unit = FUNIT_MM ;
- First = 100 ;
- Last = 99999 ;
- SpinSize = 100 ;
- };
- FixedLine GRP_SIZE
- {
- Pos = MAP_APPFONT ( 6 , 44 ) ;
- Size = MAP_APPFONT ( 110 , 8 ) ;
- Text [ en-US ] = "Size" ;
- };
- FixedText FT_SIZEX
- {
- Pos = MAP_APPFONT ( 12 , 57 ) ;
- Size = MAP_APPFONT ( 45 , 8 ) ;
- Text [ en-US ] = "Width" ;
- };
- FixedText FT_SIZEY
- {
- Pos = MAP_APPFONT ( 12 , 73 ) ;
- Size = MAP_APPFONT ( 45 , 8 ) ;
- Text [ en-US ] = "Height" ;
- };
- OKButton BTN_OK
- {
- Pos = MAP_APPFONT ( 122 , 6 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- DefButton = TRUE ;
- };
- CancelButton BTN_CANCEL
- {
- Pos = MAP_APPFONT ( 122 , 24 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- HelpButton BTN_HELP
- {
- Pos = MAP_APPFONT ( 122 , 43 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- RadioButton RB_ORIGINAL
- {
- Pos = MAP_APPFONT ( 12 , 14 ) ;
- Size = MAP_APPFONT ( 98 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Original" ;
- };
- RadioButton RB_SIZE
- {
- Pos = MAP_APPFONT ( 12 , 28 ) ;
- Size = MAP_APPFONT ( 98 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Size" ;
- };
- FixedLine GRP_MODE
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 110 , 8 ) ;
- Text [ en-US ] = "Mode" ;
- };
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/goodies/source/filter.vcl/epict/epict.cxx b/goodies/source/filter.vcl/epict/epict.cxx
deleted file mode 100644
index 3e4dca455d05..000000000000
--- a/goodies/source/filter.vcl/epict/epict.cxx
+++ /dev/null
@@ -1,2306 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: epict.cxx,v $
- * $Revision: 1.23 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/metaact.hxx>
-#include <svtools/filter.hxx>
-#include <svl/solar.hrc>
-#include <svtools/fltcall.hxx>
-
-#include <math.h>
-#include <vcl/bmpacc.hxx>
-#include <vcl/metaact.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <vcl/gradient.hxx>
-#include <vcl/hatch.hxx>
-#include <vcl/metric.hxx>
-#include <vcl/font.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/msgbox.hxx>
-#include <vcl/gdimtf.hxx>
-
-#include <tools/bigint.hxx>
-#include "strings.hrc"
-#include "dlgepct.hrc"
-#include "dlgepct.hxx"
-
-//============================== PictWriter ===================================
-
-struct PictWriterAttrStackMember {
- struct PictWriterAttrStackMember * pSucc;
- Color aLineColor;
- Color aFillColor;
- RasterOp eRasterOp;
- Font aFont;
- MapMode aMapMode;
- Rectangle aClipRect;
-};
-
-
-enum PictDrawingMethod {
- PDM_FRAME, PDM_PAINT, PDM_ERASE, PDM_INVERT, PDM_FILL
-};
-
-
-struct PictPattern {
- sal_uInt32 nLo, nHi;
-};
-
-
-class PictWriter {
-
-private:
-
- BOOL bStatus;
- ULONG nLastPercent; // Mit welcher Zahl pCallback zuletzt aufgerufen wurde.
- com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
-
- SvStream * pPict;
-
- // Aktuelle Attribute im Quell-Metafile:
- Color aLineColor;
- Color aFillColor;
- RasterOp eSrcRasterOp;
- Font aSrcFont;
- MapMode aSrcMapMode;
- MapMode aTargetMapMode;
- Rectangle aClipRect;
- PictWriterAttrStackMember * pAttrStack;
-
- // Aktuelle Attribute im Ziel-Metafile, und ob sie gueltig sind
- BOOL bDstBkPatVisible; BOOL bDstBkPatValid;
- BYTE nDstTxFace; BOOL bDstTxFaceValid;
- RasterOp eDstTxMode; BOOL bDstTxModeValid;
- USHORT nDstPnSize; BOOL bDstPnSizeValid;
- RasterOp eDstPnMode; BOOL bDstPnModeValid;
- PictPattern aDstPnPat; BOOL bDstPnPatValid;
- BOOL bDstFillPatVisible; BOOL bDstFillPatValid;
- USHORT nDstTxSize; BOOL bDstTxSizeValid;
- Color aDstFgCol; BOOL bDstFgColValid;
- Color aDstBkCol; BOOL bDstBkColValid;
- Point aDstPenPosition; BOOL bDstPenPositionValid;
- Point aDstTextPosition; BOOL bDstTextPositionValid;
- String aDstFontName; USHORT nDstFontNameId; BOOL bDstFontNameValid;
-
- ULONG nNumberOfActions; // Anzahl der Actions im GDIMetafile
- ULONG nNumberOfBitmaps; // Anzahl der Bitmaps
- ULONG nWrittenActions; // Anzahl der bereits verarbeiteten Actions beim Schreiben der Opcodes
- ULONG nWrittenBitmaps; // Anzahl der bereits geschriebenen Bitmaps
- ULONG nActBitmapPercent; // Wieviel Prozent die naechste Bitmap schon geschrieben ist.
-
- void MayCallback();
- // Berechnet anhand der obigen 5 Parameter eine Prozentzahl
- // und macht dann ggf. einen Callback. Setzt bStatus auf FALSE wenn User abbrechen
- // moechte.
-
- void CountActionsAndBitmaps(const GDIMetaFile & rMTF);
- // Zaehlt die Bitmaps und Actions (nNumberOfActions und nNumberOfBitmaps muessen
- // zu Anfang auf 0 gesetzt werden, weil diese Methode rekursiv ist)
-
- Polygon PolyPolygonToPolygon(const PolyPolygon & rPoly);
- // Macht aus einem PolyPolygon ein halbwegs vernuenftiges Polygon
-
- Rectangle MapRectangle( const Rectangle& rRect );
- void WritePoint(const Point & rPoint);
- void WriteSize(const Size & rSize);
- void WriteRGBColor(const Color & rColor);
- void WriteString( const String & rString );
- void WriteRectangle(const Rectangle & rRect);
- void WritePolygon(const Polygon & rPoly);
- void WriteArcAngles(const Rectangle & rRect, const Point & rStartPt, const Point & rEndPt);
-
- void ConvertLinePattern(PictPattern & rPat, BOOL bVisible);
- void ConvertFillPattern(PictPattern & rPat, BOOL bVisible);
-
- void WriteOpcode_TxFace(const Font & rFont);
- void WriteOpcode_TxMode(RasterOp eMode);
- void WriteOpcode_PnSize(USHORT nSize);
- void WriteOpcode_PnMode(RasterOp eMode);
- void WriteOpcode_PnLinePat(BOOL bVisible);
- void WriteOpcode_PnFillPat(BOOL bVisible);
- void WriteOpcode_OvSize(const Size & rSize);
- void WriteOpcode_TxSize(USHORT nSize);
- void WriteOpcode_RGBFgCol(const Color & rColor);
- void WriteOpcode_RGBBkCol(const Color & rColor);
- void WriteOpcode_Line(const Point & rLocPt, const Point & rNewPt);
- void WriteOpcode_LineFrom(const Point & rNewPt);
- void WriteOpcode_Text(const Point & rPoint, const String& rString, BOOL bDelta);
- void WriteOpcode_FontName(const Font & rFont);
- void WriteOpcode_ClipRect( const Rectangle& rRect );
- void WriteOpcode_Rect(PictDrawingMethod eMethod, const Rectangle & rRect);
- void WriteOpcode_SameRect(PictDrawingMethod eMethod);
- void WriteOpcode_RRect(PictDrawingMethod eMethod, const Rectangle & rRect);
- void WriteOpcode_SameRRect(PictDrawingMethod eMethod);
- void WriteOpcode_Oval(PictDrawingMethod eMethod, const Rectangle & rRect);
- void WriteOpcode_SameOval(PictDrawingMethod eMethod);
- void WriteOpcode_Arc(PictDrawingMethod eMethod, const Rectangle & rRect,
- const Point & rStartPt, const Point & rEndPt);
- void WriteOpcode_SameArc(PictDrawingMethod eMethod, const Rectangle & rRect,
- const Point & rStartPt, const Point & rEndPt);
- void WriteOpcode_Poly(PictDrawingMethod eMethod, const Polygon & rPoly);
- void WriteOpcode_BitsRect(const Point & rPoint, const Size & rSize, const Bitmap & rBitmap);
- void WriteOpcode_EndOfFile();
-
- void SetAttrForPaint();
- void SetAttrForFrame();
- void SetAttrForText();
-
- void WriteTextArray(Point & rPoint, const String& rString, const sal_Int32 * pDXAry);
-
- void WriteOpcodes(const GDIMetaFile & rMTF);
-
- void WriteHeader(const GDIMetaFile & rMTF);
- void UpdateHeader();
-
-public:
-
- BOOL WritePict( const GDIMetaFile & rMTF, SvStream & rTargetStream, FilterConfigItem* pFilterConfigItem );
-};
-
-
-//========================== Methoden von PictWriter ==========================
-
-
-void PictWriter::MayCallback()
-{
- if ( xStatusIndicator.is() )
- {
- ULONG nPercent;
- nPercent=((nWrittenBitmaps<<14)+(nActBitmapPercent<<14)/100+nWrittenActions)
- *100
- /((nNumberOfBitmaps<<14)+nNumberOfActions);
-
- if (nPercent>=nLastPercent+3)
- {
- nLastPercent=nPercent;
- if( nPercent<=100 )
- xStatusIndicator->setValue( nPercent );
- }
- }
-}
-
-void PictWriter::CountActionsAndBitmaps(const GDIMetaFile & rMTF)
-{
- ULONG nAction, nActionCount;
- const MetaAction* pMA;
-
- nActionCount = rMTF.GetActionCount();
-
- for (nAction=0; nAction<nActionCount; nAction++)
- {
- pMA = rMTF.GetAction( nAction );
-
- switch( pMA->GetType() )
- {
- case META_BMP_ACTION:
- case META_BMPSCALE_ACTION:
- case META_BMPSCALEPART_ACTION:
- case META_BMPEX_ACTION:
- case META_BMPEXSCALE_ACTION:
- case META_BMPEXSCALEPART_ACTION:
- nNumberOfBitmaps++;
- break;
- }
-
- nNumberOfActions++;
- }
-}
-
-
-Polygon PictWriter::PolyPolygonToPolygon(const PolyPolygon & rPolyPoly)
-{
- USHORT nCount,nSize1,nSize2,np,i1,i2,i3,nBestIdx1,nBestIdx2;
- long nDistSqr,nBestDistSqr, nCountdownTests;
- Point aP1,aPRel;
- Polygon aPoly1, aPoly2, aPoly3;
-
- nCount=rPolyPoly.Count();
- if (nCount==0) return Polygon(0);
-
- aPoly1=rPolyPoly.GetObject(0);
- for (np=1; np<nCount; np++) {
- aPoly2=rPolyPoly.GetObject(np);
-
- //-----------------Folgendes verschmilzt aPoly1 und aPoly2 zu aPoly1-----------------
-
- nSize1=aPoly1.GetSize();
- nSize2=aPoly2.GetSize();
-
- // Zunaechst werden ein Punkt in aPoly1 (referenziert durch nBestIdx1) und ein
- // Punkt in aPoly2 (referenziert durch nBestIdx2) gesucht, die moeglichst dicht
- // beieinander liegen. Da dies mit quadratischem Aufwand einher geht, und somit
- // manche Bilder Ewigkeiten benoetigen, um exportiert zu werden, begrenzen wir
- // die Anzahl der Tests auf 1000, und brechen die Suche ggf. schon vorher ab.
- // Dadruch wird das Ergebnis nicht falsch, sondern eventuell nicht so schoen.
- nCountdownTests=1000;
- nBestDistSqr=0x7fffffff;
- nBestIdx1=0;
- nBestIdx2=0;
- for (i1=0; i1<nSize1; i1++) {
- aP1=aPoly1.GetPoint(i1);
- for (i2=0; i2<nSize2; i2++) {
- aPRel=aPoly2.GetPoint(i2); aPRel-=aP1;
- nDistSqr=aPRel.X()*aPRel.X()+aPRel.Y()*aPRel.Y();
- if (nDistSqr<nBestDistSqr) {
- nBestIdx1=i1;
- nBestIdx2=i2;
- nBestDistSqr=nDistSqr;
- }
- if (nCountdownTests<=0) break;
- nCountdownTests--;
- }
- if (nCountdownTests<=0) break;
- }
-
- // Nun werden aPoly1 und aPoly2 zu einem Polygon aPoly3 (spaeter aPoly1) zusammengefuegt.
- // Die beiden Polygone werden verbunden durch zwei zusaetzliche Kanten zwischen den oben
- // gefundenen Punkten.
- aPoly3.Clear();
- aPoly3.SetSize(nSize1+nSize2+2);
- i3=0;
- for (i1=nBestIdx1; i1<nSize1; i1++) aPoly3.SetPoint(aPoly1.GetPoint(i1),i3++);
- for (i1=0; i1<=nBestIdx1; i1++) aPoly3.SetPoint(aPoly1.GetPoint(i1),i3++);
- for (i2=nBestIdx2; i2<nSize2; i2++) aPoly3.SetPoint(aPoly2.GetPoint(i2),i3++);
- for (i2=0; i2<=nBestIdx2; i2++) aPoly3.SetPoint(aPoly2.GetPoint(i2),i3++);
-
- aPoly1=aPoly3;
-
- //-----------------------------------------------------------------------------------
-
- }
- return aPoly1;
-}
-
-
-void PictWriter::WritePoint(const Point & rPoint)
-{
- Point aPoint = OutputDevice::LogicToLogic( rPoint, aSrcMapMode, aTargetMapMode );
- *pPict << ((short)aPoint.Y()) << ((short)aPoint.X());
-}
-
-
-void PictWriter::WriteSize(const Size & rSize)
-{
- OutputDevice::LogicToLogic( rSize, aSrcMapMode, aTargetMapMode ); // -Wall is this needed.
- *pPict << ((short)rSize.Height()) << ((short)rSize.Width());
-}
-
-
-void PictWriter::WriteRGBColor(const Color & rColor)
-{
- const UINT16 nR = ( (UINT16) rColor.GetRed() << 8 ) | (UINT16) rColor.GetRed();
- const UINT16 nG = ( (UINT16) rColor.GetGreen() << 8 ) | (UINT16) rColor.GetGreen();
- const UINT16 nB = ( (UINT16) rColor.GetBlue() << 8 ) | (UINT16) rColor.GetBlue();
-
- *pPict << nR << nG << nB;
-}
-
-
-void PictWriter::WriteString( const String & rString )
-{
- USHORT i,nLen;
-
- ByteString aByteString( rString, gsl_getSystemTextEncoding() );
- nLen = aByteString.Len();
- if ( nLen > 255 )
- nLen = 255;
- *pPict << ( (BYTE)nLen );
- for ( i = 0; i < nLen; i++ )
- *pPict << aByteString.GetChar( i );
-}
-
-Rectangle PictWriter::MapRectangle( const Rectangle& rRect )
-{
- Point aPoint = OutputDevice::LogicToLogic( rRect.TopLeft(), aSrcMapMode, aTargetMapMode );
- Size aSize = OutputDevice::LogicToLogic( rRect.GetSize(), aSrcMapMode, aTargetMapMode );
- Rectangle aRect( aPoint, aSize );
- aRect.Justify();
- aRect.nBottom++;
- aRect.nRight++;
- return aRect;
-}
-
-void PictWriter::WriteRectangle(const Rectangle & rRect)
-{
- Rectangle aRect( MapRectangle( rRect ) );
- *pPict << (sal_Int16)aRect.Top() << (sal_Int16)aRect.Left()
- << (sal_Int16)aRect.Bottom() << (sal_Int16)aRect.Right();
-}
-
-void PictWriter::WritePolygon(const Polygon & rPoly)
-{
- USHORT nDataSize,i,nSize;
- short nMinX = 0, nMinY = 0, nMaxX = 0, nMaxY = 0;
- short nx,ny;
- Polygon aPoly(rPoly);
-
- nSize=aPoly.GetSize();
-
- if (aPoly.GetPoint(0) != aPoly.GetPoint(nSize-1))
- {
- nSize++;
- aPoly.SetSize(nSize);
- aPoly.SetPoint(aPoly.GetPoint(0),nSize-1);
- }
-
- nDataSize=nSize*4+10;
- for (i=0; i<nSize; i++)
- {
- Point aPoint = OutputDevice::LogicToLogic( aPoly.GetPoint( i ),
- aSrcMapMode,
- aTargetMapMode );
-
- nx = (short) aPoint.X();
- ny = (short) aPoint.Y();
-
- if ( i==0 || nMinX>nx )
- nMinX=nx;
- if ( i==0 || nMinY>ny )
- nMinY=ny;
- if ( i==0 || nMaxX<nx )
- nMaxX=nx;
- if ( i==0 || nMaxY<ny )
- nMaxY=ny;
- }
-
- *pPict << nDataSize << nMinY << nMinX << nMaxY << nMaxX;
-
- for (i=0; i<nSize; i++)
- WritePoint( aPoly.GetPoint(i) );
-}
-
-
-void PictWriter::WriteArcAngles(const Rectangle & rRect, const Point & rStartPt, const Point & rEndPt)
-{
- Point aStartPt = OutputDevice::LogicToLogic( rStartPt,
- aSrcMapMode,
- aTargetMapMode );
- Point aEndPt = OutputDevice::LogicToLogic( rEndPt,
- aSrcMapMode,
- aTargetMapMode );
- Rectangle aRect( OutputDevice::LogicToLogic( rRect.TopLeft(),
- aSrcMapMode,
- aTargetMapMode ),
- OutputDevice::LogicToLogic( rRect.GetSize(),
- aSrcMapMode,
- aTargetMapMode ) );
- Point aCenter;
- double fAngS, fAngE, fdx, fdy;
- short nStartAngle, nArcAngle;
-
-
- aCenter=Point( ( aRect.Left() + aRect.Right() ) >> 1,
- ( aRect.Top() + aRect.Bottom() ) >> 1 );
-
- fdx=(double)(aStartPt.X()-aCenter.X());
- fdy=(double)(aStartPt.Y()-aCenter.Y());
- if ( fdx==0.0 && fdy==0.0 )
- fdx=1.0;
- fAngE=atan2(fdx,-fdy);
-
- fdx=(double)(aEndPt.X()-aCenter.X());
- fdy=(double)(aEndPt.Y()-aCenter.Y());
- if ( fdx==0.0 && fdy==0.0 )
- fdx=1.0;
- fAngS=atan2(fdx,-fdy);
-
- nStartAngle=(short)(fAngS*180.0/3.14159265359);
- nArcAngle=((short)(fAngE*180.0/3.14159265359))-nStartAngle;
- if (nArcAngle<0)
- nArcAngle += 360;
- *pPict << nStartAngle << nArcAngle;
-}
-
-
-void PictWriter::ConvertLinePattern(PictPattern & rPat, BOOL bVisible)
-{
- if( bVisible )
- {
- rPat.nHi=0xffffffff;
- rPat.nLo=0xffffffff;
- }
- else
- {
- rPat.nHi=0x00000000;
- rPat.nLo=0x00000000;
- }
-}
-
-void PictWriter::ConvertFillPattern(PictPattern & rPat, BOOL bVisible)
-{
- if( bVisible )
- {
- rPat.nHi=0xffffffff;
- rPat.nLo=0xffffffff;
- }
- else
- {
- rPat.nHi=0x00000000;
- rPat.nLo=0x00000000;
- }
-}
-
-
-void PictWriter::WriteOpcode_TxFace(const Font & rFont)
-{
- BYTE nFace;
- FontWeight eWeight;
-
- nFace=0;
- eWeight=rFont.GetWeight();
- if (eWeight==WEIGHT_BOLD ||
- eWeight==WEIGHT_SEMIBOLD ||
- eWeight==WEIGHT_ULTRABOLD ||
- eWeight==WEIGHT_BLACK) nFace|=0x01;
- if (rFont.GetItalic()!=ITALIC_NONE) nFace|=0x02;
- if (rFont.GetUnderline()!=UNDERLINE_NONE) nFace|=0x04;
- if (rFont.IsOutline()==TRUE) nFace|=0x08;
- if (rFont.IsShadow()==TRUE) nFace|=0x10;
-
- if (bDstTxFaceValid==FALSE || nDstTxFace!=nFace) {
- *pPict << (USHORT)0x0004 << nFace << (BYTE)0;
- nDstTxFace=nFace;
- bDstTxFaceValid=TRUE;
- }
-}
-
-
-void PictWriter::WriteOpcode_TxMode(RasterOp eMode)
-{
- USHORT nVal;
-
- if (bDstTxModeValid==FALSE || eDstTxMode!=eMode) {
- switch (eMode) {
- case ROP_INVERT: nVal=0x000c; break;
- case ROP_XOR: nVal=0x000a; break;
- default: nVal=0x0008;
- }
- *pPict << (USHORT)0x0005 << nVal;
- eDstTxMode=eMode;
- bDstTxModeValid=TRUE;
- }
-}
-
-
-void PictWriter::WriteOpcode_PnSize(USHORT nSize)
-{
- if (nSize==0) nSize=1;
- if (bDstPnSizeValid==FALSE || nDstPnSize!=nSize) {
- *pPict << (USHORT)0x0007 << nSize << nSize;
- nDstPnSize=nSize;
- bDstPnSizeValid=TRUE;
- }
-}
-
-
-void PictWriter::WriteOpcode_PnMode(RasterOp eMode)
-{
- USHORT nVal;
-
- if (bDstPnModeValid==FALSE || eDstPnMode!=eMode) {
- switch (eMode)
- {
- case ROP_INVERT: nVal=0x000c; break;
- case ROP_XOR: nVal=0x000a; break;
- default: nVal=0x0008;
- }
- *pPict << (USHORT)0x0008 << nVal;
- eDstPnMode=eMode;
- bDstPnModeValid=TRUE;
- }
-}
-
-
-void PictWriter::WriteOpcode_PnLinePat(BOOL bVisible)
-{
- PictPattern aPat;
-
- ConvertLinePattern(aPat,bVisible);
- if (bDstPnPatValid==FALSE || aDstPnPat.nHi!=aPat.nHi || aDstPnPat.nLo!=aPat.nLo) {
- *pPict << (USHORT)0x0009 << aPat.nHi << aPat.nLo;
- aDstPnPat=aPat;
- bDstPnPatValid=TRUE;
- }
-}
-
-
-void PictWriter::WriteOpcode_PnFillPat(BOOL bVisible)
-{
- PictPattern aPat;
-
- ConvertFillPattern(aPat,bVisible);
- if (bDstPnPatValid==FALSE || aDstPnPat.nHi!=aPat.nHi || aDstPnPat.nLo!=aPat.nLo) {
- *pPict << (USHORT)0x0009 << aPat.nHi << aPat.nLo;
- aDstPnPat=aPat;
- bDstPnPatValid=TRUE;
- }
-}
-
-
-void PictWriter::WriteOpcode_OvSize(const Size & rSize)
-{
- *pPict << (USHORT)0x000b;
- WriteSize(rSize);
-}
-
-
-void PictWriter::WriteOpcode_TxSize(USHORT nSize)
-{
- if (bDstTxSizeValid==FALSE || nDstTxSize!=nSize) {
-
- nDstTxSize = (USHORT) OutputDevice::LogicToLogic( Size( 0, nSize ),
- aSrcMapMode, aTargetMapMode ).Height();
-
- *pPict << (USHORT)0x000d << nDstTxSize;
- bDstTxSizeValid=TRUE;
- }
-}
-
-
-void PictWriter::WriteOpcode_RGBFgCol(const Color & rColor)
-{
- if (bDstFgColValid==FALSE || aDstFgCol!=rColor) {
- *pPict << (USHORT)0x001a;
- WriteRGBColor(rColor);
- aDstFgCol=rColor;
- bDstFgColValid=TRUE;
- }
-}
-
-
-void PictWriter::WriteOpcode_RGBBkCol(const Color & rColor)
-{
- if (bDstBkColValid==FALSE || aDstBkCol!=rColor) {
- *pPict << (USHORT)0x001b;
- WriteRGBColor(rColor);
- aDstBkCol=rColor;
- bDstBkColValid=TRUE;
- }
-}
-
-
-void PictWriter::WriteOpcode_Line(const Point & rLocPt, const Point & rNewPt)
-{
- Point aLocPt = OutputDevice::LogicToLogic( rLocPt,
- aSrcMapMode,
- aTargetMapMode );
- Point aNewPt = OutputDevice::LogicToLogic( rNewPt,
- aSrcMapMode,
- aTargetMapMode );
- long dh,dv;
-
- dh=aNewPt.X()-aLocPt.X();
- dv=aNewPt.Y()-aLocPt.Y();
- if (dh<=127 && dh>=-128 && dv<=127 && dv>=-128)
- { // ShortLine
- *pPict << (USHORT)0x0022;
- WritePoint(rLocPt);
- *pPict << (char)dh << (char)dv;
- }
- else
- {
- *pPict << (USHORT)0x0020;
- WritePoint(rLocPt);
- WritePoint(rNewPt);
- }
- aDstPenPosition=rNewPt;
- bDstPenPositionValid=TRUE;
-}
-
-
-void PictWriter::WriteOpcode_LineFrom(const Point & rNewPt)
-{
- Point aNewPt = OutputDevice::LogicToLogic( rNewPt,
- aSrcMapMode,
- aTargetMapMode );
- long dh,dv;
-
- dh = aNewPt.X()-aDstPenPosition.X();
- dv = aNewPt.Y()-aDstPenPosition.Y();
-
- if (dh<=127 && dh>=-128 && dv<=127 && dv>=-128)
- { // ShortLine
- *pPict << (USHORT)0x0023;
- *pPict << (char)dh << (char)dv;
- }
- else
- {
- *pPict << (USHORT)0x0021;
- WritePoint(rNewPt);
- }
- aDstPenPosition=rNewPt;
- bDstPenPositionValid=TRUE;
-}
-
-
-void PictWriter::WriteOpcode_Text(const Point & rPoint, const String& rString, BOOL bDelta)
-{
- Point aPoint = OutputDevice::LogicToLogic( rPoint,
- aSrcMapMode,
- aTargetMapMode );
- long dh,dv;
- ULONG nPos;
-
- nPos = pPict->Tell();
- dh = aPoint.X()-aDstTextPosition.X();
- dv = aPoint.Y()-aDstTextPosition.Y();
-
- if (bDstTextPositionValid==FALSE || dh<0 || dh>255 || dv<0 || dv>0 || bDelta==FALSE)
- {
- *pPict << (USHORT)0x0028;
- WritePoint(rPoint);
- }
- else if (dv==0)
- {
- *pPict << (USHORT)0x0029 << (BYTE)dh;
- }
- else if (dh==0)
- {
- *pPict << (USHORT)0x002a << (BYTE)dv;
- }
- else
- {
- *pPict << (USHORT)0x002b << (BYTE)dh << (BYTE)dv;
- }
-
- WriteString( rString );
- if (((pPict->Tell()-nPos)&1)!=0)
- *pPict << (BYTE)0;
-
- aDstTextPosition = aPoint;
- bDstTextPositionValid=TRUE;
-}
-
-
-void PictWriter::WriteOpcode_FontName(const Font & rFont)
-{
- USHORT nDataLen,nFontId;
-
- switch (rFont.GetFamily()) {
- case FAMILY_MODERN: nFontId=22; break;
- case FAMILY_ROMAN: nFontId=20; break;
- case FAMILY_SWISS: nFontId=21; break;
- default: nFontId=1;
- }
-
- if (bDstFontNameValid==FALSE || nDstFontNameId!=nFontId || aDstFontName!=rFont.GetName())
- {
- ByteString aByteString( rFont.GetName(), gsl_getSystemTextEncoding() );
- sal_uInt16 nFontNameLen = aByteString.Len();
- if ( nFontNameLen )
- {
- nDataLen = 3 + nFontNameLen;
- *pPict << (USHORT)0x002c << nDataLen << nFontId;
- WriteString( rFont.GetName() );
- if ( ( nFontNameLen & 1 ) == 0 )
- *pPict << (BYTE)0;
- }
- *pPict << (USHORT)0x0003 << nFontId;
- aDstFontName=rFont.GetName();
- nDstFontNameId=nFontId;
- bDstFontNameValid=TRUE;
- }
-}
-
-void PictWriter::WriteOpcode_ClipRect( const Rectangle& rRect )
-{
- Rectangle aRect( MapRectangle( rRect ) );
- aRect.nBottom++;
- aRect.nRight++;
- *pPict << (sal_uInt16)1 // opcode 1
- << (sal_uInt16)10 // data size
- << (sal_Int16)aRect.Top() << (sal_Int16)aRect.Left()
- << (sal_Int16)aRect.Bottom() << (sal_Int16)aRect.Right();
- aClipRect = aRect;
-}
-
-void PictWriter::WriteOpcode_Rect(PictDrawingMethod eMethod, const Rectangle & rRect)
-{
- USHORT oc;
- switch (eMethod) {
- case PDM_FRAME: oc=0x0030; break;
- case PDM_PAINT: oc=0x0031; break;
- case PDM_ERASE: oc=0x0032; break;
- case PDM_INVERT: oc=0x0033; break;
- case PDM_FILL: oc=0x0034; break;
- default: oc=0; break; // -Wall a default for oc...
- }
- *pPict << oc;
- WriteRectangle(rRect);
-}
-
-
-void PictWriter::WriteOpcode_SameRect(PictDrawingMethod eMethod)
-{
- USHORT oc;
- switch (eMethod) {
- case PDM_FRAME: oc=0x0038; break;
- case PDM_PAINT: oc=0x0039; break;
- case PDM_ERASE: oc=0x003a; break;
- case PDM_INVERT: oc=0x003b; break;
- case PDM_FILL: oc=0x003c; break;
- default: oc=0; break; // -Wall a default for oc...
- }
- *pPict << oc;
-}
-
-
-void PictWriter::WriteOpcode_RRect(PictDrawingMethod eMethod, const Rectangle & rRect)
-{
- USHORT oc;
- switch (eMethod) {
- case PDM_FRAME: oc=0x0040; break;
- case PDM_PAINT: oc=0x0041; break;
- case PDM_ERASE: oc=0x0042; break;
- case PDM_INVERT: oc=0x0043; break;
- case PDM_FILL: oc=0x0044; break;
- default: oc=0; break; // -Wall a default for oc...
- }
- *pPict << oc;
- WriteRectangle(rRect);
-}
-
-
-void PictWriter::WriteOpcode_SameRRect(PictDrawingMethod eMethod)
-{
- USHORT oc;
- switch (eMethod) {
- case PDM_FRAME: oc=0x0048; break;
- case PDM_PAINT: oc=0x0049; break;
- case PDM_ERASE: oc=0x004a; break;
- case PDM_INVERT: oc=0x004b; break;
- case PDM_FILL: oc=0x004c; break;
- default: oc=0; break; // -Wall a default for oc...
- }
- *pPict << oc;
-}
-
-
-void PictWriter::WriteOpcode_Oval(PictDrawingMethod eMethod, const Rectangle & rRect)
-{
- USHORT oc;
- switch (eMethod) {
- case PDM_FRAME: oc=0x0050; break;
- case PDM_PAINT: oc=0x0051; break;
- case PDM_ERASE: oc=0x0052; break;
- case PDM_INVERT: oc=0x0053; break;
- case PDM_FILL: oc=0x0054; break;
- default: oc=0; break; // -Wall a default for oc...
- }
- *pPict << oc;
- WriteRectangle(rRect);
-}
-
-
-void PictWriter::WriteOpcode_SameOval(PictDrawingMethod eMethod)
-{
- USHORT oc;
- switch (eMethod) {
- case PDM_FRAME: oc=0x0058; break;
- case PDM_PAINT: oc=0x0059; break;
- case PDM_ERASE: oc=0x005a; break;
- case PDM_INVERT: oc=0x005b; break;
- case PDM_FILL: oc=0x005c; break;
- default: oc=0; break; // -Wall a default for oc...
- }
- *pPict << oc;
-}
-
-
-void PictWriter::WriteOpcode_Arc(PictDrawingMethod eMethod, const Rectangle & rRect,
- const Point & rStartPt, const Point & rEndPt)
-{
- USHORT oc;
- switch (eMethod) {
- case PDM_FRAME: oc=0x0060; break;
- case PDM_PAINT: oc=0x0061; break;
- case PDM_ERASE: oc=0x0062; break;
- case PDM_INVERT: oc=0x0063; break;
- case PDM_FILL: oc=0x0064; break;
- default: oc=0; break; // -Wall a default for oc...
- }
- *pPict << oc;
- WriteRectangle(rRect);
- WriteArcAngles(rRect,rStartPt,rEndPt);
-}
-
-
-void PictWriter::WriteOpcode_SameArc(PictDrawingMethod eMethod, const Rectangle & rRect,
- const Point & rStartPt, const Point & rEndPt)
-{
- USHORT oc;
- switch (eMethod) {
- case PDM_FRAME: oc=0x0068; break;
- case PDM_PAINT: oc=0x0069; break;
- case PDM_ERASE: oc=0x006a; break;
- case PDM_INVERT: oc=0x006b; break;
- case PDM_FILL: oc=0x006c; break;
- default: oc=0; break; // -Wall a default for oc...
- }
- *pPict << oc;
- WriteArcAngles(rRect,rStartPt,rEndPt);
-}
-
-
-void PictWriter::WriteOpcode_Poly(PictDrawingMethod eMethod, const Polygon & rPoly)
-{
- USHORT oc;
-
- if (rPoly.GetSize()<3) return;
- switch (eMethod) {
- case PDM_FRAME: oc=0x0070; break;
- case PDM_PAINT: oc=0x0071; break;
- case PDM_ERASE: oc=0x0072; break;
- case PDM_INVERT: oc=0x0073; break;
- case PDM_FILL: oc=0x0074; break;
- default: oc=0; break; // -Wall a default for oc...
- }
- *pPict << oc;
- WritePolygon(rPoly);
-}
-
-
-void PictWriter::WriteOpcode_BitsRect(const Point & rPoint, const Size & rSize, const Bitmap & rBitmap)
-{
- BitmapReadAccess* pAcc = NULL;
- Bitmap aBitmap( rBitmap );
-
- ULONG nWidth, nHeight, nDstRowBytes, nx, nc, ny, nCount, nColTabSize, i;
- ULONG nDstRowPos, nSrcRowBytes, nEqu3, nPos, nDstMapPos;
- USHORT nBitsPerPixel, nPackType;
- BYTE *pComp[4], *pPix, *pTemp;
- BYTE nEquData = 0;
- BYTE nFlagCounterByte, nRed, nGreen, nBlue;
-
- SetAttrForPaint();
-
- // temopraere Windows-BMP-Datei erzeugen:
- nActBitmapPercent=30;
- MayCallback();
-
- if ( bStatus == FALSE )
- return;
- if ( ( pAcc = aBitmap.AcquireReadAccess() ) == NULL )
- return;
-
- nBitsPerPixel = aBitmap.GetBitCount();
-
- // export code below only handles four discrete cases
- nBitsPerPixel =
- nBitsPerPixel <= 1 ? 1 : nBitsPerPixel <= 4 ? 4 : nBitsPerPixel <= 8 ? 8 : 24;
-
- nWidth = pAcc->Width();
- nHeight = pAcc->Height();
-
- // Wenn 24-Bit, dann den Opcode 'DirectBitsRect' erzeugen:
- if ( nBitsPerPixel == 24 )
- {
-
- // Anzahl Bytes einer (ungepackten) Zeile in Quelle und Ziel berechnen:
- nSrcRowBytes =( ( 3 * nWidth ) + 0x0003 ) & 0xfffc;
- nDstRowBytes = nWidth * 4;
-
- // Opcode und BaseAddr (?) schreiben:
- *pPict << (USHORT)0x009a << (sal_uInt32)0x000000ff;
-
- // Normalerweise wollen wir den Packing-Type 4 (Run length encoding
- // for 32-Bit Pixels) erzeugen. Wenn aber RowBytes<8 gilt, sind die Daten
- // grundsaetzlich ungepackt, auch wenn der Packing-Type 4 angegeben ist,
- // was etwas komisch erscheint. Daher wollen wir in so einem Fall lieber
- // gleich den Packing-Type 1 (ungepackt) angeben:
-
- if ( nDstRowBytes < 8 )
- nPackType = 1;
- else
- nPackType = 4;
-
- // PixMap-Struktur schreiben:
- *pPict << (USHORT)(nDstRowBytes|0x8000) // Bytes pro Zeile und dass es eine 'PixMap' ist
- << (USHORT)0x0000 // Y1-Position der Bitmap in der Quelle
- << (USHORT)0x0000 // X1-Position der Bitmap in der Quelle
- << (USHORT)nHeight // Y2-Position der Bitmap in der Quelle
- << (USHORT)nWidth // X2-Position der Bitmap in der Quelle
- << (USHORT)0x0000 // Version
- << (USHORT)nPackType // Packing type
- << (sal_uInt32) 0x00000000 // Packing size (?)
- << (sal_uInt32) 0x00480000 // H-Res
- << (sal_uInt32) 0x00480000 // V-Res
- << (USHORT)0x0010 // Pixel type (?)
- << (USHORT)0x0020 // Pixel size: 32 bit
- << (USHORT)0x0004 // CmpCount: 4 Komponenten
- << (USHORT)0x0008 // CmpSize: 8 Bits
- << (sal_uInt32) 0x00000000 // PlaneBytes (?)
- << (sal_uInt32) 0x00000000 // (?)
- << (sal_uInt32) 0x00000000; // (?)
-
- // Source-Rectangle schreiben:
- *pPict << (USHORT)0x0000 // Y1-Position auf der Bitmap
- << (USHORT)0x0000 // X1-Position auf der Bitmap
- << (USHORT)nHeight // Y2-Position auf der Bitmap
- << (USHORT)nWidth; // X2-Position auf der Bitmap
-
- // Destination-Rectangle schreiben:
- WritePoint( rPoint );
- WritePoint( Point( rPoint.X() + rSize.Width(), rPoint.Y() + rSize.Height() ) );
-
- // Transfer mode schreiben:
- *pPict << (USHORT)0x0000; // (?)
-
- // Position der Map-Daten in Ziel merken:
- nDstMapPos=pPict->Tell();
-
- if ( nPackType == 1 ) // bei 24 bits nWidth == 1 !!
- { // nicht packen
- for ( ny = 0; ny < nHeight; ny++ )
- {
- *pPict << (BYTE)0;
- *pPict << (BYTE)pAcc->GetPixel( ny, 0 ).GetRed();
- *pPict << (BYTE)pAcc->GetPixel( ny, 0 ).GetGreen();
- *pPict << (BYTE)pAcc->GetPixel( ny, 0 ).GetBlue();
- // Prozente zaehlen, Callback, Fehler pruefen:
- nActBitmapPercent = ( ny * 70 / nHeight ) + 30; // (30% machten schon das Schreiben der Win-BMP-Datei aus)
- MayCallback();
- }
- }
- else // packen ( PackType == 4 )
- {
- // Speicher fuer Zeilen-Zwischen-Datenstruktur allozieren:
- for ( nc = 0; nc < 4; nc++ )
- pComp[ nc ] = new BYTE[ nWidth ];
-
- // Schleife ueber Zeilen:
- for ( ny = 0; ny < nHeight; ny++ )
- {
- // Zeil ny der Quelle in die Zwischen-Datenstrktur einlesen:
-
- for ( nx = 0; nx < nWidth; nx++ )
- {
- pComp[ 1 ][ nx ] = (BYTE)pAcc->GetPixel( ny, nx ) .GetRed();
- pComp[ 2 ][ nx ] = (BYTE)pAcc->GetPixel( ny, nx ) .GetGreen();
- pComp[ 3 ][ nx ] = (BYTE)pAcc->GetPixel( ny, nx ) .GetBlue();
- pComp[ 0 ][ nx ] = 0;
- }
-
- // Anfang der Zeile im Ziel merken:
- nDstRowPos = pPict->Tell();
-
- // ByteCount (das ist die Groesse der gepackten Zeile) zunaechst 0 (wird spaeter berichtigt):
- if ( nDstRowBytes > 250 )
- *pPict << (USHORT)0;
- else
- *pPict << (BYTE)0;
-
- // Schleife ueber Componenten:
- for ( nc = 0; nc < 4; nc++ )
- {
- // Schleife ueber x:
- nx = 0;
- while ( nx < nWidth )
- {
- // Die Position von 3 gleichen Bytes suchen und in nEqu3 merken.
- // wenn nicht gefunden, dann nEqu3=nWidth setzten.
- // Wenn doch gefunden, dann in nEquData den Wert der Bytes merken.
- nEqu3 = nx;
- for (;;)
- {
- if ( nEqu3 + 2 >= nWidth )
- {
- nEqu3 = nWidth;
- break;
- }
- nEquData = pComp[nc][nEqu3];
- if ( nEquData == pComp[nc][nEqu3+1] && nEquData==pComp[nc][nEqu3+2] )
- break;
- nEqu3++;
- }
-
- // Die Daten von nx bis nEqu3 unkomprimiert schreiben (ggf. in mehreren Records):
- while ( nEqu3 > nx )
- {
- nCount = nEqu3 - nx;
- if ( nCount > 128 )
- nCount=128;
- nFlagCounterByte = (BYTE)(nCount-1);
- *pPict << nFlagCounterByte;
- do
- {
- *pPict << pComp[nc][nx++];
- nCount--;
- }
- while ( nCount > 0 );
- }
-
- // Jetzt einen Komprimierungs-Record erzeugen (falls oben mindestens 3
- // gleiche Bytes gefunden):
- if ( nx < nWidth )
- { // Hinweis: es gilt nx==nEqu3 (hoffentlich)
- nCount=3; // Drei Bytes sind gleich, wie weiter oben herausgefunden.
- // Pruefen, ob es weitere gleiche Bytes gibts (dabei Max.-Record-Groesse beachten):
- while ( nx + nCount < nWidth && nCount < 128 )
- {
- if ( nEquData != pComp[ nc ][ nx + nCount ] )
- break;
- nCount++;
- }
- // nCount gleiche Bytes komprimiert schreiben:
- nFlagCounterByte = (BYTE)( 1 - (long)nCount );
- *pPict << nFlagCounterByte << nEquData;
- nx += nCount;
- }
- }
- }
- // ByteCount berichtigen:
- nPos = pPict->Tell();
- pPict->Seek( nDstRowPos );
- if ( nDstRowBytes > 250 )
- *pPict << ( (USHORT)( nPos - nDstRowPos - 2 ) );
- else
- *pPict << ( (BYTE)( nPos - nDstRowPos - 1 ) );
- pPict->Seek( nPos );
-
- // Prozente zaehlen, Callback, Fehler pruefen:
- nActBitmapPercent = ( ny * 70 / nHeight ) + 30; // (30% machten schon das Schreiben der Win-BMP-Datei aus)
- MayCallback();
- }
- // Aufraeumen:
- for ( nc = 0; nc < 4; nc++ )
- delete pComp[ nc ];
- }
- }
- else
- { // nicht 24-Bit also Opcode 'PackBitsRect' erzeugen:
-
- // Bei 1-Bit-Bildern ignorieren manche Import-Filter die Palette und nehmen statt
- // dessen die Vorder- und Hintergrundfarbe:
- if ( nBitsPerPixel == 1 )
- {
- WriteOpcode_RGBBkCol( pAcc->GetPaletteColor( 0 ) );
- WriteOpcode_RGBFgCol( pAcc->GetPaletteColor( 1 ) );
- }
- else
- {
- WriteOpcode_RGBBkCol( Color( COL_BLACK ) );
- WriteOpcode_RGBFgCol( Color( COL_WHITE ) );
- }
-
- // Anzahl Bytes einer (ungepackten) Zeile in Ziel und Quelle berechnen:
- nDstRowBytes = ( nWidth * nBitsPerPixel + 7 ) >> 3;
- nSrcRowBytes = ( nDstRowBytes + 3 ) & 0xfffffffc;
-
- // Opcode schreiben:
- *pPict << (USHORT)0x0098;
-
- // Normalerweise wollen wir den Packing-Type 0 (default Packing) erzeugen.
- // Wenn aber RowBytes<8 gilt, sind die Daten grundsaetzlich ungepackt,
- // auch wenn der Packing-Type 0 angegeben ist, was etwas komisch erscheint.
- // Daher wollen wir in so einem Fall lieber gleich den Packing-Type 1 (ungepackt)
- // angeben:
- if ( nDstRowBytes < 8 )
- nPackType = 1;
- else
- nPackType = 0;
-
- // PixMap-Struktur schreiben:
- *pPict << (USHORT)(nDstRowBytes|0x8000) // Bytes pro Zeile und dass es eine 'PixMap' ist
- << (USHORT)0x0000 // Y1-Position der Bitmap in der Quelle
- << (USHORT)0x0000 // X1-Position der Bitmap in der Quelle
- << (USHORT)nHeight // Y2-Position der Bitmap in der Quelle
- << (USHORT)nWidth // X2-Position der Bitmap in der Quelle
- << (USHORT)0x0000 // Version
- << (USHORT)nPackType // Packing type
- << (sal_uInt32) 0x00000000 // Packing size (?)
- << (sal_uInt32) 0x00480000 // H-Res
- << (sal_uInt32) 0x00480000 // V-Res
- << (USHORT)0x0000 // Pixel type (?)
- << (USHORT)nBitsPerPixel // Pixel size
- << (USHORT)0x0001 // CmpCount: 1 Komponente
- << (USHORT)nBitsPerPixel // CmpSize
- << (sal_uInt32) 0x00000000 // PlaneBytes (?)
- << (sal_uInt32) 0x00000000 // (?)
- << (sal_uInt32) 0x00000000; // (?)
-
- // Palette lesen und schreiben:
- nColTabSize = pAcc->GetPaletteEntryCount();
- *pPict << (sal_uInt32)0 << (USHORT)0x8000 << (USHORT)( nColTabSize - 1 );
-
- for ( i = 0; i < nColTabSize; i++ )
- {
- nRed = (BYTE)pAcc->GetPaletteColor( (USHORT)i ).GetRed();
- nGreen = (BYTE)pAcc->GetPaletteColor( (USHORT)i ).GetGreen();
- nBlue = (BYTE)pAcc->GetPaletteColor( (USHORT)i ).GetBlue();
- *pPict << (UINT16)0 << nRed << nRed << nGreen << nGreen << nBlue << nBlue;
- }
-
- // Source-Rectangle schreiben:
- *pPict << (USHORT)0 << (USHORT)0 << (USHORT)nHeight << (USHORT)nWidth;
-
- // Destination-Rectangle schreiben:
- WritePoint( rPoint );
- WritePoint( Point( rPoint.X() + rSize.Width(), rPoint.Y() + rSize.Height() ) );
-
- // Transfer mode schreiben:
- *pPict << (USHORT)0; // (?)
-
- // Speicher fuer eine Zeile allozieren:
- pPix = new BYTE[ nSrcRowBytes ];
-
- // Position der Map-Daten in Ziel merken:
- nDstMapPos=pPict->Tell();
-
- // Schleife ueber Zeilen:
- for ( ny = 0; ny < nHeight; ny++ )
- {
-
- // Zeile ny der Quelle in den Zwischenspeicher einlesen:
-
- switch ( nBitsPerPixel )
- {
- case 1 :
- for ( pTemp = pPix, i = 0; i < nSrcRowBytes; i++ )
- *pTemp++ = (BYTE)0;
- for ( i = 0; i < nWidth; i++ )
- pPix[ ( i >> 3 ) ] |= (BYTE)( pAcc->GetPixel( ny, i ) & 1 ) << ( ( i & 7 ) ^ 7 );
- break;
- case 4 :
- for ( pTemp = pPix, i = 0; i < nSrcRowBytes; i++ )
- *pTemp++ = (BYTE)0;
- for ( i = 0; i < nWidth; i++ )
- pPix[ ( i >> 1 ) ] |= (BYTE)( pAcc->GetPixel( ny, i ) & 15 ) << ( ( i & 1 ) << 2 ) ;
- break;
- case 8 :
- for ( i = 0; i < nWidth; i++ )
- pPix[ i ] = (BYTE)pAcc->GetPixel( ny, i );
- break;
- }
-
- if ( nPackType == 1 )
- { // nicht packen
- pPict->Write( pPix, nDstRowBytes );
- }
- else
- { // Packen (nPackType==0)
-
- // Anfang der Zeile im Ziel merken:
- nDstRowPos = pPict->Tell();
-
- // ByteCount (das ist die Groesse der gepackten Zeile) zunaechst 0 (wird spaeter berichtigt):
- if ( nDstRowBytes > 250 )
- *pPict << (USHORT)0;
- else
- *pPict << (BYTE)0;
-
- // Schleife ueber Bytes der Zeile:
- nx=0;
- while ( nx < nDstRowBytes && bStatus )
- {
- // Die Position von 3 gleichen Bytes suchen und in nEqu3 merken.
- // wenn nicht gefunden, dann nEqu3=nDstRowBytes setzten.
- // Wenn doch gefunden, dann in nEquData den Wert der Bytes merken.
- nEqu3 = nx;
- for (;;)
- {
- if ( nEqu3 + 2 >= nDstRowBytes )
- {
- nEqu3 = nDstRowBytes;
- break;
- }
- nEquData = pPix[ nEqu3 ];
- if ( nEquData == pPix[ nEqu3 + 1 ] && nEquData == pPix[ nEqu3 + 2 ] )
- break;
- nEqu3++;
- }
-
- // Die Daten von nx bis nEqu3 unkomprimiert schreiben (ggf. in mehreren Records):
- while ( nEqu3 > nx )
- {
- nCount = nEqu3 - nx;
- if ( nCount > 128 )
- nCount = 128;
- nFlagCounterByte = (BYTE)( nCount - 1 );
- *pPict << nFlagCounterByte;
- do
- {
- *pPict << pPix[ nx++ ];
- nCount--;
- } while ( nCount > 0 );
- }
-
- // Jetzt einen Komprimierungs-Record erzeugen (falls oben mindestens 3
- // gleiche Bytes gefunden):
- if ( nx < nDstRowBytes )
- { // Hinweis: es gilt nx==nEqu3 (hoffentlich)
- nCount = 3; // Drei Bytes sind gleich, wie weiter oben herausgefunden.
- // Pruefen, ob es weitere gleiche Bytes gibts (dabei Max.-Record-Groesse beachten):
- while ( nx + nCount < nDstRowBytes && nCount < 128 )
- {
- if ( nEquData != pPix[ nx + nCount ] )
- break;
- nCount++;
- }
- // nCount gleiche Bytes komprimiert schreiben:
- nFlagCounterByte = (BYTE)( 1 - (long)nCount );
- *pPict << nFlagCounterByte << nEquData;
- nx += nCount;
- }
- }
-
- // ByteCount berichtigen:
- nPos = pPict->Tell();
- pPict->Seek( nDstRowPos );
- if ( nDstRowBytes > 250 )
- *pPict << ( (USHORT)( nPos - nDstRowPos - 2 ) );
- else
- *pPict << ( (BYTE)( nPos - nDstRowPos - 1 ) );
- pPict->Seek( nPos );
- }
-
- // Prozente zaehlen, Callback, Fehler pruefen:
- nActBitmapPercent =( ny * 70 / nHeight ) + 30; // (30% machten schon das Schreiben der Win-BMP-Datei aus)
- MayCallback();
- if ( pPict->GetError() )
- bStatus = FALSE;
- }
- // Aufraeumen:
- delete[] pPix;
- }
-
- // Map-Daten muessen gerade Anzahl von Bytes sein:
- if ( ( ( pPict->Tell() - nDstMapPos ) & 1 ) != 0 )
- *pPict << (BYTE)0;
-
- // Bitmaps zaehlen:
- nWrittenBitmaps++;
- nActBitmapPercent = 0;
- if ( pAcc )
- aBitmap.ReleaseAccess( pAcc );
-}
-
-void PictWriter::WriteOpcode_EndOfFile()
-{
- *pPict << (USHORT)0x00ff;
-}
-
-
-void PictWriter::SetAttrForPaint()
-{
- WriteOpcode_PnMode(eSrcRasterOp);
- WriteOpcode_RGBFgCol(aFillColor);
- WriteOpcode_RGBBkCol(aFillColor);
- WriteOpcode_PnFillPat(aFillColor!=Color( COL_TRANSPARENT ));
-}
-
-
-void PictWriter::SetAttrForFrame()
-{
- WriteOpcode_PnMode(eSrcRasterOp);
- WriteOpcode_PnSize(0);
- WriteOpcode_RGBFgCol(aLineColor);
- WriteOpcode_PnLinePat(aLineColor!=Color( COL_TRANSPARENT ));
-}
-
-
-void PictWriter::SetAttrForText()
-{
- WriteOpcode_RGBFgCol(aSrcFont.GetColor());
- WriteOpcode_RGBBkCol(aSrcFont.GetFillColor());
- WriteOpcode_PnLinePat(TRUE);
- WriteOpcode_FontName(aSrcFont);
- WriteOpcode_TxSize((USHORT)(aSrcFont.GetSize().Height()));
- WriteOpcode_TxMode(eSrcRasterOp);
- WriteOpcode_TxFace(aSrcFont);
-}
-
-
-void PictWriter::WriteTextArray(Point & rPoint, const String& rString, const sal_Int32 * pDXAry)
-{
- USHORT i,nLen;
- sal_Unicode c;
- BOOL bDelta;
- Point aPt;
-
- if ( pDXAry == NULL )
- WriteOpcode_Text( rPoint, rString, FALSE );
- else
- {
- bDelta = FALSE;
- nLen = rString.Len();
- for ( i = 0; i < nLen; i++ )
- {
- c = rString.GetChar( i );
- if ( c && ( c != 0x20 ) )
- {
- aPt = rPoint;
- if ( i > 0 )
- aPt.X() += pDXAry[ i - 1 ];
-
- WriteOpcode_Text( aPt, String( c ), bDelta );
- bDelta = TRUE;
- }
- }
- }
-}
-
-
-void PictWriter::WriteOpcodes( const GDIMetaFile & rMTF )
-{
- ULONG nA, nACount;
- const MetaAction* pMA;
-
- if( !bStatus)
- return;
-
- nACount=rMTF.GetActionCount();
-
- for (nA=0; nA<nACount; nA++)
- {
- pMA = rMTF.GetAction(nA);
-
- switch (pMA->GetType())
- {
- case META_PIXEL_ACTION:
- {
- const MetaPixelAction* pA = (const MetaPixelAction*) pMA;
- WriteOpcode_PnMode(eSrcRasterOp);
- WriteOpcode_PnSize(1);
- WriteOpcode_RGBFgCol(pA->GetColor());
- WriteOpcode_PnLinePat(TRUE);
- WriteOpcode_Line(pA->GetPoint(),pA->GetPoint());
- }
- break;
-
- case META_POINT_ACTION:
- {
- const MetaPointAction* pA = (const MetaPointAction*) pMA;
-
- if( aLineColor != Color( COL_TRANSPARENT ) )
- {
- SetAttrForFrame();
- WriteOpcode_Line( pA->GetPoint(),pA->GetPoint() );
- }
- }
- break;
-
- case META_LINE_ACTION:
- {
- const MetaLineAction* pA = (const MetaLineAction*) pMA;
-
- if( aLineColor != Color( COL_TRANSPARENT ) )
- {
- SetAttrForFrame();
- WriteOpcode_Line( pA->GetStartPoint(),pA->GetEndPoint() );
- }
- break;
- }
-
- case META_RECT_ACTION:
- {
- const MetaRectAction* pA = (const MetaRectAction*) pMA;
-
- if (aFillColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForPaint();
- WriteOpcode_Rect(PDM_PAINT,pA->GetRect());
- if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForFrame();
- WriteOpcode_SameRect(PDM_FRAME);
- }
- }
- else if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForFrame();
- WriteOpcode_Rect(PDM_FRAME,pA->GetRect());
- }
- }
- break;
-
- case META_ROUNDRECT_ACTION:
- {
- const MetaRoundRectAction* pA = (const MetaRoundRectAction*) pMA;
-
- WriteOpcode_OvSize( Size( pA->GetHorzRound(), pA->GetVertRound() ) );
-
- if (aFillColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForPaint();
- WriteOpcode_RRect(PDM_PAINT,pA->GetRect());
- if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForFrame();
- WriteOpcode_SameRRect(PDM_FRAME);
- }
- }
- else if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForFrame();
- WriteOpcode_RRect(PDM_FRAME,pA->GetRect());
- }
- }
- break;
-
- case META_ELLIPSE_ACTION:
- {
- const MetaEllipseAction* pA = (const MetaEllipseAction*) pMA;
-
- if (aFillColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForPaint();
- WriteOpcode_Oval(PDM_PAINT,pA->GetRect());
- if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForFrame();
- WriteOpcode_SameOval(PDM_FRAME);
- }
- }
- else if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForFrame();
- WriteOpcode_Oval(PDM_FRAME,pA->GetRect());
- }
- }
- break;
-
- case META_ARC_ACTION:
- {
- const MetaArcAction* pA = (const MetaArcAction*) pMA;
-
- if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForFrame();
- WriteOpcode_Arc(PDM_FRAME,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
- }
- }
- break;
-
- case META_PIE_ACTION:
- {
- const MetaPieAction* pA = (const MetaPieAction *) pMA;
-
- if (aFillColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForPaint();
- WriteOpcode_Arc(PDM_PAINT,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
-
- if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForFrame();
- WriteOpcode_SameArc(PDM_FRAME,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
- }
- }
- else if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForFrame();
- WriteOpcode_Arc(PDM_FRAME,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
- }
-
- if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- double fxc,fyc,fxr,fyr,fx1,fy1,fx2,fy2,l1,l2;
-
- fxc=((double)(pA->GetRect().Left()+pA->GetRect().Right()))/2.0;
- fyc=((double)(pA->GetRect().Top()+pA->GetRect().Bottom()))/2.0;
- fxr=((double)pA->GetRect().GetWidth())/2.0;
- fyr=((double)pA->GetRect().GetHeight())/2.0;
- fx1=((double)pA->GetStartPoint().X())-fxc;
- fy1=((double)pA->GetStartPoint().Y())-fyc;
- fx2=((double)pA->GetEndPoint().X())-fxc;
- fy2=((double)pA->GetEndPoint().Y())-fyc;
- l1=sqrt(fx1*fx1+fy1*fy1);
- l2=sqrt(fx2*fx2+fy2*fy2);
-
- if (l1>0)
- {
- fx1=fx1/l1*fxr;
- fy1=fy1/l1*fyr;
- }
-
- if (l2>0)
- {
- fx2=fx2/l2*fxr;
- fy2=fy2/l2*fyr;
- }
- fx1+=fxc; fy1+=fyc; fx2+=fxc; fy2+=fyc;
- WriteOpcode_Line(Point((long)(fx1+0.5),(long)(fy1+0.5)), Point((long)(fxc+0.5),(long)(fyc+0.5)));
- WriteOpcode_LineFrom(Point((long)(fx2+0.5),(long)(fy2+0.5)));
- }
- }
- break;
-
- case META_CHORD_ACTION:
- {
-// DBG_ERROR( "Unsupported PICT-Action: META_CHORD_ACTION!" );
- }
- break;
-
- case META_POLYLINE_ACTION:
- {
- const MetaPolyLineAction* pA = (const MetaPolyLineAction*) pMA;
-
- if( aLineColor!=Color( COL_TRANSPARENT ) )
- {
- const Polygon& rPoly = pA->GetPolygon();
-
- Polygon aSimplePoly;
- if ( rPoly.HasFlags() )
- rPoly.AdaptiveSubdivide( aSimplePoly );
- else
- aSimplePoly = rPoly;
-
- const USHORT nSize = aSimplePoly.GetSize();
- Point aLast;
-
- if ( nSize )
- {
- SetAttrForFrame();
- aLast = aSimplePoly[0];
-
- for ( USHORT i = 1; i < nSize; i++ )
- {
- WriteOpcode_Line( aLast, aSimplePoly[i] );
- aLast = aSimplePoly[i];
- }
- }
- }
- }
- break;
-
- case META_POLYGON_ACTION:
- {
- const MetaPolygonAction* pA = (const MetaPolygonAction*) pMA;
-
- const Polygon& rPoly = pA->GetPolygon();
-
- Polygon aSimplePoly;
- if ( rPoly.HasFlags() )
- rPoly.AdaptiveSubdivide( aSimplePoly );
- else
- aSimplePoly = rPoly;
-
- if (aFillColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForPaint();
- WriteOpcode_Poly( PDM_PAINT, aSimplePoly );
- }
- if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForFrame();
- WriteOpcode_Poly( PDM_FRAME, aSimplePoly );
- }
- }
- break;
-
- case META_POLYPOLYGON_ACTION:
- {
- const MetaPolyPolygonAction* pA = (const MetaPolyPolygonAction*) pMA;
-
- const PolyPolygon& rPolyPoly = pA->GetPolyPolygon();
- sal_uInt16 nPolyCount = rPolyPoly.Count();
- PolyPolygon aSimplePolyPoly( rPolyPoly );
- for ( sal_uInt16 i = 0; i < nPolyCount; i++ )
- {
- if ( aSimplePolyPoly[ i ].HasFlags() )
- {
- Polygon aSimplePoly;
- aSimplePolyPoly[ i ].AdaptiveSubdivide( aSimplePoly );
- aSimplePolyPoly[ i ] = aSimplePoly;
- }
- }
- if (aFillColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForPaint();
- WriteOpcode_Poly( PDM_PAINT, PolyPolygonToPolygon( aSimplePolyPoly ));
- }
-
- if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- USHORT nCount,i;
- SetAttrForFrame();
- nCount = aSimplePolyPoly.Count();
- for ( i = 0; i < nCount; i++ )
- WriteOpcode_Poly( PDM_FRAME, aSimplePolyPoly.GetObject( i ) );
- }
- }
- break;
-
- case META_TEXT_ACTION:
- {
- const MetaTextAction* pA = (const MetaTextAction*) pMA;
- Point aPt( pA->GetPoint() );
-
- if ( aSrcFont.GetAlign() != ALIGN_BASELINE )
- {
- VirtualDevice aVirDev;
-
- if (aSrcFont.GetAlign()==ALIGN_TOP)
- aPt.Y()+=(long)aVirDev.GetFontMetric(aSrcFont).GetAscent();
- else
- aPt.Y()-=(long)aVirDev.GetFontMetric(aSrcFont).GetDescent();
- }
-
- SetAttrForText();
- String aStr( pA->GetText(),pA->GetIndex(),pA->GetLen() );
- WriteOpcode_Text( aPt, aStr, FALSE );
- }
- break;
-
- case META_TEXTARRAY_ACTION:
- {
- const MetaTextArrayAction* pA = (const MetaTextArrayAction*) pMA;
- Point aPt( pA->GetPoint() );
-
- if (aSrcFont.GetAlign()!=ALIGN_BASELINE)
- {
- VirtualDevice aVirDev;
-
- if (aSrcFont.GetAlign()==ALIGN_TOP)
- aPt.Y()+=(long)aVirDev.GetFontMetric(aSrcFont).GetAscent();
- else
- aPt.Y()-=(long)aVirDev.GetFontMetric(aSrcFont).GetDescent();
- }
- SetAttrForText();
- String aStr( pA->GetText(),pA->GetIndex(),pA->GetLen() );
- WriteTextArray( aPt, aStr, pA->GetDXArray() );
- break;
- }
-
- case META_STRETCHTEXT_ACTION:
- {
- const MetaStretchTextAction* pA = (const MetaStretchTextAction*) pMA;
- Point aPt( pA->GetPoint() );
- String aStr( pA->GetText(),pA->GetIndex(),pA->GetLen() );
- VirtualDevice aVirDev;
- sal_Int32* pDXAry = new sal_Int32[ aStr.Len() ];
- sal_Int32 nNormSize( aVirDev.GetTextArray( aStr,pDXAry ) );
- USHORT i;
-
- if (aSrcFont.GetAlign()!=ALIGN_BASELINE)
- {
- if (aSrcFont.GetAlign()==ALIGN_TOP)
- aPt.Y()+=(long)aVirDev.GetFontMetric(aSrcFont).GetAscent();
- else
- aPt.Y()-=(long)aVirDev.GetFontMetric(aSrcFont).GetDescent();
- }
-
- for ( i = 0; i < aStr.Len() - 1; i++ )
- pDXAry[ i ] = pDXAry[ i ] * ( (long)pA->GetWidth() ) / nNormSize;
-
- SetAttrForText();
- WriteTextArray( aPt, aStr, pDXAry );
- delete[] pDXAry;
- }
- break;
-
- case META_TEXTRECT_ACTION:
- {
-// DBG_ERROR( "Unsupported PICT-Action: META_TEXTRECT_ACTION!" );
- }
- break;
-
- case META_BMP_ACTION:
- {
- const MetaBmpAction* pA = (const MetaBmpAction*) pMA;
- WriteOpcode_BitsRect( pA->GetPoint(),pA->GetBitmap().GetSizePixel(), pA->GetBitmap() );
- }
- break;
-
- case META_BMPSCALE_ACTION:
- {
- const MetaBmpScaleAction* pA = (const MetaBmpScaleAction*) pMA;
- WriteOpcode_BitsRect( pA->GetPoint(), pA->GetSize(), pA->GetBitmap() );
- }
- break;
-
- case META_BMPSCALEPART_ACTION:
- {
- const MetaBmpScalePartAction* pA = (const MetaBmpScalePartAction*) pMA;
- Bitmap aBmp( pA->GetBitmap() );
-
- aBmp.Crop( Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
- WriteOpcode_BitsRect( pA->GetDestPoint(), pA->GetDestSize(), aBmp );
- }
- break;
-
- case META_BMPEX_ACTION:
- {
- const MetaBmpExAction* pA = (const MetaBmpExAction*) pMA;
- const Bitmap aBmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
-
- WriteOpcode_BitsRect( pA->GetPoint(), aBmp.GetSizePixel(), aBmp );
- }
- break;
-
- case META_BMPEXSCALE_ACTION:
- {
- const MetaBmpExScaleAction* pA = (const MetaBmpExScaleAction*) pMA;
- const Bitmap aBmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
-
- WriteOpcode_BitsRect( pA->GetPoint(), pA->GetSize(), aBmp );
- }
- break;
-
- case META_BMPEXSCALEPART_ACTION:
- {
- const MetaBmpExScalePartAction* pA = (const MetaBmpExScalePartAction*) pMA;
- Bitmap aBmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
-
- aBmp.Crop( Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
- WriteOpcode_BitsRect( pA->GetDestPoint(), pA->GetDestSize(), aBmp );
- }
- break;
-
- case META_EPS_ACTION :
- {
- const MetaEPSAction* pA = (const MetaEPSAction*)pMA;
- const GDIMetaFile aGDIMetaFile( pA->GetSubstitute() );
-
- INT32 nCount = aGDIMetaFile.GetActionCount();
- for ( INT32 i = 0; i < nCount; i++ )
- {
- const MetaAction* pMetaAct = aGDIMetaFile.GetAction( i );
- if ( pMetaAct->GetType() == META_BMPSCALE_ACTION )
- {
- const MetaBmpScaleAction* pBmpScaleAction = (const MetaBmpScaleAction*)pMetaAct;
- WriteOpcode_BitsRect( pA->GetPoint(), pA->GetSize(), pBmpScaleAction->GetBitmap() );
- break;
- }
- }
- }
- break;
-
- case META_MASK_ACTION:
- case META_MASKSCALE_ACTION:
- case META_MASKSCALEPART_ACTION:
- {
-// DBG_ERROR( "Unsupported PICT-Action: META_MASK..._ACTION!" );
- }
- break;
-
- case META_GRADIENT_ACTION:
- {
- VirtualDevice aVDev;
- GDIMetaFile aTmpMtf;
- const MetaGradientAction* pA = (const MetaGradientAction*) pMA;
-
- aVDev.SetMapMode( aTargetMapMode );
- aVDev.AddGradientActions( pA->GetRect(), pA->GetGradient(), aTmpMtf );
- WriteOpcodes( aTmpMtf );
- }
- break;
-
- case META_HATCH_ACTION:
- {
- VirtualDevice aVDev;
- GDIMetaFile aTmpMtf;
- const MetaHatchAction* pA = (const MetaHatchAction*) pMA;
-
- aVDev.SetMapMode( aTargetMapMode );
- aVDev.AddHatchActions( pA->GetPolyPolygon(), pA->GetHatch(), aTmpMtf );
- WriteOpcodes( aTmpMtf );
- }
- break;
-
- case META_WALLPAPER_ACTION:
- {
-// DBG_ERROR( "Unsupported PICT-Action: META_WALLPAPER_ACTION!" );
- }
- break;
-
- case META_CLIPREGION_ACTION:
- {
-// DBG_ERROR( "Unsupported PICT-Action: META_CLIPREGION_ACTION!" );
- }
- break;
-
- case META_ISECTRECTCLIPREGION_ACTION:
- {
- const MetaISectRectClipRegionAction* pA = (const MetaISectRectClipRegionAction*) pMA;
- WriteOpcode_ClipRect( pA->GetRect() );
- }
- break;
-
- case META_ISECTREGIONCLIPREGION_ACTION:
- {
-// DBG_ERROR( "Unsupported PICT-Action: META_ISECTREGIONCLIPREGION_ACTION!" );
- }
- break;
-
- case META_MOVECLIPREGION_ACTION:
- {
-// DBG_ERROR( "Unsupported PICT-Action: META_MOVECLIPREGION_ACTION!" );
- }
- break;
-
- case META_LINECOLOR_ACTION:
- {
- const MetaLineColorAction* pA = (const MetaLineColorAction*) pMA;
-
- if( pA->IsSetting() )
- aLineColor = pA->GetColor();
- else
- aLineColor = Color( COL_TRANSPARENT );
- }
- break;
-
- case META_FILLCOLOR_ACTION:
- {
- const MetaFillColorAction* pA = (const MetaFillColorAction*) pMA;
-
- if( pA->IsSetting() )
- aFillColor = pA->GetColor();
- else
- aFillColor = Color( COL_TRANSPARENT );
- }
- break;
-
- case META_TEXTCOLOR_ACTION:
- {
- const MetaTextColorAction* pA = (const MetaTextColorAction*) pMA;
- aSrcFont.SetColor( pA->GetColor() );
- }
- break;
-
- case META_TEXTFILLCOLOR_ACTION:
- {
- const MetaTextFillColorAction* pA = (const MetaTextFillColorAction*) pMA;
-
- if( pA->IsSetting() )
- aSrcFont.SetFillColor( pA->GetColor() );
- else
- aSrcFont.SetFillColor( Color( COL_TRANSPARENT ) );
- }
- break;
-
- case META_TEXTALIGN_ACTION:
- {
-// DBG_ERROR( "Unsupported PICT-Action: META_TEXTALIGN_ACTION!" );
- }
- break;
-
- case META_MAPMODE_ACTION:
- {
- const MetaMapModeAction* pA = (const MetaMapModeAction*) pMA;
-
- if (aSrcMapMode!=pA->GetMapMode())
- {
- if( pA->GetMapMode().GetMapUnit() == MAP_RELATIVE )
- {
- MapMode aMM = pA->GetMapMode();
- Fraction aScaleX = aMM.GetScaleX();
- Fraction aScaleY = aMM.GetScaleY();
-
- Point aOrigin = aSrcMapMode.GetOrigin();
- BigInt aX( aOrigin.X() );
- aX *= BigInt( aScaleX.GetDenominator() );
- if( aOrigin.X() >= 0 )
- {
- if( aScaleX.GetNumerator() >= 0 )
- aX += BigInt( aScaleX.GetNumerator()/2 );
- else
- aX -= BigInt( (aScaleX.GetNumerator()+1)/2 );
- }
- else
- {
- if( aScaleX.GetNumerator() >= 0 )
- aX -= BigInt( (aScaleX.GetNumerator()-1)/2 );
- else
- aX += BigInt( aScaleX.GetNumerator()/2 );
- }
-
- aX /= BigInt( aScaleX.GetNumerator() );
- aOrigin.X() = (long)aX + aMM.GetOrigin().X();
- BigInt aY( aOrigin.Y() );
- aY *= BigInt( aScaleY.GetDenominator() );
-
- if( aOrigin.Y() >= 0 )
- {
- if( aScaleY.GetNumerator() >= 0 )
- aY += BigInt( aScaleY.GetNumerator()/2 );
- else
- aY -= BigInt( (aScaleY.GetNumerator()+1)/2 );
- }
- else
- {
- if( aScaleY.GetNumerator() >= 0 )
- aY -= BigInt( (aScaleY.GetNumerator()-1)/2 );
- else
- aY += BigInt( aScaleY.GetNumerator()/2 );
- }
-
- aY /= BigInt( aScaleY.GetNumerator() );
- aOrigin.Y() = (long)aY + aMM.GetOrigin().Y();
- aSrcMapMode.SetOrigin( aOrigin );
-
- aScaleX *= aSrcMapMode.GetScaleX();
- aScaleY *= aSrcMapMode.GetScaleY();
- aSrcMapMode.SetScaleX( aScaleX );
- aSrcMapMode.SetScaleY( aScaleY );
- }
- else
- aSrcMapMode = pA->GetMapMode();
- }
- }
- break;
-
- case META_FONT_ACTION:
- {
- const MetaFontAction* pA = (const MetaFontAction*) pMA;
- aSrcFont=pA->GetFont();
- }
- break;
-
- case META_PUSH_ACTION:
- {
- PictWriterAttrStackMember * pAt = new PictWriterAttrStackMember;
- pAt->aLineColor=aLineColor;
- pAt->aFillColor=aFillColor;
- pAt->eRasterOp=eSrcRasterOp;
- pAt->aFont=aSrcFont;
- pAt->aMapMode=aSrcMapMode;
- pAt->aClipRect=aClipRect;
- pAt->pSucc=pAttrStack;
- pAttrStack=pAt;
- }
- break;
-
- case META_POP_ACTION:
- {
- PictWriterAttrStackMember* pAt=pAttrStack;
-
- if( pAt )
- {
- aLineColor=pAt->aLineColor;
- aFillColor=pAt->aFillColor;
- eSrcRasterOp=pAt->eRasterOp;
- aSrcFont=pAt->aFont;
- aSrcMapMode=pAt->aMapMode;
- if ( pAt->aClipRect != aClipRect )
- {
- Rectangle aRect( pAt->aClipRect );
- *pPict << (sal_uInt16)1 // opcode 1
- << (sal_uInt16)10 // data size
- << (sal_Int16)aRect.Top() << (sal_Int16)aRect.Left()
- << (sal_Int16)aRect.Bottom() << (sal_Int16)aRect.Right();
- }
- aClipRect=pAt->aClipRect;
- pAttrStack=pAt->pSucc;
- delete pAt;
- }
- }
- break;
-
- case META_RASTEROP_ACTION:
- {
- const MetaRasterOpAction* pA = (const MetaRasterOpAction*) pMA;
- eSrcRasterOp=pA->GetRasterOp();
- }
- break;
-
- case META_TRANSPARENT_ACTION:
- {
- const PolyPolygon& rPolyPoly = ( (const MetaTransparentAction*) pMA )->GetPolyPolygon();
-
- if (aFillColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForPaint();
- WriteOpcode_Poly( PDM_PAINT, PolyPolygonToPolygon( rPolyPoly ) );
- }
-
- if (aLineColor!=Color( COL_TRANSPARENT ))
- {
- SetAttrForFrame();
- for( USHORT i = 0, nCount = rPolyPoly.Count(); i < nCount; i++ )
- WriteOpcode_Poly( PDM_FRAME, rPolyPoly.GetObject( i ) );
- }
- }
- break;
-
- case META_FLOATTRANSPARENT_ACTION:
- {
- const MetaFloatTransparentAction* pA = (const MetaFloatTransparentAction*) pMA;
-
- GDIMetaFile aTmpMtf( pA->GetGDIMetaFile() );
- Point aSrcPt( aTmpMtf.GetPrefMapMode().GetOrigin() );
- const Size aSrcSize( aTmpMtf.GetPrefSize() );
- const Point aDestPt( pA->GetPoint() );
- const Size aDestSize( pA->GetSize() );
- const double fScaleX = aSrcSize.Width() ? (double) aDestSize.Width() / aSrcSize.Width() : 1.0;
- const double fScaleY = aSrcSize.Height() ? (double) aDestSize.Height() / aSrcSize.Height() : 1.0;
- long nMoveX, nMoveY;
-
- if( fScaleX != 1.0 || fScaleY != 1.0 )
- {
- aTmpMtf.Scale( fScaleX, fScaleY );
- aSrcPt.X() = FRound( aSrcPt.X() * fScaleX ), aSrcPt.Y() = FRound( aSrcPt.Y() * fScaleY );
- }
-
- nMoveX = aDestPt.X() - aSrcPt.X(), nMoveY = aDestPt.Y() - aSrcPt.Y();
-
- if( nMoveX || nMoveY )
- aTmpMtf.Move( nMoveX, nMoveY );
-
- WriteOpcodes( aTmpMtf );
- }
- break;
- }
-
- nWrittenActions++;
- MayCallback();
-
- if (pPict->GetError())
- bStatus=FALSE;
-
- if (bStatus==FALSE)
- break;
- }
-}
-
-
-void PictWriter::WriteHeader(const GDIMetaFile & rMTF)
-{
- USHORT i;
- Size aSize( rMTF.GetPrefSize() );
- Point aPoint;
- Rectangle aRect( aPoint, aSize );
-
- // 512 Bytes "Muell" am Anfang:
- for (i=0;i<128;i++) *pPict << (sal_uInt32)0;
-
- // Lo-16-Bits der Groesse der Datei ohne die 512 Bytes Muell:
- *pPict << (USHORT)0; // wird spaeter durch UpdateHeader() berichtigt
-
- // Das Bounding-Rectangle (y1,x1,y2,x2 !):
- WriteRectangle( aRect );
-
- // Version 2:
- *pPict << (sal_uInt32)0x001102ff;
-
- // Extended-Version-2-Header:
- *pPict << (USHORT)0x0c00 // Opcode
- << (USHORT)0xfffe // Version (?)
- << (USHORT)0x0000 // Reserved
- << (sal_uInt32) 0x00480000 // hRes
- << (sal_uInt32) 0x00480000;
- WriteRectangle( aRect );
- *pPict << (sal_uInt32)0x00000000; // Reserved
-
- // viele Import-Filter verlangen die Angabe eines
- // Clipping-Bereichs am Anfang
-
- WriteOpcode_ClipRect( aRect );
-}
-
-
-void PictWriter::UpdateHeader()
-{
- ULONG nPos;
-
- // Lo-16-Bits der Groesse der Datei ohne die 512 Bytes Muell berichtigen:
- nPos=pPict->Tell();
- pPict->Seek(512);
- *pPict << (USHORT)((nPos-512)&0x0000ffff);
- pPict->Seek(nPos);
-}
-
-
-BOOL PictWriter::WritePict(const GDIMetaFile & rMTF, SvStream & rTargetStream, FilterConfigItem* pFilterConfigItem )
-{
- PictWriterAttrStackMember* pAt;
- MapMode aMap72( MAP_INCH );
- Fraction aDPIFrac( 1, 72 );
-
- bStatus=TRUE;
- nLastPercent=0;
-
- if ( pFilterConfigItem )
- {
- xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
- if ( xStatusIndicator.is() )
- {
- rtl::OUString aMsg;
- xStatusIndicator->start( aMsg, 100 );
- }
- }
-
- pPict=&rTargetStream;
- pPict->SetNumberFormatInt(NUMBERFORMAT_INT_BIGENDIAN);
-
- aLineColor=Color( COL_BLACK );
- aFillColor=Color( COL_WHITE );
- eSrcRasterOp=ROP_OVERPAINT;
- aSrcFont=Font();
- aSrcMapMode = rMTF.GetPrefMapMode();
-
- aMap72.SetScaleX( aDPIFrac );
- aMap72.SetScaleY( aDPIFrac );
- aTargetMapMode = aMap72;
-
- pAttrStack=NULL;
-
- bDstBkPatValid=FALSE;
- bDstTxFaceValid=FALSE;
- bDstTxModeValid=FALSE;
- bDstPnSizeValid=FALSE;
- bDstPnModeValid=FALSE;
- bDstPnPatValid=FALSE;
- bDstFillPatValid=FALSE;
- bDstTxSizeValid=FALSE;
- bDstFgColValid=FALSE;
- bDstBkColValid=FALSE;
- bDstPenPositionValid=FALSE;
- bDstTextPositionValid=FALSE;
- bDstFontNameValid=FALSE;
-
- nNumberOfActions=0;
- nNumberOfBitmaps=0;
- nWrittenActions=0;
- nWrittenBitmaps=0;
- nActBitmapPercent=0;
-
- CountActionsAndBitmaps(rMTF);
-
- WriteHeader(rMTF);
- WriteOpcodes(rMTF);
- WriteOpcode_EndOfFile();
- UpdateHeader();
-
- while (pAttrStack!=NULL) {
- pAt=pAttrStack;
- pAttrStack=pAt->pSucc;
- delete pAt;
- }
-
- if ( xStatusIndicator.is() )
- xStatusIndicator->end();
-
- return bStatus;
-}
-
-//================== GraphicExport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicExport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem* pFilterConfigItem, BOOL)
-{
- PictWriter aPictWriter;
-
- if (rGraphic.GetType()==GRAPHIC_GDIMETAFILE)
- {
- GDIMetaFile aScaledMtf( rGraphic.GetGDIMetaFile() );
-
-/*
- MapMode aMap72( MAP_INCH );
- Fraction aDPIFrac( 1, 72 );
- Size aOldSize = aScaledMtf.GetPrefSize();
-
- aMap72.SetScaleX( aDPIFrac );
- aMap72.SetScaleY( aDPIFrac );
-
- Size aNewSize = OutputDevice::LogicToLogic( aOldSize,
- aScaledMtf.GetPrefMapMode(),
- aMap72 );
-
- aScaledMtf.Scale( Fraction( aNewSize.Width(), aOldSize.Width() ),
- Fraction( aNewSize.Height(), aOldSize.Height() ) );
- aScaledMtf.SetPrefMapMode( aMap72 );
- aScaledMtf.SetPrefSize( aNewSize );
-*/
-
- return aPictWriter.WritePict( aScaledMtf, rStream, pFilterConfigItem );
- }
- else
- {
- Bitmap aBmp=rGraphic.GetBitmap();
- GDIMetaFile aMTF;
- VirtualDevice aVirDev;
-
- aMTF.Record(&aVirDev);
- aVirDev.DrawBitmap(Point(),aBmp);
- aMTF.Stop();
- aMTF.SetPrefSize(aBmp.GetSizePixel());
- return aPictWriter.WritePict( aMTF, rStream, pFilterConfigItem );
- }
-}
-
-//================== GraphicDialog - die exportierte Funktion ================
-
-extern "C" BOOL SAL_CALL DoExportDialog( FltCallDialogParameter& rPara )
-{
- BOOL bRet = FALSE;
-
- if ( rPara.pWindow )
- {
- ByteString aResMgrName( "ept" );
- ResMgr* pResMgr;
-
- pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
-
- if( pResMgr )
- {
- rPara.pResMgr = pResMgr;
- bRet = ( DlgExportEPCT( rPara ).Execute() == RET_OK );
- delete pResMgr;
- }
- else
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-
-//=============================== fuer Windows ==============================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
-
diff --git a/goodies/source/filter.vcl/epict/epictstr.src b/goodies/source/filter.vcl/epict/epictstr.src
deleted file mode 100644
index 69cf2909f47c..000000000000
--- a/goodies/source/filter.vcl/epict/epictstr.src
+++ /dev/null
@@ -1,41 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: epictstr.src,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "strings.hrc"
-
-String KEY_MODE
-{
- Text = "ExportMode";
-};
-
-String KEY_SIZE
-{
- Text = "Size";
-};
diff --git a/goodies/source/filter.vcl/epict/exports.map b/goodies/source/filter.vcl/epict/exports.map
deleted file mode 100644
index 2f21c5c04b53..000000000000
--- a/goodies/source/filter.vcl/epict/exports.map
+++ /dev/null
@@ -1,8 +0,0 @@
-PICTEXPORTER_1_0 {
- global:
- GraphicExport;
- DoExportDialog;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/epict/makefile.mk b/goodies/source/filter.vcl/epict/makefile.mk
deleted file mode 100644
index 4aa4bab80ffc..000000000000
--- a/goodies/source/filter.vcl/epict/makefile.mk
+++ /dev/null
@@ -1,80 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=epict
-TARGET2=ept
-DEPTARGET=vepict
-
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-
-SRS1NAME=$(TARGET)
-SRC1FILES = dlgepct.src \
- epictstr.src
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/epict.obj \
- $(SLO)$/dlgepct.obj
-.ENDIF
-# ==========================================================================
-
-RESLIB1NAME=$(TARGET2)
-RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-.IF "$(L10N_framework)"==""
-SHL1TARGET= ept$(DLLPOSTFIX)
-SHL1IMPLIB= epict
-SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(SVTOOLLIB) $(CPPULIB) $(SALLIB)
-
-SHL1LIBS= $(SLB)$/epict.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/epict.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/epict/strings.hrc b/goodies/source/filter.vcl/epict/strings.hrc
deleted file mode 100644
index fe559eb8a2a9..000000000000
--- a/goodies/source/filter.vcl/epict/strings.hrc
+++ /dev/null
@@ -1,32 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: strings.hrc,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#define KEY_MODE 260
-#define KEY_SIZE 261
-
diff --git a/goodies/source/filter.vcl/eppm/dlgeppm.cxx b/goodies/source/filter.vcl/eppm/dlgeppm.cxx
deleted file mode 100644
index ce7f6e45f2d9..000000000000
--- a/goodies/source/filter.vcl/eppm/dlgeppm.cxx
+++ /dev/null
@@ -1,99 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeppm.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#ifndef GCC
-#endif
-#include <tools/ref.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include <vcl/msgbox.hxx>
-#include "dlgeppm.hxx"
-#include "dlgeppm.hrc"
-#include "strings.hrc"
-
-/*************************************************************************
-|*
-|* Ctor
-|*
-\************************************************************************/
-
-DlgExportEPPM::DlgExportEPPM( FltCallDialogParameter& rPara ) :
- ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EPPM, *rPara.pResMgr ) ),
- rFltCallPara ( rPara ),
- aGrpFormat ( this, ResId( GRP_FORMAT, *rPara.pResMgr ) ),
- aRBRaw ( this, ResId( RB_RAW, *rPara.pResMgr ) ),
- aRBASCII ( this, ResId( RB_ASCII, *rPara.pResMgr ) ),
- aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
- aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
- aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
- pMgr ( rPara.pResMgr )
-{
- FreeResource();
-
- // Config-Parameter lesen
-
- String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/PPM" ) );
- pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
- sal_Int32 nFormat = pConfigItem->ReadInt32( String( ResId( KEY_FORMAT, *pMgr ) ), 0 );
-
- BOOL bCheck = FALSE;
- if ( !nFormat )
- bCheck ^= TRUE;
- aRBRaw.Check( bCheck );
- bCheck ^= TRUE;
- aRBASCII.Check( bCheck );
-
- aBtnOK.SetClickHdl( LINK( this, DlgExportEPPM, OK ) );
-}
-
-DlgExportEPPM::~DlgExportEPPM()
-{
- delete pConfigItem;
-}
-
-/*************************************************************************
-|*
-|* Speichert eingestellte Werte in ini-Datei
-|*
-\************************************************************************/
-
-IMPL_LINK( DlgExportEPPM, OK, void *, EMPTYARG )
-{
- // Config-Parameter schreiben
- sal_Int32 nFormat = 0;
- if ( aRBASCII.IsChecked() )
- nFormat++;
- pConfigItem->WriteInt32( String( ResId( KEY_FORMAT, *pMgr ) ), nFormat );
- rFltCallPara.aFilterData = pConfigItem->GetFilterData();
- EndDialog( RET_OK );
-
- return 0;
-}
diff --git a/goodies/source/filter.vcl/eppm/dlgeppm.hrc b/goodies/source/filter.vcl/eppm/dlgeppm.hrc
deleted file mode 100644
index 67a392c7eb12..000000000000
--- a/goodies/source/filter.vcl/eppm/dlgeppm.hrc
+++ /dev/null
@@ -1,37 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeppm.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "goodies.hrc"
-
-#define BTN_OK 1
-#define BTN_CANCEL 1
-#define BTN_HELP 1
-#define GRP_FORMAT 1
-#define RB_RAW 1
-#define RB_ASCII 2
diff --git a/goodies/source/filter.vcl/eppm/dlgeppm.hxx b/goodies/source/filter.vcl/eppm/dlgeppm.hxx
deleted file mode 100644
index 8114f1575784..000000000000
--- a/goodies/source/filter.vcl/eppm/dlgeppm.hxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeppm.hxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#ifndef _DLGEPPM_HXX_
-#define _DLGEPPM_HXX_
-#include <svtools/fltcall.hxx>
-#include <vcl/dialog.hxx>
-#include <vcl/button.hxx>
-#include <vcl/fixed.hxx>
-#include <vcl/field.hxx>
-#include <svtools/stdctrl.hxx>
-
-
-/*************************************************************************
-|*
-|* Dialog zum Einstellen von Filteroptionen
-|*
-\************************************************************************/
-
-class FilterConfigItem;
-class ResMgr;
-
-class DlgExportEPPM : public ModalDialog
-{
-private:
-
- FltCallDialogParameter& rFltCallPara;
-
- FixedLine aGrpFormat;
- RadioButton aRBRaw;
- RadioButton aRBASCII;
- OKButton aBtnOK;
- CancelButton aBtnCancel;
- HelpButton aBtnHelp;
-
- FilterConfigItem* pConfigItem;
- ResMgr* pMgr;
-
- DECL_LINK( OK, void * );
-
-public:
- DlgExportEPPM( FltCallDialogParameter& rPara );
- ~DlgExportEPPM();
-};
-
-#endif // _DLGEPPM_HXX_
diff --git a/goodies/source/filter.vcl/eppm/dlgeppm.src b/goodies/source/filter.vcl/eppm/dlgeppm.src
deleted file mode 100644
index e6d8e687a6aa..000000000000
--- a/goodies/source/filter.vcl/eppm/dlgeppm.src
+++ /dev/null
@@ -1,109 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeppm.src,v $
- * $Revision: 1.22 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "dlgeppm.hrc"
-ModalDialog DLG_EXPORT_EPPM
-{
- OutputSize = TRUE ;
- SVLook = TRUE ;
- Size = MAP_APPFONT ( 133 , 63 ) ;
- Moveable = TRUE ;
- Closeable = TRUE ;
- Text [ en-US ] = "PPM Options" ;
- OKButton BTN_OK
- {
- Pos = MAP_APPFONT ( 73 , 6 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- DefButton = TRUE ;
- };
- CancelButton BTN_CANCEL
- {
- Pos = MAP_APPFONT ( 73 , 23 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- HelpButton BTN_HELP
- {
- Pos = MAP_APPFONT ( 73 , 43 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- FixedLine GRP_FORMAT
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 60 , 8 ) ;
- Text [ en-US ] = "File format";
- };
- RadioButton RB_RAW
- {
- Pos = MAP_APPFONT ( 12 , 14 ) ;
- Size = MAP_APPFONT ( 45 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Binary";
- };
- RadioButton RB_ASCII
- {
- Pos = MAP_APPFONT ( 12 , 28 ) ;
- Size = MAP_APPFONT ( 45 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Text";
- };
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/goodies/source/filter.vcl/eppm/eppm.cxx b/goodies/source/filter.vcl/eppm/eppm.cxx
deleted file mode 100644
index d17b4f7777ae..000000000000
--- a/goodies/source/filter.vcl/eppm/eppm.cxx
+++ /dev/null
@@ -1,308 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: eppm.cxx,v $
- * $Revision: 1.12 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/svapp.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <vcl/msgbox.hxx>
-#include <svl/solar.hrc>
-#include <svtools/fltcall.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include "strings.hrc"
-#include "dlgeppm.hrc"
-#include "dlgeppm.hxx"
-
-//============================ PPMWriter ==================================
-
-class PPMWriter {
-
-private:
-
- SvStream* mpOStm; // Die auszugebende PPM-Datei
- USHORT mpOStmOldModus;
-
- BOOL mbStatus;
- sal_Int32 mnMode;
- BitmapReadAccess* mpAcc;
- ULONG mnWidth, mnHeight; // Bildausmass in Pixeln
-
- BOOL ImplWriteHeader();
- void ImplWriteBody();
- void ImplWriteNumber( sal_Int32 );
-
- com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
-
-public:
- PPMWriter();
- ~PPMWriter();
-
- BOOL WritePPM( const Graphic& rGraphic, SvStream& rPPM, FilterConfigItem* pFilterConfigItem );
-};
-
-//=================== Methoden von PPMWriter ==============================
-
-PPMWriter::PPMWriter() :
- mbStatus ( TRUE ),
- mpAcc ( NULL )
-{
-}
-
-// ------------------------------------------------------------------------
-
-PPMWriter::~PPMWriter()
-{
-}
-
-// ------------------------------------------------------------------------
-
-BOOL PPMWriter::WritePPM( const Graphic& rGraphic, SvStream& rPPM, FilterConfigItem* pFilterConfigItem )
-{
-
- mpOStm = &rPPM;
-
- if ( pFilterConfigItem )
- {
- mnMode = pFilterConfigItem->ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "FileFormat" ) ), 0 );
-
- xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
- if ( xStatusIndicator.is() )
- {
- rtl::OUString aMsg;
- xStatusIndicator->start( aMsg, 100 );
- }
- }
-
- BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
- Bitmap aBmp = aBmpEx.GetBitmap();
- aBmp.Convert( BMP_CONVERSION_24BIT );
-
- mpOStmOldModus = mpOStm->GetNumberFormatInt();
- mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
-
- mpAcc = aBmp.AcquireReadAccess();
- if( mpAcc )
- {
- if ( ImplWriteHeader() )
- {
- ImplWriteBody();
- }
- aBmp.ReleaseAccess( mpAcc );
- }
- else
- mbStatus = FALSE;
-
- mpOStm->SetNumberFormatInt( mpOStmOldModus );
-
- if ( xStatusIndicator.is() )
- xStatusIndicator->end();
-
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-BOOL PPMWriter::ImplWriteHeader()
-{
- mnWidth = mpAcc->Width();
- mnHeight = mpAcc->Height();
- if ( mnWidth && mnHeight )
- {
- if ( mnMode == 0 )
- *mpOStm << "P6\x0a";
- else
- *mpOStm << "P3\x0a";
-
- ImplWriteNumber( mnWidth );
- *mpOStm << (BYTE)32;
- ImplWriteNumber( mnHeight );
- *mpOStm << (BYTE)32;
- ImplWriteNumber( 255 ); // max. col.
- *mpOStm << (BYTE)10;
- }
- else
- mbStatus = FALSE;
-
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-void PPMWriter::ImplWriteBody()
-{
- if ( mnMode == 0 )
- {
- for ( ULONG y = 0; y < mnHeight; y++ )
- {
- for ( ULONG x = 0; x < mnWidth; x++ )
- {
- const BitmapColor& rColor = mpAcc->GetPixel( y, x );
- *mpOStm << rColor.GetRed();
- *mpOStm << rColor.GetGreen();
- *mpOStm << rColor.GetBlue();
- }
- }
- }
- else
- {
- for ( ULONG y = 0; y < mnHeight; y++ )
- {
- int nCount = 70;
- for ( ULONG x = 0; x < mnWidth; x++ )
- {
- BYTE i, nDat[3], nNumb;
- if ( nCount < 0 )
- {
- nCount = 69;
- *mpOStm << (BYTE)10;
- }
- nDat[0] = mpAcc->GetPixel( y, x ).GetRed();
- nDat[1] = mpAcc->GetPixel( y, x ).GetGreen();
- nDat[2] = mpAcc->GetPixel( y, x ).GetBlue();
- for ( i = 0; i < 3; i++ )
- {
- nNumb = nDat[ i ] / 100;
- if ( nNumb )
- {
- *mpOStm << (BYTE)( nNumb + '0' );
- nDat[ i ] -= ( nNumb * 100 );
- nNumb = nDat[ i ] / 10;
- *mpOStm << (BYTE)( nNumb + '0' );
- nDat[ i ] -= ( nNumb * 10 );
- *mpOStm << (BYTE)( nDat[ i ] + '0' );
- nCount -= 4;
- }
- else
- {
- nNumb = nDat[ i ] / 10;
- if ( nNumb )
- {
- *mpOStm << (BYTE)( nNumb + '0' );
- nDat[ i ] -= ( nNumb * 10 );
- *mpOStm << (BYTE)( nDat[ i ] + '0' );
- nCount -= 3;
- }
- else
- {
- *mpOStm << (BYTE)( nDat[ i ] + '0' );
- nCount -= 2;
- }
- }
- *mpOStm << (BYTE)' ';
- }
- }
- *mpOStm << (BYTE)10;
- }
- }
-}
-
-// ------------------------------------------------------------------------
-// eine Dezimalzahl im ASCII format wird in den Stream geschrieben
-
-void PPMWriter::ImplWriteNumber( sal_Int32 nNumber )
-{
- const ByteString aNum( ByteString::CreateFromInt32( nNumber ) );
-
- for( sal_Int16 n = 0, nLen = aNum.Len(); n < nLen; n++ )
- *mpOStm << aNum.GetChar( n );
-
-}
-
-// ------------------------------------------------------------------------
-
-// ---------------------
-// - exported function -
-// ---------------------
-
-extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
-{
- PPMWriter aPPMWriter;
- return aPPMWriter.WritePPM( rGraphic, rStream, pFilterConfigItem );
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" BOOL __LOADONCALLAPI DoExportDialog( FltCallDialogParameter& rPara )
-{
- BOOL bRet = FALSE;
-
- if ( rPara.pWindow )
- {
- ByteString aResMgrName( "epp" );
- ResMgr* pResMgr;
-
- pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
-
- if( pResMgr )
- {
- rPara.pResMgr = pResMgr;
- bRet = ( DlgExportEPPM( rPara ).Execute() == RET_OK );
- delete pResMgr;
- }
- else
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-#ifndef GCC
-#endif
-
-// ------------------------------------------------------------------------
-
-// ---------------
-// - Win16 trash -
-// ---------------
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0;
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
- if ( nHeap )
- UnlockData( 0 );
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
diff --git a/goodies/source/filter.vcl/eppm/eppmstr.src b/goodies/source/filter.vcl/eppm/eppmstr.src
deleted file mode 100644
index 2cf556cf0bc1..000000000000
--- a/goodies/source/filter.vcl/eppm/eppmstr.src
+++ /dev/null
@@ -1,38 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: eppmstr.src,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#include "strings.hrc"
-
-// Key fuer den Dialog
-String KEY_FORMAT
-{
- Text = "FileFormat";
-};
diff --git a/goodies/source/filter.vcl/eppm/exports.map b/goodies/source/filter.vcl/eppm/exports.map
deleted file mode 100644
index 0462b75b7b43..000000000000
--- a/goodies/source/filter.vcl/eppm/exports.map
+++ /dev/null
@@ -1,8 +0,0 @@
-PPMEXPORTER_1_0 {
- global:
- GraphicExport;
- DoExportDialog;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/eppm/makefile.mk b/goodies/source/filter.vcl/eppm/makefile.mk
deleted file mode 100644
index b40f9d897b8a..000000000000
--- a/goodies/source/filter.vcl/eppm/makefile.mk
+++ /dev/null
@@ -1,80 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=eppm
-TARGET2=epp
-DEPTARGET=veppm
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-
-SRS1NAME=$(TARGET)
-SRC1FILES= dlgeppm.src \
- eppmstr.src
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/eppm.obj \
- $(SLO)$/dlgeppm.obj
-.ENDIF
-# ==========================================================================
-
-RESLIB1NAME=$(TARGET2)
-RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-.IF "$(L10N_framework)"==""
-SHL1TARGET= epp$(DLLPOSTFIX)
-SHL1IMPLIB= eppm
-SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
-
-SHL1LIBS= $(SLB)$/eppm.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/eppm.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/eppm/strings.hrc b/goodies/source/filter.vcl/eppm/strings.hrc
deleted file mode 100644
index 1e280524839a..000000000000
--- a/goodies/source/filter.vcl/eppm/strings.hrc
+++ /dev/null
@@ -1,30 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: strings.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#define KEY_FORMAT 256
diff --git a/goodies/source/filter.vcl/eps/dlgeps.cxx b/goodies/source/filter.vcl/eps/dlgeps.cxx
deleted file mode 100644
index 042b979f4ecd..000000000000
--- a/goodies/source/filter.vcl/eps/dlgeps.cxx
+++ /dev/null
@@ -1,209 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeps.cxx,v $
- * $Revision: 1.14 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#ifndef GCC
-#endif
-
-#include <tools/ref.hxx>
-#include <vcl/msgbox.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include "dlgeps.hxx"
-#include "dlgeps.hrc"
-#include "strings.hrc"
-
-/*************************************************************************
-|*
-|* Ctor
-|*
-\************************************************************************/
-
-DlgExportEPS::DlgExportEPS( FltCallDialogParameter& rPara ) :
- ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EPS, *rPara.pResMgr ) ),
- rFltCallPara ( rPara ),
- aGrpPreview ( this, ResId( GRP_PREVIEW, *rPara.pResMgr ) ),
- aCBPreviewTiff ( this, ResId( CB_PREVIEW_TIFF, *rPara.pResMgr ) ),
- aCBPreviewEPSI ( this, ResId( CB_PREVIEW_EPSI, *rPara.pResMgr ) ),
- aGrpVersion ( this, ResId( GRP_VERSION, *rPara.pResMgr ) ),
- aRBLevel1 ( this, ResId( RB_LEVEL1, *rPara.pResMgr ) ),
- aRBLevel2 ( this, ResId( RB_LEVEL2, *rPara.pResMgr ) ),
- aGrpColor ( this, ResId( GRP_COLOR, *rPara.pResMgr ) ),
- aRBColor ( this, ResId( RB_COLOR, *rPara.pResMgr ) ),
- aRBGrayscale ( this, ResId( RB_GRAYSCALE, *rPara.pResMgr ) ),
- aGrpCompression ( this, ResId( GRP_COMPRESSION, *rPara.pResMgr ) ),
- aRBCompressionLZW ( this, ResId( RB_COMPRESSION_LZW, *rPara.pResMgr ) ),
- aRBCompressionNone ( this, ResId( RB_COMPRESSION_NONE, *rPara.pResMgr ) ),
- aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
- aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
- aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
- pMgr ( rPara.pResMgr )
-{
- FreeResource();
-
- String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/EPS" ) );
- pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
-
- // Config-Parameter lesen
- String sPreview( RTL_CONSTASCII_USTRINGPARAM( "Preview" ) );
- String sVersion( RTL_CONSTASCII_USTRINGPARAM( "Version" ) );
- String sColorFormat( RTL_CONSTASCII_USTRINGPARAM( "ColorFormat" ) );
- String sCompressionMode( RTL_CONSTASCII_USTRINGPARAM( "CompressionMode" ) );
- String sTextMode( RTL_CONSTASCII_USTRINGPARAM( "TextMode" ) );
-
- sal_Int32 nPreview = pConfigItem->ReadInt32( sPreview, 0 );
- sal_Int32 nVersion = pConfigItem->ReadInt32( sVersion, 2 );
- sal_Int32 nColor = pConfigItem->ReadInt32( sColorFormat, 0 );
- sal_Int32 nCompr = pConfigItem->ReadInt32( sCompressionMode, 2 );
-
- /* SJ: The following line is not superfluous, reading the item will also #106652#
- create the corresponding FilterData Property. Since all filter
- are no longer accessing the configuration itself, we have fill the
- FilterData sequence with all available configuration items */
- pConfigItem->ReadInt32( sTextMode, 0 );
-
- BOOL bCheck = FALSE;
- if ( nPreview & 1 )
- bCheck = TRUE;
- aCBPreviewTiff.Check( bCheck );
- if ( nPreview & 2 )
- bCheck = TRUE;
- aCBPreviewEPSI.Check( bCheck );
-
- bCheck = FALSE;
- if ( nVersion == 1 )
- bCheck ^= TRUE;
- aRBLevel1.Check( bCheck );
- bCheck ^= TRUE;
- aRBLevel2.Check( bCheck );
-
- bCheck = FALSE;
- if ( nColor == 1 )
- bCheck ^= TRUE;
- aRBColor.Check( bCheck );
- bCheck ^= TRUE;
- aRBGrayscale.Check( bCheck );
-
- bCheck = FALSE;
- if ( nCompr == 1 )
- bCheck ^= TRUE;
- aRBCompressionLZW.Check( bCheck );
- bCheck ^= TRUE;
- aRBCompressionNone.Check( bCheck );
-
- if ( aRBLevel1.IsChecked() )
- {
- aRBColor.Disable();
- aRBGrayscale.Disable();
- aRBCompressionNone.Disable();
- aRBCompressionLZW.Disable();
- aRBCompressionNone.Disable();
- }
-
- aBtnOK.SetClickHdl( LINK( this, DlgExportEPS, OK ) );
- aRBLevel1.SetClickHdl( LINK( this, DlgExportEPS, LEVEL1 ) );
- aRBLevel2.SetClickHdl( LINK( this, DlgExportEPS, LEVEL2 ) );
-}
-
-DlgExportEPS::~DlgExportEPS()
-{
- delete pConfigItem;
-}
-
-/*************************************************************************
-|*
-|* Speichert eingestellte Werte in ini-Datei
-|*
-\************************************************************************/
-
-IMPL_LINK( DlgExportEPS, OK, void *, EMPTYARG )
-{
-
- // Config-Parameter schreiben
- sal_Int32 nCheck = 0;
- if ( aCBPreviewTiff.IsChecked() )
- nCheck++;
- if ( aCBPreviewEPSI.IsChecked() )
- nCheck += 2;
-
- String sPreview( RTL_CONSTASCII_USTRINGPARAM( "Preview" ) );
- pConfigItem->WriteInt32( sPreview, nCheck );
-
- nCheck = 1;
- if ( aRBLevel2.IsChecked() )
- nCheck++;
- String sVersion( RTL_CONSTASCII_USTRINGPARAM( "Version" ) );
- pConfigItem->WriteInt32( sVersion, nCheck );
-
- nCheck = 1;
- if ( aRBGrayscale.IsChecked() )
- nCheck++;
- String sColorFormat( RTL_CONSTASCII_USTRINGPARAM( "ColorFormat" ) );
- pConfigItem->WriteInt32( sColorFormat, nCheck );
-
- nCheck = 1;
- if ( aRBCompressionNone.IsChecked() )
- nCheck++;
- String sCompressionMode( RTL_CONSTASCII_USTRINGPARAM( "CompressionMode" ) );
- pConfigItem->WriteInt32( sCompressionMode, nCheck );
-
- rFltCallPara.aFilterData = pConfigItem->GetFilterData();
- EndDialog( RET_OK );
-
- return 0;
-}
-
-//------------------------------------------------------------------------
-
-IMPL_LINK( DlgExportEPS, LEVEL1, void*, EMPTYARG )
-{
- if ( aRBLevel1.IsChecked() )
- {
- aRBColor.Disable();
- aRBGrayscale.Disable();
- aRBCompressionLZW.Disable();
- aRBCompressionNone.Disable();
- }
- return 0;
-}
-
-//------------------------------------------------------------------------
-
-IMPL_LINK( DlgExportEPS, LEVEL2, void*, EMPTYARG )
-{
- if ( aRBLevel2.IsChecked() )
- {
- aRBColor.Enable();
- aRBGrayscale.Enable();
- aRBCompressionLZW.Enable();
- aRBCompressionNone.Enable();
- }
- return 0;
-}
diff --git a/goodies/source/filter.vcl/eps/dlgeps.hrc b/goodies/source/filter.vcl/eps/dlgeps.hrc
deleted file mode 100644
index c2c357cf62d3..000000000000
--- a/goodies/source/filter.vcl/eps/dlgeps.hrc
+++ /dev/null
@@ -1,46 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeps.hrc,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "goodies.hrc"
-
-#define BTN_OK 1
-#define BTN_CANCEL 1
-#define BTN_HELP 1
-#define GRP_PREVIEW 1
-#define GRP_VERSION 2
-#define GRP_COLOR 3
-#define GRP_COMPRESSION 4
-#define CB_PREVIEW_TIFF 1
-#define CB_PREVIEW_EPSI 2
-#define RB_LEVEL1 1
-#define RB_LEVEL2 2
-#define RB_COLOR 3
-#define RB_GRAYSCALE 4
-#define RB_COMPRESSION_LZW 5
-#define RB_COMPRESSION_NONE 6
diff --git a/goodies/source/filter.vcl/eps/dlgeps.hxx b/goodies/source/filter.vcl/eps/dlgeps.hxx
deleted file mode 100644
index 804c539766fa..000000000000
--- a/goodies/source/filter.vcl/eps/dlgeps.hxx
+++ /dev/null
@@ -1,85 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeps.hxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _DLGEPS_HXX_
-#define _DLGEPS_HXX_
-#include <svtools/fltcall.hxx>
-#include <vcl/dialog.hxx>
-#include <vcl/button.hxx>
-#include <vcl/fixed.hxx>
-#include <vcl/field.hxx>
-#include <vcl/lstbox.hxx>
-#include <svtools/stdctrl.hxx>
-
-
-/*************************************************************************
-|*
-|* Dialog zum Einstellen von Filteroptionen
-|*
-\************************************************************************/
-
-class FilterConfigItem;
-class ResMgr;
-
-class DlgExportEPS : public ModalDialog
-{
-private:
-
- FltCallDialogParameter& rFltCallPara;
-
- FixedLine aGrpPreview;
- CheckBox aCBPreviewTiff;
- CheckBox aCBPreviewEPSI;
- FixedLine aGrpVersion;
- RadioButton aRBLevel1;
- RadioButton aRBLevel2;
- FixedLine aGrpColor;
- RadioButton aRBColor;
- RadioButton aRBGrayscale;
- FixedLine aGrpCompression;
- RadioButton aRBCompressionLZW;
- RadioButton aRBCompressionNone;
- OKButton aBtnOK;
- CancelButton aBtnCancel;
- HelpButton aBtnHelp;
-
- FilterConfigItem* pConfigItem;
- ResMgr* pMgr;
-
- DECL_LINK( OK, void * );
- DECL_LINK( LEVEL1, void* );
- DECL_LINK( LEVEL2, void* );
-
-public:
- DlgExportEPS( FltCallDialogParameter& rPara );
- ~DlgExportEPS();
-};
-
-#endif // _DLGEPS_HXX_
diff --git a/goodies/source/filter.vcl/eps/dlgeps.src b/goodies/source/filter.vcl/eps/dlgeps.src
deleted file mode 100644
index 278518762441..000000000000
--- a/goodies/source/filter.vcl/eps/dlgeps.src
+++ /dev/null
@@ -1,163 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dlgeps.src,v $
- * $Revision: 1.47 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "dlgeps.hrc"
-ModalDialog DLG_EXPORT_EPS
-{
- OutputSize = TRUE ;
- SVLook = TRUE ;
- Size = MAP_APPFONT ( 230, 161 ) ;
- Moveable = TRUE ;
- Closeable = TRUE ;
- Text [ en-US ] = "EPS Export Options";
- OKButton BTN_OK
- {
- Pos = MAP_APPFONT ( 174 , 6 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- DefButton = TRUE ;
- };
- CancelButton BTN_CANCEL
- {
- Pos = MAP_APPFONT ( 174, 23 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- HelpButton BTN_HELP
- {
- Pos = MAP_APPFONT ( 174 , 43 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
-
- FixedLine GRP_PREVIEW
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 162 , 8 ) ;
- Text [ en-US ] = "Preview";
- };
- CheckBox CB_PREVIEW_TIFF
- {
- Pos = MAP_APPFONT ( 12, 14 ) ;
- Size = MAP_APPFONT ( 150 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "Image ~preview (TIFF)";
- };
- CheckBox CB_PREVIEW_EPSI
- {
- Pos = MAP_APPFONT ( 12 , 28 ) ;
- Size = MAP_APPFONT ( 150, 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Interchange (EPSI)";
- };
- FixedLine GRP_VERSION
- {
- Pos = MAP_APPFONT ( 6, 41 ) ;
- Size = MAP_APPFONT ( 162 , 8 ) ;
- Text [ en-US ] = "Version";
- };
- RadioButton RB_LEVEL1
- {
- Pos = MAP_APPFONT ( 12 , 52 ) ;
- Size = MAP_APPFONT ( 150 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "Level ~1";
- };
- RadioButton RB_LEVEL2
- {
- Pos = MAP_APPFONT ( 12 , 66 ) ;
- Size = MAP_APPFONT ( 150, 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "Level ~2";
- };
-
- FixedLine GRP_COLOR
- {
- Pos = MAP_APPFONT ( 6 , 79 ) ;
- Size = MAP_APPFONT ( 162 , 8 ) ;
- Text [ en-US ] = "Color format";
- };
- RadioButton RB_COLOR
- {
- Pos = MAP_APPFONT ( 12 , 90 ) ;
- Size = MAP_APPFONT ( 150, 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Color";
- };
- RadioButton RB_GRAYSCALE
- {
- Pos = MAP_APPFONT ( 12 , 104 ) ;
- Size = MAP_APPFONT ( 150, 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "~Grayscale";
- };
-
- FixedLine GRP_COMPRESSION
- {
- Pos = MAP_APPFONT ( 6 , 117 ) ;
- Size = MAP_APPFONT ( 162 , 8 ) ;
- Text [ en-US ] = "Compression";
- };
- RadioButton RB_COMPRESSION_LZW
- {
- Pos = MAP_APPFONT ( 12, 128 );
- Size = MAP_APPFONT ( 150, 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "LZW encoding";
- };
- RadioButton RB_COMPRESSION_NONE
- {
- Pos = MAP_APPFONT ( 12, 141 ) ;
- Size = MAP_APPFONT ( 150, 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "None";
- };
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/goodies/source/filter.vcl/eps/eps.cxx b/goodies/source/filter.vcl/eps/eps.cxx
deleted file mode 100644
index dc8e407b178e..000000000000
--- a/goodies/source/filter.vcl/eps/eps.cxx
+++ /dev/null
@@ -1,2743 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: eps.cxx,v $
- * $Revision: 1.37 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/sv.h>
-#include <tools/stream.hxx>
-#include <tools/bigint.hxx>
-#include <tools/poly.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/metaact.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <vcl/region.hxx>
-#include <vcl/metric.hxx>
-#include <vcl/font.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/msgbox.hxx>
-#include <vcl/cvtgrf.hxx>
-#include <vcl/gradient.hxx>
-#include <svl/solar.hrc>
-#include <svtools/fltcall.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include <vcl/graphictools.hxx>
-#include "strings.hrc"
-#include "dlgeps.hrc"
-#include "dlgeps.hxx"
-
-#include <math.h>
-
-#define POSTSCRIPT_BOUNDINGSEARCH 0x1000 // we only try to get the BoundingBox
- // in the first 4096 bytes
-
-#define EPS_PREVIEW_TIFF 1
-#define EPS_PREVIEW_EPSI 2
-
-#define PS_LINESIZE 70 // maximum number of characters a line in the output
-
-#define PS_NONE 0 // formating mode: action which is inserted behind the output
-#define PS_SPACE 1
-#define PS_RET 2
-#define PS_WRAP 4
-
-// -----------------------------Feld-Typen-------------------------------
-
-struct ChrSet
-{
- struct ChrSet * pSucc;
- BYTE nSet;
- String aName;
- FontWeight eWeight;
-};
-
-struct StackMember
-{
- struct StackMember * pSucc;
- Color aGlobalCol;
- BOOL bLineCol;
- Color aLineCol;
- BOOL bFillCol;
- Color aFillCol;
- Color aTextCol;
- BOOL bTextFillCol;
- Color aTextFillCol;
- Color aBackgroundCol;
- Font aFont;
- TextAlign eTextAlign;
-
- double fLineWidth;
- double fMiterLimit;
- SvtGraphicStroke::CapType eLineCap;
- SvtGraphicStroke::JoinType eJoinType;
- SvtGraphicStroke::DashArray aDashArray;
-};
-
-struct PSLZWCTreeNode
-{
-
- PSLZWCTreeNode* pBrother; // naechster Knoten, der den selben Vater hat
- PSLZWCTreeNode* pFirstChild; // erster Sohn
- USHORT nCode; // Der Code fuer den String von Pixelwerten, der sich ergibt, wenn
- USHORT nValue; // Der Pixelwert
-};
-
-class PSWriter
-{
-private:
- BOOL mbStatus;
- ULONG mnLevelWarning; // number of embedded eps files which was not exported
- ULONG mnLastPercent; // Mit welcher Zahl pCallback zuletzt aufgerufen wurde.
- UINT32 mnLatestPush; // offset auf streamposition, an der zuletzt gepusht wurde
-
- long mnLevel; // dialog options
- sal_Bool mbGrayScale;
- sal_Bool mbCompression;
- sal_Int32 mnPreview;
- sal_Int32 mnTextMode;
-
- SvStream* mpPS;
- const GDIMetaFile* pMTF;
- GDIMetaFile* pAMTF; // only created if Graphics is not a Metafile
- VirtualDevice aVDev;
-
- double nBoundingX1; // this represents the bounding box
- double nBoundingY1;
- double nBoundingX2;
- double nBoundingY2;
- //
- StackMember* pGDIStack;
- ULONG mnCursorPos; // aktuelle Cursorposition im Output
- Color aColor; // aktuelle Farbe die fuer den Output benutzt wird
- BOOL bLineColor;
- Color aLineColor; // aktuelle GDIMetafile Farbeinstellungen
- BOOL bFillColor; //
- Color aFillColor; //
- Color aTextColor; //
- BOOL bTextFillColor; //
- Color aTextFillColor; //
- Color aBackgroundColor; //
- BOOL bRegionChanged;
- TextAlign eTextAlign; //
-
- double fLineWidth;
- double fMiterLimit;
- SvtGraphicStroke::CapType eLineCap;
- SvtGraphicStroke::JoinType eJoinType;
- SvtGraphicStroke::DashArray aDashArray;
-
- Font maFont;
- Font maLastFont;
- BYTE nChrSet;
- ChrSet* pChrSetList; // Liste der Character-Sets
- BYTE nNextChrSetId; // die erste unbenutzte ChrSet-Id
-
- PSLZWCTreeNode* pTable; // LZW compression data
- PSLZWCTreeNode* pPrefix; // the compression is as same as the TIFF compression
- USHORT nDataSize;
- USHORT nClearCode;
- USHORT nEOICode;
- USHORT nTableSize;
- USHORT nCodeSize;
- ULONG nOffset;
- ULONG dwShift;
-
- com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
-
- void ImplWriteProlog( const Graphic* pPreviewEPSI = NULL );
- void ImplWriteEpilog();
- void ImplWriteActions( const GDIMetaFile& rMtf, VirtualDevice& rVDev );
-
- // this method makes LF's, space inserting and word wrapping as used in all nMode
- // parameters
- inline void ImplExecMode( ULONG nMode );
-
- // writes char[] + LF to stream
- inline void ImplWriteLine( const char*, ULONG nMode = PS_RET );
-
- // writes ( nNumb / 10^nCount ) in ASCII format to stream
- void ImplWriteF( sal_Int32 nNumb, ULONG nCount = 3, ULONG nMode = PS_SPACE );
-
- // writes a double in ASCII format to stream
- void ImplWriteDouble( double, ULONG nMode = PS_SPACE );
-
- // writes a long in ASCII format to stream
- void ImplWriteLong( sal_Int32 nNumb, ULONG nMode = PS_SPACE );
-
- // writes a byte in ASCII format to stream
- void ImplWriteByte( BYTE nNumb, ULONG nMode = PS_SPACE );
-
- // writes a byte in ASCII (hex) format to stream
- void ImplWriteHexByte( BYTE nNumb, ULONG nMode = PS_WRAP );
-
- // writes nNumb as number from 0.000 till 1.000 in ASCII format to stream
- void ImplWriteB1( BYTE nNumb, ULONG nMode = PS_SPACE );
-
- inline void ImplWritePoint( const Point&, sal_uInt32 nMode = PS_SPACE );
- void ImplMoveTo( const Point&, sal_uInt32 nMode = PS_SPACE );
- void ImplLineTo( const Point&, sal_uInt32 nMode = PS_SPACE );
- void ImplCurveTo( const Point& rP1, const Point& rP2, const Point& rP3, sal_uInt32 nMode = PS_SPACE );
- void ImplTranslate( const double& fX, const double& fY, sal_uInt32 nMode = PS_RET );
- void ImplScale( const double& fX, const double& fY, sal_uInt32 nMode = PS_RET );
-
- void ImplWriteLine( const Polygon & rPolygon );
- void ImplAddPath( const Polygon & rPolygon );
- void ImplWriteLineInfo( double fLineWidth, double fMiterLimit, SvtGraphicStroke::CapType eLineCap,
- SvtGraphicStroke::JoinType eJoinType, SvtGraphicStroke::DashArray& rDashArray );
- void ImplWriteLineInfo( const LineInfo& rLineInfo );
- void ImplRect( const Rectangle & rRectangle );
- void ImplRectFill ( const Rectangle & rRectangle );
- void ImplWriteGradient( const PolyPolygon& rPolyPoly, const Gradient& rGradient, VirtualDevice& rVDev );
- void ImplIntersect( const PolyPolygon& rPolyPoly );
- void ImplPolyPoly( const PolyPolygon & rPolyPolygon, sal_Bool bTextOutline = sal_False );
- void ImplPolyLine( const Polygon & rPolygon );
-
- void ImplSetClipRegion( Region& rRegion );
- void ImplBmp( Bitmap*, Bitmap*, const Point &, double nWidth, double nHeight );
- void ImplText( const String& rUniString, const Point& rPos, const INT32* pDXArry, sal_Int32 nWidth, VirtualDevice& rVDev );
- void ImplSetAttrForText( const Point & rPoint );
- void ImplWriteCharacter( sal_Char );
- void ImplWriteString( const ByteString&, VirtualDevice& rVDev, const INT32* pDXArry = NULL, BOOL bStretch = FALSE );
- void ImplDefineFont( const char*, const char* );
-
- void ImplClosePathDraw( ULONG nMode = PS_RET );
- void ImplPathDraw();
-
- inline void ImplWriteLineColor( ULONG nMode = PS_RET );
- inline void ImplWriteFillColor( ULONG nMode = PS_RET );
- inline void ImplWriteTextColor( ULONG nMode = PS_RET );
- inline void ImplWriteTextFillColor( ULONG nMode = PS_RET );
- void ImplWriteColor( ULONG nMode );
-
- double ImplGetScaling( const MapMode& );
- void ImplGetMapMode( const MapMode& );
- BOOL ImplGetBoundingBox( double* nNumb, BYTE* pSource, ULONG nSize );
- BYTE* ImplSearchEntry( BYTE* pSource, BYTE* pDest, ULONG nComp, ULONG nSize );
- // LZW methods
- void StartCompression();
- void Compress( BYTE nSrc );
- void EndCompression();
- inline void WriteBits( USHORT nCode, USHORT nCodeLen );
-
-public:
- BOOL WritePS( const Graphic& rGraphic, SvStream& rTargetStream, FilterConfigItem* );
- PSWriter();
- ~PSWriter();
-};
-
-//========================== Methoden von PSWriter ==========================
-
-//---------------------------------------------------------------------------------
-
-PSWriter::PSWriter()
-{
- pAMTF = NULL;
-}
-
-
-PSWriter::~PSWriter()
-{
- delete pAMTF;
-}
-
-//---------------------------------------------------------------------------------
-
-BOOL PSWriter::WritePS( const Graphic& rGraphic, SvStream& rTargetStream, FilterConfigItem* pFilterConfigItem )
-{
- UINT32 nStreamPosition = 0, nPSPosition = 0; // -Wall warning, unset, check
-
- mbStatus = TRUE;
- mnPreview = 0;
- mnLevelWarning = 0;
- mnLastPercent = 0;
- mnLatestPush = 0xEFFFFFFE;
-
- if ( pFilterConfigItem )
- {
- xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
- if ( xStatusIndicator.is() )
- {
- rtl::OUString aMsg;
- xStatusIndicator->start( aMsg, 100 );
- }
- }
-
- mpPS = &rTargetStream;
- mpPS->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
-
- // default values for the dialog options
- mnLevel = 2;
- mbGrayScale = FALSE;
- mbCompression = TRUE;
- mnTextMode = 0; // default0 : export glyph outlines
-
- // try to get the dialog selection
- if ( pFilterConfigItem )
- {
- ByteString aResMgrName( "eps" );
- ResMgr* pResMgr;
-
- pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
-
- if( pResMgr )
- {
- String aPreviewStr( RTL_CONSTASCII_USTRINGPARAM( "Preview" ) );
- String aVersionStr( RTL_CONSTASCII_USTRINGPARAM( "Version" ) );
- String aColorStr( RTL_CONSTASCII_USTRINGPARAM( "ColorFormat" ) );
- String aComprStr( RTL_CONSTASCII_USTRINGPARAM( "CompressionMode" ) );
- mnPreview = pFilterConfigItem->ReadInt32( aPreviewStr, 1 );
- mnLevel = pFilterConfigItem->ReadInt32( aVersionStr, 2 );
- if ( mnLevel != 1 )
- mnLevel = 2;
- mbGrayScale = pFilterConfigItem->ReadInt32( aColorStr, 1 ) == 2;
- mbCompression = pFilterConfigItem->ReadInt32( aComprStr, 1 ) == 1;
- String sTextMode( RTL_CONSTASCII_USTRINGPARAM( "TextMode" ) );
- mnTextMode = pFilterConfigItem->ReadInt32( sTextMode, 0 );
- if ( mnTextMode > 2 )
- mnTextMode = 0;
- delete pResMgr;
- }
- }
-
- // compression is not available for Level 1
- if ( mnLevel == 1 )
- {
- mbGrayScale = TRUE;
- mbCompression = FALSE;
- }
-
- if ( mnPreview & EPS_PREVIEW_TIFF )
- {
- rTargetStream << (UINT32)0xC6D3D0C5;
- nStreamPosition = rTargetStream.Tell();
- rTargetStream << (UINT32)0 << (UINT32)0 << (UINT32)0 << (UINT32)0
- << nStreamPosition + 26 << (UINT32)0 << (UINT16)0xffff;
-
- UINT32 nErrCode;
- if ( mbGrayScale )
- {
- BitmapEx aTempBitmapEx( rGraphic.GetBitmapEx() );
- aTempBitmapEx.Convert( BMP_CONVERSION_8BIT_GREYS );
- nErrCode = GraphicConverter::Export( rTargetStream, aTempBitmapEx, CVT_TIF ) ;
- }
- else
- nErrCode = GraphicConverter::Export( rTargetStream, rGraphic, CVT_TIF ) ;
-
- if ( nErrCode == ERRCODE_NONE )
- {
- rTargetStream.Seek( STREAM_SEEK_TO_END );
- nPSPosition = rTargetStream.Tell();
- rTargetStream.Seek( nStreamPosition + 20 );
- rTargetStream << nPSPosition - 30; // size of tiff gfx
- rTargetStream.Seek( nPSPosition );
- }
- else
- {
- mnPreview &=~ EPS_PREVIEW_TIFF;
- rTargetStream.Seek( nStreamPosition - 4 );
- }
- }
-
- // global default value setting
- ChrSet* pCS;
- StackMember* pGS;
-
- if ( rGraphic.GetType() == GRAPHIC_GDIMETAFILE )
- pMTF = &rGraphic.GetGDIMetaFile();
- else
- pMTF = pAMTF = new GDIMetaFile( rGraphic.GetGDIMetaFile() );
- aVDev.SetMapMode( pMTF->GetPrefMapMode() );
- nBoundingX1 = nBoundingY1 = 0;
- nBoundingX2 = pMTF->GetPrefSize().Width();
- nBoundingY2 = pMTF->GetPrefSize().Height();
-
- pGDIStack = NULL;
- aColor = Color( COL_TRANSPARENT );
- bLineColor = TRUE;
- aLineColor = Color( COL_BLACK );
- bFillColor = TRUE;
- aFillColor = Color( COL_WHITE );
- bTextFillColor = TRUE;
- aTextFillColor = Color( COL_BLACK );
- fLineWidth = 1;
- fMiterLimit = 10;
- eLineCap = SvtGraphicStroke::capButt;
- eJoinType = SvtGraphicStroke::joinMiter;
- aBackgroundColor = Color( COL_WHITE );
- eTextAlign = ALIGN_BASELINE;
- bRegionChanged = FALSE;
-
- nChrSet = 0x00;
- pChrSetList = NULL;
- nNextChrSetId = 1;
-
- if( pMTF->GetActionCount() )
- {
- ImplWriteProlog( ( mnPreview & EPS_PREVIEW_EPSI ) ? &rGraphic : NULL );
- mnCursorPos = 0;
- ImplWriteActions( *pMTF, aVDev );
- ImplWriteEpilog();
- if ( mnPreview & EPS_PREVIEW_TIFF )
- {
- UINT32 nPosition = rTargetStream.Tell();
- rTargetStream.Seek( nStreamPosition );
- rTargetStream << nPSPosition;
- rTargetStream << nPosition - nPSPosition;
- rTargetStream.Seek( nPosition );
- }
- while( pChrSetList )
- {
- pCS=pChrSetList;
- pChrSetList=pCS->pSucc;
- delete pCS;
- }
- while( pGDIStack )
- {
- pGS=pGDIStack;
- pGDIStack=pGS->pSucc;
- delete pGS;
- }
- }
- else
- mbStatus = FALSE;
-
- if ( mbStatus && mnLevelWarning && pFilterConfigItem )
- {
- ByteString aResMgrName( "eps" );
- ResMgr* pResMgr;
- pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
- if( pResMgr )
- {
- InfoBox aInfoBox( NULL, String( ResId( KEY_VERSION_CHECK, *pResMgr ) ) );
- aInfoBox.Execute();
- delete pResMgr;
- }
- }
-
- if ( xStatusIndicator.is() )
- xStatusIndicator->end();
-
- return mbStatus;
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteProlog( const Graphic* pPreview )
-{
- ImplWriteLine( "%!PS-Adobe-3.0 EPSF-3.0 " );
- *mpPS << "%%BoundingBox: "; // BoundingBox
- ImplWriteLong( 0 );
- ImplWriteLong( 0 );
- Size aSizePoint = Application::GetDefaultDevice()->LogicToLogic( pMTF->GetPrefSize(),
- pMTF->GetPrefMapMode(), MAP_POINT );
- ImplWriteLong( aSizePoint.Width() );
- ImplWriteLong( aSizePoint.Height() ,PS_RET );
- ImplWriteLine( "%%Pages: 0" );
- ImplWriteLine( "%%Creator: Sun Microsystems, Inc." );
- ImplWriteLine( "%%Title: none" );
- ImplWriteLine( "%%CreationDate: none" );
-
-// defaults
-
- *mpPS << "%%LanguageLevel: "; // Language level
- ImplWriteLong( mnLevel, PS_RET );
- if ( !mbGrayScale && mnLevel == 1 )
- ImplWriteLine( "%%Extensions: CMYK" ); // CMYK extension is to set in color mode in level 1
- ImplWriteLine( "%%EndComments" );
- if ( pPreview && aSizePoint.Width() && aSizePoint.Height() )
- {
- Size aSizeBitmap( ( aSizePoint.Width() + 7 ) & ~7, aSizePoint.Height() );
- Bitmap aTmpBitmap( pPreview->GetBitmap() );
- aTmpBitmap.Scale( aSizeBitmap, BMP_SCALE_INTERPOLATE );
- aTmpBitmap.Convert( BMP_CONVERSION_1BIT_THRESHOLD );
- BitmapReadAccess* pAcc = aTmpBitmap.AcquireReadAccess();
- if ( pAcc )
- {
- *mpPS << "%%BeginPreview: "; // BoundingBox
- ImplWriteLong( aSizeBitmap.Width() );
- ImplWriteLong( aSizeBitmap.Height() );
- *mpPS << "1 ";
- INT32 nLines = aSizeBitmap.Width() / 312;
- if ( ( nLines * 312 ) != aSizeBitmap.Width() )
- nLines++;
- nLines *= aSizeBitmap.Height();
- ImplWriteLong( nLines );
- char nVal;
- INT32 nX, nY, nCount2, nCount = 4;
- const BitmapColor aBlack( pAcc->GetBestMatchingColor( Color( COL_BLACK ) ) );
- for ( nY = 0; nY < aSizeBitmap.Height(); nY++ )
- {
- nCount2 = 0;
- nVal = 0;
- for ( nX = 0; nX < aSizeBitmap.Width(); nX++ )
- {
- if ( !nCount2 )
- {
- ImplExecMode( PS_RET );
- *mpPS << "%";
- nCount2 = 312;
- }
- nVal <<= 1;
- if ( pAcc->GetPixel( nY, nX ) == aBlack )
- nVal |= 1;
- if ( ! ( --nCount ) )
- {
- if ( nVal > 9 )
- nVal += 'A' - 10;
- else
- nVal += '0';
- *mpPS << nVal;
- nVal = 0;
- nCount += 4;
- }
- nCount2--;
- }
- }
- aTmpBitmap.ReleaseAccess( pAcc );
- ImplExecMode( PS_RET );
- ImplWriteLine( "%%EndPreview" );
- }
- }
- ImplWriteLine( "%%BeginProlog" );
- ImplWriteLine( "%%BeginResource: procset SDRes-Prolog 1.0 0" );
-
-// BEGIN EPSF
- ImplWriteLine( "/b4_inc_state save def\n/dict_count countdictstack def\n/op_count count 1 sub def\nuserdict begin" );
- ImplWriteLine( "0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath" );
- ImplWriteLine( "/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if" );
-
- ImplWriteLine( "/bdef {bind def} bind def" ); // der neue operator bdef wird erzeugt
- if ( mbGrayScale )
- ImplWriteLine( "/c {setgray} bdef" );
- else
- ImplWriteLine( "/c {setrgbcolor} bdef" );
- ImplWriteLine( "/l {neg lineto} bdef" );
- ImplWriteLine( "/rl {neg rlineto} bdef" );
- ImplWriteLine( "/lc {setlinecap} bdef" );
- ImplWriteLine( "/lj {setlinejoin} bdef" );
- ImplWriteLine( "/lw {setlinewidth} bdef" );
- ImplWriteLine( "/ml {setmiterlimit} bdef" );
- ImplWriteLine( "/ld {setdash} bdef" );
- ImplWriteLine( "/m {neg moveto} bdef" );
- ImplWriteLine( "/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef" );
- ImplWriteLine( "/r {rotate} bdef" );
- ImplWriteLine( "/t {neg translate} bdef" );
- ImplWriteLine( "/s {scale} bdef" );
- ImplWriteLine( "/sw {show} bdef" );
- ImplWriteLine( "/gs {gsave} bdef" );
- ImplWriteLine( "/gr {grestore} bdef" );
-
- ImplWriteLine( "/f {findfont dup length dict begin" ); // Setfont
- ImplWriteLine( "{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def" );
- ImplWriteLine( "currentdict end /NFont exch definefont pop /NFont findfont} bdef" );
-
- ImplWriteLine( "/p {closepath} bdef" );
- ImplWriteLine( "/sf {scalefont setfont} bdef" );
-
- ImplWriteLine( "/ef {eofill}bdef" ); // close path and fill
- ImplWriteLine( "/pc {closepath stroke}bdef" ); // close path and draw
- ImplWriteLine( "/ps {stroke}bdef" ); // draw current path
- ImplWriteLine( "/pum {matrix currentmatrix}bdef" ); // pushes the current matrix
- ImplWriteLine( "/pom {setmatrix}bdef" ); // pops the matrix
- ImplWriteLine( "/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef" );
- ImplWriteLine( "%%EndResource" );
- ImplWriteLine( "%%EndProlog" );
- ImplWriteLine( "%%BeginSetup" );
- ImplWriteLine( "%%EndSetup" );
- ImplWriteLine( "%%Page: 1 1" );
- ImplWriteLine( "%%BeginPageSetup" );
- ImplWriteLine( "%%EndPageSetup" );
- ImplWriteLine( "pum" );
- ImplScale( (double)aSizePoint.Width() / (double)pMTF->GetPrefSize().Width(), (double)aSizePoint.Height() / (double)pMTF->GetPrefSize().Height() );
- ImplWriteDouble( 0 );
- ImplWriteDouble( -pMTF->GetPrefSize().Height() );
- ImplWriteLine( "t" );
- ImplWriteLine( "/tm matrix currentmatrix def" );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteEpilog()
-{
- ImplTranslate( 0, nBoundingY2 );
- ImplWriteLine( "pom" );
- ImplWriteLine( "count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore" );
-
- ImplWriteLine( "%%PageTrailer" );
- ImplWriteLine( "%%Trailer" );
-
- ImplWriteLine( "%%EOF" );
-}
-
-//---------------------------------------------------------------------------------
-//---------------------------------------------------------------------------------
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteActions( const GDIMetaFile& rMtf, VirtualDevice& rVDev )
-{
- PolyPolygon aFillPath;
-
- for( ULONG nCurAction = 0, nCount = rMtf.GetActionCount(); nCurAction < nCount; nCurAction++ )
- {
- MetaAction* pMA = rMtf.GetAction( nCurAction );
-
- switch( pMA->GetType() )
- {
- case META_NULL_ACTION :
- break;
-
- case META_PIXEL_ACTION :
- {
- Color aOldLineColor( aLineColor );
- aLineColor = ( (const MetaPixelAction*) pMA )->GetColor();
- ImplWriteLineColor( PS_SPACE );
- ImplMoveTo( ( (const MetaPixelAction*)pMA )->GetPoint() );
- ImplLineTo( ( (const MetaPixelAction*)pMA )->GetPoint() );
- ImplPathDraw();
- aLineColor = aOldLineColor;
- }
- break;
-
- case META_POINT_ACTION :
- {
- ImplWriteLineColor( PS_SPACE );
- ImplMoveTo( ( (const MetaPointAction*)pMA )->GetPoint() );
- ImplLineTo( ( (const MetaPointAction*)pMA )->GetPoint() );
- ImplPathDraw();
- }
- break;
-
- case META_LINE_ACTION :
- {
- const LineInfo& rLineInfo = ( ( const MetaLineAction*)pMA )->GetLineInfo();
- ImplWriteLineInfo( rLineInfo );
- if ( bLineColor )
- {
- ImplWriteLineColor( PS_SPACE );
- ImplMoveTo( ( (const MetaLineAction*) pMA )->GetStartPoint() );
- ImplLineTo( ( (const MetaLineAction*) pMA )->GetEndPoint() );
- ImplPathDraw();
- }
- }
- break;
-
- case META_RECT_ACTION :
- {
- ImplRect( ( (const MetaRectAction*) pMA )->GetRect() );
- }
- break;
-
- case META_ROUNDRECT_ACTION :
- ImplRect( ( (const MetaRoundRectAction*) pMA )->GetRect() );
- break;
-
- case META_ELLIPSE_ACTION :
- {
- Rectangle aRect = ( ( (const MetaEllipseAction*) pMA )->GetRect() );
- Point aCenter = aRect.Center();
- Polygon aPoly( aCenter, aRect.GetWidth() / 2, aRect.GetHeight() / 2 );
- PolyPolygon aPolyPoly( aPoly );
- ImplPolyPoly( aPolyPoly );
- }
- break;
-
- case META_ARC_ACTION :
- {
- Polygon aPoly( ( (const MetaArcAction*)pMA )->GetRect(), ( (const MetaArcAction*)pMA )->GetStartPoint(),
- ( (const MetaArcAction*)pMA )->GetEndPoint(), POLY_ARC );
- PolyPolygon aPolyPoly( aPoly );
- ImplPolyPoly( aPolyPoly );
- }
- break;
-
- case META_PIE_ACTION :
- {
- Polygon aPoly( ( (const MetaPieAction*)pMA )->GetRect(), ( (const MetaPieAction*)pMA )->GetStartPoint(),
- ( (const MetaPieAction*)pMA )->GetEndPoint(), POLY_PIE );
- PolyPolygon aPolyPoly( aPoly );
- ImplPolyPoly( aPolyPoly );
- }
- break;
-
- case META_CHORD_ACTION :
- {
- Polygon aPoly( ( (const MetaChordAction*)pMA )->GetRect(), ( (const MetaChordAction*)pMA )->GetStartPoint(),
- ( (const MetaChordAction*)pMA )->GetEndPoint(), POLY_CHORD );
- PolyPolygon aPolyPoly( aPoly );
- ImplPolyPoly( aPolyPoly );
- }
- break;
-
- case META_POLYLINE_ACTION :
- {
- Polygon aPoly( ( (const MetaPolyLineAction*) pMA )->GetPolygon() );
- const LineInfo& rLineInfo = ( ( const MetaPolyLineAction*)pMA )->GetLineInfo();
- ImplWriteLineInfo( rLineInfo );
- ImplPolyLine( aPoly );
- }
- break;
-
- case META_POLYGON_ACTION :
- {
- PolyPolygon aPolyPoly( ( (const MetaPolygonAction*) pMA )->GetPolygon() );
- ImplPolyPoly( aPolyPoly );
- }
- break;
-
- case META_POLYPOLYGON_ACTION :
- {
- ImplPolyPoly( ( (const MetaPolyPolygonAction*) pMA )->GetPolyPolygon() );
- }
- break;
-
- case META_TEXT_ACTION:
- {
- const MetaTextAction * pA = (const MetaTextAction*) pMA;
-
- String aUniStr( pA->GetText(), pA->GetIndex(), pA->GetLen() );
- Point aPoint( pA->GetPoint() );
-
- ImplText( aUniStr, aPoint, NULL, 0, rVDev );
- }
- break;
-
- case META_TEXTRECT_ACTION:
- {
- DBG_ERROR( "Unsupported action: TextRect...Action!" );
- }
- break;
-
- case META_STRETCHTEXT_ACTION :
- {
- const MetaStretchTextAction* pA = (const MetaStretchTextAction*)pMA;
- String aUniStr( pA->GetText(), pA->GetIndex(), pA->GetLen() );
- Point aPoint( pA->GetPoint() );
-
- ImplText( aUniStr, aPoint, NULL, pA->GetWidth(), rVDev );
- }
- break;
-
- case META_TEXTARRAY_ACTION:
- {
- const MetaTextArrayAction* pA = (const MetaTextArrayAction*)pMA;
- String aUniStr( pA->GetText(), pA->GetIndex(), pA->GetLen() );
- Point aPoint( pA->GetPoint() );
-
- ImplText( aUniStr, aPoint, pA->GetDXArray(), 0, rVDev );
- }
- break;
-
- case META_BMP_ACTION :
- {
- Bitmap aBitmap = ( (const MetaBmpAction*)pMA )->GetBitmap();
- if ( mbGrayScale )
- aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
- Point aPoint = ( (const MetaBmpAction*) pMA )->GetPoint();
- Size aSize = aBitmap.GetSizePixel();
- ImplBmp( &aBitmap, NULL, aPoint, aSize.Width(), aSize.Height() );
- }
- break;
-
- case META_BMPSCALE_ACTION :
- {
- Bitmap aBitmap = ( (const MetaBmpScaleAction*)pMA )->GetBitmap();
- if ( mbGrayScale )
- aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
- Point aPoint = ( (const MetaBmpScaleAction*) pMA )->GetPoint();
- Size aSize = ( (const MetaBmpScaleAction*)pMA )->GetSize();
- ImplBmp( &aBitmap, NULL, aPoint, aSize.Width(), aSize.Height() );
- }
- break;
-
- case META_BMPSCALEPART_ACTION :
- {
- Bitmap aBitmap( ( (const MetaBmpScalePartAction*)pMA )->GetBitmap() );
- aBitmap.Crop( Rectangle( ( (const MetaBmpScalePartAction*)pMA )->GetSrcPoint(),
- ( (const MetaBmpScalePartAction*)pMA )->GetSrcSize() ) );
- if ( mbGrayScale )
- aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
- Point aPoint = ( (const MetaBmpScalePartAction*) pMA)->GetDestPoint();
- Size aSize = ( (const MetaBmpScalePartAction*)pMA )->GetDestSize();
- ImplBmp( &aBitmap, NULL, aPoint, aSize.Width(), aSize.Height() );
- }
- break;
-
- case META_BMPEX_ACTION :
- {
- BitmapEx aBitmapEx( ( (MetaBmpExAction*)pMA)->GetBitmapEx() );
- Bitmap aBitmap( aBitmapEx.GetBitmap() );
- if ( mbGrayScale )
- aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
- Bitmap aMask( aBitmapEx.GetMask() );
- Point aPoint = ( (const MetaBmpExAction*) pMA)->GetPoint();
- Size aSize = ( aBitmap.GetSizePixel() );
- ImplBmp( &aBitmap, &aMask, aPoint, aSize.Width(), aSize.Height() );
- }
- break;
-
- case META_BMPEXSCALE_ACTION :
- {
- BitmapEx aBitmapEx( ( (MetaBmpExScaleAction*)pMA)->GetBitmapEx() );
- Bitmap aBitmap( aBitmapEx.GetBitmap() );
- if ( mbGrayScale )
- aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
- Bitmap aMask( aBitmapEx.GetMask() );
- Point aPoint = ( (const MetaBmpExScaleAction*) pMA)->GetPoint();
- Size aSize( ( (const MetaBmpExScaleAction*)pMA )->GetSize() );
- ImplBmp( &aBitmap, &aMask, aPoint, aSize.Width(), aSize.Height() );
- }
- break;
-
- case META_BMPEXSCALEPART_ACTION :
- {
- BitmapEx aBitmapEx( ( (const MetaBmpExScalePartAction*)pMA )->GetBitmapEx() );
- aBitmapEx.Crop( Rectangle( ( (const MetaBmpExScalePartAction*)pMA )->GetSrcPoint(),
- ( (const MetaBmpExScalePartAction*)pMA )->GetSrcSize() ) );
- Bitmap aBitmap( aBitmapEx.GetBitmap() );
- if ( mbGrayScale )
- aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
- Bitmap aMask( aBitmapEx.GetMask() );
- Point aPoint = ( (const MetaBmpExScalePartAction*) pMA)->GetDestPoint();
- Size aSize = ( (const MetaBmpExScalePartAction*)pMA )->GetDestSize();
- ImplBmp( &aBitmap, &aMask, aPoint, aSize.Width(), aSize.Height() );
- }
- break;
-
- // Unsupported Actions
- case META_MASK_ACTION:
- case META_MASKSCALE_ACTION:
- case META_MASKSCALEPART_ACTION:
- {
- DBG_ERROR( "Unsupported action: MetaMask...Action!" );
- }
- break;
-
- case META_GRADIENT_ACTION :
- {
- PolyPolygon aPolyPoly( ( (const MetaGradientAction*)pMA)->GetRect() );
- ImplWriteGradient( aPolyPoly, ( (const MetaGradientAction*) pMA )->GetGradient(), rVDev );
- }
- break;
-
- case META_GRADIENTEX_ACTION :
- {
- PolyPolygon aPolyPoly( ( (const MetaGradientExAction*)pMA)->GetPolyPolygon() );
- ImplWriteGradient( aPolyPoly, ( (const MetaGradientExAction*) pMA )->GetGradient(), rVDev );
- }
- break;
-
- case META_HATCH_ACTION :
- {
- VirtualDevice l_aVDev;
- GDIMetaFile aTmpMtf;
-
- l_aVDev.SetMapMode( rVDev.GetMapMode() );
- l_aVDev.AddHatchActions( ( (const MetaHatchAction*)pMA)->GetPolyPolygon(),
- ( (const MetaHatchAction*)pMA )->GetHatch(), aTmpMtf );
- ImplWriteActions( aTmpMtf, rVDev );
- }
- break;
-
- case META_WALLPAPER_ACTION :
- {
- const MetaWallpaperAction* pA = (const MetaWallpaperAction*)pMA;
- Rectangle aRect = pA->GetRect();
- Wallpaper aWallpaper = pA->GetWallpaper();
-
- if ( aWallpaper.IsBitmap() )
- {
- BitmapEx aBitmapEx = aWallpaper.GetBitmap();
- Bitmap aBitmap( aBitmapEx.GetBitmap() );
- if ( aBitmapEx.IsTransparent() )
- {
- if ( aWallpaper.IsGradient() )
- {
-
- // gradient action
-
- }
- Bitmap aMask( aBitmapEx.GetMask() );
- ImplBmp( &aBitmap, &aMask, Point( aRect.Left(), aRect.Top() ), aRect.GetWidth(), aRect.GetHeight() );
- }
- else
- ImplBmp( &aBitmap, NULL, Point( aRect.Left(), aRect.Top() ), aRect.GetWidth(), aRect.GetHeight() );
-
- // wallpaper Style
-
- }
- else if ( aWallpaper.IsGradient() )
- {
-
- // gradient action
-
- }
- else
- {
- aColor = aWallpaper.GetColor();
- ImplRectFill( aRect );
- }
- }
- break;
-
- case META_ISECTRECTCLIPREGION_ACTION:
- {
- const MetaISectRectClipRegionAction* pA = (const MetaISectRectClipRegionAction*) pMA;
- Region aRegion( pA->GetRect() );
- ImplSetClipRegion( aRegion );
- }
- break;
-
- case META_CLIPREGION_ACTION:
- {
- const MetaClipRegionAction* pA = (const MetaClipRegionAction*) pMA;
- Region aRegion( pA->GetRegion() );
- ImplSetClipRegion( aRegion );
- }
- break;
-
- case META_ISECTREGIONCLIPREGION_ACTION:
- {
- const MetaISectRegionClipRegionAction* pA = (const MetaISectRegionClipRegionAction*) pMA;
- Region aRegion( pA->GetRegion() );
- ImplSetClipRegion( aRegion );
- }
- break;
-
- case META_MOVECLIPREGION_ACTION:
- {
-/*
- if ( !aClipRegion.IsEmpty() )
- {
- const MetaMoveClipRegionAction* pA = (const MetaMoveClipRegionAction*) pMA;
- aClipRegion.Move( pA->GetHorzMove(), pA->GetVertMove() );
- ImplSetClipRegion();
- }
-*/
- }
- break;
-
- case META_LINECOLOR_ACTION :
- {
- if ( ( (const MetaLineColorAction*) pMA)->IsSetting() )
- {
- bLineColor = TRUE;
- aLineColor = ( (const MetaLineColorAction*) pMA )->GetColor();
- }
- else
- bLineColor = FALSE;
- }
- break;
-
- case META_FILLCOLOR_ACTION :
- {
- if ( ( (const MetaFillColorAction*) pMA )->IsSetting() )
- {
- bFillColor = TRUE;
- aFillColor = ( (const MetaFillColorAction*) pMA )->GetColor();
- }
- else
- bFillColor = FALSE;
- }
- break;
-
- case META_TEXTCOLOR_ACTION :
- {
- aTextColor = ( (const MetaTextColorAction*) pMA )->GetColor();
- }
- break;
-
- case META_TEXTFILLCOLOR_ACTION :
- {
- if ( ( (const MetaTextFillColorAction*) pMA )->IsSetting() )
- {
- bTextFillColor = TRUE;
- aTextFillColor = ( (const MetaTextFillColorAction*) pMA )->GetColor();
- }
- else
- bTextFillColor = FALSE;
- }
- break;
-
- case META_TEXTALIGN_ACTION :
- {
- eTextAlign = ( (const MetaTextAlignAction*) pMA )->GetTextAlign();
- }
- break;
-
- case META_MAPMODE_ACTION :
- {
- pMA->Execute( &rVDev );
- ImplGetMapMode( rVDev.GetMapMode() );
- }
- break;
-
- case META_FONT_ACTION :
- {
- maFont = ((const MetaFontAction*)pMA)->GetFont();
- rVDev.SetFont( maFont );
- }
- break;
-
- case META_PUSH_ACTION :
- {
- rVDev.Push(((const MetaPushAction*)pMA)->GetFlags() );
- StackMember* pGS = new StackMember;
- pGS->pSucc = pGDIStack;
- pGDIStack = pGS;
- pGS->aDashArray = aDashArray;
- pGS->eJoinType = eJoinType;
- pGS->eLineCap = eLineCap;
- pGS->fLineWidth = fLineWidth;
- pGS->fMiterLimit = fMiterLimit;
- pGS->eTextAlign = eTextAlign;
- pGS->aGlobalCol = aColor;
- pGS->bLineCol = bLineColor;
- pGS->aLineCol = aLineColor;
- pGS->bFillCol = bFillColor;
- pGS->aFillCol = aFillColor;
- pGS->aTextCol = aTextColor;
- pGS->bTextFillCol = bTextFillColor;
- pGS->aTextFillCol = aTextFillColor;
- pGS->aBackgroundCol = aBackgroundColor;
- bRegionChanged = FALSE;
- pGS->aFont = maFont;
- mnLatestPush = mpPS->Tell();
- ImplWriteLine( "gs" );
- }
- break;
-
- case META_POP_ACTION :
- {
- rVDev.Pop();
- StackMember* pGS;
- if( pGDIStack )
- {
- pGS = pGDIStack;
- pGDIStack = pGS->pSucc;
- aDashArray = pGS->aDashArray;
- eJoinType = pGS->eJoinType;
- eLineCap = pGS->eLineCap;
- fLineWidth = pGS->fLineWidth;
- fMiterLimit = pGS->fMiterLimit;
- eTextAlign = pGS->eTextAlign;
- aColor = pGS->aGlobalCol;
- bLineColor = pGS->bLineCol;
- aLineColor = pGS->aLineCol;
- bFillColor = pGS->bFillCol;
- aFillColor = pGS->aFillCol;
- aTextColor = pGS->aTextCol;
- bTextFillColor = pGS->bTextFillCol;
- aTextFillColor = pGS->aTextFillCol;
- aBackgroundColor = pGS->aBackgroundCol;
- maFont = pGS->aFont;
- maLastFont = Font(); // set maLastFont != maFont -> so that
- delete pGS;
- sal_uInt32 nCurrentPos = mpPS->Tell();
- if ( nCurrentPos - 3 == mnLatestPush )
- {
- mpPS->Seek( mnLatestPush );
- ImplWriteLine( " " );
- mpPS->Seek( mnLatestPush );
- }
- else
- ImplWriteLine( "gr" );
- }
- }
- break;
-
- case META_EPS_ACTION :
- {
- GfxLink aGfxLink = ( (const MetaEPSAction*) pMA )->GetLink();
- const GDIMetaFile aSubstitute( ( ( const MetaEPSAction*) pMA )->GetSubstitute() );
-
- BOOL bLevelConflict = FALSE;
- BYTE* pSource = (BYTE*) aGfxLink.GetData();
- ULONG nSize = aGfxLink.GetDataSize();
- ULONG nParseThis = POSTSCRIPT_BOUNDINGSEARCH;
- if ( nSize < 64 ) // assuming eps is larger than 64 bytes
- pSource = NULL;
- if ( nParseThis > nSize )
- nParseThis = nSize;
-
- if ( pSource && ( mnLevel == 1 ) )
- {
- BYTE* pFound = ImplSearchEntry( pSource, (BYTE*)"%%LanguageLevel:", nParseThis - 10, 16 );
- if ( pFound )
- {
- BYTE k, i = 10;
- pFound += 16;
- while ( --i )
- {
- k = *pFound++;
- if ( ( k > '0' ) && ( k <= '9' ) )
- {
- if ( k != '1' )
- {
- bLevelConflict = TRUE;
- mnLevelWarning++;
- }
- break;
- }
- }
- }
- }
- if ( !bLevelConflict )
- {
- double nBoundingBox[4];
- if ( pSource && ImplGetBoundingBox( nBoundingBox, pSource, nParseThis ) )
- {
- Point aPoint = ( (const MetaEPSAction*) pMA )->GetPoint();
- Size aSize = ( (const MetaEPSAction*) pMA )->GetSize();
-
- MapMode aMapMode( aSubstitute.GetPrefMapMode() );
- Size aOutSize( rVDev.LogicToLogic( aSize, rVDev.GetMapMode(), aMapMode ) );
- Point aOrigin( rVDev.LogicToLogic( aPoint, rVDev.GetMapMode(), aMapMode ) );
- aOrigin.Y() += aOutSize.Height();
- aMapMode.SetOrigin( aOrigin );
- aMapMode.SetScaleX( aOutSize.Width() / ( nBoundingBox[ 2 ] - nBoundingBox[ 0 ] ) );
- aMapMode.SetScaleY( aOutSize.Height() / ( nBoundingBox[ 3 ] - nBoundingBox[ 1 ] ) );
- ImplWriteLine( "gs" );
- ImplGetMapMode( aMapMode );
- ImplWriteLine( "%%BeginDocument:" );
- mpPS->Write( pSource, aGfxLink.GetDataSize() );
- ImplWriteLine( "%%EndDocument\ngr" );
- }
- }
- }
- break;
-
- case META_TRANSPARENT_ACTION:
- {
-// ImplLine( ( (const MetaTransparentAction*) pMA )->GetPolyPolygon() );
- }
- break;
-
- case META_RASTEROP_ACTION:
- {
- pMA->Execute( &rVDev );
- }
- break;
-
- case META_FLOATTRANSPARENT_ACTION:
- {
- const MetaFloatTransparentAction* pA = (const MetaFloatTransparentAction*) pMA;
-
- GDIMetaFile aTmpMtf( pA->GetGDIMetaFile() );
- Point aSrcPt( aTmpMtf.GetPrefMapMode().GetOrigin() );
- const Size aSrcSize( aTmpMtf.GetPrefSize() );
- const Point aDestPt( pA->GetPoint() );
- const Size aDestSize( pA->GetSize() );
- const double fScaleX = aSrcSize.Width() ? (double) aDestSize.Width() / aSrcSize.Width() : 1.0;
- const double fScaleY = aSrcSize.Height() ? (double) aDestSize.Height() / aSrcSize.Height() : 1.0;
- long nMoveX, nMoveY;
-
- if( fScaleX != 1.0 || fScaleY != 1.0 )
- {
- aTmpMtf.Scale( fScaleX, fScaleY );
- aSrcPt.X() = FRound( aSrcPt.X() * fScaleX ), aSrcPt.Y() = FRound( aSrcPt.Y() * fScaleY );
- }
-
- nMoveX = aDestPt.X() - aSrcPt.X(), nMoveY = aDestPt.Y() - aSrcPt.Y();
-
- if( nMoveX || nMoveY )
- aTmpMtf.Move( nMoveX, nMoveY );
-
- ImplWriteActions( aTmpMtf, rVDev );
- }
- break;
-
- case META_COMMENT_ACTION:
- {
- const MetaCommentAction* pA = (const MetaCommentAction*) pMA;
- if ( pA->GetComment().CompareIgnoreCaseToAscii( "XGRAD_SEQ_BEGIN" ) == COMPARE_EQUAL )
- {
- const MetaGradientExAction* pGradAction = NULL;
- while( ++nCurAction < nCount )
- {
- MetaAction* pAction = rMtf.GetAction( nCurAction );
- if( pAction->GetType() == META_GRADIENTEX_ACTION )
- pGradAction = (const MetaGradientExAction*) pAction;
- else if( ( pAction->GetType() == META_COMMENT_ACTION ) &&
- ( ( (const MetaCommentAction*) pAction )->GetComment().CompareIgnoreCaseToAscii( "XGRAD_SEQ_END" ) == COMPARE_EQUAL ) )
- {
- break;
- }
- }
- if( pGradAction )
- ImplWriteGradient( pGradAction->GetPolyPolygon(), pGradAction->GetGradient(), rVDev );
- }
- else if ( pA->GetComment().Equals( "XPATHFILL_SEQ_END" ) )
- {
- if ( aFillPath.Count() )
- {
- aFillPath = PolyPolygon();
- ImplWriteLine( "gr" );
- }
- }
- else
- {
- const BYTE* pData = pA->GetData();
- if ( pData )
- {
- SvMemoryStream aMemStm( (void*)pData, pA->GetDataSize(), STREAM_READ );
- sal_Bool bSkipSequence = sal_False;
- ByteString sSeqEnd;
-
- if( pA->GetComment().Equals( "XPATHSTROKE_SEQ_BEGIN" ) )
- {
- sSeqEnd = ByteString( "XPATHSTROKE_SEQ_END" );
- SvtGraphicStroke aStroke;
- aMemStm >> aStroke;
-
- Polygon aPath;
- aStroke.getPath( aPath );
-
- PolyPolygon aStartArrow;
- PolyPolygon aEndArrow;
-// double fTransparency( aStroke.getTransparency() );
- double fStrokeWidth( aStroke.getStrokeWidth() );
- SvtGraphicStroke::JoinType eJT( aStroke.getJoinType() );
- SvtGraphicStroke::DashArray l_aDashArray;
-
- aStroke.getStartArrow( aStartArrow );
- aStroke.getEndArrow( aEndArrow );
- aStroke.getDashArray( l_aDashArray );
-
- bSkipSequence = sal_True;
- if ( l_aDashArray.size() > 11 ) // ps dasharray limit is 11
- bSkipSequence = sal_False;
- if ( aStartArrow.Count() || aEndArrow.Count() )
- bSkipSequence = sal_False;
- if ( (sal_uInt32)eJT > 2 )
- bSkipSequence = sal_False;
- if ( l_aDashArray.size() && ( fStrokeWidth != 0.0 ) )
- bSkipSequence = sal_False;
- if ( bSkipSequence )
- {
- ImplWriteLineInfo( fStrokeWidth, aStroke.getMiterLimit(),
- aStroke.getCapType(), eJT, l_aDashArray );
- ImplPolyLine( aPath );
- }
- }
- else if( pA->GetComment().Equals( "XPATHFILL_SEQ_BEGIN" ) )
- {
- sSeqEnd = ByteString( "XPATHFILL_SEQ_END" );
- SvtGraphicFill aFill;
- aMemStm >> aFill;
- switch( aFill.getFillType() )
- {
- case SvtGraphicFill::fillSolid :
- {
- bSkipSequence = sal_True;
- PolyPolygon aPolyPoly;
- aFill.getPath( aPolyPoly );
- sal_uInt16 i, nPolyCount = aPolyPoly.Count();
- if ( nPolyCount )
- {
- aFillColor = aFill.getFillColor();
- ImplWriteFillColor( PS_SPACE );
- for ( i = 0; i < nPolyCount; )
- {
- ImplAddPath( aPolyPoly.GetObject( i ) );
- if ( ++i < nPolyCount )
- {
- *mpPS << "p";
- mnCursorPos += 2;
- ImplExecMode( PS_RET );
- }
- }
- *mpPS << "p ef";
- mnCursorPos += 4;
- ImplExecMode( PS_RET );
- }
- }
- break;
-
- case SvtGraphicFill::fillTexture :
- {
- aFill.getPath( aFillPath );
-
- /* normally an object filling is consisting of three MetaActions:
- MetaBitmapAction using RasterOp xor,
- MetaPolyPolygonAction using RasterOp rop_0
- MetaBitmapAction using RasterOp xor
-
- Because RasterOps cannot been used in Postscript, we have to
- replace these actions. The MetaComment "XPATHFILL_SEQ_BEGIN" is
- providing the clippath of the object. The following loop is
- trying to find the bitmap that is matching the clippath, so that
- only one bitmap is exported, otherwise if the bitmap is not
- locatable, all metaactions are played normally.
- */
- sal_uInt32 nCommentStartAction = nCurAction;
- sal_uInt32 nBitmapCount = 0;
- sal_uInt32 nBitmapAction = 0;
-
- sal_Bool bOk = sal_True;
- while( bOk && ( ++nCurAction < nCount ) )
- {
- MetaAction* pAction = rMtf.GetAction( nCurAction );
- switch( pAction->GetType() )
- {
- case META_BMPSCALE_ACTION :
- case META_BMPSCALEPART_ACTION :
- case META_BMPEXSCALE_ACTION :
- case META_BMPEXSCALEPART_ACTION :
- {
- nBitmapCount++;
- nBitmapAction = nCurAction;
- }
- break;
- case META_COMMENT_ACTION :
- {
- if (((const MetaCommentAction*)pAction)->GetComment().Equals( "XPATHFILL_SEQ_END" ))
- bOk = sal_False;
- }
- break;
- }
- }
- if( nBitmapCount == 2 )
- {
- ImplWriteLine( "gs" );
- ImplIntersect( aFillPath );
- GDIMetaFile aTempMtf;
- aTempMtf.AddAction( rMtf.GetAction( nBitmapAction )->Clone() );
- ImplWriteActions( aTempMtf, rVDev );
- ImplWriteLine( "gr" );
- aFillPath = PolyPolygon();
- }
- else
- nCurAction = nCommentStartAction + 1;
- }
- break;
-
- case SvtGraphicFill::fillGradient :
- aFill.getPath( aFillPath );
- break;
-
- case SvtGraphicFill::fillHatch :
- break;
- }
- if ( aFillPath.Count() )
- {
- ImplWriteLine( "gs" );
- ImplIntersect( aFillPath );
- }
- }
- if ( bSkipSequence )
- {
- while( ++nCurAction < nCount )
- {
- pMA = rMtf.GetAction( nCurAction );
- if ( pMA->GetType() == META_COMMENT_ACTION )
- {
- ByteString sComment( ((MetaCommentAction*)pMA)->GetComment() );
- if ( sComment.Equals( sSeqEnd ) )
- break;
- }
- }
- }
- }
- }
- }
- break;
- }
- }
-}
-
-
-
-//---------------------------------------------------------------------------------
-
-inline void PSWriter::ImplWritePoint( const Point& rPoint, sal_uInt32 nMode )
-{
- ImplWriteDouble( rPoint.X() );
- ImplWriteDouble( rPoint.Y(), nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplMoveTo( const Point& rPoint, sal_uInt32 nMode )
-{
- ImplWritePoint( rPoint );
- ImplWriteByte( 'm' );
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplLineTo( const Point& rPoint, sal_uInt32 nMode )
-{
- ImplWritePoint( rPoint );
- ImplWriteByte( 'l' );
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplCurveTo( const Point& rP1, const Point& rP2, const Point& rP3, sal_uInt32 nMode )
-{
- ImplWritePoint( rP1 );
- ImplWritePoint( rP2 );
- ImplWritePoint( rP3 );
- *mpPS << "ct ";
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplTranslate( const double& fX, const double& fY, sal_uInt32 nMode )
-{
- ImplWriteDouble( fX );
- ImplWriteDouble( fY );
- ImplWriteByte( 't' );
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplScale( const double& fX, const double& fY, sal_uInt32 nMode )
-{
- ImplWriteDouble( fX );
- ImplWriteDouble( fY );
- ImplWriteByte( 's' );
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplRect( const Rectangle & rRect )
-{
- if ( bFillColor )
- ImplRectFill( rRect );
- if ( bLineColor )
- {
- double nWidth = rRect.GetWidth();
- double nHeight = rRect.GetHeight();
-
- ImplWriteLineColor( PS_SPACE );
- ImplMoveTo( rRect.TopLeft() );
- ImplWriteDouble( nWidth );
- *mpPS << "0 rl 0 ";
- ImplWriteDouble( nHeight );
- *mpPS << "rl ";
- ImplWriteDouble( nWidth );
- *mpPS << "neg 0 rl ";
- ImplClosePathDraw();
- }
- *mpPS << (BYTE)10;
- mnCursorPos = 0;
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplRectFill( const Rectangle & rRect )
-{
- double nWidth = rRect.GetWidth();
- double nHeight = rRect.GetHeight();
-
- ImplWriteFillColor( PS_SPACE );
- ImplMoveTo( rRect.TopLeft() );
- ImplWriteDouble( nWidth );
- *mpPS << "0 rl 0 ";
- ImplWriteDouble( nHeight );
- *mpPS << "rl ";
- ImplWriteDouble( nWidth );
- *mpPS << "neg 0 rl ef ";
- *mpPS << "p ef";
- mnCursorPos += 2;
- ImplExecMode( PS_RET );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplAddPath( const Polygon & rPolygon )
-{
- USHORT i = 1;
- USHORT nPointCount = rPolygon.GetSize();
- if ( nPointCount > 1 )
- {
- ImplMoveTo( rPolygon.GetPoint( 0 ) );
- while ( i < nPointCount )
- {
- if ( ( rPolygon.GetFlags( i ) == POLY_CONTROL )
- && ( ( i + 2 ) < nPointCount )
- && ( rPolygon.GetFlags( i + 1 ) == POLY_CONTROL )
- && ( rPolygon.GetFlags( i + 2 ) != POLY_CONTROL ) )
- {
- ImplCurveTo( rPolygon[ i ], rPolygon[ i + 1 ], rPolygon[ i + 2 ], PS_WRAP );
- i += 3;
- }
- else
- ImplLineTo( rPolygon.GetPoint( i++ ), PS_SPACE | PS_WRAP );
- }
- }
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplIntersect( const PolyPolygon& rPolyPoly )
-{
- sal_uInt16 i, nPolyCount = rPolyPoly.Count();
- for ( i = 0; i < nPolyCount; )
- {
- ImplAddPath( rPolyPoly.GetObject( i ) );
- if ( ++i < nPolyCount )
- {
- *mpPS << "p";
- mnCursorPos += 2;
- ImplExecMode( PS_RET );
- }
- }
- ImplWriteLine( "eoclip newpath" );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteGradient( const PolyPolygon& rPolyPoly, const Gradient& rGradient, VirtualDevice& rVDev )
-{
- VirtualDevice l_aVDev;
- GDIMetaFile aTmpMtf;
- l_aVDev.SetMapMode( rVDev.GetMapMode() );
- l_aVDev.AddGradientActions( rPolyPoly.GetBoundRect(), rGradient, aTmpMtf );
- ImplWriteActions( aTmpMtf, rVDev );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplPolyPoly( const PolyPolygon & rPolyPoly, sal_Bool bTextOutline )
-{
- sal_uInt16 i, nPolyCount = rPolyPoly.Count();
- if ( nPolyCount )
- {
- if ( bFillColor || bTextOutline )
- {
- if ( bTextOutline )
- ImplWriteTextColor( PS_SPACE );
- else
- ImplWriteFillColor( PS_SPACE );
- for ( i = 0; i < nPolyCount; )
- {
- ImplAddPath( rPolyPoly.GetObject( i ) );
- if ( ++i < nPolyCount )
- {
- *mpPS << "p";
- mnCursorPos += 2;
- ImplExecMode( PS_RET );
- }
- }
- *mpPS << "p ef";
- mnCursorPos += 4;
- ImplExecMode( PS_RET );
- }
- if ( bLineColor )
- {
- ImplWriteLineColor( PS_SPACE );
- for ( i = 0; i < nPolyCount; i++ )
- ImplAddPath( rPolyPoly.GetObject( i ) );
- ImplClosePathDraw( PS_RET );
- }
- }
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplPolyLine( const Polygon & rPoly )
-{
- if ( bLineColor )
- {
- ImplWriteLineColor( PS_SPACE );
- sal_uInt16 i, nPointCount = rPoly.GetSize();
- if ( nPointCount )
- {
- if ( nPointCount > 1 )
- {
- ImplMoveTo( rPoly.GetPoint( 0 ) );
- i = 1;
- while ( i < nPointCount )
- {
- if ( ( rPoly.GetFlags( i ) == POLY_CONTROL )
- && ( ( i + 2 ) < nPointCount )
- && ( rPoly.GetFlags( i + 1 ) == POLY_CONTROL )
- && ( rPoly.GetFlags( i + 2 ) != POLY_CONTROL ) )
- {
- ImplCurveTo( rPoly[ i ], rPoly[ i + 1 ], rPoly[ i + 2 ], PS_WRAP );
- i += 3;
- }
- else
- ImplLineTo( rPoly.GetPoint( i++ ), PS_SPACE | PS_WRAP );
- }
- }
-
- // #104645# explicitely close path if polygon is closed
- if( rPoly[ 0 ] == rPoly[ nPointCount-1 ] )
- ImplClosePathDraw( PS_RET );
- else
- ImplPathDraw();
- }
- }
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplSetClipRegion( Region& rClipRegion )
-{
- if ( !rClipRegion.IsEmpty() )
- {
- Rectangle aRect;
- RegionHandle hRegionHandle = rClipRegion.BeginEnumRects();
-
- while ( rClipRegion.GetNextEnumRect( hRegionHandle, aRect ) )
- {
- double nX1 = aRect.Left();
- double nY1 = aRect.Top();
- double nX2 = aRect.Right();
- double nY2 = aRect.Bottom();
- ImplWriteDouble( nX1 );
- ImplWriteDouble( nY1 );
- ImplWriteByte( 'm' );
- ImplWriteDouble( nX2 );
- ImplWriteDouble( nY1 );
- ImplWriteByte( 'l' );
- ImplWriteDouble( nX2 );
- ImplWriteDouble( nY2 );
- ImplWriteByte( 'l' );
- ImplWriteDouble( nX1 );
- ImplWriteDouble( nY2 );
- ImplWriteByte( 'l' );
- ImplWriteDouble( nX1 );
- ImplWriteDouble( nY1 );
- ImplWriteByte( 'l', PS_SPACE | PS_WRAP );
- };
- rClipRegion.EndEnumRects( hRegionHandle );
- ImplWriteLine( "eoclip newpath" );
- }
-}
-
-//---------------------------------------------------------------------------------
-// possible gfx formats:
-//
-// level 1: grayscale 8 bit
-// color 24 bit
-//
-// level 2: grayscale 8 bit
-// color 1(pal), 4(pal), 8(pal), 24 Bit
-//
-
-void PSWriter::ImplBmp( Bitmap* pBitmap, Bitmap* pMaskBitmap, const Point & rPoint, double nXWidth, double nYHeightOrg )
-{
- if ( !pBitmap )
- return;
-
- INT32 nHeightOrg = pBitmap->GetSizePixel().Height();
- INT32 nHeightLeft = nHeightOrg;
- long nWidth = pBitmap->GetSizePixel().Width();
- Point aSourcePos( rPoint );
-
- while ( nHeightLeft )
- {
- Bitmap aTileBitmap( *pBitmap );
- long nHeight = nHeightLeft;
- double nYHeight = nYHeightOrg;
-
- BOOL bDoTrans = FALSE;
-
- Rectangle aRect;
- Region aRegion;
-
- if ( pMaskBitmap )
- {
- bDoTrans = TRUE;
- while (TRUE)
- {
- if ( mnLevel == 1 )
- {
- if ( nHeight > 10 )
- nHeight = 8;
- }
- aRect = Rectangle( Point( 0, nHeightOrg - nHeightLeft ), Size( (long)nWidth, (long)nHeight ) );
- aRegion = Region( pMaskBitmap->CreateRegion( COL_BLACK, aRect ) );
-
- if ( ( mnLevel == 1 ) && ( aRegion.GetRectCount() * 5 > 1000 ) )
- {
- nHeight >>= 1;
- if ( nHeight < 2 )
- return;
- continue;
- }
- break;
- }
- }
- if ( nHeight != nHeightOrg )
- {
- nYHeight = nYHeightOrg * nHeight / nHeightOrg;
- aTileBitmap.Crop( Rectangle( Point( 0, nHeightOrg - nHeightLeft ), Size( nWidth, nHeight ) ) );
- }
- if ( bDoTrans )
- {
- ImplWriteLine( "gs\npum" );
- ImplTranslate( aSourcePos.X(), aSourcePos.Y() );
- ImplScale( nXWidth / nWidth, nYHeight / nHeight );
- RegionHandle hRegionHandle = aRegion.BeginEnumRects();
-
- while ( aRegion.GetNextEnumRect( hRegionHandle, aRect ) )
- {
- aRect.Move( 0, - ( nHeightOrg - nHeightLeft ) );
- ImplWriteLong( aRect.Left() );
- ImplWriteLong( aRect.Top() );
- ImplWriteByte( 'm' );
- ImplWriteLong( aRect.Right() + 1 );
- ImplWriteLong( aRect.Top() );
- ImplWriteByte( 'l' );
- ImplWriteLong( aRect.Right() + 1 );
- ImplWriteLong( aRect.Bottom() + 1 );
- ImplWriteByte( 'l' );
- ImplWriteLong( aRect.Left() );
- ImplWriteLong( aRect.Bottom() + 1 );
- ImplWriteByte( 'l' );
- ImplWriteByte( 'p', PS_SPACE | PS_WRAP );
- };
- aRegion.EndEnumRects( hRegionHandle );
- ImplWriteLine( "eoclip newpath" );
- ImplWriteLine( "pom" );
- }
- BitmapReadAccess* pAcc = aTileBitmap.AcquireReadAccess();
-
- if (!bDoTrans )
- ImplWriteLine( "pum" );
-
- ImplTranslate( aSourcePos.X(), aSourcePos.Y() + nYHeight );
- ImplScale( nXWidth, nYHeight );
- if ( mnLevel == 1 ) // level 1 is always grayscale !!!
- {
- ImplWriteLong( nWidth );
- ImplWriteLong( nHeight );
- *mpPS << "8 [";
- ImplWriteLong( nWidth );
- *mpPS << "0 0 ";
- ImplWriteLong( -nHeight );
- ImplWriteLong( 0 );
- ImplWriteLong( nHeight );
- ImplWriteLine( "]" );
- *mpPS << "{currentfile ";
- ImplWriteLong( nWidth );
- ImplWriteLine( "string readhexstring pop}" );
- ImplWriteLine( "image" );
- for ( long y = 0; y < nHeight; y++ )
- {
- for ( long x = 0; x < nWidth; x++ )
- {
- ImplWriteHexByte( (BYTE)pAcc->GetPixel( y, x ) );
- }
- }
- *mpPS << (BYTE)10;
- }
- else // Level 2
- {
- if ( mbGrayScale )
- {
- ImplWriteLine( "/DeviceGray setcolorspace" );
- ImplWriteLine( "<<" );
- ImplWriteLine( "/ImageType 1" );
- *mpPS << "/Width ";
- ImplWriteLong( nWidth, PS_RET );
- *mpPS << "/Height ";
- ImplWriteLong( nHeight, PS_RET );
- ImplWriteLine( "/BitsPerComponent 8" );
- ImplWriteLine( "/Decode[0 1]" );
- *mpPS << "/ImageMatrix[";
- ImplWriteLong( nWidth );
- *mpPS << "0 0 ";
- ImplWriteLong( -nHeight );
- ImplWriteLong( 0 );
- ImplWriteLong( nHeight, PS_NONE );
- ImplWriteByte( ']', PS_RET );
- ImplWriteLine( "/DataSource currentfile" );
- ImplWriteLine( "/ASCIIHexDecode filter" );
- if ( mbCompression )
- ImplWriteLine( "/LZWDecode filter" );
- ImplWriteLine( ">>" );
- ImplWriteLine( "image" );
- if ( mbCompression )
- {
- StartCompression();
- for ( long y = 0; y < nHeight; y++ )
- {
- for ( long x = 0; x < nWidth; x++ )
- {
- Compress( (BYTE)pAcc->GetPixel( y, x ) );
- }
- }
- EndCompression();
- }
- else
- {
- for ( long y = 0; y < nHeight; y++ )
- {
- for ( long x = 0; x < nWidth; x++ )
- {
- ImplWriteHexByte( (BYTE)pAcc->GetPixel( y, x ) );
- }
- }
- }
- }
- else
- {
- // have we to write a palette ?
-
- if ( pAcc->HasPalette() )
- {
- ImplWriteLine( "[/Indexed /DeviceRGB " );
- ImplWriteLong( pAcc->GetPaletteEntryCount() - 1, PS_RET );
- ImplWriteByte( '<', PS_NONE );
- for ( USHORT i = 0; i < pAcc->GetPaletteEntryCount(); i++ )
- {
- BitmapColor aBitmapColor = pAcc->GetPaletteColor( i );
- ImplWriteHexByte( aBitmapColor.GetRed(), PS_NONE );
- ImplWriteHexByte( aBitmapColor.GetGreen(), PS_NONE );
- ImplWriteHexByte( aBitmapColor.GetBlue(), PS_SPACE | PS_WRAP );
- }
- ImplWriteByte( '>', PS_RET );
-
- ImplWriteLine( "] setcolorspace" );
- ImplWriteLine( "<<" );
- ImplWriteLine( "/ImageType 1" );
- *mpPS << "/Width ";
- ImplWriteLong( nWidth, PS_RET );
- *mpPS << "/Height ";
- ImplWriteLong( nHeight, PS_RET );
- ImplWriteLine( "/BitsPerComponent 8" );
- ImplWriteLine( "/Decode[0 255]" );
- *mpPS << "/ImageMatrix[";
- ImplWriteLong( nWidth );
- *mpPS << "0 0 ";
- ImplWriteLong( -nHeight );
- ImplWriteLong( 0);
- ImplWriteLong( nHeight, PS_NONE );
- ImplWriteByte( ']', PS_RET );
- ImplWriteLine( "/DataSource currentfile" );
- ImplWriteLine( "/ASCIIHexDecode filter" );
- if ( mbCompression )
- ImplWriteLine( "/LZWDecode filter" );
- ImplWriteLine( ">>" );
- ImplWriteLine( "image" );
- if ( mbCompression )
- {
- StartCompression();
- for ( long y = 0; y < nHeight; y++ )
- {
- for ( long x = 0; x < nWidth; x++ )
- {
- Compress( (BYTE)pAcc->GetPixel( y, x ) );
- }
- }
- EndCompression();
- }
- else
- {
- for ( long y = 0; y < nHeight; y++ )
- {
- for ( long x = 0; x < nWidth; x++ )
- {
- ImplWriteHexByte( (BYTE)pAcc->GetPixel( y, x ) );
- }
- }
- }
- }
- else // 24 bit color
- {
- ImplWriteLine( "/DeviceRGB setcolorspace" );
- ImplWriteLine( "<<" );
- ImplWriteLine( "/ImageType 1" );
- *mpPS << "/Width ";
- ImplWriteLong( nWidth, PS_RET );
- *mpPS << "/Height ";
- ImplWriteLong( nHeight, PS_RET );
- ImplWriteLine( "/BitsPerComponent 8" );
- ImplWriteLine( "/Decode[0 1 0 1 0 1]" );
- *mpPS << "/ImageMatrix[";
- ImplWriteLong( nWidth );
- *mpPS << "0 0 ";
- ImplWriteLong( -nHeight );
- ImplWriteLong( 0 );
- ImplWriteLong( nHeight, PS_NONE );
- ImplWriteByte( ']', PS_RET );
- ImplWriteLine( "/DataSource currentfile" );
- ImplWriteLine( "/ASCIIHexDecode filter" );
- if ( mbCompression )
- ImplWriteLine( "/LZWDecode filter" );
- ImplWriteLine( ">>" );
- ImplWriteLine( "image" );
- if ( mbCompression )
- {
- StartCompression();
- for ( long y = 0; y < nHeight; y++ )
- {
- for ( long x = 0; x < nWidth; x++ )
- {
- const BitmapColor aBitmapColor( pAcc->GetPixel( y, x ) );
- Compress( aBitmapColor.GetRed() );
- Compress( aBitmapColor.GetGreen() );
- Compress( aBitmapColor.GetBlue() );
- }
- }
- EndCompression();
- }
- else
- {
- for ( long y = 0; y < nHeight; y++ )
- {
- for ( long x = 0; x < nWidth; x++ )
- {
- const BitmapColor aBitmapColor( pAcc->GetPixel( y, x ) );
- ImplWriteHexByte( aBitmapColor.GetRed() );
- ImplWriteHexByte( aBitmapColor.GetGreen() );
- ImplWriteHexByte( aBitmapColor.GetBlue() );
- }
- }
- }
- }
- }
- ImplWriteLine( ">" ); // in Level 2 the dictionary needs to be closed (eod)
- }
- if ( bDoTrans )
- ImplWriteLine( "gr" );
- else
- ImplWriteLine( "pom" );
-
- aTileBitmap.ReleaseAccess( pAcc );
- nHeightLeft -= nHeight;
- if ( nHeightLeft )
- {
- nHeightLeft++;
- aSourcePos.Y() = (long) ( rPoint.Y() + ( nYHeightOrg * ( nHeightOrg - nHeightLeft ) ) / nHeightOrg );
- }
- }
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteCharacter( sal_Char nChar )
-{
- switch( nChar )
- {
- case '(' :
- case ')' :
- case '\\' :
- ImplWriteByte( (BYTE)'\\', PS_NONE );
- }
- ImplWriteByte( (BYTE)nChar, PS_NONE );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteString( const ByteString& rString, VirtualDevice& rVDev, const INT32* pDXArry, BOOL bStretch )
-{
- USHORT nLen = rString.Len();
- if ( nLen )
- {
- USHORT i;
- if ( pDXArry )
- {
- double nx = 0;
-
- for( i = 0; i < nLen; i++ )
- {
- if ( i > 0 )
- nx = pDXArry[ i - 1 ];
- ImplWriteDouble( ( bStretch ) ? nx : rVDev.GetTextWidth( rString.GetChar( i ) ) );
- ImplWriteDouble( nx );
- ImplWriteLine( "(", PS_NONE );
- ImplWriteCharacter( rString.GetChar( i ) );
- ImplWriteLine( ") bs" );
- }
- }
- else
- {
- ImplWriteByte( '(', PS_NONE );
- for ( i = 0; i < nLen; i++ )
- ImplWriteCharacter( rString.GetChar( i ) );
- ImplWriteLine( ") sw" );
- }
- }
-}
-
-// ------------------------------------------------------------------------
-
-void PSWriter::ImplText( const String& rUniString, const Point& rPos, const INT32* pDXArry, sal_Int32 nWidth, VirtualDevice& rVDev )
-{
- sal_uInt16 nLen = rUniString.Len();
- if ( !nLen )
- return;
- if ( mnTextMode == 0 ) // using glpyh outlines
- {
- Font aNotRotatedFont( maFont );
- aNotRotatedFont.SetOrientation( 0 );
-
- VirtualDevice aVirDev( 1 );
- aVirDev.SetMapMode( rVDev.GetMapMode() );
- aVirDev.SetFont( aNotRotatedFont );
- aVirDev.SetTextAlign( eTextAlign );
-
- sal_Int16 nRotation = maFont.GetOrientation();
- Polygon aPolyDummy( 1 );
-
- PolyPolygon aPolyPoly;
- Point aPos( rPos );
- if ( nRotation )
- {
- aPolyDummy.SetPoint( aPos, 0 );
- aPolyDummy.Rotate( rPos, nRotation );
- aPos = aPolyDummy.GetPoint( 0 );
- }
- sal_Bool bOldLineColor = bLineColor;
- bLineColor = sal_False;
- std::vector<PolyPolygon> aPolyPolyVec;
- if ( aVirDev.GetTextOutlines( aPolyPolyVec, rUniString, 0, 0, STRING_LEN, TRUE, nWidth, pDXArry ) )
- {
- // always adjust text position to match baseline alignment
- ImplWriteLine( "pum" );
- ImplWriteDouble( aPos.X() );
- ImplWriteDouble( aPos.Y() );
- ImplWriteLine( "t" );
- if ( nRotation )
- {
- ImplWriteF( nRotation, 1 );
- *mpPS << "r ";
- }
- std::vector<PolyPolygon>::iterator aIter( aPolyPolyVec.begin() );
- while ( aIter != aPolyPolyVec.end() )
- ImplPolyPoly( *aIter++, sal_True );
- ImplWriteLine( "pom" );
- }
- bLineColor = bOldLineColor;
- }
- else if ( ( mnTextMode == 1 ) || ( mnTextMode == 2 ) ) // normal text output
- {
- if ( mnTextMode == 2 ) // forcing output one complete text packet, by
- pDXArry = NULL; // ignoring the kerning array
- ImplSetAttrForText( rPos );
- ByteString aStr( rUniString, maFont.GetCharSet() );
- ImplWriteString( aStr, rVDev, pDXArry, nWidth != 0 );
- if ( maFont.GetOrientation() )
- ImplWriteLine( "gr" );
- }
-}
-
-// ------------------------------------------------------------------------
-
-void PSWriter::ImplSetAttrForText( const Point& rPoint )
-{
- Point aPoint( rPoint );
-
- long nRotation = maFont.GetOrientation();
- ImplWriteTextColor();
-
- Size aSize = maFont.GetSize();
-
- if ( maLastFont != maFont )
- {
- if ( maFont.GetPitch() == PITCH_FIXED ) // a little bit font selection
- ImplDefineFont( "Courier", "Oblique" );
- else if ( maFont.GetCharSet() == RTL_TEXTENCODING_SYMBOL )
- ImplWriteLine( "/Symbol findfont" );
- else if ( maFont.GetFamily() == FAMILY_SWISS )
- ImplDefineFont( "Helvetica", "Oblique" );
- else
- ImplDefineFont( "Times", "Italic" );
-
- maLastFont = maFont;
- aSize = maFont.GetSize();
- ImplWriteDouble( aSize.Height() );
- *mpPS << "sf ";
- }
- if ( eTextAlign != ALIGN_BASELINE )
- { // PostScript kennt kein FontAlignment
- if ( eTextAlign == ALIGN_TOP ) // -> ich gehe daher davon aus, dass
- aPoint.Y() += ( aSize.Height() * 4 / 5 ); // der Bereich unter der Baseline
- else if ( eTextAlign == ALIGN_BOTTOM ) // in etwa 20% der Fontsize ausmacht
- aPoint.Y() -= ( aSize.Height() / 5 );
- }
- ImplMoveTo( aPoint );
- if ( nRotation )
- {
- *mpPS << "gs ";
- ImplWriteF( nRotation, 1 );
- *mpPS << "r ";
- }
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplDefineFont( const char* pOriginalName, const char* pItalic )
-{
- *mpPS << (BYTE)'/'; //convert the font pOriginalName using ISOLatin1Encoding
- *mpPS << pOriginalName;
- switch ( maFont.GetWeight() )
- {
- case WEIGHT_SEMIBOLD :
- case WEIGHT_BOLD :
- case WEIGHT_ULTRABOLD :
- case WEIGHT_BLACK :
- *mpPS << "-Bold";
- if ( maFont.GetItalic() != ITALIC_NONE )
- *mpPS << pItalic;
- break;
- default:
- if ( maFont.GetItalic() != ITALIC_NONE )
- *mpPS << pItalic;
- break;
- }
- ImplWriteLine( " f" );
-}
-
-//---------------------------------------------------------------------------------
-//---------------------------------------------------------------------------------
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplClosePathDraw( ULONG nMode )
-{
- *mpPS << "pc";
- mnCursorPos += 2;
- ImplExecMode( nMode );
-}
-
-void PSWriter::ImplPathDraw()
-{
- *mpPS << "ps";
- mnCursorPos += 2;
- ImplExecMode( PS_RET );
-}
-
-//---------------------------------------------------------------------------------
-
-inline void PSWriter::ImplWriteLineColor( ULONG nMode )
-{
- if ( aColor != aLineColor )
- {
- aColor = aLineColor;
- ImplWriteColor( nMode );
- }
-}
-inline void PSWriter::ImplWriteFillColor( ULONG nMode )
-{
- if ( aColor != aFillColor )
- {
- aColor = aFillColor;
- ImplWriteColor( nMode );
- }
-}
-inline void PSWriter::ImplWriteTextColor( ULONG nMode )
-{
- if ( aColor != aTextColor )
- {
- aColor = aTextColor;
- ImplWriteColor( nMode );
- }
-}
-inline void PSWriter::ImplWriteTextFillColor( ULONG nMode )
-{
- if ( aColor != aTextFillColor )
- {
- aColor = aTextFillColor;
- ImplWriteColor( nMode );
- }
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteColor( ULONG nMode )
-{
- if ( mbGrayScale )
- {
- // writes the Color (grayscale) as a Number from 0.000 up to 1.000
-
- ImplWriteF( 1000 * ( (BYTE)aColor.GetRed() * 77 + (BYTE)aColor.GetGreen() * 151 +
- (BYTE)aColor.GetBlue() * 28 + 1 ) / 65536, 3, nMode );
- }
- else
- {
- ImplWriteB1 ( (BYTE)aColor.GetRed() );
- ImplWriteB1 ( (BYTE)aColor.GetGreen() );
- ImplWriteB1 ( (BYTE)aColor.GetBlue() );
- }
- *mpPS << "c"; // ( c is defined as setrgbcolor or setgray )
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-double PSWriter::ImplGetScaling( const MapMode& rMapMode )
-{
- double nMul;
- switch ( rMapMode.GetMapUnit() )
- {
- case MAP_PIXEL :
- case MAP_SYSFONT :
- case MAP_APPFONT :
-
- case MAP_100TH_MM :
- nMul = 1;
- break;
- case MAP_10TH_MM :
- nMul = 10;
- break;
- case MAP_MM :
- nMul = 100;
- break;
- case MAP_CM :
- nMul = 1000;
- break;
- case MAP_1000TH_INCH :
- nMul = 2.54;
- break;
- case MAP_100TH_INCH :
- nMul = 25.4;
- break;
- case MAP_10TH_INCH :
- nMul = 254;
- break;
- case MAP_INCH :
- nMul = 2540;
- break;
- case MAP_TWIP :
- nMul = 1.76388889;
- break;
- case MAP_POINT :
- nMul = 35.27777778;
- break;
- default:
- nMul = 1.0;
- break;
- }
- return nMul;
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplGetMapMode( const MapMode& rMapMode )
-{
- ImplWriteLine( "tm setmatrix" );
- double fMul = ImplGetScaling( rMapMode );
- double fScaleX = (double)rMapMode.GetScaleX() * fMul;
- double fScaleY = (double)rMapMode.GetScaleY() * fMul;
- ImplTranslate( rMapMode.GetOrigin().X() * fScaleX, rMapMode.GetOrigin().Y() * fScaleY );
- ImplScale( fScaleX, fScaleY );
-}
-
-//---------------------------------------------------------------------------------
-
-inline void PSWriter::ImplExecMode( ULONG nMode )
-{
- if ( nMode & PS_WRAP )
- {
- if ( mnCursorPos >= PS_LINESIZE )
- {
- mnCursorPos = 0;
- *mpPS << (BYTE)0xa;
- return;
- }
- }
- if ( nMode & PS_SPACE )
- {
- *mpPS << (BYTE)32;
- mnCursorPos++;
- }
- if ( nMode & PS_RET )
- {
- *mpPS << (BYTE)0xa;
- mnCursorPos = 0;
- }
-}
-
-//---------------------------------------------------------------------------------
-
-inline void PSWriter::ImplWriteLine( const char* pString, ULONG nMode )
-{
- ULONG i = 0;
- while ( pString[ i ] )
- {
- *mpPS << (BYTE)pString[ i++ ];
- }
- mnCursorPos += i;
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteLineInfo( double fLWidth, double fMLimit,
- SvtGraphicStroke::CapType eLCap,
- SvtGraphicStroke::JoinType eJoin,
- SvtGraphicStroke::DashArray& rLDash )
-{
- if ( fLineWidth != fLWidth )
- {
- fLineWidth = fLWidth;
- ImplWriteDouble( fLineWidth );
- ImplWriteLine( "lw", PS_SPACE );
- }
- if ( eLineCap != eLCap )
- {
- eLineCap = eLCap;
- ImplWriteLong( (sal_Int32)eLineCap, PS_SPACE );
- ImplWriteLine( "lc", PS_SPACE );
- }
- if ( eJoinType != eJoin )
- {
- eJoinType = eJoin;
- ImplWriteLong( (sal_Int32)eJoinType, PS_SPACE );
- ImplWriteLine( "lj", PS_SPACE );
- }
- if ( eJoinType == SvtGraphicStroke::joinMiter )
- {
- if ( fMiterLimit != fMLimit )
- {
- fMiterLimit = fMLimit;
- ImplWriteDouble( fMiterLimit );
- ImplWriteLine( "ml", PS_SPACE );
- }
- }
- if ( aDashArray != rLDash )
- {
- aDashArray = rLDash;
- sal_uInt32 j, i = aDashArray.size();
- ImplWriteLine( "[", PS_SPACE );
- for ( j = 0; j < i; j++ )
- ImplWriteDouble( aDashArray[ j ] );
- ImplWriteLine( "] 0 ld" );
- }
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteLineInfo( const LineInfo& rLineInfo )
-{
- SvtGraphicStroke::DashArray l_aDashArray;
- if ( rLineInfo.GetStyle() == LINE_DASH )
- l_aDashArray.push_back( 2 );
- double fLWidth = ( ( rLineInfo.GetWidth() + 1 ) + ( rLineInfo.GetWidth() + 1 ) ) * 0.5;
- ImplWriteLineInfo( fLWidth, 10.0, SvtGraphicStroke::capButt, SvtGraphicStroke::joinMiter, l_aDashArray );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteLong( sal_Int32 nNumber, ULONG nMode )
-{
- const ByteString aNumber( ByteString::CreateFromInt32( nNumber ) );
- ULONG nLen = aNumber.Len();
- mnCursorPos += nLen;
- for ( USHORT n = 0; n < nLen; n++ )
- *mpPS << aNumber.GetChar( n );
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteDouble( double fNumber, ULONG nMode )
-{
- sal_Int32 nLength;
-
- sal_Int32 nPTemp = (sal_Int32)fNumber;
- sal_Int32 nATemp = labs( (sal_Int32)( ( fNumber - nPTemp ) * 100000 ) );
-
- if ( !nPTemp && nATemp && ( fNumber < 0.0 ) )
- *mpPS << (sal_Char)'-';
-
- ByteString aNumber1( ByteString::CreateFromInt32( nPTemp ) );
- nLength = aNumber1.Len();
- mnCursorPos += nLength;
- for ( sal_Int32 n = 0; n < nLength; n++ )
- *mpPS << aNumber1.GetChar( (sal_uInt16)n );
-
- int zCount = 0;
- if ( nATemp )
- {
- *mpPS << (BYTE)'.';
- mnCursorPos++;
- const ByteString aNumber2( ByteString::CreateFromInt32( nATemp ) );
-
- sal_Int16 n, nLen = aNumber2.Len();
- if ( nLen < 8 )
- {
- mnCursorPos += 6 - nLen;
- for ( n = 0; n < ( 5 - nLen ); n++ )
- {
- *mpPS << (BYTE)'0';
- }
- }
- mnCursorPos += nLen;
- for ( n = 0; n < nLen; n++ )
- {
- *mpPS << aNumber2.GetChar( n );
- zCount--;
- if ( aNumber2.GetChar( n ) != '0' )
- zCount = 0;
- }
- if ( zCount )
- mpPS->SeekRel( zCount );
- }
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-// writes the number to stream: nNumber / ( 10^nCount )
-
-void PSWriter::ImplWriteF( sal_Int32 nNumber, ULONG nCount, ULONG nMode )
-{
- if ( nNumber < 0 )
- {
- *mpPS << (BYTE)'-';
- nNumber = -nNumber;
- mnCursorPos++;
- }
- const ByteString aScaleFactor( ByteString::CreateFromInt32( nNumber ) );
- ULONG nLen = aScaleFactor.Len();
- long nStSize = ( nCount + 1 ) - nLen;
- if ( nStSize >= 1 )
- {
- *mpPS << (BYTE)'0';
- mnCursorPos++;
- }
- if ( nStSize >= 2 )
- {
- *mpPS << (BYTE)'.';
- for ( long i = 1; i < nStSize; i++ )
- {
- *mpPS << (BYTE)'0';
- mnCursorPos++;
- }
- }
- mnCursorPos += nLen;
- for( USHORT n = 0UL; n < nLen; n++ )
- {
- if ( n == nLen - nCount )
- {
- *mpPS << (BYTE)'.';
- mnCursorPos++;
- }
- *mpPS << aScaleFactor.GetChar( n );
- }
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteByte( BYTE nNumb, ULONG nMode )
-{
- *mpPS << ( nNumb );
- mnCursorPos++;
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-void PSWriter::ImplWriteHexByte( BYTE nNumb, ULONG nMode )
-{
- if ( ( nNumb >> 4 ) > 9 )
- *mpPS << (BYTE)( ( nNumb >> 4 ) + 'A' - 10 );
- else
- *mpPS << (BYTE)( ( nNumb >> 4 ) + '0' );
-
- if ( ( nNumb & 0xf ) > 9 )
- *mpPS << (BYTE)( ( nNumb & 0xf ) + 'A' - 10 );
- else
- *mpPS << (BYTE)( ( nNumb & 0xf ) + '0' );
- mnCursorPos += 2;
- ImplExecMode( nMode );
-}
-
-//---------------------------------------------------------------------------------
-
-// writes the BYTE nNumb as a Number from 0.000 up to 1.000
-
-void PSWriter::ImplWriteB1( BYTE nNumb, ULONG nMode )
-{
- ImplWriteF( 1000 * ( nNumb + 1 ) / 256 , 3, nMode );
-}
-
-
-// ------------------------------------------------------------------------
-
-inline void PSWriter::WriteBits( USHORT nCode, USHORT nCodeLen )
-{
- dwShift |= ( nCode << ( nOffset - nCodeLen ) );
- nOffset -= nCodeLen;
- while ( nOffset < 24 )
- {
- ImplWriteHexByte( (BYTE)( dwShift >> 24 ) );
- dwShift <<= 8;
- nOffset += 8;
- }
- if ( nCode == 257 && nOffset != 32 )
- ImplWriteHexByte( (BYTE)( dwShift >> 24 ) );
-}
-
-// ------------------------------------------------------------------------
-
-void PSWriter::StartCompression()
-{
- USHORT i;
- nDataSize = 8;
-
- nClearCode = 1 << nDataSize;
- nEOICode = nClearCode + 1;
- nTableSize = nEOICode + 1;
- nCodeSize = nDataSize + 1;
-
- nOffset = 32; // anzahl freier bits in dwShift
- dwShift = 0;
-
- pTable = new PSLZWCTreeNode[ 4096 ];
-
- for ( i = 0; i < 4096; i++ )
- {
- pTable[ i ].pBrother = pTable[ i ].pFirstChild = NULL;
- pTable[ i ].nValue = (BYTE)( pTable[ i ].nCode = i );
- }
- pPrefix = NULL;
- WriteBits( nClearCode, nCodeSize );
-}
-
-// ------------------------------------------------------------------------
-
-void PSWriter::Compress( BYTE nCompThis )
-{
- PSLZWCTreeNode* p;
- USHORT i;
- BYTE nV;
-
- if( !pPrefix )
- {
- pPrefix = pTable + nCompThis;
- }
- else
- {
- nV = nCompThis;
- for( p = pPrefix->pFirstChild; p != NULL; p = p->pBrother )
- {
- if ( p->nValue == nV )
- break;
- }
-
- if( p )
- pPrefix = p;
- else
- {
- WriteBits( pPrefix->nCode, nCodeSize );
-
- if ( nTableSize == 409 )
- {
- WriteBits( nClearCode, nCodeSize );
-
- for ( i = 0; i < nClearCode; i++ )
- pTable[ i ].pFirstChild = NULL;
-
- nCodeSize = nDataSize + 1;
- nTableSize = nEOICode + 1;
- }
- else
- {
- if( nTableSize == (USHORT)( ( 1 << nCodeSize ) - 1 ) )
- nCodeSize++;
-
- p = pTable + ( nTableSize++ );
- p->pBrother = pPrefix->pFirstChild;
- pPrefix->pFirstChild = p;
- p->nValue = nV;
- p->pFirstChild = NULL;
- }
-
- pPrefix = pTable + nV;
- }
- }
-}
-
-// ------------------------------------------------------------------------
-
-void PSWriter::EndCompression()
-{
- if( pPrefix )
- WriteBits( pPrefix->nCode, nCodeSize );
-
- WriteBits( nEOICode, nCodeSize );
- delete[] pTable;
-}
-
-// ------------------------------------------------------------------------
-
-BYTE* PSWriter::ImplSearchEntry( BYTE* pSource, BYTE* pDest, ULONG nComp, ULONG nSize )
-{
- while ( nComp-- >= nSize )
- {
- ULONG i;
- for ( i = 0; i < nSize; i++ )
- {
- if ( ( pSource[i]&~0x20 ) != ( pDest[i]&~0x20 ) )
- break;
- }
- if ( i == nSize )
- return pSource;
- pSource++;
- }
- return NULL;
-}
-
-// ------------------------------------------------------------------------
-
-BOOL PSWriter::ImplGetBoundingBox( double* nNumb, BYTE* pSource, ULONG nSize )
-{
- BOOL bRetValue = FALSE;
- ULONG nBytesRead;
-
- if ( nSize < 256 ) // we assume that the file is greater than 256 bytes
- return FALSE;
-
- if ( nSize < POSTSCRIPT_BOUNDINGSEARCH )
- nBytesRead = nSize;
- else
- nBytesRead = POSTSCRIPT_BOUNDINGSEARCH;
-
- BYTE* pDest = ImplSearchEntry( pSource, (BYTE*)"%%BoundingBox:", nBytesRead, 14 );
- if ( pDest )
- {
- int nSecurityCount = 100; // only 100 bytes following the bounding box will be checked
- nNumb[0] = nNumb[1] = nNumb[2] = nNumb[3] = 0;
- pDest += 14;
- for ( int i = 0; ( i < 4 ) && nSecurityCount; i++ )
- {
- int nDivision = 1;
- BOOL bDivision = FALSE;
- BOOL bNegative = FALSE;
- BOOL bValid = TRUE;
-
- while ( ( --nSecurityCount ) && ( ( *pDest == ' ' ) || ( *pDest == 0x9 ) ) )
- pDest++;
- BYTE nByte = *pDest;
- while ( nSecurityCount && ( nByte != ' ' ) && ( nByte != 0x9 ) && ( nByte != 0xd ) && ( nByte != 0xa ) )
- {
- switch ( nByte )
- {
- case '.' :
- if ( bDivision )
- bValid = FALSE;
- else
- bDivision = TRUE;
- break;
- case '-' :
- bNegative = TRUE;
- break;
- default :
- if ( ( nByte < '0' ) || ( nByte > '9' ) )
- nSecurityCount = 1; // error parsing the bounding box values
- else if ( bValid )
- {
- if ( bDivision )
- nDivision*=10;
- nNumb[i] *= 10;
- nNumb[i] += nByte - '0';
- }
- break;
- }
- nSecurityCount--;
- nByte = *(++pDest);
- }
- if ( bNegative )
- nNumb[i] = -nNumb[i];
- if ( bDivision && ( nDivision != 1 ) )
- nNumb[i] /= nDivision;
- }
- if ( nSecurityCount)
- bRetValue = TRUE;
- }
- return bRetValue;
-}
-
-//================== GraphicExport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream & rStream, Graphic & rGraphic, FilterConfigItem* pFilterConfigItem, BOOL)
-{
- PSWriter aPSWriter;
- return aPSWriter.WritePS( rGraphic, rStream, pFilterConfigItem );
-}
-
-//---------------------------------------------------------------------------------
-
-extern "C" BOOL __LOADONCALLAPI DoExportDialog( FltCallDialogParameter& rPara )
-{
- BOOL bRet = FALSE;
-
- if ( rPara.pWindow )
- {
- ByteString aResMgrName( "eps" );
- ResMgr* pResMgr;
-
- pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
-
- if( pResMgr )
- {
- rPara.pResMgr = pResMgr;
- bRet = ( DlgExportEPS( rPara ).Execute() == RET_OK );
- delete pResMgr;
- }
- else
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-//================== ein bischen Muell fuer Windows ==========================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
diff --git a/goodies/source/filter.vcl/eps/epsstr.src b/goodies/source/filter.vcl/eps/epsstr.src
deleted file mode 100644
index c24a89b6e417..000000000000
--- a/goodies/source/filter.vcl/eps/epsstr.src
+++ /dev/null
@@ -1,73 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: epsstr.src,v $
- * $Revision: 1.43 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#include "strings.hrc"
-
-String KEY_VERSION_CHECK
-{
- Text [ en-US ] = "Warning: Not all of the imported EPS graphics could be saved at level1\nas some are at a higher level!";
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/goodies/source/filter.vcl/eps/exports.map b/goodies/source/filter.vcl/eps/exports.map
deleted file mode 100644
index 1b61354c2869..000000000000
--- a/goodies/source/filter.vcl/eps/exports.map
+++ /dev/null
@@ -1,8 +0,0 @@
-EPSEXPORTER_1_0 {
- global:
- GraphicExport;
- DoExportDialog;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/eps/makefile.mk b/goodies/source/filter.vcl/eps/makefile.mk
deleted file mode 100644
index c5599344725a..000000000000
--- a/goodies/source/filter.vcl/eps/makefile.mk
+++ /dev/null
@@ -1,83 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.15 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=eps
-DEPTARGET=veps
-
-#GEN_HID=TRUE
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-
-SRS1NAME=$(TARGET)
-SRC1FILES = dlgeps.src \
- epsstr.src
-.IF "$(L10N_framework)"==""
-EXCEPTIONSFILES=$(SLO)$/eps.obj
-SLOFILES = $(SLO)$/eps.obj \
- $(SLO)$/dlgeps.obj
-.ENDIF
-
-# ==========================================================================
-
-RESLIB1NAME=$(TARGET)
-RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-.IF "$(L10N_framework)"==""
-SHL1TARGET= eps$(DLLPOSTFIX)
-SHL1IMPLIB= eps
-SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(VCLLIB) $(SVTOOLLIB) $(CPPULIB) $(SALLIB)
-
-SHL1LIBS= $(SLB)$/eps.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/eps.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/eps/strings.hrc b/goodies/source/filter.vcl/eps/strings.hrc
deleted file mode 100644
index b0f14dc8c3d5..000000000000
--- a/goodies/source/filter.vcl/eps/strings.hrc
+++ /dev/null
@@ -1,32 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: strings.hrc,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#define KEY_VERSION_CHECK 260
-
diff --git a/goodies/source/filter.vcl/eras/eras.cxx b/goodies/source/filter.vcl/eras/eras.cxx
deleted file mode 100644
index 46307f2a56e0..000000000000
--- a/goodies/source/filter.vcl/eras/eras.cxx
+++ /dev/null
@@ -1,320 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: eras.cxx,v $
- * $Revision: 1.11.38.1 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <svtools/fltcall.hxx>
-#include <svtools/FilterConfigItem.hxx>
-
-//============================ RASWriter ==================================
-
-class RASWriter {
-
-private:
-
- SvStream* mpOStm;
- USHORT mpOStmOldModus;
-
- BOOL mbStatus;
- BitmapReadAccess* mpAcc;
-
- ULONG mnWidth, mnHeight;
- USHORT mnColors, mnDepth;
-
- ULONG mnRepCount;
- BYTE mnRepVal;
-
- com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
-
- void ImplCallback( ULONG nCurrentYPos );
- BOOL ImplWriteHeader();
- void ImplWritePalette();
- void ImplWriteBody();
- void ImplPutByte( BYTE ); // RLE decoding
-
-public:
- RASWriter();
- ~RASWriter();
-
- BOOL WriteRAS( const Graphic& rGraphic, SvStream& rRAS, FilterConfigItem* pFilterConfigItem );
-};
-
-//=================== Methoden von RASWriter ==============================
-
-RASWriter::RASWriter() :
- mbStatus ( TRUE ),
- mpAcc ( NULL ),
- mnRepCount ( 0xffffffff )
-{
-}
-
-// ------------------------------------------------------------------------
-
-RASWriter::~RASWriter()
-{
-}
-
-// ------------------------------------------------------------------------
-
-void RASWriter::ImplCallback( ULONG nYPos )
-{
- if ( xStatusIndicator.is() )
- xStatusIndicator->setValue( (USHORT)( ( 100 * nYPos ) / mnHeight ) );
-}
-
-// ------------------------------------------------------------------------
-
-BOOL RASWriter::WriteRAS( const Graphic& rGraphic, SvStream& rRAS, FilterConfigItem* pFilterConfigItem)
-{
- Bitmap aBmp;
-
- mpOStm = &rRAS;
-
- if ( pFilterConfigItem )
- {
- xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
- if ( xStatusIndicator.is() )
- {
- rtl::OUString aMsg;
- xStatusIndicator->start( aMsg, 100 );
- }
- }
-
- BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
- aBmp = aBmpEx.GetBitmap();
-
- if ( aBmp.GetBitCount() == 4 )
- aBmp.Convert( BMP_CONVERSION_8BIT_COLORS );
-
- mnDepth = aBmp.GetBitCount();
-
- // export code below only handles three discrete cases
- mnDepth = mnDepth <= 1 ? 1 : mnDepth <= 8 ? 8 : 24;
-
- mpAcc = aBmp.AcquireReadAccess();
- if ( mpAcc )
- {
- mpOStmOldModus = mpOStm->GetNumberFormatInt();
- mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
-
- if ( ImplWriteHeader() )
- {
- if ( mnDepth <= 8 )
- ImplWritePalette();
- ImplWriteBody();
- }
- aBmp.ReleaseAccess( mpAcc );
- }
- else
- mbStatus = FALSE;
-
- mpOStm->SetNumberFormatInt( mpOStmOldModus );
-
- if ( xStatusIndicator.is() )
- xStatusIndicator->end();
-
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-BOOL RASWriter::ImplWriteHeader()
-{
- mnWidth = mpAcc->Width();
- mnHeight = mpAcc->Height();
- if ( mnDepth <= 8 )
- {
- mnColors = mpAcc->GetPaletteEntryCount();
- if (mnColors == 0)
- mbStatus = FALSE;
- }
- if ( mbStatus && mnWidth && mnHeight && mnDepth )
- {
- *mpOStm << (UINT32)0x59a66a95 << (UINT32)mnWidth << (UINT32)mnHeight
- << (UINT32)mnDepth
- << (UINT32)(( ( ( ( mnWidth * mnDepth ) + 15 ) >> 4 ) << 1 ) * mnHeight)
- << (UINT32)2;
-
- if ( mnDepth > 8 )
- *mpOStm << (UINT32)0 << (UINT32)0;
- else
- {
-
- *mpOStm << (UINT32)1 << (UINT32)( mnColors * 3 );
- }
- }
- else mbStatus = FALSE;
-
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-void RASWriter::ImplWritePalette()
-{
- USHORT i;
-
- for ( i = 0; i < mnColors; *mpOStm << mpAcc->GetPaletteColor( i++ ).GetRed() ) ;
- for ( i = 0; i < mnColors; *mpOStm << mpAcc->GetPaletteColor( i++ ).GetGreen() ) ;
- for ( i = 0; i < mnColors; *mpOStm << mpAcc->GetPaletteColor( i++ ).GetBlue() ) ;
-}
-
-// ------------------------------------------------------------------------
-
-void RASWriter::ImplWriteBody()
-{
- ULONG x, y;
-
- if ( mnDepth == 24 )
- {
- for ( y = 0; y < mnHeight; y++ )
- {
- ImplCallback( y ); // processing output
- for ( x = 0; x < mnWidth; x++ )
- {
- BitmapColor aColor( mpAcc->GetPixel( y, x ) );
- ImplPutByte( aColor.GetBlue() ); // Format ist BGR
- ImplPutByte( aColor.GetGreen() );
- ImplPutByte( aColor.GetRed() );
- }
- if ( x & 1 ) ImplPutByte( 0 ); // WORD ALIGNMENT ???
- }
- }
- else if ( mnDepth == 8 )
- {
- for ( y = 0; y < mnHeight; y++ )
- {
- ImplCallback( y ); // processing output
- for ( x = 0; x < mnWidth; x++ )
- {
- ImplPutByte ( mpAcc->GetPixel( y, x ) );
- }
- if ( x & 1 ) ImplPutByte( 0 ); // WORD ALIGNMENT ???
- }
- }
- else if ( mnDepth == 1 )
- {
- BYTE nDat = 0;
-
- for ( y = 0; y < mnHeight; y++ )
- {
- ImplCallback( y ); // processing output
- for ( x = 0; x < mnWidth; x++ )
- {
- nDat = ( ( nDat << 1 ) | ( mpAcc->GetPixel ( y, x ) & 1 ) );
- if ( ( x & 7 ) == 7 )
- ImplPutByte( nDat );
- }
- if ( x & 7 )
- ImplPutByte( sal::static_int_cast< BYTE >(nDat << ( ( ( x & 7 ) ^ 7 ) + 1)) );// write remaining bits
- if (!( ( x - 1 ) & 0x8 ) )
- ImplPutByte( 0 ); // WORD ALIGNMENT ???
- }
- }
- ImplPutByte( mnRepVal + 1 ); // end of RLE decoding
-}
-
-// ------------------------------------------------------------------------
-
-void RASWriter::ImplPutByte( BYTE nPutThis )
-{
- if ( mnRepCount == 0xffffffff )
- {
- mnRepCount = 0;
- mnRepVal = nPutThis;
- }
- else
- {
- if ( ( nPutThis == mnRepVal ) && ( mnRepCount != 0xff ) )
- mnRepCount++;
- else
- {
- if ( mnRepCount == 0 )
- {
- *mpOStm << (BYTE)mnRepVal;
- if ( mnRepVal == 0x80 )
- *mpOStm << (BYTE)0;
- }
- else
- {
- *mpOStm << (BYTE)0x80;
- *mpOStm << (BYTE)mnRepCount;
- *mpOStm << (BYTE)mnRepVal;
- }
- mnRepVal = nPutThis;
- mnRepCount = 0;
- }
- }
-}
-
-// ------------------------------------------------------------------------
-
-// ---------------------
-// - exported function -
-// ---------------------
-
-extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
-{
- RASWriter aRASWriter;
-
- return aRASWriter.WriteRAS( rGraphic, rStream, pFilterConfigItem );
-}
-#ifndef GCC
-#endif
-
-// ---------------
-// - Win16 trash -
-// ---------------
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0;
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
- if ( nHeap )
- UnlockData( 0 );
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
diff --git a/goodies/source/filter.vcl/eras/exports.map b/goodies/source/filter.vcl/eras/exports.map
deleted file mode 100644
index 4a78a96ee951..000000000000
--- a/goodies/source/filter.vcl/eras/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-RASEXPORTER_1_0 {
- global:
- GraphicExport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/eras/makefile.mk b/goodies/source/filter.vcl/eras/makefile.mk
deleted file mode 100644
index e6aeaeefb223..000000000000
--- a/goodies/source/filter.vcl/eras/makefile.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.14 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=eras
-DEPTARGET=veras
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-.IF "$(L10N_framework)"==""
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-
-SLOFILES = $(SLO)$/eras.obj
-
-# ==========================================================================
-
-SHL1TARGET= era$(DLLPOSTFIX)
-SHL1IMPLIB= eras
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB) $(SVTOOLLIB)
-SHL1LIBS= $(SLB)$/eras.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/eras.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
-
diff --git a/goodies/source/filter.vcl/etiff/etiff.cxx b/goodies/source/filter.vcl/etiff/etiff.cxx
deleted file mode 100644
index 3cdec42d0978..000000000000
--- a/goodies/source/filter.vcl/etiff/etiff.cxx
+++ /dev/null
@@ -1,651 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: etiff.cxx,v $
- * $Revision: 1.10 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/graph.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/msgbox.hxx>
-#include <vcl/bmpacc.hxx>
-#include <svl/solar.hrc>
-#include <svtools/fltcall.hxx>
-#include <svtools/FilterConfigItem.hxx>
-
-#define NewSubfileType 254
-#define ImageWidth 256
-#define ImageLength 257
-#define BitsPerSample 258
-#define Compression 259
-#define PhotometricInterpretation 262
-#define StripOffsets 273
-#define SamplesPerPixel 277
-#define RowsPerStrip 278
-#define StripByteCounts 279
-#define XResolution 282
-#define YResolution 283
-#define PlanarConfiguration 284
-#define ResolutionUnit 296
-#define ColorMap 320
-#define ReferenceBlackWhite 532
-
-// -------------
-// - TIFFWriter -
-// -------------
-
-struct TIFFLZWCTreeNode
-{
-
- TIFFLZWCTreeNode* pBrother; // naechster Knoten, der den selben Vater hat
- TIFFLZWCTreeNode* pFirstChild; // erster Sohn
- USHORT nCode; // Der Code fuer den String von Pixelwerten, der sich ergibt, wenn
- USHORT nValue; // Der Pixelwert
-};
-
-class TIFFWriter
-{
-private:
-
- SvStream* mpOStm;
- UINT32 mnStreamOfs;
-
- BOOL mbStatus;
- BitmapReadAccess* mpAcc;
-
- UINT32 mnWidth, mnHeight, mnColors;
- UINT32 mnCurAllPictHeight;
- UINT32 mnSumOfAllPictHeight;
- UINT32 mnBitsPerPixel;
- UINT32 mnLastPercent;
-
- UINT32 mnLatestIfdPos;
- UINT16 mnTagCount; // number of tags already written
- UINT32 mnCurrentTagCountPos; // offset to the position where the current
- // tag count is to insert
-
- UINT32 mnXResPos; // if != 0 this DWORDs stores the
- UINT32 mnYResPos; // actual streamposition of the
- UINT32 mnPalPos; // Tag Entry
- UINT32 mnBitmapPos;
- UINT32 mnStripByteCountPos;
-
- TIFFLZWCTreeNode* pTable;
- TIFFLZWCTreeNode* pPrefix;
- USHORT nDataSize;
- USHORT nClearCode;
- USHORT nEOICode;
- USHORT nTableSize;
- USHORT nCodeSize;
- ULONG nOffset;
- ULONG dwShift;
-
- com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
-
- void ImplCallback( UINT32 nPercent );
- BOOL ImplWriteHeader( BOOL bMultiPage );
- void ImplWritePalette();
- BOOL ImplWriteBody();
- void ImplWriteTag( UINT16 TagID, UINT16 DataType, UINT32 NumberOfItems, UINT32 Value);
- void ImplWriteResolution( ULONG nStreamPos, sal_uInt32 nResolutionUnit );
- void StartCompression();
- void Compress( BYTE nSrc );
- void EndCompression();
- inline void WriteBits( USHORT nCode, USHORT nCodeLen );
-
-public:
-
- TIFFWriter();
- ~TIFFWriter();
-
- BOOL WriteTIFF( const Graphic& rGraphic, SvStream& rTIFF, FilterConfigItem* pFilterConfigItem );
-};
-
-// ------------------------------------------------------------------------
-
-TIFFWriter::TIFFWriter() :
- mbStatus ( TRUE ),
- mpAcc ( NULL ),
- mnCurAllPictHeight ( 0 ),
- mnSumOfAllPictHeight( 0 ),
- mnLastPercent ( 0 ),
- mnXResPos ( 0 ),
- mnYResPos ( 0 ),
- mnBitmapPos ( 0 ),
- mnStripByteCountPos ( 0 )
-{
-}
-
-// ------------------------------------------------------------------------
-
-TIFFWriter::~TIFFWriter()
-{
-}
-
-// ------------------------------------------------------------------------
-
-BOOL TIFFWriter::WriteTIFF( const Graphic& rGraphic, SvStream& rTIFF, FilterConfigItem* pFilterConfigItem)
-{
- ULONG* pDummy = new ULONG; delete pDummy; // damit unter OS/2
- // das richtige (Tools-)new
- // verwendet wird, da es sonst
- // in dieser DLL nur Vector-news
- // gibt;
-
- if ( pFilterConfigItem )
- {
- xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
- if ( xStatusIndicator.is() )
- {
- rtl::OUString aMsg;
- xStatusIndicator->start( aMsg, 100 );
- }
- }
-
- // #i69169# copy stream
- mpOStm = &rTIFF;
-
- const UINT16 nOldFormat = mpOStm->GetNumberFormatInt();
- mnStreamOfs = mpOStm->Tell();
-
- // we will use the BIG Endian Mode
- // TIFF header
- mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
- *mpOStm << (UINT32)0x4d4d002a; // TIFF identifier
- mnLatestIfdPos = mpOStm->Tell();
- *mpOStm << (UINT32)0;
-
- Animation aAnimation;
- Bitmap aBmp;
-
- if( mbStatus )
- {
- if ( rGraphic.IsAnimated() )
- aAnimation = rGraphic.GetAnimation();
- else
- {
- AnimationBitmap aAnimationBitmap( rGraphic.GetBitmap(), Point(), Size() );
- aAnimation.Insert( aAnimationBitmap );
- }
-
- USHORT i;
- for ( i = 0; i < aAnimation.Count(); i++ )
- mnSumOfAllPictHeight += aAnimation.Get( i ).aBmpEx.GetSizePixel().Height();
-
- for ( i = 0; mbStatus && ( i < aAnimation.Count() ); i++ )
- {
- mnPalPos = 0;
- const AnimationBitmap& rAnimationBitmap = aAnimation.Get( i );
- aBmp = rAnimationBitmap.aBmpEx.GetBitmap();
- mpAcc = aBmp.AcquireReadAccess();
- if ( mpAcc )
- {
- mnBitsPerPixel = aBmp.GetBitCount();
-
- // export code below only handles four discrete cases
- mnBitsPerPixel =
- mnBitsPerPixel <= 1 ? 1 : mnBitsPerPixel <= 4 ? 4 : mnBitsPerPixel <= 8 ? 8 : 24;
-
- if ( ImplWriteHeader( ( aAnimation.Count() > 0 ) ) )
- {
- Size aDestMapSize( 300, 300 );
- const MapMode aMapMode( aBmp.GetPrefMapMode() );
- if ( aMapMode.GetMapUnit() != MAP_PIXEL )
- {
- const Size aPrefSize( rGraphic.GetPrefSize() );
- aDestMapSize = OutputDevice::LogicToLogic( aPrefSize, aMapMode, MAP_INCH );
- }
- ImplWriteResolution( mnXResPos, aDestMapSize.Width() );
- ImplWriteResolution( mnYResPos, aDestMapSize.Height() );
- if ( mnPalPos )
- ImplWritePalette();
- ImplWriteBody();
- }
- UINT32 nCurPos = mpOStm->Tell();
- mpOStm->Seek( mnCurrentTagCountPos );
- *mpOStm << mnTagCount;
- mpOStm->Seek( nCurPos );
-
- aBmp.ReleaseAccess( mpAcc );
- }
- else
- mbStatus = FALSE;
- }
- }
- mpOStm->SetNumberFormatInt( nOldFormat );
-
- if ( xStatusIndicator.is() )
- xStatusIndicator->end();
-
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-void TIFFWriter::ImplCallback( UINT32 nPercent )
-{
- if ( xStatusIndicator.is() )
- {
- if( nPercent >= mnLastPercent + 3 )
- {
- mnLastPercent = nPercent;
- if ( nPercent <= 100 )
- xStatusIndicator->setValue( nPercent );
- }
- }
-}
-
-
-// ------------------------------------------------------------------------
-
-BOOL TIFFWriter::ImplWriteHeader( BOOL bMultiPage )
-{
- mnTagCount = 0;
- mnWidth = mpAcc->Width();
- mnHeight = mpAcc->Height();
-
- if ( mnWidth && mnHeight && mnBitsPerPixel && mbStatus )
- {
- UINT32 nCurrentPos = mpOStm->Tell();
- mpOStm->Seek( mnLatestIfdPos );
- *mpOStm << (UINT32)( nCurrentPos - mnStreamOfs ); // offset to the IFD
- mpOStm->Seek( nCurrentPos );
-
- // (OFS8) TIFF image file directory (IFD)
- mnCurrentTagCountPos = mpOStm->Tell();
- *mpOStm << (UINT16)0; // the number of tagentrys is to insert later
-
- UINT32 nSubFileFlags = 0;
- if ( bMultiPage )
- nSubFileFlags |= 2;
- ImplWriteTag( NewSubfileType, 4, 1, nSubFileFlags );
- ImplWriteTag( ImageWidth, 4, 1, mnWidth );
- ImplWriteTag( ImageLength, 4, 1, mnHeight);
- ImplWriteTag( BitsPerSample, 3, 1, ( mnBitsPerPixel == 24 ) ? 8 : mnBitsPerPixel );
- ImplWriteTag( Compression, 3, 1, 5 );
- BYTE nTemp;
- switch ( mnBitsPerPixel )
- {
- case 1 :
- nTemp = 1;
- break;
- case 4 :
- case 8 :
- nTemp = 3;
- break;
- case 24:
- nTemp = 2;
- break;
- default:
- nTemp = 0; // -Wall set a default...
- break;
- }
- ImplWriteTag( PhotometricInterpretation, 3, 1, nTemp );
- mnBitmapPos = mpOStm->Tell();
- ImplWriteTag( StripOffsets, 4, 1, 0 );
- ImplWriteTag( SamplesPerPixel, 3, 1, ( mnBitsPerPixel == 24 ) ? 3 : 1 );
- ImplWriteTag( RowsPerStrip, 4, 1, mnHeight ); //0xffffffff );
- mnStripByteCountPos = mpOStm->Tell();
- ImplWriteTag( StripByteCounts, 4, 1, ( ( mnWidth * mnBitsPerPixel * mnHeight ) + 7 ) >> 3 );
- mnXResPos = mpOStm->Tell();
- ImplWriteTag( XResolution, 5, 1, 0 );
- mnYResPos = mpOStm->Tell();
- ImplWriteTag( YResolution, 5, 1, 0 );
- if ( mnBitsPerPixel != 1 )
- ImplWriteTag( PlanarConfiguration, 3, 1, 1 ); // ( RGB ORDER )
- ImplWriteTag( ResolutionUnit, 3, 1, 2); // Resolution Unit is Inch
- if ( ( mnBitsPerPixel == 4 ) || ( mnBitsPerPixel == 8 ) )
- {
- mnColors = mpAcc->GetPaletteEntryCount();
- mnPalPos = mpOStm->Tell();
- ImplWriteTag( ColorMap, 3, 3 * mnColors, 0 );
- }
-
- // and last we write zero to close the num dir entries list
- mnLatestIfdPos = mpOStm->Tell();
- *mpOStm << (UINT32)0; // there are no more IFD
- }
- else
- mbStatus = FALSE;
-
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-void TIFFWriter::ImplWritePalette()
-{
- USHORT i;
- ULONG nCurrentPos = mpOStm->Tell();
- mpOStm->Seek( mnPalPos + 8 ); // the palette tag entry needs the offset
- *mpOStm << static_cast<sal_uInt32>(nCurrentPos - mnStreamOfs); // to the palette colors
- mpOStm->Seek( nCurrentPos );
-
- for ( i = 0; i < mnColors; i++ )
- {
- const BitmapColor& rColor = mpAcc->GetPaletteColor( i );
- *mpOStm << (UINT16)( rColor.GetRed() << 8 );
- }
- for ( i = 0; i < mnColors; i++ )
- {
- const BitmapColor& rColor = mpAcc->GetPaletteColor( i );
- *mpOStm << (UINT16)( rColor.GetGreen() << 8 );
- }
- for ( i = 0; i < mnColors; i++ )
- {
- const BitmapColor& rColor = mpAcc->GetPaletteColor( i );
- *mpOStm << (UINT16)( rColor.GetBlue() << 8 );
- }
-}
-
-// ------------------------------------------------------------------------
-
-BOOL TIFFWriter::ImplWriteBody()
-{
- BYTE nTemp = 0;
- BYTE nShift;
- ULONG j, x, y;
-
- ULONG nGfxBegin = mpOStm->Tell();
- mpOStm->Seek( mnBitmapPos + 8 ); // the strip offset tag entry needs the offset
- *mpOStm << static_cast<sal_uInt32>(nGfxBegin - mnStreamOfs); // to the bitmap data
- mpOStm->Seek( nGfxBegin );
-
- StartCompression();
-
- switch( mnBitsPerPixel )
- {
- case 24 :
- {
- for ( y = 0; y < mnHeight; y++, mnCurAllPictHeight++ )
- {
- ImplCallback( 100 * mnCurAllPictHeight / mnSumOfAllPictHeight );
- for ( x = 0; x < mnWidth; x++ )
- {
- const BitmapColor& rColor = mpAcc->GetPixel( y, x );
- Compress( rColor.GetRed() );
- Compress( rColor.GetGreen() );
- Compress( rColor.GetBlue() );
- }
- }
- }
- break;
-
- case 8 :
- {
- for ( y = 0; y < mnHeight; y++, mnCurAllPictHeight++ )
- {
- ImplCallback( 100 * mnCurAllPictHeight / mnSumOfAllPictHeight );
- for ( x = 0; x < mnWidth; x++ )
- {
- Compress( mpAcc->GetPixel( y, x ) );
- }
- }
- }
- break;
-
- case 4 :
- {
- for ( nShift = 0, y = 0; y < mnHeight; y++, mnCurAllPictHeight++ )
- {
- ImplCallback( 100 * mnCurAllPictHeight / mnSumOfAllPictHeight );
- for ( x = 0; x < mnWidth; x++, nShift++ )
- {
- if (!( nShift & 1 ))
- nTemp = ( (BYTE)mpAcc->GetPixel( y, x ) << 4 );
- else
- Compress( (BYTE)( nTemp | ( mpAcc->GetPixel( y, x ) & 0xf ) ) );
- }
- if ( nShift & 1 )
- Compress( nTemp );
- }
- }
- break;
-
- case 1 :
- {
- j = 1;
- for ( y = 0; y < mnHeight; y++, mnCurAllPictHeight++ )
- {
- ImplCallback( 100 * mnCurAllPictHeight / mnSumOfAllPictHeight );
- for ( x = 0; x < mnWidth; x++)
- {
- j <<= 1;
- j |= ( ( ~mpAcc->GetPixel( y, x ) ) & 1 );
- if ( j & 0x100 )
- {
- Compress( (BYTE)j );
- j = 1;
- }
- }
- if ( j != 1 )
- {
- Compress( (BYTE)(j << ( ( ( x & 7) ^ 7 ) + 1 ) ) );
- j = 1;
- }
- }
- }
- break;
-
- default:
- {
- mbStatus = FALSE;
- }
- break;
- }
-
- EndCompression();
-
- if ( mnStripByteCountPos && mbStatus )
- {
- ULONG nGfxEnd = mpOStm->Tell();
- mpOStm->Seek( mnStripByteCountPos + 8 );
- *mpOStm << static_cast<sal_uInt32>( nGfxEnd - nGfxBegin ); // mnStripByteCountPos needs the size of the compression data
- mpOStm->Seek( nGfxEnd );
- }
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-void TIFFWriter::ImplWriteResolution( ULONG nStreamPos, sal_uInt32 nResolutionUnit )
-{
- ULONG nCurrentPos = mpOStm->Tell();
- mpOStm->Seek( nStreamPos + 8 );
- *mpOStm << (UINT32)nCurrentPos - mnStreamOfs;
- mpOStm->Seek( nCurrentPos );
- *mpOStm << (UINT32)1;
- *mpOStm << nResolutionUnit;
-}
-
-// ------------------------------------------------------------------------
-
-void TIFFWriter::ImplWriteTag( UINT16 nTagID, UINT16 nDataType, UINT32 nNumberOfItems, UINT32 nValue)
-{
- mnTagCount++;
-
- *mpOStm << nTagID;
- *mpOStm << nDataType;
- *mpOStm << nNumberOfItems;
- if ( nDataType == 3 )
- nValue <<=16; // in Big Endian Mode WORDS needed to be shifted to a DWORD
- *mpOStm << nValue;
-}
-
-// ------------------------------------------------------------------------
-
-inline void TIFFWriter::WriteBits( USHORT nCode, USHORT nCodeLen )
-{
- dwShift |= ( nCode << ( nOffset - nCodeLen ) );
- nOffset -= nCodeLen;
- while ( nOffset < 24 )
- {
- *mpOStm << (BYTE)( dwShift >> 24 );
- dwShift <<= 8;
- nOffset += 8;
- }
- if ( nCode == 257 && nOffset != 32 )
- {
- *mpOStm << (BYTE)( dwShift >> 24 );
- }
-}
-
-// ------------------------------------------------------------------------
-
-void TIFFWriter::StartCompression()
-{
- USHORT i;
- nDataSize = 8;
-
- nClearCode = 1 << nDataSize;
- nEOICode = nClearCode + 1;
- nTableSize = nEOICode + 1;
- nCodeSize = nDataSize + 1;
-
- nOffset = 32; // anzahl freier bits in dwShift
- dwShift = 0;
-
- pTable = new TIFFLZWCTreeNode[ 4096 ];
-
- for ( i = 0; i < 4096; i++)
- {
- pTable[ i ].pBrother = pTable[ i ].pFirstChild = NULL;
- pTable[ i ].nValue = (BYTE)( pTable[ i ].nCode = i );
- }
-
- pPrefix = NULL;
- WriteBits( nClearCode, nCodeSize );
-}
-
-// ------------------------------------------------------------------------
-
-void TIFFWriter::Compress( BYTE nCompThis )
-{
- TIFFLZWCTreeNode* p;
- USHORT i;
- BYTE nV;
-
- if( !pPrefix )
- {
- pPrefix = pTable + nCompThis;
- }
- else
- {
- nV = nCompThis;
- for( p = pPrefix->pFirstChild; p != NULL; p = p->pBrother )
- {
- if ( p->nValue == nV )
- break;
- }
-
- if( p )
- pPrefix = p;
- else
- {
- WriteBits( pPrefix->nCode, nCodeSize );
-
- if ( nTableSize == 409 )
- {
- WriteBits( nClearCode, nCodeSize );
-
- for ( i = 0; i < nClearCode; i++ )
- pTable[ i ].pFirstChild = NULL;
-
- nCodeSize = nDataSize + 1;
- nTableSize = nEOICode + 1;
- }
- else
- {
- if( nTableSize == (USHORT)( ( 1 << nCodeSize ) - 1 ) )
- nCodeSize++;
-
- p = pTable + ( nTableSize++ );
- p->pBrother = pPrefix->pFirstChild;
- pPrefix->pFirstChild = p;
- p->nValue = nV;
- p->pFirstChild = NULL;
- }
-
- pPrefix = pTable + nV;
- }
- }
-}
-
-// ------------------------------------------------------------------------
-
-void TIFFWriter::EndCompression()
-{
- if( pPrefix )
- WriteBits( pPrefix->nCode, nCodeSize );
-
- WriteBits( nEOICode, nCodeSize );
- delete[] pTable;
-}
-
-// ------------------------------------------------------------------------
-
-// ---------------------
-// - exported function -
-// ---------------------
-
-extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
-{
- return TIFFWriter().WriteTIFF( rGraphic, rStream, pFilterConfigItem );
-}
-
-#ifndef GCC
-#endif
-
-// ---------------
-// - Win16 trash -
-// ---------------
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0;
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
- if ( nHeap )
- UnlockData( 0 );
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
-
diff --git a/goodies/source/filter.vcl/etiff/exports.map b/goodies/source/filter.vcl/etiff/exports.map
deleted file mode 100644
index 094e72c0f5fb..000000000000
--- a/goodies/source/filter.vcl/etiff/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-TIFEXPORTER_1_0 {
- global:
- GraphicExport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/etiff/makefile.mk b/goodies/source/filter.vcl/etiff/makefile.mk
deleted file mode 100644
index 70902012ce23..000000000000
--- a/goodies/source/filter.vcl/etiff/makefile.mk
+++ /dev/null
@@ -1,69 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.14 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=etiff
-DEPTARGET=vetiff
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/etiff.obj
-
-# ==========================================================================
-
-SHL1TARGET= eti$(DLLPOSTFIX)
-SHL1IMPLIB= etiff
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB) $(SVTOOLLIB)
-SHL1LIBS= $(SLB)$/etiff.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/etiff.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/expm/expm.cxx b/goodies/source/filter.vcl/expm/expm.cxx
deleted file mode 100644
index 0eb9cd97b94f..000000000000
--- a/goodies/source/filter.vcl/expm/expm.cxx
+++ /dev/null
@@ -1,305 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: expm.cxx,v $
- * $Revision: 1.10 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <svtools/fltcall.hxx>
-
-//============================ XPMWriter ==================================
-
-class XPMWriter {
-
-private:
-
- SvStream* mpOStm; // Die auszugebende XPM-Datei
- USHORT mpOStmOldModus;
-
- BOOL mbStatus;
- BOOL mbTrans;
- BitmapReadAccess* mpAcc;
- ULONG mnWidth, mnHeight; // Bildausmass in Pixeln
- USHORT mnColors;
-
- com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
-
- void ImplCallback( USHORT nPercent );
- BOOL ImplWriteHeader();
- void ImplWritePalette();
- void ImplWriteColor( USHORT );
- void ImplWriteBody();
- void ImplWriteNumber( sal_Int32 );
- void ImplWritePixel( ULONG );
-
-public:
- XPMWriter();
- ~XPMWriter();
-
- BOOL WriteXPM( const Graphic& rGraphic, SvStream& rXPM, FilterConfigItem* pFilterConfigItem );
-};
-
-//=================== Methoden von XPMWriter ==============================
-
-XPMWriter::XPMWriter() :
- mbStatus ( TRUE ),
- mbTrans ( FALSE ),
- mpAcc ( NULL )
-{
-}
-
-// ------------------------------------------------------------------------
-
-XPMWriter::~XPMWriter()
-{
-}
-
-// ------------------------------------------------------------------------
-
-void XPMWriter::ImplCallback( USHORT nPercent )
-{
- if ( xStatusIndicator.is() )
- {
- if ( nPercent <= 100 )
- xStatusIndicator->setValue( nPercent );
- }
-}
-
-// ------------------------------------------------------------------------
-
-BOOL XPMWriter::WriteXPM( const Graphic& rGraphic, SvStream& rXPM, FilterConfigItem* pFilterConfigItem)
-{
- Bitmap aBmp;
-
- mpOStm = &rXPM;
-
- if ( pFilterConfigItem )
- {
- xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
- if ( xStatusIndicator.is() )
- {
- rtl::OUString aMsg;
- xStatusIndicator->start( aMsg, 100 );
- }
- }
-
- BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
- aBmp = aBmpEx.GetBitmap();
-
- if ( rGraphic.IsTransparent() ) // event. transparente Farbe erzeugen
- {
- mbTrans = TRUE;
- if ( aBmp.GetBitCount() >= 8 ) // wenn noetig Bild auf 8 bit konvertieren
- aBmp.Convert( BMP_CONVERSION_8BIT_TRANS );
- else
- aBmp.Convert( BMP_CONVERSION_4BIT_TRANS );
- aBmp.Replace( aBmpEx.GetMask(), BMP_COL_TRANS );
- }
- else
- {
- if ( aBmp.GetBitCount() > 8 ) // wenn noetig Bild auf 8 bit konvertieren
- aBmp.Convert( BMP_CONVERSION_8BIT_COLORS );
- }
- mpAcc = aBmp.AcquireReadAccess();
- if ( mpAcc )
- {
- mnColors = mpAcc->GetPaletteEntryCount();
- mpOStmOldModus = mpOStm->GetNumberFormatInt();
- mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
-
- if ( ImplWriteHeader() )
- {
- ImplWritePalette();
- ImplWriteBody();
- *mpOStm << "\x22XPMENDEXT\x22\x0a};";
- }
- aBmp.ReleaseAccess( mpAcc );
- }
- else
- mbStatus = FALSE;
-
- mpOStm->SetNumberFormatInt( mpOStmOldModus );
-
- if ( xStatusIndicator.is() )
- xStatusIndicator->end();
-
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-BOOL XPMWriter::ImplWriteHeader()
-{
- mnWidth = mpAcc->Width();
- mnHeight = mpAcc->Height();
- if ( mnWidth && mnHeight && mnColors )
- {
- *mpOStm << "/* XPM */\x0astatic char * image[] = \x0a{\x0a\x22";
- ImplWriteNumber( mnWidth );
- *mpOStm << (BYTE)32;
- ImplWriteNumber( mnHeight );
- *mpOStm << (BYTE)32;
- ImplWriteNumber( mnColors );
- *mpOStm << (BYTE)32;
- ImplWriteNumber( ( mnColors > 26 ) ? 2 : 1 );
- *mpOStm << "\x22,\x0a";
- }
- else mbStatus = FALSE;
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-void XPMWriter::ImplWritePalette()
-{
- USHORT nTransIndex = 0xffff;
-
- if ( mbTrans )
- nTransIndex = mpAcc->GetBestMatchingColor( BMP_COL_TRANS );
- for ( USHORT i = 0; i < mnColors; i++ )
- {
- *mpOStm << "\x22";
- ImplWritePixel( i );
- *mpOStm << (BYTE)32;
- if ( nTransIndex != i )
- {
- ImplWriteColor( i );
- *mpOStm << "\x22,\x0a";
- }
- else
- *mpOStm << "c none\x22,\x0a";
- }
-}
-
-// ------------------------------------------------------------------------
-
-void XPMWriter::ImplWriteBody()
-{
- for ( ULONG y = 0; y < mnHeight; y++ )
- {
- ImplCallback( (USHORT)( ( 100 * y ) / mnHeight ) ); // processing output in percent
- *mpOStm << (BYTE)0x22;
- for ( ULONG x = 0; x < mnWidth; x++ )
- {
- ImplWritePixel( (BYTE)(mpAcc->GetPixel( y, x ) ) );
- }
- *mpOStm << "\x22,\x0a";
- }
-}
-
-// ------------------------------------------------------------------------
-// eine Dezimalzahl im ASCII format wird in den Stream geschrieben
-
-void XPMWriter::ImplWriteNumber( sal_Int32 nNumber )
-{
- const ByteString aNum( ByteString::CreateFromInt32( nNumber ) );
-
- for( sal_Int16 n = 0UL, nLen = aNum.Len(); n < nLen; n++ )
- *mpOStm << aNum.GetChar( n );
-
-}
-
-// ------------------------------------------------------------------------
-
-void XPMWriter::ImplWritePixel( ULONG nCol )
-{
- if ( mnColors > 26 )
- {
- BYTE nDiff = (BYTE) ( nCol / 26 );
- *mpOStm << (BYTE)( nDiff + 'A' );
- *mpOStm << (BYTE)( nCol - ( nDiff*26 ) + 'A' );
- }
- else
- *mpOStm << (BYTE)( nCol + 'A' );
-}
-
-// ------------------------------------------------------------------------
-// ein Farbwert wird im Hexadezimalzahlformat in den Stream geschrieben
-void XPMWriter::ImplWriteColor( USHORT nNumber )
-{
- ULONG nTmp;
- BYTE j;
-
- *mpOStm << "c #"; // # zeigt einen folgenden Hexwert an
- const BitmapColor& rColor = mpAcc->GetPaletteColor( nNumber );
- nTmp = ( rColor.GetRed() << 16 ) | ( rColor.GetGreen() << 8 ) | rColor.GetBlue();
- for ( signed char i = 20; i >= 0 ; i-=4 )
- {
- if ( ( j = (BYTE)( nTmp >> i ) & 0xf ) > 9 )
- j += 'A' - 10;
- else
- j += '0';
- *mpOStm << j;
- }
-}
-
-// ------------------------------------------------------------------------
-
-// ---------------------
-// - exported function -
-// ---------------------
-
-extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
-{
- XPMWriter aXPMWriter;
-
- return aXPMWriter.WriteXPM( rGraphic, rStream, pFilterConfigItem );
-}
-
-#ifndef GCC
-#endif
-
-// ---------------
-// - Win16 trash -
-// ---------------
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0;
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
- if ( nHeap )
- UnlockData( 0 );
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-// ------------------------------------------------------------------------
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
diff --git a/goodies/source/filter.vcl/expm/exports.map b/goodies/source/filter.vcl/expm/exports.map
deleted file mode 100644
index f1f42312c802..000000000000
--- a/goodies/source/filter.vcl/expm/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-XPMEXPORTER_1_0 {
- global:
- GraphicExport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/expm/makefile.mk b/goodies/source/filter.vcl/expm/makefile.mk
deleted file mode 100644
index e123220feff8..000000000000
--- a/goodies/source/filter.vcl/expm/makefile.mk
+++ /dev/null
@@ -1,70 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.14 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=expm
-DEPTARGET=vexpm
-
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/expm.obj
-
-# ==========================================================================
-
-SHL1TARGET= exp$(DLLPOSTFIX)
-SHL1IMPLIB= expm
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB) $(SVTOOLLIB)
-SHL1LIBS= $(SLB)$/expm.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/expm.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/icgm/actimpr.cxx b/goodies/source/filter.vcl/icgm/actimpr.cxx
deleted file mode 100644
index 7d6ef5ce49c8..000000000000
--- a/goodies/source/filter.vcl/icgm/actimpr.cxx
+++ /dev/null
@@ -1,1137 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: actimpr.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include <vcl/bitmapex.hxx>
-#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
-#include <com/sun/star/drawing/LineStyle.hpp>
-#include <com/sun/star/drawing/LineDash.hpp>
-#include <com/sun/star/drawing/FillStyle.hpp>
-#include <com/sun/star/drawing/Hatch.hpp>
-#include <com/sun/star/awt/FontDescriptor.hpp>
-#include <com/sun/star/awt/FontWeight.hpp>
-#include <com/sun/star/awt/FontUnderline.hpp>
-#include <com/sun/star/drawing/XShapeGrouper.hpp>
-#include <com/sun/star/drawing/CircleKind.hpp>
-#include <com/sun/star/awt/XBitmap.hpp>
-#include <com/sun/star/drawing/PointSequenceSequence.hpp>
-#include <com/sun/star/drawing/PointSequence.hpp>
-#include <com/sun/star/drawing/PolyPolygonBezierCoords.hpp>
-#include <com/sun/star/drawing/FlagSequence.hpp>
-#include <com/sun/star/drawing/TextAdjust.hpp>
-#include <com/sun/star/text/XText.hpp>
-#include <com/sun/star/text/XTextRange.hpp>
-#include <com/sun/star/style/HorizontalAlignment.hpp>
-
-#include <unotools/processfactory.hxx>
-#include <toolkit/helper/vclunohelper.hxx>
-
-//#include <toolkit/unohlp.hxx>
-
-#include "main.hxx"
-#include "outact.hxx"
-
-using namespace ::com::sun::star;
-
-// ---------------------------------------------------------------
-// ---------------------------------------------------------------
-// ---------------------------------------------------------------
-// ---------------------------------------------------------------
-
-CGMImpressOutAct::CGMImpressOutAct( CGM& rCGM, const uno::Reference< frame::XModel > & rModel ) :
- CGMOutAct ( rCGM ),
- nFinalTextCount ( 0 )
-{
- sal_Bool bStatRet = sal_False;
-
- if ( mpCGM->mbStatus )
- {
- uno::Reference< drawing::XDrawPagesSupplier > aDrawPageSup( rModel, uno::UNO_QUERY );
- if( aDrawPageSup.is() )
- {
- maXDrawPages = aDrawPageSup->getDrawPages();
- if ( maXDrawPages.is() )
- {
- maXServiceManagerSC = utl::getProcessServiceFactory();
- if ( maXServiceManagerSC.is() )
- {
- uno::Any aAny( rModel->queryInterface( ::getCppuType((const uno::Reference< lang::XMultiServiceFactory >*)0) ));
- if( aAny >>= maXMultiServiceFactory )
- {
- maXDrawPage = *(uno::Reference< drawing::XDrawPage > *)maXDrawPages->getByIndex( 0 ).getValue();
- if ( ImplInitPage() )
- bStatRet = sal_True;
- }
- }
- }
- }
- mpCGM->mbStatus = bStatRet;
- }
-};
-
-// ---------------------------------------------------------------
-
-sal_Bool CGMImpressOutAct::ImplInitPage()
-{
- sal_Bool bStatRet = sal_False;
- if( maXDrawPage.is() )
- {
- maXShapes = uno::Reference< drawing::XShapes >( maXDrawPage, uno::UNO_QUERY );
- if ( maXShapes.is() )
- {
- bStatRet = sal_True;
- }
- }
- return bStatRet;
-}
-
-// ---------------------------------------------------------------
-
-sal_Bool CGMImpressOutAct::ImplCreateShape( const ::rtl::OUString& rType )
-{
- uno::Reference< uno::XInterface > xNewShape( maXMultiServiceFactory->createInstance( rType ) );
- maXShape = uno::Reference< drawing::XShape >( xNewShape, uno::UNO_QUERY );
- maXPropSet = uno::Reference< beans::XPropertySet >( xNewShape, uno::UNO_QUERY );
- if ( maXShape.is() && maXPropSet.is() )
- {
- maXShapes->add( maXShape );
- return sal_True;
- }
- return sal_False;
-}
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::ImplSetOrientation( FloatPoint& rRefPoint, double& rOrientation )
-{
- uno::Any aAny;
- aAny <<= (sal_Int32)rRefPoint.X;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotationPointX"), aAny );
- aAny <<= (sal_Int32)rRefPoint.Y;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotationPointY"), aAny );
- aAny <<= (sal_Int32)( rOrientation * 100.0 );
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotateAngle"), aAny );
-}
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::ImplSetLineBundle()
-{
- uno::Any aAny;
- drawing::LineStyle eLS;
-
- sal_uInt32 nLineColor;
- LineType eLineType;
- double fLineWidth;
-
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_LINECOLOR )
- nLineColor = mpCGM->pElement->pLineBundle->GetColor();
- else
- nLineColor = mpCGM->pElement->aLineBundle.GetColor();
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_LINETYPE )
- eLineType = mpCGM->pElement->pLineBundle->eLineType;
- else
- eLineType = mpCGM->pElement->aLineBundle.eLineType;
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_LINEWIDTH )
- fLineWidth = mpCGM->pElement->pLineBundle->nLineWidth;
- else
- fLineWidth = mpCGM->pElement->aLineBundle.nLineWidth;
-
- aAny <<= (sal_Int32)nLineColor;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineColor"), aAny );
-
- aAny <<= (sal_Int32)fLineWidth;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineWidth"), aAny );
-
- switch( eLineType )
- {
- case LT_NONE :
- eLS = drawing::LineStyle_NONE;
- break;
- case LT_DASH :
- case LT_DOT :
- case LT_DASHDOT :
- case LT_DOTDOTSPACE :
- case LT_LONGDASH :
- case LT_DASHDASHDOT :
- eLS = drawing::LineStyle_DASH;
- break;
- case LT_SOLID :
- default:
- eLS = drawing::LineStyle_SOLID;
- break;
- }
- aAny <<= eLS;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineStyle"), aAny );
- if ( eLS == drawing::LineStyle_DASH )
- {
- drawing::LineDash aLineDash( drawing::DashStyle_RECTRELATIVE, 1, 50, 3, 33, 100 );
- aAny <<= aLineDash;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineDash"), aAny );
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::ImplSetFillBundle()
-{
-
- uno::Any aAny;
- drawing::LineStyle eLS;
- drawing::FillStyle eFS;
-
- sal_uInt32 nEdgeColor = 0;
- EdgeType eEdgeType;
- double fEdgeWidth = 0;
-
- sal_uInt32 nFillColor;
- FillInteriorStyle eFillStyle;
- long nPatternIndex;
- sal_uInt32 nHatchIndex;
-
- if ( mpCGM->pElement->eEdgeVisibility == EV_ON )
- {
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_EDGETYPE )
- eEdgeType = mpCGM->pElement->pEdgeBundle->eEdgeType;
- else
- eEdgeType = mpCGM->pElement->aEdgeBundle.eEdgeType;
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_EDGEWIDTH )
- fEdgeWidth = mpCGM->pElement->pEdgeBundle->nEdgeWidth;
- else
- fEdgeWidth = mpCGM->pElement->aEdgeBundle.nEdgeWidth;
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_EDGECOLOR )
- nEdgeColor = mpCGM->pElement->pEdgeBundle->GetColor();
- else
- nEdgeColor = mpCGM->pElement->aEdgeBundle.GetColor();
- }
- else
- eEdgeType = ET_NONE;
-
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_FILLINTERIORSTYLE )
- eFillStyle = mpCGM->pElement->pFillBundle->eFillInteriorStyle;
- else
- eFillStyle = mpCGM->pElement->aFillBundle.eFillInteriorStyle;
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_FILLCOLOR )
- nFillColor = mpCGM->pElement->pFillBundle->GetColor();
- else
- nFillColor = mpCGM->pElement->aFillBundle.GetColor();
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_HATCHINDEX )
- nHatchIndex = (sal_uInt32)mpCGM->pElement->pFillBundle->nFillHatchIndex;
- else
- nHatchIndex = (sal_uInt32)mpCGM->pElement->aFillBundle.nFillHatchIndex;
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_PATTERNINDEX )
- nPatternIndex = mpCGM->pElement->pFillBundle->nFillPatternIndex;
- else
- nPatternIndex = mpCGM->pElement->aFillBundle.nFillPatternIndex;
-
- aAny <<= (sal_Int32)nFillColor;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("FillColor"), aAny );
-
- switch ( eFillStyle )
- {
- case FIS_HATCH :
- {
- if ( nHatchIndex == 0 )
- eFS = drawing::FillStyle_NONE;
- else
- eFS = drawing::FillStyle_HATCH;
- }
- break;
- case FIS_PATTERN :
- case FIS_SOLID :
- {
- eFS = drawing::FillStyle_SOLID;
- }
- break;
-
- case FIS_GEOPATTERN :
- {
- if ( mpCGM->pElement->eTransparency == T_ON )
- nFillColor = mpCGM->pElement->nAuxiliaryColor;
- eFS = drawing::FillStyle_NONE;
- }
- break;
-
- case FIS_INTERPOLATED :
- case FIS_GRADIENT :
- {
- eFS = drawing::FillStyle_GRADIENT;
- }
- break;
-
- case FIS_HOLLOW :
- case FIS_EMPTY :
- default:
- {
- eFS = drawing::FillStyle_NONE;
- }
- }
-
- if ( mpCGM->mnAct4PostReset & ACT4_GRADIENT_ACTION )
- eFS = drawing::FillStyle_GRADIENT;
-
- if ( eFS == drawing::FillStyle_GRADIENT )
- {
- aAny <<= *mpGradient;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("FillGradient"), aAny );
- }
- aAny <<= eFS;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("FillStyle"), aAny );
-
- eLS = drawing::LineStyle_NONE;
- if ( eFillStyle == FIS_HOLLOW )
- {
- eLS = drawing::LineStyle_SOLID;
- aAny <<= (sal_Int32)nFillColor;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineColor"), aAny );
- aAny <<= (sal_Int32)0;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineWidth"), aAny );
- }
- else if ( eEdgeType != ET_NONE )
- {
- aAny <<= (sal_Int32)nEdgeColor;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineColor"), aAny );
-
- aAny <<= (sal_Int32)fEdgeWidth;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineWidth"), aAny );
-
- switch( eEdgeType )
- {
- case ET_DASH :
- case ET_DOT :
- case ET_DASHDOT :
- case ET_DASHDOTDOT :
- case ET_DOTDOTSPACE :
- case ET_LONGDASH :
- case ET_DASHDASHDOT :
-// {
-// eLS = LineStyle_DASH;
-// aAny.setValue( &eLS, ::getCppuType((const drawing::LineStyle*)0) );
-// maXPropSet->setPropertyValue( L"LineStyle", aAny );
-// drawing::LineDash aLineDash( DashStyle_RECTRELATIVE, 1, 160, 1, 160, 190 );
-// aAny.setValue( &aLineDash, ::getCppuType((const drawing::LineDash*)0) );
-// maXPropSet->setPropertyValue( L"DashStyle", aAny );
-// }
-// break;
- default: // case ET_SOLID :
- {
- eLS = drawing::LineStyle_SOLID;
- }
- break;
- }
- }
-
- aAny <<= eLS;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineStyle"), aAny );
-
- if ( eFS == drawing::FillStyle_HATCH )
- {
- drawing::Hatch aHatch;
-
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_LINECOLOR )
- aHatch.Color = nFillColor;
- else
- aHatch.Color = nFillColor;
- HatchEntry* pHatchEntry = (HatchEntry*)mpCGM->pElement->aHatchTable.Get( nHatchIndex );
- if ( pHatchEntry )
- {
- switch ( pHatchEntry->HatchStyle )
- {
- case 0 : aHatch.Style = drawing::HatchStyle_SINGLE; break;
- case 1 : aHatch.Style = drawing::HatchStyle_DOUBLE; break;
- case 2 : aHatch.Style = drawing::HatchStyle_TRIPLE; break;
- }
- aHatch.Distance = pHatchEntry->HatchDistance;
- aHatch.Angle = pHatchEntry->HatchAngle;
- }
- else
- {
- aHatch.Style = drawing::HatchStyle_TRIPLE;
- aHatch.Distance = 10 * ( nHatchIndex & 0x1f ) | 100;
- aHatch.Angle = 15 * ( ( nHatchIndex & 0x1f ) - 5 );
- }
- aAny <<= aHatch;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("FillHatch"), aAny );
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::ImplSetTextBundle( const uno::Reference< beans::XPropertySet > & rProperty )
-{
- uno::Any aAny;
- TextPrecision eTextPrecision;
- sal_uInt32 nTextFontIndex;
- sal_uInt32 nTextColor;
- double fCharacterExpansion;
- double fCharacterSpacing;
-
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_TEXTFONTINDEX )
- nTextFontIndex = mpCGM->pElement->pTextBundle->nTextFontIndex;
- else
- nTextFontIndex = mpCGM->pElement->aTextBundle.nTextFontIndex;
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_TEXTPRECISION )
- eTextPrecision = mpCGM->pElement->pTextBundle->eTextPrecision;
- else
- eTextPrecision = mpCGM->pElement->aTextBundle.eTextPrecision;
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_CHARACTEREXPANSION )
- fCharacterExpansion = mpCGM->pElement->pTextBundle->nCharacterExpansion;
- else
- fCharacterExpansion = mpCGM->pElement->aTextBundle.nCharacterExpansion;
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_CHARACTERSPACING )
- fCharacterSpacing = mpCGM->pElement->pTextBundle->nCharacterSpacing;
- else
- fCharacterSpacing = mpCGM->pElement->aTextBundle.nCharacterSpacing;
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_TEXTCOLOR )
- nTextColor = mpCGM->pElement->pTextBundle->GetColor();
- else
- nTextColor = mpCGM->pElement->aTextBundle.GetColor();
-
- aAny <<= (sal_Int32)nTextColor;
- rProperty->setPropertyValue( rtl::OUString::createFromAscii("CharColor"), aAny );
-
- sal_uInt32 nFontType = 0;
- awt::FontDescriptor aFontDescriptor;
- FontEntry* pFontEntry = mpCGM->pElement->aFontList.GetFontEntry( nTextFontIndex );
- if ( pFontEntry )
- {
- nFontType = pFontEntry->nFontType;
- aFontDescriptor.Name = String::CreateFromAscii( (char*)pFontEntry->pFontName );
- }
- aFontDescriptor.Height = ( sal_Int16 )( ( mpCGM->pElement->nCharacterHeight * (double)1.50 ) );
- if ( nFontType & 1 )
- aFontDescriptor.Slant = awt::FontSlant_ITALIC;
- if ( nFontType & 2 )
- aFontDescriptor.Weight = awt::FontWeight::BOLD;
- else
- aFontDescriptor.Weight = awt::FontWeight::NORMAL;
-
- if ( mpCGM->pElement->eUnderlineMode != UM_OFF )
- {
- aFontDescriptor.Underline = awt::FontUnderline::SINGLE;
- }
- aAny <<= aFontDescriptor;
- rProperty->setPropertyValue( rtl::OUString::createFromAscii("FontDescriptor"), aAny );
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::InsertPage()
-{
- if ( mnCurrentPage ) // eine seite ist immer vorhanden, deshalb wird die erste Seite ausgelassen
- {
- uno::Reference< drawing::XDrawPage > xPage( maXDrawPages->insertNewByIndex( 0xffff ), uno::UNO_QUERY );
- maXDrawPage = xPage;
- if ( ImplInitPage() == sal_False )
- mpCGM->mbStatus = sal_False;
- }
- mnCurrentPage++;
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::BeginGroup()
-{
- if ( mnGroupLevel < CGM_OUTACT_MAX_GROUP_LEVEL )
- {
- mpGroupLevel[ mnGroupLevel ] = maXShapes->getCount();
- }
- mnGroupLevel++;
- mnGroupActCount = mpCGM->mnActCount;
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::EndGroup()
-{
- if ( mnGroupLevel ) // preserve overflow
- mnGroupLevel--;
- if ( mnGroupLevel < CGM_OUTACT_MAX_GROUP_LEVEL )
- {
- sal_uInt32 mnFirstIndex = mpGroupLevel[ mnGroupLevel ];
- if ( mnFirstIndex == 0xffffffff )
- mnFirstIndex = 0;
- sal_uInt32 mnCurrentCount = maXShapes->getCount();
- if ( ( mnCurrentCount - mnFirstIndex ) > 1 )
- {
- uno::Reference< drawing::XShapeGrouper > aXShapeGrouper;
- uno::Any aAny( maXDrawPage->queryInterface( ::getCppuType(((const uno::Reference< drawing::XShapeGrouper >*)0) )));
- if( aAny >>= aXShapeGrouper )
- {
- uno::Reference< drawing::XShapes > aXShapes;
-// if ( maXServiceManagerSC->createInstance( L"stardiv.one.drawing.ShapeCollection" )->queryInterface( ::getCppuType((const Reference< drawing::XShapes >*)0), aXShapes ) )
-
- uno::Reference< drawing::XShape > aXShapeCollection( maXServiceManagerSC->createInstance( rtl::OUString::createFromAscii("com.sun.star.drawing.ShapeCollection") ), uno::UNO_QUERY );
- if ( aXShapeCollection.is() )
- {
- aXShapes = uno::Reference< drawing::XShapes >( aXShapeCollection, uno::UNO_QUERY );
- if( aXShapes.is() )
- {
- for ( sal_uInt32 i = mnFirstIndex; i < mnCurrentCount; i++ )
- {
- uno::Reference< drawing::XShape > aXShape = *(uno::Reference< drawing::XShape > *)maXShapes->getByIndex( i ).getValue();
- if (aXShape.is() )
- {
- aXShapes->add( aXShape );
- }
- }
- }
- }
- uno::Reference< drawing::XShapeGroup > aXShapeGroup = aXShapeGrouper->group( aXShapes );
- }
- }
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::EndGrouping()
-{
- while ( mnGroupLevel )
- {
- EndGroup();
- }
-}
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::DrawRectangle( FloatRect& rFloatRect )
-{
- if ( mnGroupActCount != ( mpCGM->mnActCount - 1 ) ) // POWERPOINT HACK !!!
- {
- if ( ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.RectangleShape") ) )
- {
- awt::Size aSize( (long)(rFloatRect.Right - rFloatRect.Left ), (long)(rFloatRect.Bottom-rFloatRect.Top ) );
- maXShape->setSize( aSize );
- maXShape->setPosition( awt::Point( (long)rFloatRect.Left, (long)rFloatRect.Top ) );
- ImplSetFillBundle();
- }
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::DrawEllipse( FloatPoint& rCenter, FloatPoint& rSize, double& rOrientation )
-{
- if ( ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.EllipseShape") ) )
- {
- drawing::CircleKind eCircleKind = drawing::CircleKind_FULL;
- uno::Any aAny( &eCircleKind, ::getCppuType((const drawing::CircleKind*)0) );
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("CircleKind"), aAny );
-
- long nXSize = (long)( rSize.X * 2.0 ); // Merkwuerdigkes Verhalten bei einer awt::Size von 0
- long nYSize = (long)( rSize.Y * 2.0 );
- if ( nXSize < 1 )
- nXSize = 1;
- if ( nYSize < 1 )
- nYSize = 1;
- maXShape->setSize( awt::Size( nXSize, nYSize ) );
- maXShape->setPosition( awt::Point( (long)( rCenter.X - rSize.X ), (long)( rCenter.Y - rSize.Y ) ) );
-
- if ( rOrientation != 0 )
- {
- ImplSetOrientation( rCenter, rOrientation );
- }
- ImplSetFillBundle();
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::DrawEllipticalArc( FloatPoint& rCenter, FloatPoint& rSize, double& rOrientation,
- sal_uInt32 nType, double& fStartAngle, double& fEndAngle )
-{
- if ( ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.EllipseShape") ) )
- {
- uno::Any aAny;
- drawing::CircleKind eCircleKind;
-
-
- long nXSize = (long)( rSize.X * 2.0 ); // Merkwuerdigkes Verhalten bei einer awt::Size von 0
- long nYSize = (long)( rSize.Y * 2.0 );
- if ( nXSize < 1 )
- nXSize = 1;
- if ( nYSize < 1 )
- nYSize = 1;
-
- maXShape->setSize( awt::Size ( nXSize, nYSize ) );
-
- if ( rOrientation != 0 )
- {
- fStartAngle += rOrientation;
- if ( fStartAngle >= 360 )
- fStartAngle -= 360;
- fEndAngle += rOrientation;
- if ( fEndAngle >= 360 )
- fEndAngle -= 360;
- }
- switch( nType )
- {
- case 0 : eCircleKind = drawing::CircleKind_SECTION; break;
- case 1 : eCircleKind = drawing::CircleKind_CUT; break;
- case 2 : eCircleKind = drawing::CircleKind_ARC; break;
- default : eCircleKind = drawing::CircleKind_FULL; break;
- }
- if ( (long)fStartAngle == (long)fEndAngle )
- {
- eCircleKind = drawing::CircleKind_FULL;
- aAny.setValue( &eCircleKind, ::getCppuType((const drawing::CircleKind*)0) );
- }
- else
- {
- aAny.setValue( &eCircleKind, ::getCppuType((const drawing::CircleKind*)0) );
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("CircleKind"), aAny );
- aAny <<= (sal_Int32)( (long)( fStartAngle * 100 ) );
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("CircleStartAngle"), aAny );
- aAny <<= (sal_Int32)( (long)( fEndAngle * 100 ) );
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("CircleEndAngle"), aAny );
- }
- maXShape->setPosition( awt::Point( (long)( rCenter.X - rSize.X ), (long)( rCenter.Y - rSize.Y ) ) );
- if ( rOrientation != 0 )
- {
- ImplSetOrientation( rCenter, rOrientation );
- }
- if ( eCircleKind == drawing::CircleKind_ARC )
- {
- ImplSetLineBundle();
- }
- else
- {
- ImplSetFillBundle();
- if ( nType == 2 )
- {
- ImplSetLineBundle();
- drawing::FillStyle eFillStyle = drawing::FillStyle_NONE;
- aAny.setValue( &eFillStyle, ::getCppuType((const drawing::FillStyle*)0) );
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("FillStyle"), aAny );
- }
- }
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::DrawBitmap( CGMBitmapDescriptor* pBmpDesc )
-{
- if ( pBmpDesc->mbStatus && pBmpDesc->mpBitmap )
- {
- FloatPoint aOrigin = pBmpDesc->mnOrigin;
- double fdx = pBmpDesc->mndx;
- double fdy = pBmpDesc->mndy;
-
- sal_uInt32 nMirr = BMP_MIRROR_NONE;
- if ( pBmpDesc->mbVMirror )
- nMirr |= BMP_MIRROR_VERT;
- if ( pBmpDesc->mbHMirror )
- nMirr |= BMP_MIRROR_HORZ;
- if ( nMirr != BMP_MIRROR_NONE )
- pBmpDesc->mpBitmap->Mirror( nMirr );
-
- mpCGM->ImplMapPoint( aOrigin );
- mpCGM->ImplMapX( fdx );
- mpCGM->ImplMapY( fdy );
-
- if ( ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.GraphicObjectShape") ) )
- {
- maXShape->setSize( awt::Size( (long)fdx, (long)fdy ) );
- maXShape->setPosition( awt::Point( (long)aOrigin.X, (long)aOrigin.Y ) );
-
- if ( pBmpDesc->mnOrientation != 0 )
- {
- ImplSetOrientation( aOrigin, pBmpDesc->mnOrientation );
- }
-
- uno::Reference< awt::XBitmap > xBitmap( VCLUnoHelper::CreateBitmap( BitmapEx( *( pBmpDesc->mpBitmap ) ) ) );
- uno::Any aAny;
- aAny <<= xBitmap;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("GraphicObjectFillBitmap"), aAny );
-
- }
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::DrawPolygon( Polygon& rPoly )
-{
- sal_uInt16 nPoints = rPoly.GetSize();
-
- if ( ( nPoints > 1 ) && ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.PolyPolygonShape") ) )
- {
- drawing::PointSequenceSequence aRetval;
-
- // Polygone innerhalb vrobereiten
- aRetval.realloc( 1 );
-
- // Zeiger auf aeussere Arrays holen
- drawing::PointSequence* pOuterSequence = aRetval.getArray();
-
- // Platz in Arrays schaffen
- pOuterSequence->realloc((sal_Int32)nPoints);
-
- // Pointer auf arrays holen
- awt::Point* pInnerSequence = pOuterSequence->getArray();
-
- for( sal_uInt16 n = 0; n < nPoints; n++ )
- *pInnerSequence++ = awt::Point( rPoly[ n ].X(), rPoly[n].Y() );
-
- uno::Any aParam;
- aParam <<= aRetval;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("PolyPolygon"), aParam );
- ImplSetFillBundle();
- }
-};
-
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::DrawPolyLine( Polygon& rPoly )
-{
- sal_uInt16 nPoints = rPoly.GetSize();
-
- if ( ( nPoints > 1 ) && ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.PolyLineShape") ) )
- {
- drawing::PointSequenceSequence aRetval;
-
- // Polygone innerhalb vrobereiten
- aRetval.realloc( 1 );
-
- // Zeiger auf aeussere Arrays holen
- drawing::PointSequence* pOuterSequence = aRetval.getArray();
-
- // Platz in Arrays schaffen
- pOuterSequence->realloc((sal_Int32)nPoints);
-
- // Pointer auf arrays holen
- awt::Point* pInnerSequence = pOuterSequence->getArray();
-
- for( sal_uInt16 n = 0; n < nPoints; n++ )
- *pInnerSequence++ = awt::Point( rPoly[ n ].X(), rPoly[n].Y() );
-
- uno::Any aParam;
- aParam <<= aRetval;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("PolyPolygon"), aParam );
- ImplSetLineBundle();
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::DrawPolybezier( Polygon& rPolygon )
-{
- USHORT nPoints = rPolygon.GetSize();
- if ( ( nPoints > 1 ) && ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.OpenBezierShape") ) )
- {
- drawing::PolyPolygonBezierCoords aRetval;
-
- aRetval.Coordinates.realloc( 1 );
- aRetval.Flags.realloc( 1 );
-
- // Zeiger auf aeussere Arrays holen
- drawing::PointSequence* pOuterSequence = aRetval.Coordinates.getArray();
- drawing::FlagSequence* pOuterFlags = aRetval.Flags.getArray();
-
- // Platz in Arrays schaffen
- pOuterSequence->realloc( nPoints );
- pOuterFlags->realloc( nPoints );
-
- awt::Point* pInnerSequence = pOuterSequence->getArray();
- drawing::PolygonFlags* pInnerFlags = pOuterFlags->getArray();
-
- for( USHORT i = 0; i < nPoints; i++ )
- {
- *pInnerSequence++ = awt::Point( rPolygon[ i ].X(), rPolygon[ i ].Y() );
- *pInnerFlags++ = (drawing::PolygonFlags)rPolygon.GetFlags( i );
- }
- uno::Any aParam;
- aParam <<= aRetval;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("PolyPolygonBezier"), aParam );
- ImplSetLineBundle();
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::DrawPolyPolygon( PolyPolygon& rPolyPolygon )
-{
- sal_uInt32 nNumPolys = rPolyPolygon.Count();
- if ( nNumPolys && ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.ClosedBezierShape") ) )
- {
- drawing::PolyPolygonBezierCoords aRetval;
-
- // Polygone innerhalb vrobereiten
- aRetval.Coordinates.realloc((sal_Int32)nNumPolys);
- aRetval.Flags.realloc((sal_Int32)nNumPolys);
-
- // Zeiger auf aeussere Arrays holen
- drawing::PointSequence* pOuterSequence = aRetval.Coordinates.getArray();
- drawing::FlagSequence* pOuterFlags = aRetval.Flags.getArray();
-
- for( sal_uInt16 a = 0; a < nNumPolys; a++ )
- {
- Polygon aPolygon( rPolyPolygon.GetObject( a ) );
- sal_uInt32 nNumPoints = aPolygon.GetSize();
-
- // Platz in Arrays schaffen
- pOuterSequence->realloc((sal_Int32)nNumPoints);
- pOuterFlags->realloc((sal_Int32)nNumPoints);
-
- // Pointer auf arrays holen
- awt::Point* pInnerSequence = pOuterSequence->getArray();
- drawing::PolygonFlags* pInnerFlags = pOuterFlags->getArray();
-
- for( sal_uInt16 b = 0; b < nNumPoints; b++ )
- {
- *pInnerSequence++ = awt::Point( aPolygon.GetPoint( b ).X(), aPolygon.GetPoint( b ).Y() ) ;
- *pInnerFlags++ = (drawing::PolygonFlags)aPolygon.GetFlags( b );
- }
- pOuterSequence++;
- pOuterFlags++;
- }
- uno::Any aParam;
- aParam <<= aRetval;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("PolyPolygonBezier"), aParam);
- ImplSetFillBundle();
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::DrawText( awt::Point& rTextPos, awt::Size& rTextSize, char* pString, sal_uInt32 /*nSize*/, FinalFlag eFlag )
-{
- if ( ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.TextShape") ) )
- {
- uno::Any aAny;
- long nWidth = rTextSize.Width;
- long nHeight = rTextSize.Height;
-
- awt::Point aTextPos( rTextPos );
- switch ( mpCGM->pElement->eTextAlignmentV )
- {
- case TAV_HALF :
- {
- aTextPos.Y -= static_cast<sal_Int32>( ( mpCGM->pElement->nCharacterHeight * 1.5 ) / 2 );
- }
- break;
-
- case TAV_BASE :
- case TAV_BOTTOM :
- case TAV_NORMAL :
- aTextPos.Y -= static_cast<sal_Int32>( mpCGM->pElement->nCharacterHeight * 1.5 );
- case TAV_TOP :
- break;
- case TAV_CAP:
- case TAV_CONT:
- break; // -Wall these two were not here.
- }
-
- if ( nWidth < 0 )
- {
- nWidth = -nWidth;
- }
- else if ( nWidth == 0 )
- {
- nWidth = -1;
- }
- if ( nHeight < 0 )
- {
- nHeight = -nHeight;
- }
- else if ( nHeight == 0 )
- {
- nHeight = -1;
- }
- maXShape->setPosition( aTextPos );
- maXShape->setSize( awt::Size( nWidth, nHeight ) );
- double nX = mpCGM->pElement->nCharacterOrientation[ 2 ];
- double nY = mpCGM->pElement->nCharacterOrientation[ 3 ];
- double nOrientation = acos( nX / sqrt( nX * nX + nY * nY ) ) * 57.29577951308;
- if ( nY < 0 )
- nOrientation = 360 - nOrientation;
-
- if ( nOrientation )
- {
- aAny <<= (sal_Int32)( aTextPos.X );
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotationPointX"), aAny );
- aAny <<= (sal_Int32)( aTextPos.Y + nHeight );
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotationPointY"), aAny );
- aAny <<= (sal_Int32)( (sal_Int32)( nOrientation * 100 ) );
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotateAngle"), aAny );
- }
- if ( nWidth == -1 )
- {
- sal_Bool bTrue( sal_True );
- aAny.setValue( &bTrue, ::getCppuType((const sal_Bool*)0 ));
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("TextAutoGrowWidth"), aAny );
-
- drawing::TextAdjust eTextAdjust;
- switch ( mpCGM->pElement->eTextAlignmentH )
- {
- case TAH_RIGHT :
- eTextAdjust = drawing::TextAdjust_RIGHT;
- break;
- case TAH_LEFT :
- case TAH_CONT :
- case TAH_NORMAL :
- eTextAdjust = drawing::TextAdjust_LEFT;
- break;
- case TAH_CENTER :
- eTextAdjust = drawing::TextAdjust_CENTER;
- break;
- }
- aAny <<= eTextAdjust;
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("TextHorizontalAdjust"), aAny );
- }
- if ( nHeight == -1 )
- {
- sal_Bool bTrue = sal_True;
- aAny.setValue( &bTrue, ::getCppuType((const sal_Bool*)0) );
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("TextAutoGrowHeight"), aAny );
- }
- uno::Reference< text::XText > xText;
- uno::Any aFirstQuery( maXShape->queryInterface( ::getCppuType((const uno::Reference< text::XText >*)0) ));
- if( aFirstQuery >>= xText )
- {
- String aStr( String::CreateFromAscii( pString ) );
-
- uno::Reference< text::XTextCursor > aXTextCursor( xText->createTextCursor() );
- {
- aXTextCursor->gotoEnd( sal_False );
- uno::Reference< text::XTextRange > aCursorText;
- uno::Any aSecondQuery( aXTextCursor->queryInterface( ::getCppuType((const uno::Reference< text::XTextRange >*)0) ));
- if ( aSecondQuery >>= aCursorText )
- {
- uno::Reference< beans::XPropertySet > aCursorPropSet;
-
- uno::Any aQuery( aCursorText->queryInterface( ::getCppuType((const uno::Reference< beans::XPropertySet >*)0) ));
- if( aQuery >>= aCursorPropSet )
- {
- if ( nWidth != -1 ) // paragraph adjusting in a valid textbox ?
- {
- switch ( mpCGM->pElement->eTextAlignmentH )
- {
- case TAH_RIGHT :
- aAny <<= (sal_Int16)style::HorizontalAlignment_RIGHT;
- break;
- case TAH_LEFT :
- case TAH_CONT :
- case TAH_NORMAL :
- aAny <<= (sal_Int16)style::HorizontalAlignment_LEFT;
- break;
- case TAH_CENTER :
- aAny <<= (sal_Int16)style::HorizontalAlignment_CENTER;
- break;
- }
- aCursorPropSet->setPropertyValue( rtl::OUString::createFromAscii("ParaAdjust"), aAny );
- }
- if ( nWidth > 0 && nHeight > 0 ) // restricted text
- {
- sal_Bool bTrue = sal_True;
- aAny.setValue( &bTrue, ::getCppuType((const sal_Bool*)0));
- maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("TextFitToSize"), aAny );
- }
- aCursorText->setString( aStr );
- aXTextCursor->gotoEnd( sal_True );
- ImplSetTextBundle( aCursorPropSet );
- }
- }
- }
- }
- if ( eFlag == FF_NOT_FINAL )
- {
- nFinalTextCount = maXShapes->getCount();
- }
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::AppendText( char* pString, sal_uInt32 /*nSize*/, FinalFlag /*eFlag*/ )
-{
- if ( nFinalTextCount )
- {
- uno::Reference< drawing::XShape > aShape = *(uno::Reference< drawing::XShape > *)maXShapes->getByIndex( nFinalTextCount - 1 ).getValue();
- if ( aShape.is() )
- {
- uno::Reference< text::XText > xText;
- uno::Any aFirstQuery( aShape->queryInterface( ::getCppuType((const uno::Reference< text::XText >*)0)) );
- if( aFirstQuery >>= xText )
- {
- String aStr( String::CreateFromAscii( pString ) );
-
- uno::Reference< text::XTextCursor > aXTextCursor( xText->createTextCursor() );
- if ( aXTextCursor.is() )
- {
- aXTextCursor->gotoEnd( sal_False );
- uno::Reference< text::XTextRange > aCursorText;
- uno::Any aSecondQuery(aXTextCursor->queryInterface( ::getCppuType((const uno::Reference< text::XTextRange >*)0) ));
- if ( aSecondQuery >>= aCursorText )
- {
- uno::Reference< beans::XPropertySet > aPropSet;
- uno::Any aQuery(aCursorText->queryInterface( ::getCppuType((const uno::Reference< beans::XPropertySet >*)0) ));
- if( aQuery >>= aPropSet )
- {
- aCursorText->setString( aStr );
- aXTextCursor->gotoEnd( sal_True );
- ImplSetTextBundle( aPropSet );
- }
- }
- }
- }
- }
- }
-}
-
-// ---------------------------------------------------------------
-// nCount != 0 -> Append Text
-sal_uInt32 CGMImpressOutAct::DrawText( TextEntry* /*pTextEntry*/, NodeFrameSet& /*rNodeFrameSet*/, sal_uInt32 /*nObjCount*/ )
-{
-
-return 0;
-
-/*
- uno::Reference< drawing::XShape > aShape;
-
- if ( nObjCount )
- {
- aShape = (drawing::XShape*) maXShapes->getElementByIndex( nObjCount - 1 )->queryInterface( ::getCppuType((const Reference< drawing::XShape >*)0) );
- }
- else
- {
- aShape = maXShapes->insertShape( maXShapeFactory->createShape( L"ShapeText", rNodeFrameSet.nSize ), rNodeFrameSet.nTopLeft );
- }
- if ( aShape.is() )
- {
- uno::Reference< text::XText > xText = (text::XText*)aShape->queryInterface( ::getCppuType((const Reference< text::XText >*)0) );
- if ( xText.is() )
- {
- uno::Reference< text::XTextCursor > aXTextCursor = (text::XTextCursor*)xText->createTextCursor()->queryInterface( ::getCppuType((const Reference< text::XTextCursor >*)0) );
- if ( aXTextCursor.is() )
- {
- uno::Any aAny;
- sal_uInt32 nTextOfs = 0;
- TextAttribute* pTAttr = pTextEntry->pAttribute;
- do
- {
- if ( pTAttr->nTextAttribSize > 0.3 ) // is text readable
- {
- aXTextCursor->gotoEnd( sal_False );
- char nPushedChar = pTextEntry->pText[ nTextOfs + pTAttr->nTextAttribCount ];
- pTextEntry->pText[ nTextOfs + pTAttr->nTextAttribCount ] = 0;
- UString aStr( StringToOUString( pTextEntry->pText + nTextOfs, CHARSET_SYSTEM ) );
-
- uno::Reference< text::XText > aCursorText = (text::XText*)aXTextCursor->queryInterface( ::getCppuType((const Reference< text::XText >*)0) );
- if ( aCursorText.is() )
- {
- uno::Reference< beans::XPropertySet > aPropSet = (beans::XPropertySet*)aCursorText->queryInterface( ::getCppuType((const Reference< beans::XPropertySet >*)0) );
- if ( aPropSet.is() )
- {
- if ( pTextEntry->nRowOrLineNum )
- {
- uno::Reference< XControlCharacterInsertable > aCRef = (XControlCharacterInsertable*)aXTextCursor->queryInterface( ::getCppuType((const Reference< XControlCharacterInsertable >*)0) );
- if ( aCRef.is() )
- {
- aCRef->insertControlCharacter( TEXTCONTROLCHAR_PARAGRAPH_BREAK );
- }
- }
- aCursorText->setText( aStr );
- aXTextCursor->gotoEnd( sal_True );
- double nSize = mpCGM->mnOutdx;
- if ( mpCGM->mnOutdx < mpCGM->mnOutdy )
- nSize = mpCGM->mnOutdy;
- nSize = ( nSize * (double)pTAttr->nTextAttribSize * (double)1.5 ) / 100;
-
- aAny <<= (sal_Int32)( (sal_Int32)nSize );
- aPropSet->setPropertyValue( L"CharHeight", aAny );
-
- sal_uInt32 nTextColor = pTAttr->nTextColorIndex;
- if ( nTextColor == 0xff )
- {
- nTextColor = ( pTAttr->nTextColorBlue << 16 ) + ( pTAttr->nTextColorGreen << 8 ) + pTAttr->nTextColorRed;
- }
- else
- {
- nTextColor = mpCGM->pElement->aColorTable[ nTextColor ];
- }
-
- sal_uInt32 nFontType = 0;
-
- if ( pTAttr->nTextFontType == 0xff )
- {
- FontEntry* pFontEntry = mpCGM->pElement->aFontList.GetFontEntry( pTAttr->nTextFontFamily );
- if ( pFontEntry )
- {
- nFontType = pFontEntry->nFontType;
- if ( mpCGM->pElement->nAspectSourceFlags & ASF_TEXTCOLOR )
- nTextColor = mpCGM->pElement->pTextBundle->GetColor();
- else
- nTextColor = mpCGM->pElement->aTextBundle.GetColor();
- }
- FontItalic eFontItalic = ITALIC_NONE;
- if ( nFontType & 1 )
- eFontItalic = ITALIC_NORMAL;
- aAny.setValue( &eFontItalic, ::getCppuType((const FontItalic*)0) );
- aPropSet->setPropertyValue( L"CharPosture", aAny );
- }
- aAny <<= (sal_Int32)( (sal_Int32)nTextColor );
- aPropSet->setPropertyValue( L"CharColor", aAny );
-
- awt::FontWeight eFontWeight = WEIGHT_NORMAL;
- if ( nFontType & 2 )
- eFontWeight = WEIGHT_BOLD;
- aAny.setValue( &eFontWeight, ::getCppuType((const awt::FontWeight*)0) );
- aPropSet->setPropertyValue( L"CharWeight", aAny );
-
- if ( pTAttr->nTextAttribBits & 0x4000 )
- {
- awt::FontUnderline eUnderline = UNDERLINE_SINGLE;
- aAny.setValue( &eUnderline, ::getCppuType((const awt::FontUnderline*)0) );
- aPropSet->setPropertyValue( L"CharUnderline", aAny );
- }
- }
- }
- pTextEntry->pText[ nTextOfs + pTAttr->nTextAttribCount ] = nPushedChar;
- }
- nTextOfs += pTAttr->nTextAttribCount;
- }
- while ( ( ( pTAttr = pTAttr->pNextAttribute ) != NULL ) );
- }
- }
- }
- return ( nObjCount ) ? nObjCount : maXShapes->getCount();
-*/
-}
-
-// ---------------------------------------------------------------
-
-void CGMImpressOutAct::DrawChart()
-{
-}
diff --git a/goodies/source/filter.vcl/icgm/bitmap.cxx b/goodies/source/filter.vcl/icgm/bitmap.cxx
deleted file mode 100644
index ac2e0929a0ab..000000000000
--- a/goodies/source/filter.vcl/icgm/bitmap.cxx
+++ /dev/null
@@ -1,413 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: bitmap.cxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include "main.hxx"
-
-// ---------------------------------------------------------------
-
-CGMBitmap::CGMBitmap( CGM& rCGM ) :
- mpCGM ( &rCGM ),
- pCGMBitmapDescriptor ( new CGMBitmapDescriptor )
-{
- ImplGetBitmap( *pCGMBitmapDescriptor );
-};
-
-// ---------------------------------------------------------------
-
-CGMBitmap::~CGMBitmap()
-{
- delete pCGMBitmapDescriptor;
-}
-
-// ---------------------------------------------------------------
-
-void CGMBitmap::ImplGetBitmap( CGMBitmapDescriptor& rDesc )
-{
- rDesc.mbStatus = sal_True;
- long nx, ny, nxC, nxCount, nyCount;
-
- if ( ImplGetDimensions( rDesc ) && rDesc.mpBuf )
- {
- if ( ( rDesc.mpBitmap = new Bitmap( Size( rDesc.mnX, rDesc.mnY ), (sal_uInt16)rDesc.mnDstBitsPerPixel ) ) != NULL )
- {
- if ( ( rDesc.mpAcc = rDesc.mpBitmap->AcquireWriteAccess() ) != NULL )
- {
-
- // the picture may either be read from left to right or right to left, from top to bottom ...
-
- nxCount = rDesc.mnX + 1; // +1 because we are using prefix decreasing
- nyCount = rDesc.mnY + 1;
-
- switch ( rDesc.mnDstBitsPerPixel )
- {
- case 1 :
- {
- if ( rDesc.mnLocalColorPrecision == 1 )
- ImplSetCurrentPalette( rDesc );
- else
- {
- rDesc.mpAcc->SetPaletteEntryCount( 2 );
- rDesc.mpAcc->SetPaletteColor( 0, BMCOL( mpCGM->pElement->nBackGroundColor ) );
- rDesc.mpAcc->SetPaletteColor( 1,
- ( mpCGM->pElement->nAspectSourceFlags & ASF_FILLINTERIORSTYLE )
- ? BMCOL( mpCGM->pElement->pFillBundle->GetColor() )
- : BMCOL( mpCGM->pElement->aFillBundle.GetColor() ) ) ;
- }
- for ( ny = 0; --nyCount ; ny++, rDesc.mpBuf += rDesc.mnScanSize )
- {
- nxC = nxCount;
- for ( nx = 0; --nxC; nx++ )
- { // this is not fast, but a one bit/pixel format is rarely used
- rDesc.mpAcc->SetPixel( ny, nx, (sal_Int8)( (*( rDesc.mpBuf + ( nx >> 3 ) ) >> ( ( nx & 7 ) ^ 7 ) ) ) & 1 );
- }
- }
- }
- break;
-
- case 2 :
- {
- ImplSetCurrentPalette( rDesc );
- for ( ny = 0; --nyCount; ny++, rDesc.mpBuf += rDesc.mnScanSize )
- {
- nxC = nxCount;
- for ( nx = 0; --nxC; nx++ )
- { // this is not fast, but a two bits/pixel format is rarely used
- rDesc.mpAcc->SetPixel( ny, nx, (sal_Int8)( (*( rDesc.mpBuf + ( nx >> 2 ) ) >> ( ( ( nx & 3 ) ^ 3 ) << 1 ) ) ) & 3 );
- }
- }
- }
- break;
-
- case 4 :
- {
- ImplSetCurrentPalette( rDesc );
- for ( ny = 0; --nyCount; ny++, rDesc.mpBuf += rDesc.mnScanSize )
- {
- nxC = nxCount;
- sal_Int8 nDat;
- sal_uInt8* pTemp = rDesc.mpBuf;
- for ( nx = 0; --nxC; nx++ )
- {
- nDat = *pTemp++;
- rDesc.mpAcc->SetPixel( ny, nx, (sal_Int8)( nDat >> 4 ) );
- if ( --nxC )
- {
- nx ++;
- rDesc.mpAcc->SetPixel( ny, nx, (sal_Int8)( nDat & 15 ) );
- }
- else
- break;
- }
- }
- }
- break;
-
- case 8 :
- {
- ImplSetCurrentPalette( rDesc );
- for ( ny = 0; --nyCount; ny++, rDesc.mpBuf += rDesc.mnScanSize )
- {
- sal_uInt8* pTemp = rDesc.mpBuf;
- nxC = nxCount;
- for ( nx = 0; --nxC; nx++ )
- {
- rDesc.mpAcc->SetPixel( ny, nx, (sal_Int8)( *pTemp++ ) );
- }
- }
- }
- break;
-
- case 24 :
- {
- {
- BitmapColor aBitmapColor;
- for ( ny = 0; --nyCount; ny++, rDesc.mpBuf += rDesc.mnScanSize )
- {
- sal_uInt8* pTemp = rDesc.mpBuf;
- nxC = nxCount;
- for ( nx = 0; --nxC; nx++ )
- {
- aBitmapColor.SetRed( (sal_Int8)*pTemp++ );
- aBitmapColor.SetGreen( (sal_Int8)*pTemp++ );
- aBitmapColor.SetBlue( (sal_Int8)*pTemp++ );
- rDesc.mpAcc->SetPixel( ny, nx, aBitmapColor );
- }
- }
- }
- }
- break;
- };
- double nX = rDesc.mnR.X - rDesc.mnQ.X;
- double nY = rDesc.mnR.Y - rDesc.mnQ.Y;
-
- rDesc.mndy = sqrt( nX * nX + nY * nY );
-
- nX = rDesc.mnR.X - rDesc.mnP.X;
- nY = rDesc.mnR.Y - rDesc.mnP.Y;
-
- rDesc.mndx = sqrt( nX * nX + nY * nY );
-
- nX = rDesc.mnR.X - rDesc.mnP.X;
- nY = rDesc.mnR.Y - rDesc.mnP.Y;
-
- rDesc.mnOrientation = acos( nX / sqrt( nX * nX + nY * nY ) ) * 57.29577951308;
- if ( nY > 0 )
- rDesc.mnOrientation = 360 - rDesc.mnOrientation;
-
- nX = rDesc.mnQ.X - rDesc.mnR.X;
- nY = rDesc.mnQ.Y - rDesc.mnR.Y;
-
- double fAngle = 0.01745329251994 * ( 360 - rDesc.mnOrientation );
- double fSin = sin(fAngle);
- double fCos = cos(fAngle);
- nX = fCos * nX + fSin * nY;
- nY = -( fSin * nX - fCos * nY );
-
- fAngle = acos( nX / sqrt( nX * nX + nY * nY ) ) * 57.29577951308;
- if ( nY > 0 )
- fAngle = 360 - fAngle;
-
- if ( fAngle > 180 ) // wird das bild nach oben oder unten aufgebaut ?
- {
- rDesc.mnOrigin = rDesc.mnP;
- }
- else
- {
- rDesc.mbVMirror = sal_True;
- rDesc.mnOrigin = rDesc.mnP;
- rDesc.mnOrigin.X += rDesc.mnQ.X - rDesc.mnR.X;
- rDesc.mnOrigin.Y += rDesc.mnQ.Y - rDesc.mnR.Y;
- }
- }
- else
- rDesc.mbStatus = sal_False;
- }
- else
- rDesc.mbStatus = sal_False;
- }
- else
- rDesc.mbStatus = sal_False;
-
- if ( rDesc.mpAcc )
- {
- rDesc.mpBitmap->ReleaseAccess( rDesc.mpAcc );
- rDesc.mpAcc = NULL;
- }
- if ( rDesc.mbStatus == sal_False )
- {
- if ( rDesc.mpBitmap )
- {
- delete rDesc.mpBitmap;
- rDesc.mpBitmap = NULL;
- }
- }
-}
-
-// ---------------------------------------------------------------
-
-void CGMBitmap::ImplSetCurrentPalette( CGMBitmapDescriptor& rDesc )
-{
- sal_uInt16 nColors = sal::static_int_cast< sal_uInt16 >(
- 1 << rDesc.mnDstBitsPerPixel);
- rDesc.mpAcc->SetPaletteEntryCount( nColors );
- for ( sal_uInt16 i = 0; i < nColors; i++ )
- {
- rDesc.mpAcc->SetPaletteColor( i, BMCOL( mpCGM->pElement->aLatestColorTable[ i ] ) );
- }
-}
-
-// ---------------------------------------------------------------
-
-sal_Bool CGMBitmap::ImplGetDimensions( CGMBitmapDescriptor& rDesc )
-{
- mpCGM->ImplGetPoint( rDesc.mnP ); // parallelogram p < - > r
- mpCGM->ImplGetPoint( rDesc.mnQ ); // |
- mpCGM->ImplGetPoint( rDesc.mnR ); // q
- sal_uInt32 nPrecision = mpCGM->pElement->nIntegerPrecision;
- rDesc.mnX = mpCGM->ImplGetUI( nPrecision );
- rDesc.mnY = mpCGM->ImplGetUI( nPrecision );
- rDesc.mnLocalColorPrecision = mpCGM->ImplGetI( nPrecision );
- rDesc.mnScanSize = 0;
- switch( rDesc.mnLocalColorPrecision )
- {
- case 0x80000001 : // monochrome ( bit = 0->backgroundcolor )
- case 0 : // bit = 1->fillcolor
- rDesc.mnDstBitsPerPixel = 1;
- break;
- case 1 : // 2 color indexed ( monochrome )
- case -1 :
- rDesc.mnDstBitsPerPixel = 1;
- break;
- case 2 : // 4 color indexed
- case -2 :
- rDesc.mnDstBitsPerPixel = 2;
- break;
- case 4 : // 16 color indexed
- case -4 :
- rDesc.mnDstBitsPerPixel = 4;
- break;
- case 8 : // 256 color indexed
- case -8 :
- rDesc.mnDstBitsPerPixel = 8;
- rDesc.mnScanSize = rDesc.mnX;
- break;
- case 16 : // NS
- case -16 :
- rDesc.mbStatus = sal_False;
- break;
- case 24 : // 24 bit directColor ( 8 bits each component )
- case -24 :
- rDesc.mnDstBitsPerPixel = 24;
- break;
- case 32 : // NS
- case -32 :
- rDesc.mbStatus = sal_False;
- break;
-
- }
- // mnCompressionMode == 0 : CCOMP_RUNLENGTH
- // == 1 : CCOMP_PACKED ( no compression. each row starts on a 4 byte boundary )
- if ( ( rDesc.mnCompressionMode = mpCGM->ImplGetUI16() ) != 1 )
- rDesc.mbStatus = sal_False;
-
- if ( ( rDesc.mnX || rDesc.mnY ) == 0 )
- rDesc.mbStatus = sal_False;
-
- sal_uInt32 nHeaderSize = 2 + 3 * nPrecision + 3 * mpCGM->ImplGetPointSize();
- rDesc.mnScanSize = ( ( rDesc.mnX * rDesc.mnDstBitsPerPixel + 7 ) >> 3 );
-
- sal_uInt32 nScanSize;
- nScanSize = rDesc.mnScanSize;
- if ( ( nScanSize * rDesc.mnY + nHeaderSize ) != mpCGM->mnElementSize ) // try a scansize without dw alignment
- {
- nScanSize = ( rDesc.mnScanSize + 1 ) & ~1;
- if ( ( nScanSize * rDesc.mnY + nHeaderSize ) != mpCGM->mnElementSize ) // then we'll try word alignment
- {
- nScanSize = ( rDesc.mnScanSize + 3 ) & ~3;
- if ( ( nScanSize * rDesc.mnY + nHeaderSize ) != mpCGM->mnElementSize ) // and last we'll try dword alignment
- {
- nScanSize = ( rDesc.mnScanSize + 1 ) & ~1; // and LAST BUT NOT LEAST we'll try word alignment without aligning the last line
- if ( ( nScanSize * ( rDesc.mnY - 1 ) + rDesc.mnScanSize + nHeaderSize ) != mpCGM->mnElementSize )
- {
- nScanSize = ( rDesc.mnScanSize + 3 ) & ~3;
- if ( ( nScanSize * ( rDesc.mnY - 1 ) + rDesc.mnScanSize + nHeaderSize ) != mpCGM->mnElementSize )
- {
- mpCGM->mnParaSize = 0; // this format is corrupt
- rDesc.mbStatus = sal_False;
- }
- }
- }
- }
- }
- rDesc.mnScanSize = nScanSize;
- if ( rDesc.mbStatus )
- {
- rDesc.mpBuf = mpCGM->mpSource + mpCGM->mnParaSize; // mpBuf now points to the first scanline
- mpCGM->mnParaSize += rDesc.mnScanSize * rDesc.mnY;
- }
- return rDesc.mbStatus;
-}
-
-// ---------------------------------------------------------------
-
-void CGMBitmap::ImplInsert( CGMBitmapDescriptor& rSource, CGMBitmapDescriptor& rDest )
-{
- if ( ( rSource.mnR.Y == rDest.mnQ.Y ) && ( rSource.mnR.X == rDest.mnQ.X ) )
- { // Insert on Bottom
- if ( mpCGM->mnVDCYmul == -1 )
- rDest.mnOrigin = rSource.mnOrigin; // neuer origin
- rDest.mpBitmap->Expand( 0, rSource.mnY );
- rDest.mpBitmap->CopyPixel( Rectangle( Point( 0, rDest.mnY ), Size( rSource.mnX, rSource.mnY ) ),
- Rectangle( Point( 0, 0 ), Size( rSource.mnX, rSource.mnY ) ), rSource.mpBitmap );
- FloatPoint aFloatPoint;
- aFloatPoint.X = rSource.mnQ.X - rSource.mnR.X;
- aFloatPoint.Y = rSource.mnQ.Y - rSource.mnR.Y;
- rDest.mnQ.X += aFloatPoint.X;
- rDest.mnQ.Y += aFloatPoint.Y;
- rDest.mnP = rSource.mnP;
- rDest.mnR = rSource.mnR;
- }
- else
- { // Insert on Top
- if ( mpCGM->mnVDCYmul == 1 )
- rDest.mnOrigin = rSource.mnOrigin; // neuer origin
- rDest.mpBitmap->Expand( 0, rSource.mnY );
- rDest.mpBitmap->CopyPixel( Rectangle( Point( 0, rDest.mnY ), Size( rSource.mnX, rSource.mnY ) ),
- Rectangle( Point( 0, 0 ), Size( rSource.mnX, rSource.mnY ) ), rSource.mpBitmap );
- rDest.mnP = rSource.mnP;
- rDest.mnR = rSource.mnR;
- }
- rDest.mnY += rSource.mnY;
- rDest.mndy += rSource.mndy;
-};
-
-// ---------------------------------------------------------------
-
-CGMBitmap* CGMBitmap::GetNext()
-{
- if ( pCGMBitmapDescriptor->mpBitmap && pCGMBitmapDescriptor->mbStatus )
- {
- CGMBitmap* pCGMTempBitmap = new CGMBitmap( *mpCGM );
- if ( pCGMTempBitmap )
- {
- if ( ( (long)pCGMTempBitmap->pCGMBitmapDescriptor->mnOrientation == (long)pCGMBitmapDescriptor->mnOrientation ) &&
- ( ( ( pCGMTempBitmap->pCGMBitmapDescriptor->mnR.X == pCGMBitmapDescriptor->mnQ.X ) &&
- ( pCGMTempBitmap->pCGMBitmapDescriptor->mnR.Y == pCGMBitmapDescriptor->mnQ.Y ) ) ||
- ( ( pCGMTempBitmap->pCGMBitmapDescriptor->mnQ.X == pCGMBitmapDescriptor->mnR.X ) &&
- ( pCGMTempBitmap->pCGMBitmapDescriptor->mnQ.Y == pCGMBitmapDescriptor->mnR.Y ) ) ) )
- {
- ImplInsert( *(pCGMTempBitmap->pCGMBitmapDescriptor), *(pCGMBitmapDescriptor) );
- delete pCGMTempBitmap;
- return NULL;
- }
- else // we'll replace the pointers and return the old one
- {
- CGMBitmapDescriptor* pTempBD = pCGMBitmapDescriptor;
- pCGMBitmapDescriptor = pCGMTempBitmap->pCGMBitmapDescriptor;
- pCGMTempBitmap->pCGMBitmapDescriptor = pTempBD;
- return pCGMTempBitmap;
- }
- }
- return NULL;
- }
- else
- return NULL;
-}
-
-// ---------------------------------------------------------------
-
-CGMBitmapDescriptor* CGMBitmap::GetBitmap()
-{
- return pCGMBitmapDescriptor;
-}
-
diff --git a/goodies/source/filter.vcl/icgm/bitmap.hxx b/goodies/source/filter.vcl/icgm/bitmap.hxx
deleted file mode 100644
index 6c52f585e38a..000000000000
--- a/goodies/source/filter.vcl/icgm/bitmap.hxx
+++ /dev/null
@@ -1,90 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: bitmap.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef CGM_BITMAP_HXX_
-#define CGM_BITMAP_HXX_
-
-#include "cgm.hxx"
-#include <vcl/bmpacc.hxx>
-
-class CGM;
-
-class CGMBitmapDescriptor
-{
- public:
- sal_uInt8* mpBuf;
- Bitmap* mpBitmap;
- BitmapWriteAccess* mpAcc;
- sal_Bool mbStatus;
- sal_Bool mbVMirror;
- sal_Bool mbHMirror;
- sal_uInt32 mnDstBitsPerPixel;
- sal_uInt32 mnScanSize; // bytes per line
- FloatPoint mnP, mnQ, mnR;
-
- FloatPoint mnOrigin;
- double mndx, mndy;
- double mnOrientation;
-
- sal_uInt32 mnX, mnY;
- long mnLocalColorPrecision;
- sal_uInt32 mnCompressionMode;
- CGMBitmapDescriptor() :
- mpBuf ( NULL ),
- mpBitmap ( NULL ),
- mpAcc ( NULL ),
- mbStatus ( sal_False ),
- mbVMirror ( sal_False ),
- mbHMirror ( sal_False ) { };
- ~CGMBitmapDescriptor()
- {
- if ( mpAcc )
- mpBitmap->ReleaseAccess( mpAcc );
- if ( mpBitmap )
- delete mpBitmap;
- };
-};
-
-class CGMBitmap
-{
- CGM* mpCGM;
- CGMBitmapDescriptor* pCGMBitmapDescriptor;
- sal_Bool ImplGetDimensions( CGMBitmapDescriptor& );
- void ImplSetCurrentPalette( CGMBitmapDescriptor& );
- void ImplGetBitmap( CGMBitmapDescriptor& );
- void ImplInsert( CGMBitmapDescriptor& rSource, CGMBitmapDescriptor& rDest );
- public:
- CGMBitmap( CGM& rCGM );
- ~CGMBitmap();
- CGMBitmapDescriptor* GetBitmap();
- CGMBitmap* GetNext();
-};
-#endif
-
diff --git a/goodies/source/filter.vcl/icgm/bundles.cxx b/goodies/source/filter.vcl/icgm/bundles.cxx
deleted file mode 100644
index 9cebbb0ae140..000000000000
--- a/goodies/source/filter.vcl/icgm/bundles.cxx
+++ /dev/null
@@ -1,291 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: bundles.cxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include "bundles.hxx"
-
-#include <vcl/salbtype.hxx>
-#include <tools/stream.hxx>
-#include <tools/list.hxx>
-
-Bundle& Bundle::operator=( Bundle& rSource )
-{
- mnColor = rSource.mnColor;
- mnBundleIndex = rSource.mnBundleIndex;
- return *this;
-};
-
-// ---------------------------------------------------------------
-
-void Bundle::SetColor( sal_uInt32 nColor )
-{
- mnColor = nColor;
-}
-
-sal_uInt32 Bundle::GetColor()
-{
- return mnColor;
-}
-
-// ---------------------------------------------------------------
-
-LineBundle& LineBundle::operator=( LineBundle& rSource )
-{
- SetIndex( rSource.GetIndex() );
- eLineType = rSource.eLineType;
- nLineWidth = rSource.nLineWidth;
- return *this;
-};
-
-MarkerBundle& MarkerBundle::operator=( MarkerBundle& rSource )
-{
- SetIndex( rSource.GetIndex() );
- eMarkerType = rSource.eMarkerType;
- nMarkerSize = rSource.nMarkerSize;
- return *this;
-};
-
-EdgeBundle& EdgeBundle::operator=( EdgeBundle& rSource )
-{
- SetIndex( rSource.GetIndex() );
- eEdgeType = rSource.eEdgeType;
- nEdgeWidth = rSource.nEdgeWidth;
- return *this;
-};
-
-TextBundle& TextBundle::operator=( TextBundle& rSource )
-{
- SetIndex( rSource.GetIndex() );
- nTextFontIndex = rSource.nTextFontIndex;
- eTextPrecision = rSource.eTextPrecision;
- nCharacterExpansion = rSource.nCharacterExpansion;
- nCharacterSpacing = rSource.nCharacterSpacing;
- return *this;
-};
-
-FillBundle& FillBundle::operator=( FillBundle& rSource )
-{
- SetIndex( rSource.GetIndex() );
- eFillInteriorStyle = rSource.eFillInteriorStyle;
- nFillPatternIndex = rSource.nFillPatternIndex;
- nFillHatchIndex = rSource.nFillHatchIndex;
- return *this;
-};
-
-// ---------------------------------------------------------------
-
-FontEntry::FontEntry() :
- pFontName ( NULL ),
- eCharSetType ( CST_CCOMPLETE ),
- pCharSetValue ( NULL ),
- nFontType ( 0 )
-{
-}
-
-FontEntry::~FontEntry()
-{
- delete pFontName;
- delete pCharSetValue;
-}
-
-// ---------------------------------------------------------------
-
-CGMFList::CGMFList() :
- nFontNameCount ( 0 ),
- nCharSetCount ( 0 ),
- nFontsAvailable ( 0 )
-{
- aFontEntryList.Clear();
-}
-
-CGMFList::~CGMFList()
-{
- ImplDeleteList();
-}
-
-// ---------------------------------------------------------------
-
-CGMFList& CGMFList::operator=( CGMFList& rSource )
-{
- ImplDeleteList();
- nFontsAvailable = rSource.nFontsAvailable;
- nFontNameCount = rSource.nFontNameCount;
- nCharSetCount = rSource.nCharSetCount;
- FontEntry* pPtr = (FontEntry*)rSource.aFontEntryList.First();
- while( pPtr )
- {
- FontEntry* pCFontEntry = new FontEntry;
- if ( pPtr->pFontName )
- {
- sal_uInt32 nSize = strlen( (const char*)pPtr->pFontName ) + 1;
- pCFontEntry->pFontName = new sal_Int8[ nSize ];
- memcpy( pCFontEntry->pFontName, pPtr->pFontName, nSize );
- }
- if ( pPtr->pCharSetValue )
- {
- sal_uInt32 nSize = strlen( (const char*)pPtr->pCharSetValue ) + 1;
- pCFontEntry->pCharSetValue = new sal_Int8[ nSize ];
- memcpy( pCFontEntry->pCharSetValue, pPtr->pCharSetValue, nSize );
- }
- pCFontEntry->eCharSetType = pPtr->eCharSetType;
- pCFontEntry->nFontType = pPtr->nFontType;
- aFontEntryList.Insert( pCFontEntry, LIST_APPEND );
- pPtr = (FontEntry*)rSource.aFontEntryList.Next();
- }
- return *this;
-}
-
-// ---------------------------------------------------------------
-
-FontEntry* CGMFList::GetFontEntry( sal_uInt32 nIndex )
-{
- sal_uInt32 nInd = nIndex;
- if ( nInd )
- nInd--;
- return (FontEntry*)aFontEntryList.GetObject( nInd );
-}
-
-// ---------------------------------------------------------------
-
-static sal_Int8* ImplSearchEntry( sal_Int8* pSource, sal_Int8* pDest, sal_uInt32 nComp, sal_uInt32 nSize )
-{
- while ( nComp-- >= nSize )
- {
- sal_uInt32 i;
- for ( i = 0; i < nSize; i++ )
- {
- if ( ( pSource[i]&~0x20 ) != ( pDest[i]&~0x20 ) )
- break;
- }
- if ( i == nSize )
- return pSource;
- pSource++;
- }
- return NULL;
-}
-
-void CGMFList::InsertName( sal_uInt8* pSource, sal_uInt32 nSize )
-{
- FontEntry* pFontEntry;
- if ( nFontsAvailable == nFontNameCount )
- {
- nFontsAvailable++;
- pFontEntry = new FontEntry;
- aFontEntryList.Insert( pFontEntry, LIST_APPEND );
- }
- else
- {
- pFontEntry = (FontEntry*)aFontEntryList.GetObject( nFontNameCount );
- }
- nFontNameCount++;
- sal_Int8* pBuf = new sal_Int8[ nSize ];
- memcpy( pBuf, pSource, nSize );
- sal_Int8* pFound = ImplSearchEntry( pBuf, (sal_Int8*)"ITALIC", nSize, 6 );
- if ( pFound )
- {
- pFontEntry->nFontType |= 1;
- sal_uInt32 nPrev = ( pFound - pBuf );
- sal_uInt32 nToCopyOfs = 6;
- if ( nPrev && ( pFound[ -1 ] == '-' || pFound[ -1 ] == ' ' ) )
- {
- nPrev--;
- pFound--;
- nToCopyOfs++;
- }
- sal_uInt32 nToCopy = nSize - nToCopyOfs - nPrev;
- if ( nToCopy )
- {
- memcpy( pFound, pFound + nToCopyOfs, nToCopy );
- }
- nSize -= nToCopyOfs;
- }
- pFound = ImplSearchEntry( pBuf, (sal_Int8*)"BOLD", nSize, 4 );
- if ( pFound )
- {
- pFontEntry->nFontType |= 2;
-
- sal_uInt32 nPrev = ( pFound - pBuf );
- sal_uInt32 nToCopyOfs = 4;
- if ( nPrev && ( pFound[ -1 ] == '-' || pFound[ -1 ] == ' ' ) )
- {
- nPrev--;
- pFound--;
- nToCopyOfs++;
- }
- sal_uInt32 nToCopy = nSize - nToCopyOfs - nPrev;
- if ( nToCopy )
- {
- memcpy( pFound, pFound + nToCopyOfs, nToCopy );
- }
- nSize -= nToCopyOfs;
- }
- pFontEntry->pFontName = new sal_Int8[ nSize + 1 ];
- pFontEntry->pFontName[ nSize ] = 0;
- memcpy( pFontEntry->pFontName, pBuf, nSize );
- delete[] pBuf;
-}
-
-//--------------------------------------------------------------------------
-
-void CGMFList::InsertCharSet( CharSetType eCharSetType, sal_uInt8* pSource, sal_uInt32 nSize )
-{
- FontEntry* pFontEntry;
- if ( nFontsAvailable == nCharSetCount )
- {
- nFontsAvailable++;
- pFontEntry = new FontEntry;
- aFontEntryList.Insert( pFontEntry, LIST_APPEND );
- }
- else
- {
- pFontEntry = (FontEntry*)aFontEntryList.GetObject( nCharSetCount );
- }
- nCharSetCount++;
- pFontEntry->eCharSetType = eCharSetType;
- pFontEntry->pCharSetValue = new sal_Int8[ nSize + 1 ];
- pFontEntry->pCharSetValue[ nSize ] = 0;
- memcpy( pFontEntry->pCharSetValue, pSource , nSize );
-}
-
-// ---------------------------------------------------------------
-
-void CGMFList::ImplDeleteList()
-{
- FontEntry* pFontEntry = (FontEntry*)aFontEntryList.First();
- while( pFontEntry )
- {
- delete pFontEntry;
- pFontEntry = (FontEntry*)aFontEntryList.Next();
- }
- aFontEntryList.Clear();
-}
-
diff --git a/goodies/source/filter.vcl/icgm/bundles.hxx b/goodies/source/filter.vcl/icgm/bundles.hxx
deleted file mode 100644
index 1ad9acfd0b44..000000000000
--- a/goodies/source/filter.vcl/icgm/bundles.hxx
+++ /dev/null
@@ -1,176 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: bundles.hxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef CGM_BUNDLES_HXX_
-#define CGM_BUNDLES_HXX_
-
-#include <sal/types.h>
-#include "cgmtypes.hxx"
-#include <tools/list.hxx>
-#include <vcl/salbtype.hxx>
-
-// ---------------------------------------------------------------
-
-class CGM;
-
-class Bundle
-{
-
- long mnBundleIndex;
- sal_uInt32 mnColor;
-
-public:
- void SetColor( sal_uInt32 nColor ) ;
- sal_uInt32 GetColor() ;
- long GetIndex() const { return mnBundleIndex; } ;
- void SetIndex( long nBundleIndex ) { mnBundleIndex = nBundleIndex; } ;
-
- Bundle() {};
- virtual Bundle* Clone() { return new Bundle( *this ); };
- Bundle& operator=( Bundle& rBundle );
-
- virtual ~Bundle() {} ;
-};
-
-// ---------------------------------------------------------------
-
-class LineBundle : public Bundle
-{
-public:
-
- LineType eLineType;
- double nLineWidth;
-
- LineBundle() {};
- virtual Bundle* Clone() { return new LineBundle( *this ); };
- LineBundle& operator=( LineBundle& rLineBundle );
- virtual ~LineBundle() {};
-};
-
-// ---------------------------------------------------------------
-
-class MarkerBundle : public Bundle
-{
-public:
-
- MarkerType eMarkerType;
- double nMarkerSize;
-
- MarkerBundle() {};
- virtual Bundle* Clone() { return new MarkerBundle( *this ); } ;
- MarkerBundle& operator=( MarkerBundle& rMarkerBundle );
- virtual ~MarkerBundle() {};
-};
-
-// ---------------------------------------------------------------
-
-class EdgeBundle : public Bundle
-{
-public:
-
- EdgeType eEdgeType;
- double nEdgeWidth;
-
- EdgeBundle() {};
- virtual Bundle* Clone() { return new EdgeBundle( *this ); } ;
- EdgeBundle& operator=( EdgeBundle& rEdgeBundle );
- virtual ~EdgeBundle() {};
-};
-
-// ---------------------------------------------------------------
-
-class TextBundle : public Bundle
-{
-public:
-
- sal_uInt32 nTextFontIndex;
- TextPrecision eTextPrecision;
- double nCharacterExpansion;
- double nCharacterSpacing;
-
- TextBundle() {};
- virtual Bundle* Clone() { return new TextBundle( *this ); } ;
- TextBundle& operator=( TextBundle& rTextBundle );
- virtual ~TextBundle() {};
-};
-
-// ---------------------------------------------------------------
-
-class FillBundle : public Bundle
-{
-public:
-
- FillInteriorStyle eFillInteriorStyle;
- long nFillPatternIndex;
- long nFillHatchIndex;
-
- FillBundle() {};
- virtual Bundle* Clone() { return new FillBundle( *this ); } ;
- FillBundle& operator=( FillBundle& rFillBundle );
- virtual ~FillBundle() {};
-};
-
-
-// ---------------------------------------------------------------
-
-class FontEntry
-{
-public:
- sal_Int8* pFontName;
- CharSetType eCharSetType;
- sal_Int8* pCharSetValue;
- sal_uInt32 nFontType; // bit 0 = 1 -> Italic,
- // bit 1 = 1 -> Bold
-
- FontEntry();
- FontEntry* Clone() { return new FontEntry( *this ); } ;
- ~FontEntry();
-};
-
-// ---------------------------------------------------------------
-
-class CGMFList
-{
- sal_uInt32 nFontNameCount;
- sal_uInt32 nCharSetCount;
- List aFontEntryList;
- void ImplDeleteList();
-public:
- sal_uInt32 nFontsAvailable;
- FontEntry* GetFontEntry( sal_uInt32 );
- void InsertName( sal_uInt8* pSource, sal_uInt32 nSize );
- void InsertCharSet( CharSetType, sal_uInt8* pSource, sal_uInt32 nSize );
- CGMFList();
- CGMFList& operator=( CGMFList& rFontList );
- ~CGMFList();
-};
-
-
-#endif
diff --git a/goodies/source/filter.vcl/icgm/cgm.cxx b/goodies/source/filter.vcl/icgm/cgm.cxx
deleted file mode 100644
index fc8079a859d4..000000000000
--- a/goodies/source/filter.vcl/icgm/cgm.cxx
+++ /dev/null
@@ -1,930 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: cgm.cxx,v $
- * $Revision: 1.16 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include <com/sun/star/task/XStatusIndicator.hpp>
-#include <unotools/ucbstreamhelper.hxx>
-
-#define CGM_BREAK_ACTION 0xffffffff
-#include <osl/endian.h>
-#include <vcl/virdev.hxx>
-#include <vcl/graph.hxx>
-#include <tools/stream.hxx>
-#include <chart.hxx>
-#include <main.hxx>
-#include <elements.hxx>
-#include <outact.hxx>
-
-using namespace ::com::sun::star;
-
-// ---------------------------------------------------------------
-
-void CGM::ImplCGMInit()
-{
- mbIsFinished = mbPicture = mbMetaFile = mbPictureBody = sal_False;
-
- mnActCount = 0;
- mnOutdx = 28000;
- mnOutdy = 21000;
-
- mpBuf = NULL;
- mpChart = NULL;
- mpBitmapInUse = NULL;
-
- pCopyOfE = new CGMElements( *this );
- pElement = new CGMElements( *this );
-}
-
-// ---------------------------------------------------------------
-
-#ifdef CGM_EXPORT_IMPRESS
-
-CGM::CGM( sal_uInt32 nMode, uno::Reference< frame::XModel > & rModel ) :
- mpGraphic ( NULL ),
- mpCommentOut ( NULL ),
- mbStatus ( sal_True ),
- mpOutAct ( new CGMImpressOutAct( *this, rModel ) ),
- mnMode ( nMode )
-{
- mnMode |= CGM_EXPORT_IMPRESS;
- ImplCGMInit();
-}
-#endif
-
-// ---------------------------------------------------------------
-
-void CGM::ImplComment( sal_uInt32 Level, const char* Description )
-{
- if ( mpCommentOut )
- {
- if ( Level == CGM_DESCRIPTION )
- {
- *mpCommentOut << " " << Description << "\n";
- }
- else
- {
- sal_Int8 nFirst, nSecond, i, nCount = 0;
- if ( mnActCount < 10000 )
- nCount++;
- if ( mnActCount < 1000 )
- nCount++;
- if ( mnActCount < 100 )
- nCount++;
- if ( mnActCount < 10 )
- nCount++;
- for ( i = 0; i <= nCount; i++ )
- *mpCommentOut << " ";
- mpCommentOut->WriteNumber( mnActCount );
-
- switch( Level & 0xff )
- {
- case CGM_UNKNOWN_LEVEL :
- *mpCommentOut << " L?";
- break;
- case CGM_UNKNOWN_COMMAND :
- *mpCommentOut << " UNKNOWN COMMAND";
- break;
- case CGM_GDSF_ONLY :
- *mpCommentOut << " LI";
- break;
- default:
- *mpCommentOut << " L";
- mpCommentOut->WriteNumber( Level & 0xff );
- break;
- }
- *mpCommentOut << " C";
- mpCommentOut->WriteNumber( mnElementClass );
- *mpCommentOut << " ID-0x";
- nFirst = ( mnElementID > 0x9F ) ? (sal_Int8)( mnElementID >> 4 ) + 'A' - 10: (sal_Int8)( mnElementID >> 4 ) + '0';
- nSecond = ( ( mnElementID & 15 ) > 9 ) ? (sal_Int8)( mnElementID & 15 ) + 'A' - 10 : (sal_Int8)( mnElementID & 15 ) + '0';
- *mpCommentOut << nFirst << nSecond;
- *mpCommentOut << " Size";
- nCount = 1;
- if ( mnElementSize < 1000000 )
- nCount++;
- if ( mnElementSize < 100000 )
- nCount++;
- if ( mnElementSize < 10000 )
- nCount++;
- if ( mnElementSize < 1000 )
- nCount++;
- if ( mnElementSize < 100 )
- nCount++;
- if ( mnElementSize < 10 )
- nCount++;
- for ( i = 0; i < nCount; i++ )
- *mpCommentOut << " ";
- mpCommentOut->WriteNumber( mnElementSize );
- *mpCommentOut << " " << Description << "\n";
- }
- }
-}
-
-// ---------------------------------------------------------------
-
-CGM::~CGM()
-{
-
-#ifdef CGM_EXPORT_META
- if ( mpGraphic )
- {
- mpGDIMetaFile->Stop();
- mpGDIMetaFile->SetPrefMapMode( MapMode() );
- mpGDIMetaFile->SetPrefSize( Size( static_cast< long >( mnOutdx ), static_cast< long >( mnOutdy ) ) );
- delete mpVirDev;
- *mpGraphic = Graphic( *mpGDIMetaFile );
- }
-#endif
- sal_Int8* pBuf = (sal_Int8*)maDefRepList.First();
- while( pBuf )
- {
- delete pBuf;
- pBuf = (sal_Int8*)maDefRepList.Next();
- }
- maDefRepList.Clear();
- delete mpBitmapInUse;
- delete mpCommentOut;
- delete mpChart;
- delete mpOutAct;
- delete pCopyOfE;
- delete pElement;
- delete [] mpBuf;
-};
-
-// ---------------------------------------------------------------
-
-sal_uInt32 CGM::GetBackGroundColor()
-{
- return ( pElement ) ? pElement->aColorTable[ 0 ] : 0;
-}
-
-// ---------------------------------------------------------------
-
-sal_uInt32 CGM::ImplGetUI16( sal_uInt32 /*nAlign*/ )
-{
- sal_uInt8* pSource = mpSource + mnParaSize;
- mnParaSize += 2;
- return ( pSource[ 0 ] << 8 ) + pSource[ 1 ];
-};
-
-// ---------------------------------------------------------------
-
-sal_uInt8 CGM::ImplGetByte( sal_uInt32 nSource, sal_uInt32 nPrecision )
-{
- return (sal_uInt8)( nSource >> ( ( nPrecision - 1 ) << 3 ) );
-};
-
-// ---------------------------------------------------------------
-
-long CGM::ImplGetI( sal_uInt32 nPrecision )
-{
- sal_uInt8* pSource = mpSource + mnParaSize;
- mnParaSize += nPrecision;
- switch( nPrecision )
- {
- case 1 :
- {
- return (char)*pSource;
- }
-
- case 2 :
- {
- return (sal_Int16)( ( pSource[ 0 ] << 8 ) | pSource[ 1 ] );
- }
-
- case 3 :
- {
- return ( ( pSource[ 0 ] << 24 ) | ( pSource[ 1 ] << 16 ) | pSource[ 2 ] << 8 ) >> 8;
- }
- case 4:
- {
- return (sal_Int32)( ( pSource[ 0 ] << 24 ) | ( pSource[ 1 ] << 16 ) | ( pSource[ 2 ] << 8 ) | ( pSource[ 3 ] ) );
- }
- default:
- mbStatus = sal_False;
- return 0;
- }
-}
-
-// ---------------------------------------------------------------
-
-sal_uInt32 CGM::ImplGetUI( sal_uInt32 nPrecision )
-{
- sal_uInt8* pSource = mpSource + mnParaSize;
- mnParaSize += nPrecision;
- switch( nPrecision )
- {
- case 1 :
- return (sal_Int8)*pSource;
- case 2 :
- {
- return (sal_uInt16)( ( pSource[ 0 ] << 8 ) | pSource[ 1 ] );
- }
- case 3 :
- {
- return ( pSource[ 0 ] << 16 ) | ( pSource[ 1 ] << 8 ) | pSource[ 2 ];
- }
- case 4:
- {
- return (sal_uInt32)( ( pSource[ 0 ] << 24 ) | ( pSource[ 1 ] << 16 ) | ( pSource[ 2 ] << 8 ) | ( pSource[ 3 ] ) );
- }
- default:
- mbStatus = sal_False;
- return 0;
- }
-}
-
-// ---------------------------------------------------------------
-
-void CGM::ImplGetSwitch4( sal_uInt8* pSource, sal_uInt8* pDest )
-{
- for ( int i = 0; i < 4; i++ )
- {
- pDest[ i ] = pSource[ i ^ 3 ]; // Little Endian <-> Big Endian switch
- }
-}
-
-// ---------------------------------------------------------------
-
-void CGM::ImplGetSwitch8( sal_uInt8* pSource, sal_uInt8* pDest )
-{
- for ( int i = 0; i < 8; i++ )
- {
- pDest[ i ] = pSource[ i ^ 7 ]; // Little Endian <-> Big Endian switch
- }
-}
-
-// ---------------------------------------------------------------
-
-double CGM::ImplGetFloat( RealPrecision eRealPrecision, sal_uInt32 nRealSize )
-{
- void* pPtr;
- sal_uInt8 aBuf[8];
- sal_Bool bCompatible;
- double nRetValue;
- double fDoubleBuf;
- float fFloatBuf;
-
-#ifdef OSL_BIGENDIAN
- bCompatible = sal_True;
-#else
- bCompatible = sal_False;
-#endif
- if ( bCompatible )
- pPtr = mpSource + mnParaSize;
- else
- {
- if ( nRealSize == 4 )
- ImplGetSwitch4( mpSource + mnParaSize, &aBuf[0] );
- else
- ImplGetSwitch8( mpSource + mnParaSize, &aBuf[0] );
- pPtr = &aBuf;
- }
- if ( eRealPrecision == RP_FLOAT )
- {
- if ( nRealSize == 4 )
- {
- memcpy( (void*)&fFloatBuf, pPtr, 4 );
- nRetValue = (double)fFloatBuf;
- }
- else
- {
- memcpy( (void*)&fDoubleBuf, pPtr, 8 );
- nRetValue = fDoubleBuf;
- }
- }
- else // ->RP_FIXED
- {
- long nVal;
- int nSwitch = ( bCompatible ) ? 0 : 1 ;
- if ( nRealSize == 4 )
- {
- sal_uInt16* pShort = (sal_uInt16*)pPtr;
- nVal = pShort[ nSwitch ];
- nVal <<= 16;
- nVal |= pShort[ nSwitch ^ 1 ];
- nRetValue = (double)nVal;
- nRetValue /= 65536;
- }
- else
- {
- long* pLong = (long*)pPtr;
- nRetValue = (double)abs( pLong[ nSwitch ] );
- nRetValue *= 65536;
- nVal = (sal_uInt32)( pLong[ nSwitch ^ 1 ] );
- nVal >>= 16;
- nRetValue += (double)nVal;
- if ( pLong[ nSwitch ] < 0 )
- {
- nRetValue -= nRetValue;
- }
- nRetValue /= 65536;
- }
- }
- mnParaSize += nRealSize;
- return nRetValue;
-}
-
-// ---------------------------------------------------------------
-
-sal_uInt32 CGM::ImplGetPointSize()
-{
- if ( pElement->eVDCType == VDC_INTEGER )
- return pElement->nVDCIntegerPrecision << 1;
- else
- return pElement->nVDCRealSize << 1;
-}
-
-// ---------------------------------------------------------------
-
-inline double CGM::ImplGetIX()
-{
- return ( ( ImplGetI( pElement->nVDCIntegerPrecision ) + mnVDCXadd ) * mnVDCXmul );
-}
-
-// ---------------------------------------------------------------
-
-inline double CGM::ImplGetFX()
-{
- return ( ( ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize ) + mnVDCXadd ) * mnVDCXmul );
-}
-
-// ---------------------------------------------------------------
-
-inline double CGM::ImplGetIY()
-{
- return ( ( ImplGetI( pElement->nVDCIntegerPrecision ) + mnVDCYadd ) * mnVDCYmul );
-}
-
-// ---------------------------------------------------------------
-
-inline double CGM::ImplGetFY()
-{
- return ( ( ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize ) + mnVDCYadd ) * mnVDCYmul );
-}
-
-// ---------------------------------------------------------------
-
-void CGM::ImplGetPoint( FloatPoint& rFloatPoint, sal_Bool bMap )
-{
- if ( pElement->eVDCType == VDC_INTEGER )
- {
- rFloatPoint.X = ImplGetIX();
- rFloatPoint.Y = ImplGetIY();
- }
- else // ->floating points
- {
- rFloatPoint.X = ImplGetFX();
- rFloatPoint.Y = ImplGetFY();
- }
- if ( bMap )
- ImplMapPoint( rFloatPoint );
-}
-
-// ---------------------------------------------------------------
-
-void CGM::ImplGetRectangle( FloatRect& rFloatRect, sal_Bool bMap )
-{
- if ( pElement->eVDCType == VDC_INTEGER )
- {
- rFloatRect.Left = ImplGetIX();
- rFloatRect.Bottom = ImplGetIY();
- rFloatRect.Right = ImplGetIX();
- rFloatRect.Top = ImplGetIY();
- }
- else // ->floating points
- {
- rFloatRect.Left = ImplGetFX();
- rFloatRect.Bottom = ImplGetFY();
- rFloatRect.Right = ImplGetFX();
- rFloatRect.Top = ImplGetFY();
- }
- if ( bMap )
- {
- ImplMapX( rFloatRect.Left );
- ImplMapX( rFloatRect.Right );
- ImplMapY( rFloatRect.Top );
- ImplMapY( rFloatRect.Bottom );
- rFloatRect.Justify();
- }
-}
-
-// ---------------------------------------------------------------
-
-void CGM::ImplGetRectangleNS( FloatRect& rFloatRect )
-{
- if ( pElement->eVDCType == VDC_INTEGER )
- {
- rFloatRect.Left = ImplGetI( pElement->nVDCIntegerPrecision );
- rFloatRect.Bottom = ImplGetI( pElement->nVDCIntegerPrecision );
- rFloatRect.Right = ImplGetI( pElement->nVDCIntegerPrecision );
- rFloatRect.Top = ImplGetI( pElement->nVDCIntegerPrecision );
- }
- else // ->floating points
- {
- rFloatRect.Left = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- rFloatRect.Bottom = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- rFloatRect.Right = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- rFloatRect.Top = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- }
-}
-
-// ---------------------------------------------------------------
-
-sal_uInt32 CGM::ImplGetBitmapColor( sal_Bool bDirect )
-{
- // the background color is always a direct color
-
- sal_uInt32 nTmp;
- if ( ( pElement->eColorSelectionMode == CSM_DIRECT ) || bDirect )
- {
- sal_uInt32 nColor = ImplGetByte( ImplGetUI( pElement->nColorPrecision ), 1 );
- sal_uInt32 nDiff = pElement->nColorValueExtent[ 3 ] - pElement->nColorValueExtent[ 0 ] + 1;
-
- if ( !nDiff )
- nDiff++;
- nColor = ( ( nColor - pElement->nColorValueExtent[ 0 ] ) << 8 ) / nDiff;
- nTmp = nColor << 16 & 0xff0000;
-
- nColor = ImplGetByte( ImplGetUI( pElement->nColorPrecision ), 1 );
- nDiff = pElement->nColorValueExtent[ 4 ] - pElement->nColorValueExtent[ 1 ] + 1;
- if ( !nDiff )
- nDiff++;
- nColor = ( ( nColor - pElement->nColorValueExtent[ 1 ] ) << 8 ) / nDiff;
- nTmp |= nColor << 8 & 0xff00;
-
- nColor = ImplGetByte( ImplGetUI( pElement->nColorPrecision ), 1 );
- nDiff = pElement->nColorValueExtent[ 5 ] - pElement->nColorValueExtent[ 2 ] + 1;
- if ( !nDiff )
- nDiff++;
- nColor = ( ( nColor - pElement->nColorValueExtent[ 2 ] ) << 8 ) / nDiff;
- nTmp |= (sal_uInt8)nColor;
- }
- else
- {
- sal_uInt32 nIndex = ImplGetUI( pElement->nColorIndexPrecision );
- nTmp = pElement->aColorTable[ (sal_uInt8)( nIndex ) ] ;
- }
- return nTmp;
-}
-
-// ---------------------------------------------------------------
-
-// call this function each time after the mapmode settings has been changed
-void CGM::ImplSetMapMode()
-{
- int nAngReverse = 1;
- mnVDCdx = pElement->aVDCExtent.Right - pElement->aVDCExtent.Left;
-
- mnVDCXadd = -pElement->aVDCExtent.Left;
- mnVDCXmul = 1;
- if ( mnVDCdx < 0 )
- {
- nAngReverse ^= 1;
- mnVDCdx = -mnVDCdx;
- mnVDCXmul = -1;
- }
-
- mnVDCdy = pElement->aVDCExtent.Bottom - pElement->aVDCExtent.Top;
- mnVDCYadd = -pElement->aVDCExtent.Top;
- mnVDCYmul = 1;
- if ( mnVDCdy < 0 )
- {
- nAngReverse ^= 1;
- mnVDCdy = -mnVDCdy;
- mnVDCYmul = -1;
- }
- if ( nAngReverse )
- mbAngReverse = sal_True;
- else
- mbAngReverse = sal_False;
-
- double fQuo1 = mnVDCdx / mnVDCdy;
- double fQuo2 = mnOutdx / mnOutdy;
- if ( fQuo2 < fQuo1 )
- {
- mnXFraction = mnOutdx / mnVDCdx;
- mnYFraction = mnOutdy * ( fQuo2 / fQuo1 ) / mnVDCdy;
- }
- else
- {
- mnXFraction = mnOutdx * ( fQuo1 / fQuo2 ) / mnVDCdx;
- mnYFraction = mnOutdy / mnVDCdy;
- }
-}
-
-// ---------------------------------------------------------------
-
-void CGM::ImplMapDouble( double& nNumb )
-{
- if ( pElement->eDeviceViewPortMap == DVPM_FORCED )
- {
- // point is 1mm * ScalingFactor
- switch ( pElement->eDeviceViewPortMode )
- {
- case DVPM_FRACTION :
- {
- nNumb *= ( mnXFraction + mnYFraction ) / 2;
- }
- break;
-
- case DVPM_METRIC :
- {
-// nNumb *= ( 100 * pElement->nDeviceViewPortScale );
- nNumb *= ( mnXFraction + mnYFraction ) / 2;
- if ( pElement->nDeviceViewPortScale < 0 )
- nNumb = -nNumb;
- }
- break;
-
- case DVPM_DEVICE :
- {
-
- }
- break;
-
- default:
-
- break;
- }
- }
- else
- {
-
-
- }
-}
-
-// ---------------------------------------------------------------
-
-void CGM::ImplMapX( double& nNumb )
-{
- if ( pElement->eDeviceViewPortMap == DVPM_FORCED )
- {
- // point is 1mm * ScalingFactor
- switch ( pElement->eDeviceViewPortMode )
- {
- case DVPM_FRACTION :
- {
- nNumb *= mnXFraction;
- }
- break;
-
- case DVPM_METRIC :
- {
-// nNumb *= ( 100 * pElement->nDeviceViewPortScale );
- nNumb *= mnXFraction;
- if ( pElement->nDeviceViewPortScale < 0 )
- nNumb = -nNumb;
- }
- break;
-
- case DVPM_DEVICE :
- {
-
- }
- break;
-
- default:
-
- break;
- }
- }
- else
- {
-
-
- }
-}
-
-
-// ---------------------------------------------------------------
-
-void CGM::ImplMapY( double& nNumb )
-{
- if ( pElement->eDeviceViewPortMap == DVPM_FORCED )
- {
- // point is 1mm * ScalingFactor
- switch ( pElement->eDeviceViewPortMode )
- {
- case DVPM_FRACTION :
- {
- nNumb *= mnYFraction;
- }
- break;
-
- case DVPM_METRIC :
- {
-// nNumb *= ( 100 * pElement->nDeviceViewPortScale );
- nNumb *= mnYFraction;
- if ( pElement->nDeviceViewPortScale < 0 )
- nNumb = -nNumb;
- }
- break;
-
- case DVPM_DEVICE :
- {
-
- }
- break;
-
- default:
-
- break;
- }
- }
- else
- {
-
-
- }
-}
-
-
-// ---------------------------------------------------------------
-
-// convert a point to the current VC mapmode (1/100TH mm)
-void CGM::ImplMapPoint( FloatPoint& rFloatPoint )
-{
- if ( pElement->eDeviceViewPortMap == DVPM_FORCED )
- {
- // point is 1mm * ScalingFactor
- switch ( pElement->eDeviceViewPortMode )
- {
- case DVPM_FRACTION :
- {
- rFloatPoint.X *= mnXFraction;
- rFloatPoint.Y *= mnYFraction;
- }
- break;
-
- case DVPM_METRIC :
- {
- rFloatPoint.X *= mnXFraction;
- rFloatPoint.Y *= mnYFraction;
- if ( pElement->nDeviceViewPortScale < 0 )
- {
- rFloatPoint.X = -rFloatPoint.X;
- rFloatPoint.Y = -rFloatPoint.Y;
- }
- }
- break;
-
- case DVPM_DEVICE :
- {
-
- }
- break;
-
- default:
-
- break;
- }
- }
- else
- {
-
-
- }
-}
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDoClass()
-{
-#ifdef CGM_USER_BREAKPOINT
-#ifdef WNT
- if ( mnActCount == CGM_BREAK_ACTION )
- _asm int 0x3;
-#endif
-#endif
- switch ( mnElementClass )
- {
- case 0 : ImplDoClass0(); break;
- case 1 : ImplDoClass1(); break;
- case 2 : ImplDoClass2(); break;
- case 3 : ImplDoClass3(); break;
- case 4 :
- {
- ImplDoClass4();
- mnAct4PostReset = 0;
- }
- break;
- case 5 : ImplDoClass5(); break;
- case 6 : ImplDoClass6(); break;
- case 7 : ImplDoClass7(); break;
- case 8 : ImplDoClass8(); break;
- case 9 : ImplDoClass9(); break;
- case 15 :ImplDoClass15(); break;
- default : ComOut( CGM_UNKNOWN_COMMAND, "" ); break;
- }
- mnActCount++;
-};
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDefaultReplacement()
-{
- sal_uInt8* pBuf = (sal_uInt8*)maDefRepList.First();
- if ( pBuf )
- {
- sal_uInt32 nElementSize = (sal_uInt32)(sal_uIntPtr)maDefRepSizeList.First();
- sal_uInt32 nOldEscape = mnEscape;
- sal_uInt32 nOldElementClass = mnElementClass;
- sal_uInt32 nOldElementID = mnElementID;
- sal_uInt32 nOldElementSize = mnElementSize;
- sal_uInt8* pOldBuf = mpSource;
- while( pBuf )
- {
- sal_uInt32 nCount = 0;
- while ( mbStatus && ( nCount < nElementSize ) )
- {
- mpSource = pBuf + nCount;
- mnParaSize = 0;
- mnEscape = ImplGetUI16();
- mnElementClass = mnEscape >> 12;
- mnElementID = ( mnEscape & 0x0fe0 ) >> 5;
- mnElementSize = mnEscape & 0x1f;
- if ( mnElementSize == 31 )
- {
- mnElementSize = ImplGetUI16();
- }
- nCount += mnParaSize;
- mnParaSize = 0;
- mpSource = pBuf + nCount;
- if ( mnElementSize & 1 )
- nCount++;
- nCount += mnElementSize;
- if ( ( mnElementClass != 1 ) || ( mnElementID != 0xc ) ) // rekursion hier nicht moeglich!!
- ImplDoClass();
- }
- nElementSize = (sal_uInt32)(sal_uIntPtr)maDefRepSizeList.Next();
- pBuf = (sal_uInt8*)maDefRepList.Next();
- }
- mnEscape = nOldEscape;
- mnElementClass = nOldElementClass;
- mnElementID = nOldElementID;
- mnParaSize = mnElementSize = nOldElementSize;
- mpSource = pOldBuf;
- }
-}
-
-// ---------------------------------------------------------------
-
-sal_Bool CGM::Write( SvStream& rIStm )
-{
- if ( !mpBuf )
- mpBuf = new sal_uInt8[ 0xffff ];
-
- mnParaSize = 0;
- mpSource = mpBuf;
- rIStm.Read( mpSource, 2 );
- mnEscape = ImplGetUI16();
- mnElementClass = mnEscape >> 12;
- mnElementID = ( mnEscape & 0x0fe0 ) >> 5;
- mnElementSize = mnEscape & 0x1f;
-
- if ( mnElementSize == 31 )
- {
- rIStm.Read( mpSource + mnParaSize, 2 );
- mnElementSize = ImplGetUI16();
- }
- mnParaSize = 0;
- if ( mnElementSize )
- rIStm.Read( mpSource + mnParaSize, mnElementSize );
-
- if ( mnElementSize & 1 )
- rIStm.SeekRel( 1 );
- ImplDoClass();
-
-
-#ifdef CGM_USER_BREAKPOINT
-#ifdef WNT
- if ( !mbStatus || mnParaSize && ( mnElementSize != mnParaSize ) )
- _asm int 0x3;
-#endif
-#endif
-
- return mbStatus;
-};
-
-// ---------------------------------------------------------------
-
-SvStream& operator>>( SvStream& rOStm, CGM& /*rCGM*/ )
-{
-
- return rOStm;
-};
-
-// ---------------------------------------------------------------
-
-
-
-//================== GraphicImport - die exportierte Funktion ================
-
-extern "C" sal_uInt32 __LOADONCALLAPI ImportCGM( String& rFileName, uno::Reference< frame::XModel > & rXModel, sal_uInt32 nMode, void* pProgressBar )
-{
-
- sal_uInt32 nStatus = 0; // retvalue == 0 -> ERROR
- // == 0xffrrggbb -> background color in the lower 24 bits
- sal_Bool bProgressBar = sal_False;
-
- if( rXModel.is() )
- {
- CGM* pCGM= NULL;
-
- try
- {
- pCGM = new CGM( nMode, rXModel );
- if ( pCGM && pCGM->IsValid() )
- {
- if ( nMode & CGM_IMPORT_CGM )
- {
- SvStream* pIn = ::utl::UcbStreamHelper::CreateStream( rFileName, STREAM_READ );
- if ( pIn )
- {
- pIn->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
- pIn->Seek( STREAM_SEEK_TO_END );
- sal_uInt32 nInSize = pIn->Tell();
- pIn->Seek( 0 );
-
-#ifdef CGM_EXPORT_IMPRESS
- uno::Reference< task::XStatusIndicator > aXStatInd;
- sal_uInt32 nNext = 0;
- sal_uInt32 nAdd = nInSize / 20;
- if ( pProgressBar )
- aXStatInd = *(uno::Reference< task::XStatusIndicator > *)pProgressBar;
- bProgressBar = aXStatInd.is();
- if ( bProgressBar )
- aXStatInd->start( rtl::OUString::createFromAscii("CGM Import"), nInSize );
-#endif
-
- while ( pCGM->IsValid() && ( pIn->Tell() < nInSize ) && !pCGM->IsFinished() )
- {
-
-#ifdef CGM_EXPORT_IMPRESS
-
-
- if ( bProgressBar )
- {
- sal_uInt32 nCurrentPos = pIn->Tell();
- if ( nCurrentPos >= nNext )
- {
- aXStatInd->setValue( nCurrentPos );
- nNext = nCurrentPos + nAdd;
- }
- }
-#endif
-
- if ( pCGM->Write( *pIn ) == sal_False )
- break;
- }
- if ( pCGM->IsValid() )
- {
- nStatus = pCGM->GetBackGroundColor() | 0xff000000;
- }
-#ifdef CGM_EXPORT_IMPRESS
- if ( bProgressBar )
- aXStatInd->end();
-#endif
- delete pIn;
- }
- }
- }
- }
- catch( ::com::sun::star::uno::Exception& )
- {
- nStatus = 0;
- }
- delete pCGM;
- }
- return nStatus;
-}
diff --git a/goodies/source/filter.vcl/icgm/cgm.hxx b/goodies/source/filter.vcl/icgm/cgm.hxx
deleted file mode 100644
index 78bece103dc1..000000000000
--- a/goodies/source/filter.vcl/icgm/cgm.hxx
+++ /dev/null
@@ -1,181 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: cgm.hxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef CGM_HXX_
-#define CGM_HXX_
-
-#include <com/sun/star/frame/XModel.hpp>
-
-// ---------------------------------------------------------------
-#undef CGM_USER_BREAKPOINT
-
-#define CGM_IMPORT_CGM 0x00000001
-
-#define CGM_EXPORT_IMPRESS 0x00000100
-#define CGM_EXPORT_META 0x00000200
-//#define CGM_EXPORT_COMMENT 0x00000400
-
-// ---------------------------------------------------------------
-
-#include <tools/solar.h>
-#include <rtl/ustring.hxx>
-#include <tools/list.hxx>
-#include "cgmtypes.hxx"
-
-// ---------------------------------------------------------------
-
-class List;
-class Bundle;
-class Graphic;
-class SvStream;
-class CGMChart;
-class CGMBitmap;
-class CGMOutAct;
-class CGMElements;
-class BitmapColor;
-class GDIMetaFile;
-class VirtualDevice;
-class CGMBitmapDescriptor;
-
-class CGM
-{
- friend class CGMChart;
- friend class CGMBitmap;
- friend class CGMElements;
- friend class CGMOutAct;
- friend class CGMImpressOutAct;
-
- double mnOutdx; // Ausgabe Groesse in 1/100TH mm
- double mnOutdy; // auf das gemappt wird
- double mnVDCXadd;
- double mnVDCYadd;
- double mnVDCXmul;
- double mnVDCYmul;
- double mnVDCdx;
- double mnVDCdy;
- double mnXFraction;
- double mnYFraction;
- sal_Bool mbAngReverse; // AngularDirection
-
- Graphic* mpGraphic; // ifdef CGM_EXPORT_META
- SvStream* mpCommentOut; // ifdef CGM_EXPORT_COMMENT
-
- sal_Bool mbStatus;
- sal_Bool mbMetaFile;
- sal_Bool mbIsFinished;
- sal_Bool mbPicture;
- sal_Bool mbPictureBody;
- sal_Bool mbFigure;
- sal_Bool mbFirstOutPut;
- sal_uInt32 mnAct4PostReset;
- CGMBitmap* mpBitmapInUse;
- CGMChart* mpChart; // if sal_True->"SHWSLIDEREC"
- // otherwise "BEGINPIC" commands
- // controlls page inserting
- CGMElements* pElement;
- CGMElements* pCopyOfE;
- CGMOutAct* mpOutAct;
- List maDefRepList;
- List maDefRepSizeList;
-
- sal_uInt8* mpSource; // source buffer that is not increased
- // ( instead use mnParaCount to index )
- sal_uInt32 mnParaSize; // actual parameter size which has been done so far
- sal_uInt32 mnActCount; // increased by each action
- sal_uInt8* mpBuf; // source stream operation -> then this is allocated for
- // the temp input buffer
-
- sal_uInt32 mnMode; // source description
- sal_uInt32 mnEscape; //
- sal_uInt32 mnElementClass; //
- sal_uInt32 mnElementID; //
- sal_uInt32 mnElementSize; // full parameter size for the latest action
-
- void ImplCGMInit();
- sal_uInt32 ImplGetUI16( sal_uInt32 nAlign = 0 );
- sal_uInt8 ImplGetByte( sal_uInt32 nSource, sal_uInt32 nPrecision );
- long ImplGetI( sal_uInt32 nPrecision );
- sal_uInt32 ImplGetUI( sal_uInt32 nPrecision );
- void ImplGetSwitch4( sal_uInt8* pSource, sal_uInt8* pDest );
- void ImplGetSwitch8( sal_uInt8* pSource, sal_uInt8* pDest );
- double ImplGetFloat( RealPrecision, sal_uInt32 nRealSize );
- sal_uInt32 ImplGetBitmapColor( sal_Bool bDirectColor = sal_False );
- void ImplSetMapMode();
- void ImplMapDouble( double& );
- void ImplMapX( double& );
- void ImplMapY( double& );
- void ImplMapPoint( FloatPoint& );
- inline double ImplGetIY();
- inline double ImplGetFY();
- inline double ImplGetIX();
- inline double ImplGetFX();
- sal_uInt32 ImplGetPointSize();
- void ImplGetPoint( FloatPoint& rFloatPoint, sal_Bool bMap = sal_False );
- void ImplGetRectangle( FloatRect&, sal_Bool bMap = sal_False );
- void ImplGetRectangleNS( FloatRect& );
- void ImplGetVector( double* );
- double ImplGetOrientation( FloatPoint& rCenter, FloatPoint& rPoint );
- void ImplSwitchStartEndAngle( double& rStartAngle, double& rEndAngle );
- sal_Bool ImplGetEllipse( FloatPoint& rCenter, FloatPoint& rRadius, double& rOrientation );
-
- void ImplDefaultReplacement();
- void ImplDoClass();
- void ImplDoClass0();
- void ImplDoClass1();
- void ImplDoClass2();
- void ImplDoClass3();
- void ImplDoClass4();
- void ImplDoClass5();
- void ImplDoClass6();
- void ImplDoClass7();
- void ImplDoClass8();
- void ImplDoClass9();
- void ImplDoClass15();
-
- public:
-
- ~CGM();
-
- CGM( sal_uInt32 nMode, ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & rModel );
-#ifdef CGM_EXPORT_META
- VirtualDevice* mpVirDev;
- GDIMetaFile* mpGDIMetaFile;
-#endif
- void ImplComment( sal_uInt32, const char* );
- sal_uInt32 GetBackGroundColor();
- sal_Bool IsValid() { return mbStatus; };
- sal_Bool IsFinished() { return mbIsFinished; };
- sal_Bool Write( SvStream& rIStm );
-
- friend SvStream& operator>>( SvStream& rOStm, CGM& rCGM );
-
-};
-#endif
-
diff --git a/goodies/source/filter.vcl/icgm/cgmres.hrc b/goodies/source/filter.vcl/icgm/cgmres.hrc
deleted file mode 100644
index dcadd6c3f906..000000000000
--- a/goodies/source/filter.vcl/icgm/cgmres.hrc
+++ /dev/null
@@ -1,31 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: cgmres.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#define MB_CGM 1
-#define MID_TEST 1
diff --git a/goodies/source/filter.vcl/icgm/cgmtypes.hxx b/goodies/source/filter.vcl/icgm/cgmtypes.hxx
deleted file mode 100644
index 0a7988b5c070..000000000000
--- a/goodies/source/filter.vcl/icgm/cgmtypes.hxx
+++ /dev/null
@@ -1,148 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: cgmtypes.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef CGM_TYPES_HXX_
-#define CGM_TYPES_HXX_
-
-struct FloatPoint
-{
- double X;
- double Y;
- FloatPoint(){};
- FloatPoint( const double& rX, const double& rY ) { X = rX, Y = rY; };
-};
-
-struct FloatRect
-{
- double Left;
- double Top;
- double Right;
- double Bottom;
- FloatRect(){};
- FloatRect( const FloatPoint& rTopLeft, const FloatPoint& rBottomRight )
- {
- Left = rTopLeft.X;
- Top = rTopLeft.Y;
- Right = rBottomRight.X;
- Bottom = rBottomRight.Y;
- }
- void Justify()
- {
- double fTemp;
- if ( Left > Right )
- {
- fTemp = Left;
- Left = Right;
- Right = fTemp;
- }
- if ( Top > Bottom )
- {
- fTemp = Top;
- Top = Bottom;
- Bottom = fTemp;
- }
- }
-};
-
-struct HatchEntry
-{
- int HatchStyle;
- long HatchDistance;
- long HatchAngle;
-};
-
-#define ASF_LINETYPE 0x00000001UL
-#define ASF_LINEWIDTH 0x00000002UL
-#define ASF_LINECOLOR 0x00000004UL
-#define ASF_MARKERTYPE 0x00000008UL
-#define ASF_MARKERSIZE 0x00000010UL
-#define ASF_MARKERCOLOR 0x00000020UL // NS
-#define ASF_FILLINTERIORSTYLE 0x00000040UL
-#define ASF_HATCHINDEX 0x00000080UL
-#define ASF_PATTERNINDEX 0x00000100UL
-#define ASF_BITMAPINDEX 0x00000200UL // NS
-#define ASF_FILLCOLOR 0x00000400UL
-#define ASF_EDGETYPE 0x00000800UL
-#define ASF_EDGEWIDTH 0x00001000UL
-#define ASF_EDGECOLOR 0x00002000UL
-#define ASF_TEXTFONTINDEX 0x00004000UL
-#define ASF_TEXTPRECISION 0x00008000UL
-#define ASF_CHARACTEREXPANSION 0x00010000UL
-#define ASF_CHARACTERSPACING 0x00020000UL
-#define ASF_TEXTCOLOR 0x00040000UL
-
-#define ACT4_GRADIENT_ACTION 0x00000001UL
-
-enum RealPrecision { RP_FLOAT = 0, RP_FIXED = 1 };
-
-enum ScalingMode { SM_ABSTRACT = 0, SM_METRIC = 1 };
-
-enum VDCType { VDC_INTEGER = 0, VDC_REAL = 1 };
-enum DeviceViewPortMode { DVPM_FRACTION = 0, DVPM_METRIC = 1, DVPM_DEVICE = 2 };
-enum DeviceViewPortMap { DVPM_NOT_FORCED = 0, DVPM_FORCED = 1 };
-enum DeviceViewPortMapH { DVPMH_LEFT = 0, DVPMH_CENTER = 1, CVPMH_RIGHT = 2 };
-enum DeviceViewPortMapV { DVPMV_BOTTOM = 0, DVPMV_CENTER = 1, DVPMV_TOP = 2 };
-
-enum ClipIndicator { CI_OFF = 0, CI_ON = 1 };
-
-enum ColorSelectionMode { CSM_INDEXED = 0, CSM_DIRECT = 1 };
-enum ColorModel { CM_RGB = 0, CM_CYMK = 1 };
-
-enum CharacterCodingA { CCA_BASIC_7 = 0, CCA_BASIC_8 = 1, CCA_EXT_7 = 2, CCA_EXT_8 = 3 };
-enum CharSetType { CST_CBYTE_94 = 0, CST_CBYTE_96 = 1, CST_MULT94 = 2, CST_MULT96 = 3, CST_CCOMPLETE = 4 };
-enum TextPrecision { TPR_STRING = 0, TPR_CHARACTER = 1, TPR_STROKE = 2, TPR_UNDEFINED = 0xffff };
-enum TextPath { TPR_RIGHT = 0, TPR_LEFT = 1, TPR_UP = 2, TPR_DOWN = 3 };
-enum TextAlignmentH { TAH_NORMAL = 0, TAH_LEFT = 1, TAH_CENTER = 2, TAH_RIGHT = 3, TAH_CONT = 4 };
-enum TextAlignmentV { TAV_NORMAL = 0, TAV_TOP = 1, TAV_CAP = 2, TAV_HALF = 3, TAV_BASE = 4, TAV_BOTTOM = 5, TAV_CONT = 6 };
-enum UnderlineMode { UM_OFF = 0, UM_LOW = 1, UM_HIGH = 2, UM_STRIKEOUT = 4, UM_OVERSCORE = 8 };
-enum FinalFlag { FF_NOT_FINAL = 0, FF_FINAL = 1 };
-
-enum LineType { LT_SOLID = 1, LT_DASH = 2, LT_DOT = 3, LT_DASHDOT = 4, LT_DASHDOTDOT = 5, // Standart
- LT_NONE = -4, LT_DOTDOTSPACE = -3, LT_LONGDASH = -2, LT_DASHDASHDOT = -1 }; // GDSF Styles
-enum SpecMode { SM_ABSOLUTE = 0, SM_SCALED = 1 };
-enum LineCapType { LCT_BUTT = 0, LCT_ROUND = 1, LCT_SQUARE = 2, LCT_TRIANGLE = 3, LCT_ARROW = 4, LCT_NONE = -1 };
-enum LineJoinType { LJT_MITER = 0, LJT_ROUND = 1, LJT_BEVEL = 2, LJT_NONE = -1 };
-
-
-enum EdgeType { ET_SOLID = 1, ET_DASH = 2, ET_DOT = 3, ET_DASHDOT = 4, ET_DASHDOTDOT = 5, // Standart
- ET_NONE = -4, ET_DOTDOTSPACE = -3, ET_LONGDASH = -2, ET_DASHDASHDOT = -1 }; // GDSF Styles
-enum EdgeVisibility { EV_OFF = 0, EV_ON = 1 };
-
-enum MarkerType { MT_POINT = 1, MT_PLUS = 2, MT_STAR = 3, MT_CIRCLE = 4, MT_CROSS = 5 };
-
-enum Transparency { T_OFF = 0, T_ON = 1 };
-
-enum FillInteriorStyle { FIS_HOLLOW = 0, FIS_SOLID = 1, FIS_PATTERN = 2, FIS_HATCH = 3, FIS_EMPTY = 4, FIS_GEOPATTERN = 5,
- FIS_INTERPOLATED = 6, FIS_GRADIENT = 7 };
-
-
-
-
-#endif
diff --git a/goodies/source/filter.vcl/icgm/chart.cxx b/goodies/source/filter.vcl/icgm/chart.cxx
deleted file mode 100644
index 5f771db3e2b7..000000000000
--- a/goodies/source/filter.vcl/icgm/chart.cxx
+++ /dev/null
@@ -1,103 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: chart.cxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <main.hxx>
-#include <chart.hxx>
-
-// ---------------------------------------------------------------
-
-CGMChart::CGMChart( CGM& rCGM ) :
- mpCGM ( &rCGM )
-{
- for ( sal_Int8 i = 0; i < 7; i++ )
- {
- mDataNode[ i ].nBoxX1 = mDataNode[ i ].nBoxY1 = 0 ;
- mDataNode[ i ].nBoxX2 = mDataNode[ i ].nBoxY2 = 0 ;
-
- mDataNode[ i ].nZoneEnum = i;
- }
-};
-
-// ---------------------------------------------------------------
-
-CGMChart::~CGMChart()
-{
- // delete the whole textentry structure
-
- TextEntry* pTextEntry;
- while( ( pTextEntry = (TextEntry*)maTextEntryList.First() ) != NULL )
- {
- DeleteTextEntry( pTextEntry );
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMChart::DeleteTextEntry( TextEntry* pTextEntry )
-{
- if ( pTextEntry )
- {
- delete pTextEntry->pText;
- for ( TextAttribute* pTAttr = pTextEntry->pAttribute; pTAttr != NULL ; )
- {
- TextAttribute* pTempTAttr = pTAttr;
- pTAttr = pTAttr->pNextAttribute;
- delete pTempTAttr;
- }
- delete pTextEntry;
- maTextEntryList.Remove( pTextEntry );
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGMChart::InsertTextEntry( TextEntry* pTextEntry )
-{
- maTextEntryList.Insert( pTextEntry );
-};
-
-// ---------------------------------------------------------------
-
-// ---------------------------------------------------------------
-void CGMChart::ResetAnnotation()
-{
- mDataNode[ 0 ].nZoneEnum = 0;
-}
-
-// ---------------------------------------------------------------
-
-sal_Bool CGMChart::IsAnnotation()
-{
- return ( mDataNode[ 0 ].nZoneEnum == 0 );
-};
-
diff --git a/goodies/source/filter.vcl/icgm/chart.hxx b/goodies/source/filter.vcl/icgm/chart.hxx
deleted file mode 100644
index d55e4106275c..000000000000
--- a/goodies/source/filter.vcl/icgm/chart.hxx
+++ /dev/null
@@ -1,217 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: chart.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef CGM_CHART_HXX_
-#define CGM_CHART_HXX_
-
-#include <tools/list.hxx>
-
-/* FILE TYPE CONSTANTS: */
-#define NOCHART 0 /* Undefined chart. */
-#define XYCHART 1 /* Standard XY chart. */
-#define PIECHART 21 /* Standard pie chart file. */
-#define ORGCHART 26 /* Standard org chart file. */
-#define TTLCHART 31 /* Title chart file. */
-#define BULCHART 32 /* Bullet chart file. */
-#define TABCHART 33 /* Table chart file. */
-#define DRWCHART 41 /* Chart with drawings only.*/
-#define MLTCHART 42 /* Multiple chart file. */
-#define LASTCHART 45 /* The largest chart type. */
-#define SHWFILE 46 /* Slide show file. */
-#define SYMFILE 47 /* Symbol file. */
-/* the following were added although SPC doesn't have a #define */
-/* for them... */
-#define AUTOTTLCHT 95 /* Autobuild TTL CHT */
-#define AUTOBULCHT 96 /* Autobuild BUL CHT */
-#define AUTOTABCHT 97 /* Autobuild TAB CHT */
-
-/* FNC 10/11/93: for the chart stream, ALLCHART was added. */
-/* It is used specifically by PPT in its Template to let */
-/* us know that the template applies to all charts, not to */
-/* one specific chart type. */
-#define ALLCHART 127 /* Applies to all chart types */
-#define ALLCHART_TPL 255 /* Applies to all chart types */
-
-#define IOC_CHTTITLE 1 /* Title for any chart. */
-#define IOC_CHTFOOTNOTE 2 /* ::com::sun::star::text::Footnote for any chart. */
-#define IOC_XYAXIS 3 /* Axis title for XY charts. */
-#define IOC_XYSERIESLEGEND 4 /* Series legend titles for XY charts. */
-#define IOC_PIETITLE 5 /* Title for pie charts. */
-#define IOC_TABLEBODY 6 /* Table chart text element. */
-#define IOC_TITLEBODY 7 /* Title chart text element. */
-#define IOC_BULLETBODY 8 /* Bullet chart text element. */
-#define IOC_XYLEGENDTITLE 9 /* Legend title for XY charts. */
-#define IOC_PIELEGENDTITLE 10 /* Legend title for pie charts. */
-#define IOC_TABLEGENDTITLE 11 /* Legend title for table charts. */
-
-typedef struct TextAttribute
-{
- sal_uInt16 nTextAttribCount;
- sal_Int8 nTextColorIndex;
- sal_Int8 nTextColorRed;
- sal_Int8 nTextColorGreen;
- sal_Int8 nTextColorBlue;
- sal_Int8 nShadowColorIndex;
- sal_Int8 nShadowColorRed;
- sal_Int8 nShadowColorGreen;
- sal_Int8 nShadowColorBlue;
- float nTextAttribSize;
- sal_uInt16 nTextAttribBits;
- sal_Int8 nTextFontType; // font identifiers
- sal_Int8 nTextCharPage;
- sal_uInt16 nTextFontFamily;
- sal_Int8 nTextFontMemberID;
- sal_Int8 nTextFontVendorID;
- TextAttribute* pNextAttribute; // zero or pointer to next TextAttribute
-} TextAttribute;
-
-typedef struct TextEntry
-{
- sal_uInt16 nTypeOfText;
- sal_uInt16 nRowOrLineNum;
- sal_uInt16 nColumnNum;
- sal_uInt16 nZoneSize; // textzone attributes
- sal_uInt16 nLineType;
- sal_uInt16 nAttributes;
- char* pText; // null terminated text
- TextAttribute* pAttribute;
-} TextEntry;
-
-typedef struct ZoneOption
-{
- char nOverTitle;
- char nOverBody;
- char nOverFoot;
- char nFStyle_Title;
- char nFStyle_Body;
- char nFStyle_Foot;
- char nFOutc_Title;
- char nFOutc_Body;
- char nFOutc_Foot;
- char nFFillc_Title;
- char nFFillc_Body;
- char nFFillc_Foot;
-} ZoneOption;
-
-typedef struct BulletOption
-{
- char nBType;
- char nBSize;
- char nBColor;
- sal_Int16 nBStart;
- double nTMargin;
- double nBSpace;
- char nCPlace;
-} BulletOption;
-
-typedef struct BulDef
-{
- char btype;
- char bsize;
- char bcolor;
- char bnumber;
-} BulDef;
-
-typedef struct BulletLines
-{
- BulDef nBulDef[ 48 ];
-} BulletLines;
-
-typedef struct IntSettings
-{
- sal_uInt16 nCountry;
- sal_uInt16 nDateFormat;
- sal_uInt16 nDateSep;
- sal_uInt16 nTimeFormat;
- sal_uInt16 nTimeSep;
- sal_uInt16 nNumSeps;
- sal_uInt16 nCurrencyFormat;
- char nCurrencySymbol[ 5 ];
-} IntSettings;
-
-typedef struct PageOrientDim
-{
- char nOrientation;
- char nDimension;
- float nPageX;
- float nPageY;
-} PageOrientDim;
-
-typedef struct DataNode
-{
- sal_Int16 nBoxX1;
- sal_Int16 nBoxY1;
- sal_Int16 nBoxX2;
- sal_Int16 nBoxY2;
- sal_Int8 nZoneEnum;
-} DataNode;
-
-typedef struct ChartZone
-{
- sal_Int16 nMinX;
- sal_Int16 nMinY;
- sal_Int16 nMaxX;
- sal_Int16 nMaxY;
- char nUserDef;
- char nPad1;
-} ChartZone;
-
-class CGM;
-class CGMImpressOutAct;
-class CGMChart
-{
- friend class CGM;
- friend class CGMImpressOutAct;
-
- protected:
- CGM* mpCGM;
- sal_Int8 mnCurrentFileType;
- List maTextEntryList;
- DataNode mDataNode[ 7 ];
- ChartZone mChartZone;
- PageOrientDim mPageOrientDim;
- BulletOption mBulletOption;
- BulletLines mBulletLines;
- ZoneOption mZoneOption;
- IntSettings mIntSettings;
-
- public:
- CGMChart( CGM& rCGM );
- ~CGMChart();
-
- void DeleteTextEntry( TextEntry* );
- void InsertTextEntry( TextEntry* );
-
- void ResetAnnotation();
- sal_Bool IsAnnotation();
-};
-
-#endif
-
diff --git a/goodies/source/filter.vcl/icgm/class0.cxx b/goodies/source/filter.vcl/icgm/class0.cxx
deleted file mode 100644
index 394d5f803bde..000000000000
--- a/goodies/source/filter.vcl/icgm/class0.cxx
+++ /dev/null
@@ -1,141 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: class0.cxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include <main.hxx>
-#include <outact.hxx>
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDoClass0()
-{
- switch ( mnElementID )
- {
- case 0x01 : ComOut( CGM_LEVEL1, "Begin Metafile" )
- {
- ImplSetMapMode();
- mbMetaFile = sal_True;
- }
- break;
- case 0x02 : ComOut( CGM_LEVEL1, "End MetaFile" )
- {
- if ( mpBitmapInUse ) // vorhandene grafik verarbeiten,
- {
- CGMBitmapDescriptor* pBmpDesc = mpBitmapInUse->GetBitmap();
- // irgendetwas mit der Bitmap anfangen
- mpOutAct->DrawBitmap( pBmpDesc );
- delete mpBitmapInUse;
- mpBitmapInUse = NULL;
- }
- mbIsFinished = sal_True;
- mbPictureBody = sal_False;
- mbMetaFile = sal_False;
- }
- break;
- case 0x03 : ComOut( CGM_LEVEL1, "Begin Picture" )
- {
- ImplDefaultReplacement();
- ImplSetMapMode();
- if ( mbPicture )
- mbStatus = sal_False;
- else
- {
- *pCopyOfE = *pElement;
- mbPicture = mbFirstOutPut = sal_True;
- mbFigure = sal_False;
- mnAct4PostReset = 0;
- if ( mpChart == NULL ) // normal CGM Files determines "BeginPic"
- mpOutAct->InsertPage(); // as the next slide
- }
- }
- break;
- case 0x04 : ComOut( CGM_LEVEL1, "Begin Picture Body" )
- mbPictureBody = sal_True;
- break;
- case 0x05 : ComOut( CGM_LEVEL1, " End Picture" )
- {
- if ( mbPicture )
- {
- if ( mpBitmapInUse ) // vorhandene grafik verarbeiten,
- {
- CGMBitmapDescriptor* pBmpDesc = mpBitmapInUse->GetBitmap();
- // irgendetwas mit der Bitmap anfangen
- mpOutAct->DrawBitmap( pBmpDesc );
- delete mpBitmapInUse;
- mpBitmapInUse = NULL;
- }
- mpOutAct->EndFigure(); // eventuelle figuren schliessen
- mpOutAct->EndGrouping(); // eventuelle gruppierungen noch abschliessen
- *pElement = *pCopyOfE;
- mbFigure = mbFirstOutPut = mbPicture = mbPictureBody = sal_False;
- }
- else
- mbStatus = sal_False;
- }
- break;
- case 0x06 : ComOut( CGM_LEVEL2, "Begin Segment" )
- pElement->bSegmentCount = sal_True;
- break;
- case 0x07 : ComOut( CGM_LEVEL2, "End Segment" )
- pElement->bSegmentCount = sal_True;
- break;
- case 0x08 : ComOut( CGM_LEVEL2, "Begin Figure" )
- mbFigure = sal_True;
- mpOutAct->BeginFigure();
- break;
- case 0x09 : ComOut( CGM_LEVEL2, "End Figure" )
- mpOutAct->EndFigure();
- mbFigure = sal_False;
- break;
- case 0x0d : ComOut( CGM_LEVEL3, "Begin Protection Region" ) break;
- case 0x0e : ComOut( CGM_LEVEL3, "End Protection Region" ) break;
- case 0x0f : ComOut( CGM_LEVEL3, "Begin Compound Line" ) break;
- case 0x10 : ComOut( CGM_LEVEL3, "End Compound Line" ) break;
- case 0x11 : ComOut( CGM_LEVEL3, "Begin Compound Text Path" ) break;
- case 0x12 : ComOut( CGM_LEVEL3, "End Compound Text Path" ) break;
- case 0x13 : ComOut( CGM_LEVEL3, "Begin Tile Array" ) break; // NS
- case 0x14 : ComOut( CGM_LEVEL3, "End Tile Array" ) break; // NS
- case 0xff : ComOut( CGM_GDSF_ONLY, "Filter Setup" ) break;
- case 0xfe : ComOut( CGM_GDSF_ONLY, "Begin Block Text Region" ) break;
- case 0xfd : ComOut( CGM_GDSF_ONLY, "End Block Text Region" ) break;
- case 0xfc : ComOut( CGM_GDSF_ONLY, "Begin Group" )
- mpOutAct->BeginGroup();
- break;
- case 0xfb : ComOut( CGM_GDSF_ONLY, "End Group" )
- mpOutAct->EndGroup();
- break;
- case 0xfa : ComOut( CGM_GDSF_ONLY, "Begin Patch" ) break;
- case 0xf9 : ComOut( CGM_GDSF_ONLY, "Begin Patch" ) break;
- default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
- }
-};
-
-
diff --git a/goodies/source/filter.vcl/icgm/class1.cxx b/goodies/source/filter.vcl/icgm/class1.cxx
deleted file mode 100644
index cbe86633cd21..000000000000
--- a/goodies/source/filter.vcl/icgm/class1.cxx
+++ /dev/null
@@ -1,234 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: class1.cxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <main.hxx>
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDoClass1()
-{
- long nInteger, nI0, nI1;
- sal_uInt32 nUInteger;
-
- switch ( mnElementID )
- {
- case 0x01 : ComOut( CGM_LEVEL1, "Metafile Version" )
- pElement->nMetaFileVersion = ImplGetI( pElement->nIntegerPrecision );
- break;
- case 0x02 : ComOut( CGM_LEVEL1, "Metafile Description" ) break;
- case 0x03 : ComOut( CGM_LEVEL1, "VDC Type" )
- {
- nUInteger = ImplGetUI16();
- switch( nUInteger )
- {
- case 0 : pElement->eVDCType = VDC_INTEGER; break;
- case 1 : pElement->eVDCType = VDC_REAL; break;
- default: mbStatus = sal_False; break;
- }
- }
- break;
- case 0x04 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Integer Precision" )
- {
- nInteger = ImplGetI( pElement->nIntegerPrecision );
- switch ( nInteger )
- {
- case 32 :
- case 24 :
- case 16 :
- case 8 : pElement->nIntegerPrecision = nInteger >> 3; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x05 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Real Precision" )
- {
- nUInteger = ImplGetUI16( 4 );
- nI0 = ImplGetI( pElement->nIntegerPrecision ); // exponent
- nI1 = ImplGetI( pElement->nIntegerPrecision ); // mantisse
- switch( nUInteger )
- {
- case 0 :
- pElement->eRealPrecision = RP_FLOAT;
- switch ( nI0 )
- {
- case 9 :
- if ( nI1 != 23 )
- mbStatus = sal_False;
- pElement->nRealSize = 4;
- break;
- case 12 :
- if ( nI1 != 52 )
- mbStatus =sal_False;
- pElement->nRealSize = 8;
- break;
- default:
- mbStatus = sal_False;
- break;
- }
- break;
- case 1 :
- pElement->eRealPrecision = RP_FIXED;
- if ( nI0 != nI1 )
- mbStatus = sal_False;
- if ( nI0 == 16 )
- pElement->nRealSize = 4;
- else if ( nI0 == 32 )
- pElement->nRealSize = 8;
- else
- mbStatus = sal_False;
- break;
- default :
- mbStatus = sal_False; break;
- }
- }
- break;
- case 0x06 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Index Precision" )
- {
- nInteger = ImplGetI( pElement->nIntegerPrecision );
- switch ( nInteger )
- {
- case 32 :
- case 24 :
- case 16 :
- case 8 : pElement->nIndexPrecision = nInteger >> 3; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x07 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Color Precision" )
- {
- nInteger = ImplGetI( pElement->nIntegerPrecision );
- switch ( nInteger )
- {
- case 32 :
- case 24 :
- case 16 :
- case 8 : pElement->nColorPrecision = nInteger >> 3; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x08 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Color Index Precision" )
- {
- nInteger = ImplGetI( pElement->nIntegerPrecision );
- switch ( nInteger )
- {
- case 32 :
- case 24 :
- case 16 :
- case 8 : pElement->nColorIndexPrecision = nInteger >> 3; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x09 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Maximum Colour Index" )
- {
- pElement->nColorMaximumIndex = ImplGetUI( pElement->nColorIndexPrecision );
- if ( ( pElement->nColorMaximumIndex > 256 /*255*/ ) || ( pElement->nColorMaximumIndex == 0 ) )
- mbStatus = sal_False;
- }
- break;
- case 0x0a : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Color Value Extent" )
- {
- if ( pElement->eColorModel == CM_RGB )
- nI1 = 6;
- else
- {
- nI1 = 8;
- mbStatus = sal_False; // CMYK is not supported
- }
- for ( nI0 = 0; nI0 < nI1; nI0++ )
- {
- pElement->nColorValueExtent[ nI0 ] = (sal_uInt8)ImplGetUI( pElement->nColorPrecision );
- }
- }
- break;
- case 0x0b : ComOut( CGM_LEVEL1, "MetaFile Element List" ) break;
- case 0x0c : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "MetaFile Default Replacement" )
- {
- if ( mnElementSize > 1 )
- {
- sal_Int8* pBuf = new sal_Int8[ mnElementSize ];
- if ( pBuf )
- {
- memcpy( pBuf, mpSource, mnElementSize );
- maDefRepList.Insert( pBuf, LIST_APPEND );
- maDefRepSizeList.Insert( (void*)mnElementSize, LIST_APPEND );
- }
- }
- mnParaSize = mnElementSize;
- }
- break;
- case 0x0d : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Font List" )
- {
- while ( mnParaSize < mnElementSize )
- {
- sal_uInt32 nSize;
- nSize = ImplGetUI( 1 );
- pElement->aFontList.InsertName( mpSource + mnParaSize, nSize );
- mnParaSize += nSize;
- }
- }
- break;
- case 0x0e : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Character Set List" )
- {
- while ( mnParaSize < mnElementSize )
- {
- sal_uInt32 nCharSetType;
- sal_uInt32 nSize;
- nCharSetType = ImplGetUI16();
- nSize = ImplGetUI( 1 );
- pElement->aFontList.InsertCharSet( (CharSetType)nCharSetType, mpSource + mnParaSize, nSize );
- mnParaSize += nSize;
- }
- }
- break;
- case 0x0f : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Character Coding Announcer" )
- pElement->eCharacterCodingA = (CharacterCodingA)ImplGetUI16();
- break;
- case 0x10 : ComOut( CGM_LEVEL2, "Name Precision" ) break; // NS
- case 0x11 : ComOut( CGM_LEVEL2, "Maximum VDC Extent" ) break; // NS
- case 0x12 : ComOut( CGM_LEVEL2, "Segment Priority Extent" ) break; // NS
- case 0x13 : ComOut( CGM_LEVEL3, "Color Model" ) break; // NS
- case 0x14 : ComOut( CGM_LEVEL3, "Color Calibration" ) break; // NS
- case 0x15 : ComOut( CGM_LEVEL3, "Font Properties" ) break; // NS
- case 0x16 : ComOut( CGM_LEVEL3, "Glyph Mapping" ) break; // NS
- case 0x17 : ComOut( CGM_LEVEL3, "Symbol Library List" ) break; // NS
- case 0xfc : ComOut( CGM_GDSF_ONLY, "Inquire Function Support" ) break;
- case 0xfa : ComOut( CGM_GDSF_ONLY, "End Metafile Defaults Replacement" ) break;
- case 0xf8 : ComOut( CGM_GDSF_ONLY, "Set Color Value Desc Extent" ) break;
- default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
- }
-};
-
-
diff --git a/goodies/source/filter.vcl/icgm/class2.cxx b/goodies/source/filter.vcl/icgm/class2.cxx
deleted file mode 100644
index 9e0f4d854bbf..000000000000
--- a/goodies/source/filter.vcl/icgm/class2.cxx
+++ /dev/null
@@ -1,230 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: class2.cxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <main.hxx>
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDoClass2()
-{
- sal_uInt32 nUInteger;
- switch ( mnElementID )
- {
- case 0x01 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Scaling Mode" )
- {
- if ( mnElementSize ) // HACK (NASA.CGM)
- {
- switch( ImplGetUI16() )
- {
- case 0 : pElement->eScalingMode = SM_ABSTRACT; break;
- case 1 : pElement->eScalingMode = SM_METRIC; break;
- default : mbStatus = sal_False; break;
- }
- pElement->nScalingFactor = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- ImplSetMapMode();
- }
- }
- break;
- case 0x02 : ComOut( CGM_LEVEL1, "Color Selection Mode" )
- {
- nUInteger = ImplGetUI16();
- switch( nUInteger )
- {
- case 0 : pElement->eColorSelectionMode = CSM_INDEXED; break;
- case 1 : pElement->eColorSelectionMode = CSM_DIRECT; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x03 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Line Width Specification Mode" )
- {
- nUInteger = ImplGetUI16();
- switch( nUInteger )
- {
- case 0 : pElement->eLineWidthSpecMode = SM_ABSOLUTE; break;
- case 1 : pElement->eLineWidthSpecMode = SM_SCALED; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x04 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Marker Size Specification Mode" )
- {
- nUInteger = ImplGetUI16();
- switch( nUInteger )
- {
- case 0 : pElement->eMarkerSizeSpecMode = SM_ABSOLUTE; break;
- case 1 : pElement->eMarkerSizeSpecMode = SM_SCALED; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x05 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Edge Width Specification Mode" )
- {
- nUInteger = ImplGetUI16();
- switch( nUInteger )
- {
- case 0 : pElement->eEdgeWidthSpecMode = SM_ABSOLUTE; break;
- case 1 : pElement->eEdgeWidthSpecMode = SM_SCALED; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x06 : ComOut( CGM_LEVEL1, "VDC Extent" )
- {
- ImplGetRectangleNS( pElement->aVDCExtent );
- ImplSetMapMode();
- }
- break;
- case 0x07 : ComOut( CGM_LEVEL1, "Background Color" )
- pElement->nBackGroundColor = ImplGetBitmapColor( sal_True );
- break;
- case 0x08 : ComOut( CGM_LEVEL2, "Device Viewport" )
- {
- if ( pElement->eVDCType == VDC_INTEGER )
- ImplGetRectangle( pElement->aDeviceViewPort );
- ImplSetMapMode();
- }
- break;
- case 0x09 : ComOut( CGM_LEVEL2, "Device Viewport Specification Mode" )
- {
- nUInteger = ImplGetUI16( 8 );
- switch( nUInteger )
- {
- case 0 : pElement->eDeviceViewPortMode = DVPM_FRACTION; break;
- case 1 : pElement->eDeviceViewPortMode = DVPM_METRIC; break;
- case 2 : pElement->eDeviceViewPortMode = DVPM_DEVICE; break;
- default : mbStatus = sal_False; break;
- }
- pElement->nDeviceViewPortScale = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- ImplSetMapMode();
- }
- break;
- case 0x0a : ComOut( CGM_LEVEL2, "Device Viewport Mapping" )
- {
- switch( ImplGetUI16() )
- {
- case 0 : pElement->eDeviceViewPortMap = DVPM_NOT_FORCED; break;
- case 1 : pElement->eDeviceViewPortMap = DVPM_FORCED; break;
- default : mbStatus = sal_False; break;
- }
- switch( ImplGetUI16() )
- {
- case 0 : pElement->eDeviceViewPortMapH = DVPMH_LEFT; break;
- case 1 : pElement->eDeviceViewPortMapH = DVPMH_CENTER; break;
- case 2 : pElement->eDeviceViewPortMapH = CVPMH_RIGHT; break;
- default : mbStatus = sal_False; break;
- }
- switch( ImplGetUI16() )
- {
- case 0 : pElement->eDeviceViewPortMapV = DVPMV_BOTTOM; break;
- case 1 : pElement->eDeviceViewPortMapV = DVPMV_CENTER; break;
- case 2 : pElement->eDeviceViewPortMapV = DVPMV_TOP; break;
- default : mbStatus = sal_False; break;
- }
- ImplSetMapMode();
- }
- break;
- case 0x0b : ComOut( CGM_LEVEL2, "Line Representation" )
- {
- LineBundle aTempLineBundle;
- aTempLineBundle.SetIndex( ImplGetI( pElement->nIndexPrecision ) );
- aTempLineBundle.eLineType = (LineType)ImplGetI( pElement->nIndexPrecision );
- aTempLineBundle.nLineWidth = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- aTempLineBundle.SetColor( ImplGetBitmapColor() );
- pElement->InsertBundle( pElement->aLineList, aTempLineBundle );
- }
- break;
- case 0x0c : ComOut( CGM_LEVEL2, "Marker Representation" )
- {
- MarkerBundle aTempMarkerBundle;
- aTempMarkerBundle.SetIndex( ImplGetI( pElement->nIndexPrecision ) );
- aTempMarkerBundle.eMarkerType = (MarkerType)ImplGetI( pElement->nIndexPrecision );
- aTempMarkerBundle.nMarkerSize = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- aTempMarkerBundle.SetColor( ImplGetBitmapColor() );
- pElement->InsertBundle( pElement->aMarkerList, aTempMarkerBundle );
- }
- break;
- case 0x0d : ComOut( CGM_LEVEL2, "Text Representation" )
- {
- TextBundle aTempTextBundle;
- aTempTextBundle.SetIndex( ImplGetI( pElement->nIndexPrecision ) );
- aTempTextBundle.nTextFontIndex = ImplGetI( pElement->nIndexPrecision );
- aTempTextBundle.eTextPrecision = (TextPrecision)ImplGetI( pElement->nIndexPrecision );
- aTempTextBundle.nCharacterSpacing = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- aTempTextBundle.nCharacterExpansion = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- aTempTextBundle.SetColor( ImplGetBitmapColor() );
- pElement->InsertBundle( pElement->aTextList, aTempTextBundle );
- }
- break;
- case 0x0e : ComOut( CGM_LEVEL2, "Fill Representation" )
- {
- FillBundle aTempFillBundle;
- aTempFillBundle.SetIndex( ImplGetI( pElement->nIndexPrecision ) );
- aTempFillBundle.eFillInteriorStyle = (FillInteriorStyle)ImplGetI( pElement->nIndexPrecision );
- aTempFillBundle.SetColor( ImplGetBitmapColor() );
- aTempFillBundle.nFillPatternIndex = ImplGetI( pElement->nIndexPrecision );
- aTempFillBundle.nFillHatchIndex = ImplGetI( pElement->nIndexPrecision );
- pElement->InsertBundle( pElement->aFillList, aTempFillBundle );
- }
- break;
- case 0x0f : ComOut( CGM_LEVEL2, "Edge Representation" )
- {
- EdgeBundle aTempEdgeBundle;
- aTempEdgeBundle.SetIndex( ImplGetI( pElement->nIndexPrecision ) );
- aTempEdgeBundle.eEdgeType = (EdgeType)ImplGetI( pElement->nIndexPrecision );
- aTempEdgeBundle.nEdgeWidth = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- aTempEdgeBundle.SetColor( ImplGetBitmapColor() );
- pElement->InsertBundle( pElement->aEdgeList, aTempEdgeBundle );
- }
- break;
- case 0x10 : ComOut( CGM_LEVEL3, "Interior Style Specification Mode" ) break; // NS
- case 0x11 : ComOut( CGM_LEVEL3, "Line and Edge Type Definition" ) break;
- case 0x12 : ComOut( CGM_LEVEL3, "Hatch Style Definition" ) break; // NS
- case 0x13 : ComOut( CGM_LEVEL3, "Geometric Pattern Definition" ) break; // NS
- case 0xff : ComOut( CGM_GDSF_ONLY, "inquire VDC EXTENT" ) break;
- case 0xfe : ComOut( CGM_GDSF_ONLY, "inquire Background Color" ) break;
- case 0xfd : ComOut( CGM_GDSF_ONLY, "inquire Device Viewport" ) break;
- case 0xfc : ComOut( CGM_GDSF_ONLY, "set Font Selection Mode" ) break;
- case 0xfb : ComOut( CGM_GDSF_ONLY, "inquire Color Selection Mode" ) break;
- case 0xfa : ComOut( CGM_GDSF_ONLY, "inquire Font Selection Mode" ) break;
- case 0xf9 : ComOut( CGM_GDSF_ONLY, "set Char Height Spec Mode" )
- {
- ImplGetUI16(); // -Wall is this really needed?
- }
- break;
- case 0xf8 : ComOut( CGM_GDSF_ONLY, "set Background Style" ) break;
- default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
- }
-};
-
-
diff --git a/goodies/source/filter.vcl/icgm/class3.cxx b/goodies/source/filter.vcl/icgm/class3.cxx
deleted file mode 100644
index 812ca63a3bea..000000000000
--- a/goodies/source/filter.vcl/icgm/class3.cxx
+++ /dev/null
@@ -1,147 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: class3.cxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <main.hxx>
-#include <outact.hxx>
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDoClass3()
-{
- sal_uInt32 nUInteger;
- long nI0, nI1;
- switch ( mnElementID )
- {
- case 0x01 : ComOut( CGM_LEVEL1, "VDC Integer Precision" )
- {
- switch( ImplGetI( pElement->nIntegerPrecision ) )
- {
- case 16 : pElement->nVDCIntegerPrecision = 2; break;
- case 32 : pElement->nVDCIntegerPrecision = 4; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x02 : ComOut( CGM_LEVEL1, "VDC Real Precision" )
- {
- nUInteger = ImplGetUI16();
- nI0 = ImplGetI( pElement->nIntegerPrecision ); // exponent
- nI1 = ImplGetI( pElement->nIntegerPrecision ); // mantisse
- switch( nUInteger )
- {
- case 0 :
- pElement->eVDCRealPrecision = RP_FLOAT;
- switch ( nI0 )
- {
- case 9 :
- if ( nI1 != 23 )
- mbStatus = sal_False;
- pElement->nVDCRealSize = 4;
- break;
- case 12 :
- if ( nI1 != 52 )
- mbStatus =sal_False;
- pElement->nVDCRealSize = 8;
- break;
- default:
- mbStatus = sal_False;
- break;
- }
- break;
- case 1 :
- pElement->eVDCRealPrecision = RP_FIXED;
- if ( nI0 != nI1 )
- mbStatus = sal_False;
- if ( nI0 == 16 )
- pElement->nVDCRealSize = 4;
- else if ( nI0 == 32 )
- pElement->nVDCRealSize = 8;
- else
- mbStatus = sal_False;
- break;
- default :
- mbStatus = sal_False; break;
- }
- }
- break;
- case 0x03 : ComOut( CGM_LEVEL1, "Auxiliary Colour" )
- {
- pElement->nAuxiliaryColor = ImplGetBitmapColor();
- }
- break;
- case 0x04 : ComOut( CGM_LEVEL1, "Transparency" )
- {
- switch( ImplGetUI16() )
- {
- case 0 : pElement->eTransparency = T_OFF; break;
- case 1 : pElement->eTransparency = T_ON; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x05 : ComOut( CGM_LEVEL1, "Clip Rectangle" )
- ImplGetRectangle( pElement->aClipRect );
- break;
- case 0x06 : ComOut( CGM_LEVEL1, "Clip Indicator" )
- {
- switch( ImplGetUI16() )
- {
- case 0 : pElement->eClipIndicator = CI_OFF; break;
- case 1 : pElement->eClipIndicator = CI_ON; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x07 : ComOut( CGM_LEVEL2, "Line Clipping Mode" ) break; // NS
- case 0x08 : ComOut( CGM_LEVEL2, "Marker Clipping Mode" ) break; // NS
- case 0x09 : ComOut( CGM_LEVEL2, "Edge Clipping Mode" ) break; // NS
- case 0x0a : ComOut( CGM_LEVEL2, "New Region" )
- mpOutAct->NewRegion();
- break;
- case 0x0b : ComOut( CGM_LEVEL2, "Save Primitive Context" ) break; // NS
- case 0x0c : ComOut( CGM_LEVEL2, "Restore Primitive Context" ) break; // NS
- case 0x11 : ComOut( CGM_LEVEL3, "Protection Region Indicator" ) break;
- case 0x12 : ComOut( CGM_LEVEL3, "Generalized Text Path Mode" ) break; // NS
- case 0x13 : ComOut( CGM_LEVEL3, "Mitre Limit" )
- pElement->nMitreLimit = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- break; // NS
- case 0x14 : ComOut( CGM_LEVEL3, "Transparent Cell Color" ) break; // NS
- case 0xfc : ComOut( CGM_GDSF_ONLY, "Text Path Alignment Modes" ) break;
- case 0xfd : ComOut( CGM_GDSF_ONLY, "Pop Transformation Stack" ) break;
- case 0xfe : ComOut( CGM_GDSF_ONLY, "Push Transformation Stack" ) break;
- case 0xff : ComOut( CGM_GDSF_ONLY, "Set Patch ID" ) break;
- default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
- }
-};
-
-
diff --git a/goodies/source/filter.vcl/icgm/class4.cxx b/goodies/source/filter.vcl/icgm/class4.cxx
deleted file mode 100644
index ee63d9636696..000000000000
--- a/goodies/source/filter.vcl/icgm/class4.cxx
+++ /dev/null
@@ -1,864 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: class4.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <main.hxx>
-#include <chart.hxx>
-#include <outact.hxx>
-#include <math.h>
-
-using namespace ::com::sun::star;
-
-double CGM::ImplGetOrientation( FloatPoint& rCenter, FloatPoint& rPoint )
-{
- double fOrientation;
-
- double nX = rPoint.X - rCenter.X;
- double nY = rPoint.Y - rCenter.Y;
-
- fOrientation = acos( nX / sqrt( nX * nX + nY * nY ) ) * 57.29577951308;
- if ( nY > 0 )
- fOrientation = 360 - fOrientation;
-
- return fOrientation;
-}
-
-// ---------------------------------------------------------------
-
-void CGM::ImplSwitchStartEndAngle( double& rStartAngle, double& rEndAngle )
-{
- double nTemp;
- nTemp = rStartAngle;
- rStartAngle = rEndAngle;
- rEndAngle = nTemp;
-}
-
-// ---------------------------------------------------------------
-
-void CGM::ImplGetVector( double* pVector )
-{
- if ( pElement->eVDCType == VDC_REAL )
- {
- for ( sal_uInt32 i = 0; i < 4; i++ )
- {
- pVector[ i ] = (double)ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- }
- }
- else
- {
- for ( sal_uInt32 i = 0; i < 4; i++ )
- {
- pVector[ i ] = (double)ImplGetI( pElement->nVDCIntegerPrecision );
- }
- }
- pVector[ 0 ] *= mnVDCXmul;
- pVector[ 2 ] *= mnVDCXmul;
- pVector[ 1 ] *= mnVDCYmul;
- pVector[ 3 ] *= mnVDCYmul;
-}
-
-// ---------------------------------------------------------------
-sal_Bool CGM::ImplGetEllipse( FloatPoint& rCenter, FloatPoint& rRadius, double& rAngle )
-{
- FloatPoint aPoint1, aPoint2;
- double fRot1, fRot2;
- ImplGetPoint( rCenter, sal_True );
- ImplGetPoint( aPoint1, sal_True );
- ImplGetPoint( aPoint2, sal_True );
- fRot1 = ImplGetOrientation( rCenter, aPoint1 );
- fRot2 = ImplGetOrientation( rCenter, aPoint2 );
- rAngle = ImplGetOrientation( rCenter, aPoint1 );
- aPoint1.X -= rCenter.X;
- aPoint1.Y -= rCenter.Y;
- rRadius.X = sqrt( aPoint1.X * aPoint1.X + aPoint1.Y * aPoint1.Y );
- aPoint2.X -= rCenter.X;
- aPoint2.Y -= rCenter.Y;
- rRadius.Y = sqrt( aPoint2.X * aPoint2.X + aPoint2.Y * aPoint2.Y );
-
- if ( fRot1 > fRot2 )
- {
- if ( ( fRot1 - fRot2 ) < 180 )
- return sal_False;
- }
- else
- {
- if ( ( fRot2 - fRot1 ) > 180 )
- return sal_False;
- }
- return sal_True;
-}
-
-void CGM::ImplDoClass4()
-{
- if ( mbFirstOutPut )
- mpOutAct->FirstOutPut();
-
- if ( mpBitmapInUse && ( mnElementID != 9 ) ) // vorhandene grafik verarbeiten,
- { // da jetzt nicht bitmap actions anstehen
- CGMBitmapDescriptor* pBmpDesc = mpBitmapInUse->GetBitmap();
- // irgendetwas mit der Bitmap anfangen
- mpOutAct->DrawBitmap( pBmpDesc );
- delete mpBitmapInUse;
- mpBitmapInUse = NULL;
- }
-
- if ( ( mpChart == NULL ) || mpChart->IsAnnotation() )
- {
- switch ( mnElementID )
- {
- case 0x01 : ComOut( CGM_LEVEL1, "PolyLine" )
- {
- sal_uInt32 nPoints = mnElementSize / ImplGetPointSize();
- Polygon aPolygon( (sal_uInt16)nPoints );
- for ( sal_uInt16 i = 0; i < nPoints; i++)
- {
- FloatPoint aFloatPoint;
- ImplGetPoint( aFloatPoint, sal_True );
- aPolygon.SetPoint( Point( (long)aFloatPoint.X, (long)aFloatPoint.Y ), i );
- }
- if ( mbFigure )
- mpOutAct->RegPolyLine( aPolygon );
- else
- mpOutAct->DrawPolyLine( aPolygon );
- }
- break;
-
- case 0x02 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Disjoint PolyLine" )
- {
- USHORT nPoints = sal::static_int_cast< USHORT >(
- mnElementSize / ImplGetPointSize());
- if ( ! ( nPoints & 1 ) )
- {
- nPoints >>= 1;
- FloatPoint aFloatPoint;
- if ( mbFigure )
- {
- Polygon aPolygon( nPoints );
- for ( sal_uInt16 i = 0; i < nPoints; i++ )
- {
- ImplGetPoint( aFloatPoint, sal_True );
- aPolygon.SetPoint( Point( (long)aFloatPoint.X, (long)aFloatPoint.Y ), 0 );
- }
- mpOutAct->RegPolyLine( aPolygon );
- }
- else
- {
- mpOutAct->BeginGroup();
- Polygon aPolygon( (sal_uInt16)2 );
- for ( sal_uInt16 i = 0; i < nPoints; i++ )
- {
- ImplGetPoint( aFloatPoint, sal_True );
- aPolygon.SetPoint( Point( (long)aFloatPoint.X, (long)aFloatPoint.Y ), 0 );
- ImplGetPoint( aFloatPoint, sal_True );
- aPolygon.SetPoint( Point( (long)aFloatPoint.X, (long)aFloatPoint.Y ), 1);
- mpOutAct->DrawPolyLine( aPolygon );
- }
- mpOutAct->EndGroup();
- }
- }
- }
- break;
-
- case 0x03 : ComOut( CGM_LEVEL1, "PolyMarker" ) break;
- case 0x04 : ComOut( CGM_LEVEL1, "Text" )
- {
- FloatPoint aFloatPoint;
- sal_uInt32 nType, nSize;
-
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- ImplGetPoint ( aFloatPoint, sal_True );
- nType = ImplGetUI16( 4 );
- nSize = ImplGetUI( 1 );
- mpSource[ mnParaSize + nSize ] = 0;
-
- ComOut( CGM_DESCRIPTION, (char*)mpSource + mnParaSize );
-
- awt::Size aSize;
- awt::Point aPoint( (long)aFloatPoint.X, (long)aFloatPoint.Y );
- mpOutAct->DrawText( aPoint, aSize,
- (char*)mpSource + mnParaSize, nSize, (FinalFlag)nType );
-// mnParaSize += nSize;
- mnParaSize = mnElementSize;
- }
- break;
-
- case 0x05 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Restricted Text" )
- {
- double dx, dy;
- FloatPoint aFloatPoint;
- sal_uInt32 nType, nSize;
-
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- if ( pElement->eVDCType == VDC_REAL )
- {
- dx = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- dy = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- }
- else
- {
- dx = (double)ImplGetI( pElement->nVDCIntegerPrecision );
- dy = (double)ImplGetI( pElement->nVDCIntegerPrecision );
- }
- ImplMapDouble( dx );
- ImplMapDouble( dy );
-
- ImplGetPoint ( aFloatPoint, sal_True );
- nType = ImplGetUI16( 4 );
- nSize = ImplGetUI( 1 );
-
- mpSource[ mnParaSize + nSize ] = 0;
-
- ComOut( CGM_DESCRIPTION, (char*)mpSource + mnParaSize );
-
- awt::Point aPoint( (long)aFloatPoint.X, (long)aFloatPoint.Y );
- awt::Size aSize((long)dx, (long)dy);
- mpOutAct->DrawText( aPoint, aSize ,
- (char*)mpSource + mnParaSize, nSize, (FinalFlag)nType );
-// mnParaSize += nSize;
- mnParaSize = mnElementSize;
- }
- break;
-
- case 0x06 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Append Text" )
- {
- sal_uInt32 nSize;
- sal_uInt32 nType = ImplGetUI16( 4 );
-
- nSize = ImplGetUI( 1 );
- mpSource[ mnParaSize + nSize ] = 0;
-
- ComOut( CGM_DESCRIPTION, (char*)mpSource + mnParaSize );
-
- mpOutAct->AppendText( (char*)mpSource + mnParaSize, nSize, (FinalFlag)nType );
-// mnParaSize += nSize;
- mnParaSize = mnElementSize;
- }
- break;
-
- case 0x07 : ComOut( CGM_LEVEL1, "Polygon" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- USHORT nPoints = sal::static_int_cast< USHORT >(
- mnElementSize / ImplGetPointSize());
- Polygon aPolygon( nPoints );
- for ( USHORT i = 0; i < nPoints; i++)
- {
- FloatPoint aFloatPoint;
- ImplGetPoint( aFloatPoint, sal_True );
- aPolygon.SetPoint( Point ( (long)( aFloatPoint.X ), (long)( aFloatPoint.Y ) ), i );
- }
- mpOutAct->DrawPolygon( aPolygon );
- }
- break;
-
- case 0x08 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Polygon Set" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- USHORT nPoints = 0;
- Point* pPoints = new Point[ 0x4000 ];
-
- PolyPolygon aPolyPolygon;
- FloatPoint aFloatPoint;
- sal_uInt32 nEdgeFlag;
- while ( mnParaSize < mnElementSize )
- {
- ImplGetPoint( aFloatPoint, sal_True );
- nEdgeFlag = ImplGetUI16();
- pPoints[ nPoints++ ] = Point( (long)aFloatPoint.X, (long)aFloatPoint.Y );
- if ( ( nEdgeFlag & 2 ) || ( mnParaSize == mnElementSize ) )
- {
- Polygon aPolygon( nPoints );
- for ( USHORT i = 0; i < nPoints; i++ )
- {
- aPolygon.SetPoint( pPoints[ i ], i );
- }
- aPolyPolygon.Insert( aPolygon, POLYPOLY_APPEND );
- nPoints = 0;
- }
- }
- delete[] pPoints;
- mpOutAct->DrawPolyPolygon( aPolyPolygon );
- }
- break;
-
- case 0x09 : ComOut( CGM_LEVEL1, "Cell Array" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- if ( mpBitmapInUse )
- {
- CGMBitmap* pBmpDesc = mpBitmapInUse->GetNext();
- if ( pBmpDesc ) // eventuell bekommen wir eine bitmap zurück, die nicht
- { // zur vorherigen paßt -> diese müssen wir dann auch löschen
- mpOutAct->DrawBitmap( pBmpDesc->GetBitmap() );
- delete pBmpDesc;
- }
- }
- else
- {
- mpBitmapInUse = new CGMBitmap( *this );
- }
- }
- break;
-
- case 0x0a : ComOut( CGM_LEVEL1, "Generalized Drawing Primitive" )
- {
- ImplGetI( pElement->nIntegerPrecision ); //-Wall is this needed
- ImplGetUI( pElement->nIntegerPrecision ); //-Wall is this needed
- mnParaSize = mnElementSize;
- }
- break;
-
- case 0x0b : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Rectangle" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- FloatRect aFloatRect;
- ImplGetRectangle( aFloatRect, sal_True );
- mpOutAct->DrawRectangle( aFloatRect );
- }
- break;
-
- case 0x0c : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Circle" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- double fRotation = 0;
- FloatPoint aCenter, aRadius;
- ImplGetPoint( aCenter, sal_True );
- if ( pElement->eVDCType == VDC_REAL )
- aRadius.X = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- else
- aRadius.X = (double)ImplGetI( pElement->nVDCIntegerPrecision );
- ImplMapDouble( aRadius.X );
- aRadius.Y = aRadius.X;
- mpOutAct->DrawEllipse( aCenter, aRadius, fRotation );
- }
- break;
-
- case 0x0d : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Circular Arc 3 Point" )
- {
- int nSwitch = 0;
-
- FloatPoint aStartingPoint, aIntermediatePoint, aEndingPoint, aCenterPoint;
- ImplGetPoint( aStartingPoint, sal_True );
- ImplGetPoint( aIntermediatePoint, sal_True );
- ImplGetPoint( aEndingPoint, sal_True );
-
- double fA = aIntermediatePoint.X - aStartingPoint.X;
- double fB = aIntermediatePoint.Y - aStartingPoint.Y;
- double fC = aEndingPoint.X - aStartingPoint.X;
- double fD = aEndingPoint.Y - aStartingPoint.Y;
-
- double fE = fA * ( aStartingPoint.X + aIntermediatePoint.X ) + fB * ( aStartingPoint.Y + aIntermediatePoint.Y );
- double fF = fC * ( aStartingPoint.X + aEndingPoint.X ) + fD * ( aStartingPoint.Y + aEndingPoint.Y );
-
- double fG = 2.0 * ( fA * ( aEndingPoint.Y - aIntermediatePoint.Y ) - fB * ( aEndingPoint.X - aIntermediatePoint.X ) );
-
- aCenterPoint.X = ( fD * fE - fB * fF ) / fG;
- aCenterPoint.Y = ( fA * fF - fC * fE ) / fG;
-
- if ( fG != 0 )
- {
- double fStartAngle = ImplGetOrientation( aCenterPoint, aStartingPoint );
- double fInterAngle = ImplGetOrientation( aCenterPoint, aIntermediatePoint );
- double fEndAngle = ImplGetOrientation( aCenterPoint, aEndingPoint );
-
- if ( fStartAngle > fEndAngle )
- {
- nSwitch ^=1;
- aIntermediatePoint = aEndingPoint;
- aEndingPoint = aStartingPoint;
- aStartingPoint = aIntermediatePoint;
- fG = fStartAngle;
- fStartAngle = fEndAngle;
- fEndAngle = fG;
- }
- if ( ! ( fInterAngle > fStartAngle ) && ( fInterAngle < fEndAngle ) )
- {
- nSwitch ^=1;
- aIntermediatePoint = aEndingPoint;
- aEndingPoint = aStartingPoint;
- aStartingPoint = aIntermediatePoint;
- fG = fStartAngle;
- fStartAngle = fEndAngle;
- fEndAngle = fG;
- }
- double fRadius = sqrt( pow( ( aStartingPoint.X - aCenterPoint.X ), 2 ) + pow( ( aStartingPoint.Y - aCenterPoint.Y ), 2 ) ) ;
-
- if ( mbFigure )
- {
- Rectangle aBoundingBox( Point( (long)( aCenterPoint.X - fRadius ), long( aCenterPoint.Y - fRadius ) ),
- Size( ( static_cast< long >( 2 * fRadius ) ), (long)( 2 * fRadius) ) );
- Polygon aPolygon( aBoundingBox, Point( (long)aStartingPoint.X, (long)aStartingPoint.Y ) ,Point( (long)aEndingPoint.X, (long)aEndingPoint.Y ), POLY_ARC );
- if ( nSwitch )
- mpOutAct->RegPolyLine( aPolygon, sal_True );
- else
- mpOutAct->RegPolyLine( aPolygon );
- }
- else
- {
- fG = 0;
- FloatPoint aRadius;
- aRadius.X = aRadius.Y = fRadius;
- mpOutAct->DrawEllipticalArc( aCenterPoint, aRadius, fG, 2, fStartAngle, fEndAngle );
- }
- }
- }
- break;
-
- case 0x0e : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Circular Arc 3 Point Close" )
- {
- int nSwitch = 0;
-
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- FloatPoint aStartingPoint, aIntermediatePoint, aEndingPoint, aCenterPoint;
- ImplGetPoint( aStartingPoint );
- ImplGetPoint( aIntermediatePoint );
- ImplGetPoint( aEndingPoint );
-
- double fA = aIntermediatePoint.X - aStartingPoint.X;
- double fB = aIntermediatePoint.Y - aStartingPoint.Y;
- double fC = aEndingPoint.X - aStartingPoint.X;
- double fD = aEndingPoint.Y - aStartingPoint.Y;
-
- double fE = fA * ( aStartingPoint.X + aIntermediatePoint.X ) + fB * ( aStartingPoint.Y + aIntermediatePoint.Y );
- double fF = fC * ( aStartingPoint.X + aEndingPoint.X ) + fD * ( aStartingPoint.Y + aEndingPoint.Y );
-
- double fG = 2.0 * ( fA * ( aEndingPoint.Y - aIntermediatePoint.Y ) - fB * ( aEndingPoint.X - aIntermediatePoint.X ) );
-
- aCenterPoint.X = ( fD * fE - fB * fF ) / fG;
- aCenterPoint.Y = ( fA * fF - fC * fE ) / fG;
-
- if ( fG != 0 )
- {
- double fStartAngle = ImplGetOrientation( aCenterPoint, aStartingPoint );
- double fInterAngle = ImplGetOrientation( aCenterPoint, aIntermediatePoint );
- double fEndAngle = ImplGetOrientation( aCenterPoint, aEndingPoint );
-
- if ( fStartAngle > fEndAngle )
- {
- nSwitch ^=1;
- aIntermediatePoint = aEndingPoint;
- aEndingPoint = aStartingPoint;
- aStartingPoint = aIntermediatePoint;
- fG = fStartAngle;
- fStartAngle = fEndAngle;
- fEndAngle = fG;
- }
- if ( ! ( fInterAngle > fStartAngle ) && ( fInterAngle < fEndAngle ) )
- {
- nSwitch ^=1;
- aIntermediatePoint = aEndingPoint;
- aEndingPoint = aStartingPoint;
- aStartingPoint = aIntermediatePoint;
- fG = fStartAngle;
- fStartAngle = fEndAngle;
- fEndAngle = fG;
- }
- FloatPoint fRadius;
- fRadius.Y = fRadius.X = sqrt( pow( ( aStartingPoint.X - aCenterPoint.X ), 2 ) + pow( ( aStartingPoint.Y - aCenterPoint.Y ), 2 ) ) ;
-
- sal_uInt32 nType = ImplGetUI16();
- if ( nType == 0 )
- nType = 0; // is PIE
- else
- nType = 1; // is CHORD
-
- double fOrientation = 0;
- mpOutAct->DrawEllipticalArc( aCenterPoint, fRadius, fOrientation, nType, fStartAngle, fEndAngle );
- }
- }
- break;
-
- case 0x0f : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Circular Arc Centre" )
- {
- double fOrientation, fStartAngle, fEndAngle, vector[ 4 ];
- FloatPoint aCenter, aRadius;
-
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- ImplGetPoint( aCenter, sal_True );
- ImplGetVector( &vector[ 0 ] );
-
- if ( pElement->eVDCType == VDC_REAL )
- {
- aRadius.X = (double)ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- }
- else
- {
- aRadius.X = (double)ImplGetI( pElement->nVDCIntegerPrecision );
- }
-
- ImplMapDouble( aRadius.X );
- aRadius.Y = aRadius.X;
-
- fStartAngle = acos( vector[ 0 ] / sqrt( vector[ 0 ] * vector[ 0 ] + vector[ 1 ] * vector[ 1 ] ) ) * 57.29577951308;
- fEndAngle = acos( vector[ 2 ] / sqrt( vector[ 2 ] * vector[ 2 ] + vector[ 3 ] * vector[ 3 ] ) ) * 57.29577951308;
-
- if ( vector[ 1 ] > 0 )
- fStartAngle = 360 - fStartAngle;
- if ( vector[ 3 ] > 0 )
- fEndAngle = 360 - fEndAngle;
-
- if ( mbAngReverse )
- ImplSwitchStartEndAngle( fStartAngle, fEndAngle );
-
- if ( mbFigure )
- {
- Rectangle aBoundingBox(
- Point( (long)( aCenter.X - aRadius.X ), long( aCenter.Y - aRadius.X ) ),
- Size( static_cast< long >( 2 * aRadius.X ), (long)( 2 * aRadius.X ) ) );
- Polygon aPolygon( aBoundingBox,
- Point( (long)vector[ 0 ], (long)vector[ 1 ] ),
- Point( (long)vector[ 2 ], (long)vector[ 3 ] ), POLY_ARC );
- mpOutAct->RegPolyLine( aPolygon );
- }
- else
- {
- fOrientation = 0;
- mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation, 2, fStartAngle, fEndAngle );
- }
- mnParaSize = mnElementSize;
-
- }
- break;
-
- case 0x10 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Circular Arc Centre Close" )
- {
- double fOrientation, fStartAngle, fEndAngle, vector[ 4 ];
- FloatPoint aCenter, aRadius;
-
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- ImplGetPoint( aCenter, sal_True );
- ImplGetVector( &vector[ 0 ] );
- if ( pElement->eVDCType == VDC_REAL )
- {
- aRadius.X = (double)ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- }
- else
- {
- aRadius.X = (double)ImplGetI( pElement->nVDCIntegerPrecision );
- }
- ImplMapDouble( aRadius.X );
- aRadius.Y = aRadius.X;
- fStartAngle = acos( vector[ 0 ] / sqrt( vector[ 0 ] * vector[ 0 ] + vector[ 1 ] * vector[ 1 ] ) ) * 57.29577951308;
- fEndAngle = acos( vector[ 2 ] / sqrt( vector[ 2 ] * vector[ 2 ] + vector[ 3 ] * vector[ 3 ] ) ) * 57.29577951308;
-
- if ( vector[ 1 ] > 0 )
- fStartAngle = 360 - fStartAngle;
- if ( vector[ 3 ] > 0 )
- fEndAngle = 360 - fEndAngle;
-
- if ( mbAngReverse )
- ImplSwitchStartEndAngle( fStartAngle, fEndAngle );
-
-
- sal_uInt32 nType = ImplGetUI16();
- if ( nType == 0 )
- nType = 0; // is PIE
- else
- nType = 1; // is CHORD
- fOrientation = 0;
-
- mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation,
- nType, fStartAngle, fEndAngle );
- mnParaSize = mnElementSize;
- }
- break;
-
- case 0x11 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Ellipse" )
- {
- double fOrientation;
- FloatPoint aCenter, aRadius;
-
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- ImplGetEllipse( aCenter, aRadius, fOrientation ) ;
- mpOutAct->DrawEllipse( aCenter, aRadius, fOrientation ) ;
- }
- break;
-
- case 0x12 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Elliptical Arc" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- double fOrientation, fStartAngle, fEndAngle, vector[ 4 ];
- FloatPoint aCenter, aRadius;
-
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- sal_Bool bDirection = ImplGetEllipse( aCenter, aRadius, fOrientation );
- ImplGetVector( &vector[ 0 ] );
-
- fStartAngle = acos( vector[ 0 ] / sqrt( vector[ 0 ] * vector[ 0 ] + vector[ 1 ] * vector[ 1 ] ) ) * 57.29577951308;
- fEndAngle = acos( vector[ 2 ] / sqrt( vector[ 2 ] * vector[ 2 ] + vector[ 3 ] * vector[ 3 ] ) ) * 57.29577951308;
-
- if ( vector[ 1 ] > 0 )
- fStartAngle = 360 - fStartAngle;
- if ( vector[ 3 ] > 0 )
- fEndAngle = 360 - fEndAngle;
-
- if ( bDirection )
- mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation,
- 2, fStartAngle, fEndAngle );
- else
- mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation,
- 2, fEndAngle, fStartAngle);
- }
- break;
-
- case 0x13 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Elliptical Arc Close" )
- {
- double fOrientation, fStartAngle, fEndAngle, vector[ 4 ];
- FloatPoint aCenter, aRadius;
-
- if ( mbFigure )
- mpOutAct->CloseRegion();
-
- sal_Bool bDirection = ImplGetEllipse( aCenter, aRadius, fOrientation );
- ImplGetVector( &vector[ 0 ] );
-
- fStartAngle = acos( vector[ 0 ] / sqrt( vector[ 0 ] * vector[ 0 ] + vector[ 1 ] * vector[ 1 ] ) ) * 57.29577951308;
- fEndAngle = acos( vector[ 2 ] / sqrt( vector[ 2 ] * vector[ 2 ] + vector[ 3 ] * vector[ 3 ] ) ) * 57.29577951308;
-
- if ( vector[ 1 ] > 0 )
- fStartAngle = 360 - fStartAngle;
- if ( vector[ 3 ] > 0 )
- fEndAngle = 360 - fEndAngle;
-
- sal_uInt32 nType = ImplGetUI16();
- if ( nType == 0 )
- nType = 0; // is PIE
- else
- nType = 1; // is CHORD
-
- if ( bDirection )
- mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation,
- nType, fStartAngle, fEndAngle );
- else
- mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation,
- nType, fEndAngle, fStartAngle);
- }
- break;
- case 0x14 : ComOut( CGM_LEVEL2, "Circular Arc Centre Reversed" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0x15 : ComOut( CGM_LEVEL2, "Connection Edge" ) // NS
- {
-// if ( mbFigure )
-// mpOutAct->CloseRegion();
- }
- break;
- case 0x16 : ComOut( CGM_LEVEL3, "Hyperbolic Arc" ) // NS
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0x17 : ComOut( CGM_LEVEL3, "Parabolic Arc" ) // NS
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0x18 : ComOut( CGM_LEVEL3, "Non Uniform B-Spline" ) // NS
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0x19 : ComOut( CGM_LEVEL3, "Non Uniform Rational B-Spline" ) // NS
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0x1a : ComOut( CGM_LEVEL3, "Polybezier" )
- {
- sal_uInt32 nOrder = ImplGetI( pElement->nIntegerPrecision );
-
- USHORT nNumberOfPoints = sal::static_int_cast< USHORT >(( mnElementSize - pElement->nIntegerPrecision ) / ImplGetPointSize());
-
- Polygon aPolygon( nNumberOfPoints );
-
- for ( USHORT i = 0; i < nNumberOfPoints; i++)
- {
- FloatPoint aFloatPoint;
- ImplGetPoint( aFloatPoint, sal_True );
- aPolygon.SetPoint( Point ( (long)( aFloatPoint.X ), (long)( aFloatPoint.Y ) ), i );
- }
- if ( nOrder & 4 )
- {
- for ( USHORT i = 0; i < nNumberOfPoints; i++ )
- {
- if ( ( i % 3 ) == 0 )
- aPolygon.SetFlags( i, POLY_NORMAL );
- else
- aPolygon.SetFlags( i, POLY_CONTROL );
- }
- }
- else
- {
- for ( USHORT i = 0; i < nNumberOfPoints; i++ )
- {
- switch ( i & 3 )
- {
- case 0 :
- case 3 : aPolygon.SetFlags( i, POLY_NORMAL ); break;
- default : aPolygon.SetFlags( i, POLY_CONTROL ); break;
- }
- }
- }
- if ( mbFigure )
- mpOutAct->RegPolyLine( aPolygon );
- else
- mpOutAct->DrawPolybezier( aPolygon );
- mnParaSize = mnElementSize;
- }
- break;
-
- case 0x1b : ComOut( CGM_LEVEL3, "Polysymbol" ) // NS
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0x1c : ComOut( CGM_LEVEL3, "Bitonal Tile" ) // NS
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0x1d : ComOut( CGM_LEVEL3, "Tile" ) // NS
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0x1e : ComOut( CGM_UNKNOWN_LEVEL, "Insert Object" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0xff : ComOut( CGM_GDSF_ONLY, "Polybezier" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0xfe : ComOut( CGM_GDSF_ONLY, "Sharp Polybezier" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0xfd : ComOut( CGM_GDSF_ONLY, "Polyspline" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0xfc : ComOut( CGM_GDSF_ONLY, "Reounded Rectangle" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0xfb : ComOut( CGM_GDSF_ONLY, "Begin Cell Array" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0xfa : ComOut( CGM_GDSF_ONLY, "End Cell Array" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0xf9 : ComOut( CGM_GDSF_ONLY, "Insert File" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0xf8 : ComOut( CGM_GDSF_ONLY, "Block Text" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0xf7 : ComOut( CGM_GDSF_ONLY, "Variable Width Polyline" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0xf6 : ComOut( CGM_GDSF_ONLY, "Elliptical Arc 3 Point" )
- {
- if ( mbFigure )
- mpOutAct->CloseRegion();
- }
- break;
- case 0xf1 : ComOut( CGM_GDSF_ONLY, "Hyperlink Definition" ) break;
- default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
- }
- }
- else
- mnParaSize = mnElementSize;
-};
-
-
diff --git a/goodies/source/filter.vcl/icgm/class5.cxx b/goodies/source/filter.vcl/icgm/class5.cxx
deleted file mode 100644
index a2b3994cfc9f..000000000000
--- a/goodies/source/filter.vcl/icgm/class5.cxx
+++ /dev/null
@@ -1,527 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: class5.cxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-//#define VCL_NEED_BASETSD
-
-#include <main.hxx>
-#include <outact.hxx>
-
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDoClass5()
-{
- switch ( mnElementID )
- {
- case 0x01 : ComOut( CGM_LEVEL1, "Line Bundle Index" )
- pElement->pLineBundle = (LineBundle*)pElement->GetBundleIndex( ImplGetI( pElement->nIndexPrecision ), pElement->aLineList, pElement->aLineBundle );
- break;
- case 0x02 : ComOut( CGM_LEVEL1, "Line Type" )
- {
- if ( pElement->nAspectSourceFlags & ASF_LINETYPE )
- pElement->pLineBundle->eLineType = (LineType)ImplGetI( pElement->nIndexPrecision );
- else
- pElement->aLineBundle.eLineType = (LineType)ImplGetI( pElement->nIndexPrecision );
- }
- break;
- case 0x03 : ComOut( CGM_LEVEL1, "Line Width" )
- {
- double nWidth;
- if ( pElement->eLineWidthSpecMode == SM_ABSOLUTE )
- {
- if ( pElement->eVDCType == VDC_REAL )
- nWidth = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- else
- nWidth = (double)ImplGetI( pElement->nVDCIntegerPrecision );
-
- ImplMapDouble( nWidth );
- }
- else
- nWidth = (sal_uInt32)ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize ) * 25; // scaling in 1/4 mm
-
- ( pElement->nAspectSourceFlags & ASF_LINEWIDTH )
- ? pElement->aLineBundle.nLineWidth = nWidth
- : pElement->aLineBundle.nLineWidth = nWidth;
- }
- break;
- case 0x04 : ComOut( CGM_LEVEL1, "Line Color" )
- {
- if ( pElement->nAspectSourceFlags & ASF_LINECOLOR )
- pElement->pLineBundle->SetColor( ImplGetBitmapColor() );
- else
- pElement->aLineBundle.SetColor( ImplGetBitmapColor() );
- }
- break;
- case 0x05 : ComOut( CGM_LEVEL1, "Marker Bundle Index" )
- pElement->pMarkerBundle = (MarkerBundle*)pElement->GetBundleIndex( ImplGetI( pElement->nIndexPrecision ), pElement->aMarkerList, pElement->aMarkerBundle );
- break;
- case 0x06 : ComOut( CGM_LEVEL1, "Marker Type" )
- {
- if ( pElement->nAspectSourceFlags & ASF_MARKERTYPE )
- pElement->pMarkerBundle->eMarkerType = (MarkerType)ImplGetI( pElement->nIndexPrecision );
- else
- pElement->aMarkerBundle.eMarkerType = (MarkerType)ImplGetI( pElement->nIndexPrecision );
- }
- break;
- case 0x07 : ComOut( CGM_LEVEL1, "Marker Size" )
- {
- double nWidth;
- if ( pElement->eMarkerSizeSpecMode == SM_ABSOLUTE )
- {
- if ( pElement->eVDCType == VDC_REAL )
- nWidth = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- else
- nWidth = (double)ImplGetI( pElement->nVDCIntegerPrecision );
- ImplMapDouble( nWidth );
- }
- else
- nWidth = (sal_uInt32)ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize ) * 25;
- ( pElement->nAspectSourceFlags & ASF_MARKERSIZE )
- ? pElement->aMarkerBundle.nMarkerSize = nWidth
- : pElement->aMarkerBundle.nMarkerSize = nWidth;
- }
- break;
- case 0x08 : ComOut( CGM_LEVEL1, "Marker Color" )
- {
- if ( pElement->nAspectSourceFlags & ASF_MARKERCOLOR )
- pElement->pMarkerBundle->SetColor( ImplGetBitmapColor() );
- else
- pElement->aMarkerBundle.SetColor( ImplGetBitmapColor() );
- }
- break;
- case 0x09 : ComOut( CGM_LEVEL1, "Text Bundle Index" )
- pElement->pTextBundle = (TextBundle*)pElement->GetBundleIndex( ImplGetI( pElement->nIndexPrecision ), pElement->aTextList, pElement->aTextBundle );
- break;
- case 0x0a : ComOut( CGM_LEVEL1, "Text Font Index" )
- {
- if ( pElement->nAspectSourceFlags & ASF_TEXTFONTINDEX )
- pElement->pTextBundle->nTextFontIndex = ImplGetI( pElement->nIndexPrecision );
- else
- pElement->aTextBundle.nTextFontIndex = ImplGetI( pElement->nIndexPrecision );
- }
- break;
- case 0x0b : ComOut( CGM_LEVEL1, "Text Precision" )
- {
- TextBundle* pBundle;
- if ( pElement->nAspectSourceFlags & ASF_TEXTPRECISION )
- pBundle = pElement->pTextBundle;
- else
- pBundle = &pElement->aTextBundle;
- switch( ImplGetUI16() )
- {
- case 0 : pBundle->eTextPrecision = TPR_STRING; break;
- case 1 : pBundle->eTextPrecision = TPR_CHARACTER; break;
- case 2 : pBundle->eTextPrecision = TPR_STROKE; break;
- default : pBundle->eTextPrecision = TPR_UNDEFINED; break;
- }
- }
- break;
- case 0x0c : ComOut( CGM_LEVEL1, "Character Expansion Factor" )
- {
- if ( pElement->nAspectSourceFlags & ASF_CHARACTEREXPANSION )
- pElement->pTextBundle->nCharacterExpansion = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- else
- pElement->aTextBundle.nCharacterExpansion = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- }
- break;
- case 0x0d : ComOut( CGM_LEVEL1, "Character Spacing" )
- {
- if ( pElement->nAspectSourceFlags & ASF_CHARACTERSPACING )
- pElement->pTextBundle->nCharacterSpacing = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- else
- pElement->aTextBundle.nCharacterSpacing = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- }
- break;
- case 0x0e : ComOut( CGM_LEVEL1, "Text Color" )
- {
- if ( pElement->nAspectSourceFlags & ASF_TEXTCOLOR )
- pElement->pTextBundle->SetColor( ImplGetBitmapColor() );
- else
- pElement->aTextBundle.SetColor( ImplGetBitmapColor() );
- }
- break;
- case 0x0f : ComOut( CGM_LEVEL1, "Character Height" )
- {
- if ( pElement->eVDCType == VDC_INTEGER )
- pElement->nCharacterHeight = ImplGetI( pElement->nVDCIntegerPrecision );
- else // ->floating points
- pElement->nCharacterHeight = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- ImplMapDouble( pElement->nCharacterHeight );
- pElement->nCharacterHeight /= 18.0;
- }
- break;
- case 0x10 : ComOut( CGM_LEVEL1, "Character Orientation" )
- {
- if ( pElement->eVDCType == VDC_INTEGER )
- {
- pElement->nCharacterOrientation[0] = ImplGetI( pElement->nVDCIntegerPrecision );
- pElement->nCharacterOrientation[1] = ImplGetI( pElement->nVDCIntegerPrecision );
- pElement->nCharacterOrientation[2] = ImplGetI( pElement->nVDCIntegerPrecision );
- pElement->nCharacterOrientation[3] = ImplGetI( pElement->nVDCIntegerPrecision );
- }
- else // ->floating points
- {
- pElement->nCharacterOrientation[0] = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- pElement->nCharacterOrientation[1] = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- pElement->nCharacterOrientation[2] = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- pElement->nCharacterOrientation[3] = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- }
- }
- break;
- case 0x11 : ComOut( CGM_LEVEL1, "Text Path" )
- {
- switch( ImplGetUI16() )
- {
- case 0 : pElement->eTextPath = TPR_RIGHT; break;
- case 1 : pElement->eTextPath = TPR_LEFT; break;
- case 2 : pElement->eTextPath = TPR_UP; break;
- case 3 : pElement->eTextPath = TPR_DOWN; break;
- default : mbStatus = sal_False; break;
- }
- }
- break;
- case 0x12 : ComOut( CGM_LEVEL1, "Text Alignment" )
- {
- pElement->eTextAlignmentH = (TextAlignmentH)ImplGetUI16();
- pElement->eTextAlignmentV = (TextAlignmentV)ImplGetUI16( 8 );
- pElement->nTextAlignmentHCont = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- pElement->nTextAlignmentVCont = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- }
- break;
- case 0x13 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Character Set Index" )
- pElement->nCharacterSetIndex = ImplGetI( pElement->nIndexPrecision );
- break;
- case 0x14 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Alternate Character Set Index" )
- pElement->nAlternateCharacterSetIndex = ImplGetI( pElement->nIndexPrecision );
- break;
- case 0x15 : ComOut( CGM_LEVEL1, "Fill Bundle Index" )
- pElement->pFillBundle = (FillBundle*)pElement->GetBundleIndex( ImplGetI( pElement->nIndexPrecision ), pElement->aFillList, pElement->aFillBundle );
- break;
- case 0x16 : ComOut( CGM_LEVEL1, "Fill Interior Style" )
- {
- if ( pElement->nAspectSourceFlags & ASF_FILLINTERIORSTYLE )
- pElement->pFillBundle->eFillInteriorStyle = (FillInteriorStyle)ImplGetUI16();
- else
- pElement->aFillBundle.eFillInteriorStyle = (FillInteriorStyle)ImplGetUI16();
- }
- break;
- case 0x17 : ComOut( CGM_LEVEL1, "Fill Color" )
- {
- if ( pElement->nAspectSourceFlags & ASF_FILLCOLOR )
- pElement->pFillBundle->SetColor( ImplGetBitmapColor() );
- else
- pElement->aFillBundle.SetColor( ImplGetBitmapColor() );
- }
- break;
- case 0x18 : ComOut( CGM_LEVEL1, "Fill Hatch Index" )
- {
- if ( pElement->nAspectSourceFlags & ASF_HATCHINDEX )
- pElement->pFillBundle->nFillHatchIndex = ImplGetI( pElement->nIndexPrecision );
- else
- pElement->aFillBundle.nFillHatchIndex = ImplGetI( pElement->nIndexPrecision );
- }
- break;
- case 0x19 : ComOut( CGM_LEVEL1, "Fill Pattern Index" )
- {
- if ( pElement->nAspectSourceFlags & ASF_PATTERNINDEX )
- pElement->pFillBundle->nFillPatternIndex = ImplGetI( pElement->nIndexPrecision );
- else
- pElement->aFillBundle.nFillPatternIndex = ImplGetI( pElement->nIndexPrecision );
- }
- break;
- case 0x1a : ComOut( CGM_LEVEL1, "Edge Bundle Index" )
- pElement->pEdgeBundle = (EdgeBundle*)pElement->GetBundleIndex( ImplGetI( pElement->nIndexPrecision ), pElement->aEdgeList, pElement->aEdgeBundle );
- break;
- case 0x1b : ComOut( CGM_LEVEL1, "Edge Type" )
- {
- if ( pElement->nAspectSourceFlags & ASF_EDGETYPE )
- pElement->pEdgeBundle->eEdgeType = (EdgeType)ImplGetI( pElement->nIndexPrecision );
- else
- pElement->aEdgeBundle.eEdgeType = (EdgeType)ImplGetI( pElement->nIndexPrecision );
- }
- break;
- case 0x1c : ComOut( CGM_LEVEL1, "Edge Width" )
- {
- double nWidth;
- if ( pElement->eEdgeWidthSpecMode == SM_ABSOLUTE )
- {
- if ( pElement->eVDCType == VDC_REAL )
- nWidth = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
- else
- nWidth = (double)ImplGetI( pElement->nVDCIntegerPrecision );
-
- ImplMapDouble( nWidth );
- }
- else
- nWidth = (sal_uInt32)ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize ) * 25;
- ( pElement->nAspectSourceFlags & ASF_EDGEWIDTH )
- ? pElement->aEdgeBundle.nEdgeWidth = nWidth
- : pElement->aEdgeBundle.nEdgeWidth = nWidth;
- }
- break;
- case 0x1d : ComOut( CGM_LEVEL1, "Edge Color" )
- {
- if ( pElement->nAspectSourceFlags & ASF_EDGECOLOR )
- pElement->pEdgeBundle->SetColor( ImplGetBitmapColor() );
- else
- pElement->aEdgeBundle.SetColor( ImplGetBitmapColor() );
- }
- break;
- case 0x1e : ComOut( CGM_LEVEL1, "Edge Visibility" )
- {
- switch( ImplGetUI16() )
- {
- case 0 : pElement->eEdgeVisibility = EV_OFF; break;
- case 1 : pElement->eEdgeVisibility = EV_ON; break;
- default : mbStatus = sal_False;
- }
- }
- break;
- case 0x1f : ComOut( CGM_LEVEL1, "Fill Reference Point" )
- ImplGetPoint( pElement->aFillRefPoint );
- break;
- case 0x20 : ComOut( CGM_LEVEL1, "Pattern Table" ) break;
- case 0x21 : ComOut( CGM_LEVEL1, "Pattern Size" ) break;
- case 0x22 : ComOut( CGM_LEVEL1, "Color Table" )
- {
- sal_uInt32 nColorStartIndex = ImplGetUI( pElement->nColorIndexPrecision );
- if ( ( nColorStartIndex > 255 ) ||
- ( ( ( mnElementSize - pElement->nColorIndexPrecision ) % ( pElement->nColorPrecision * 3 ) ) != 0 ) )
- {
- mbStatus = sal_False;
- }
- else
- {
- sal_uInt32 nColors = ( mnElementSize - pElement->nColorIndexPrecision ) / ( 3 * pElement->nColorPrecision );
- if ( nColors )
- {
- sal_uInt32 nMaxColorIndex = nColorStartIndex + nColors - 1;
- sal_uInt32 nIndex;
- if ( nMaxColorIndex > 255 )
- {
- mbStatus = sal_False;
- }
- else
- {
- if ( pElement->nLatestColorMaximumIndex < nMaxColorIndex )
- pElement->nLatestColorMaximumIndex = nMaxColorIndex;
-
- for ( nIndex = nColorStartIndex; nIndex <= nMaxColorIndex; nIndex++ )
- {
- pElement->aLatestColorTable[ nIndex ] = ImplGetBitmapColor( sal_True );
- }
- }
- pElement->nColorMaximumIndex = pElement->nLatestColorMaximumIndex;
- for ( nIndex = nColorStartIndex; nIndex <= nMaxColorIndex; nIndex++ )
- {
- if ( !pElement->aColorTableEntryIs[ nIndex ] )
- {
- pElement->aColorTableEntryIs[ nIndex ] = 1;
- pElement->aColorTable[ nIndex ] = pElement->aLatestColorTable[ nIndex ];
- }
- }
- }
- }
- }
- break;
- case 0x23 : ComOut( CGM_LEVEL1, "Aspect Source Flags" )
- {
- int nFlags = mnElementSize >> 2;
- while ( nFlags-- > 0 )
- {
- sal_uInt32 nFlag = 0;
- switch( ImplGetUI16() )
- {
- case 0 : nFlag = ASF_LINETYPE; break;
- case 1 : nFlag = ASF_LINEWIDTH; break;
- case 2 : nFlag = ASF_LINECOLOR; break;
- case 3 : nFlag = ASF_MARKERTYPE; break;
- case 4 : nFlag = ASF_MARKERSIZE; break;
- case 5 : nFlag = ASF_MARKERCOLOR; break;
- case 6 : nFlag = ASF_FILLINTERIORSTYLE; break;
- case 7 : nFlag = ASF_HATCHINDEX; break;
- case 8 : nFlag = ASF_PATTERNINDEX; break;
- case 9 : nFlag = ASF_BITMAPINDEX; break;
- case 10 : nFlag = ASF_FILLCOLOR; break;
- case 11 : nFlag = ASF_EDGETYPE; break;
- case 12 : nFlag = ASF_EDGEWIDTH; break;
- case 13 : nFlag = ASF_EDGECOLOR; break;
- case 14 : nFlag = ASF_TEXTFONTINDEX; break;
- case 15 : nFlag = ASF_TEXTPRECISION; break;
- case 16 : nFlag = ASF_CHARACTEREXPANSION; break;
- case 17 : nFlag = ASF_CHARACTERSPACING; break;
- case 18 : nFlag = ASF_TEXTCOLOR; break;
- default : mbStatus = sal_False; break;
- }
- sal_uInt32 nASF = ImplGetUI16();
- switch ( nASF )
- {
- case 0 : pElement->nAspectSourceFlags &= ~nFlag; break; // INDIVIDUAL
- case 1 : pElement->nAspectSourceFlags |= nFlag; break; // BUNDLED
- default : mbStatus = sal_False; break;
- }
- }
- }
- break;
- case 0x24 : ComOut( CGM_LEVEL2, "Pick Identifier" ) break;
- case 0x25 : ComOut( CGM_LEVEL3, "Line Cap" )
- {
- switch( ImplGetUI16() )
- {
- case 0 : pElement->eLineCapType = LCT_BUTT; break;
- case 1 : pElement->eLineCapType = LCT_ROUND; break;
- case 2 : pElement->eLineCapType = LCT_SQUARE; break;
- case 3 : pElement->eLineCapType = LCT_TRIANGLE; break;
- case 4 : pElement->eLineCapType = LCT_ARROW; break;
- default : pElement->eLineCapType = LCT_NONE; break;
- }
- }
- break;
- case 0x26 : ComOut( CGM_LEVEL3, "Line Join" )
- {
- switch( ImplGetUI16() )
- {
- case 0 : pElement->eLineJoinType = LJT_MITER; break;
- case 1 : pElement->eLineJoinType = LJT_ROUND; break;
- case 2 : pElement->eLineJoinType = LJT_BEVEL; break;
- default : pElement->eLineJoinType = LJT_NONE; break;
- }
- }
- break;
- case 0x27 : ComOut( CGM_LEVEL3, "Line Type Continuation" ) break; // NS
- case 0x28 : ComOut( CGM_LEVEL3, "Line Type Initial Offset" ) break; // NS
- case 0x29 : ComOut( CGM_LEVEL3, "Text Score Type" ) break;
- case 0x2a : ComOut( CGM_LEVEL3, "Restricted Text Type" ) break;
- case 0x2b : ComOut( CGM_LEVEL3, "Interpolated interior" ) break;
- case 0x2c : ComOut( CGM_LEVEL3, "Edge Cap" ) break; // NS
- case 0x2d : ComOut( CGM_LEVEL3, "Edge Join" ) break;
- case 0x2e : ComOut( CGM_LEVEL3, "Edge Type Continuation" ) break; // NS
- case 0x2f : ComOut( CGM_LEVEL3, "Edge Type Initial Offset" ) break; // NS
- case 0x30 : ComOut( CGM_LEVEL3, "Symbol Library Index" ) break; // NS
- case 0x31 : ComOut( CGM_LEVEL3, "Symbol Color" ) break; // NS
- case 0x32 : ComOut( CGM_LEVEL3, "Symbol Size" ) break; // NS
- case 0x33 : ComOut( CGM_LEVEL3, "Symbol Orientation" ) break; // NS
- case 0x50 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Region Margins" ) break;
- case 0x51 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Region Expansion" ) break;
- case 0x52 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Region Anchor" ) break;
- case 0x53 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Horizontal Alignment" ) break;
- case 0x54 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Vertical Alignment" ) break;
- case 0x55 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Line Flow" ) break;
- case 0x60 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Spacing" ) break;
- case 0x61 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Indent" ) break;
- case 0x62 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Tabs" ) break;
- case 0x63 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Bullets" ) break;
- case 0x64 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Bullet Level" ) break;
- case 0x65 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Line Horizontal Alignment" ) break;
- case 0x66 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Line Vertical Alignment" ) break;
- case 0x67 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragragh Line Spacing" ) break;
- case 0x68 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Word Wrap" ) break;
- case 0x70 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Forward Advance Distance" ) break;
- case 0x71 : ComOut( CGM_UNKNOWN_LEVEL, "Word Spacing" ) break;
- case 0x72 : ComOut( CGM_UNKNOWN_LEVEL, "External Leading" ) break;
- case 0x7a : ComOut( CGM_UNKNOWN_LEVEL, "set Gradient Offset" )
- {
- long nHorzOffset = ImplGetI( pElement->nIndexPrecision );
- long nVertOffset = ImplGetI( pElement->nIndexPrecision );
- sal_uInt32 nType = ImplGetUI16();
- mpOutAct->SetGradientOffset( nHorzOffset, nVertOffset, nType );
- mnAct4PostReset |= ACT4_GRADIENT_ACTION;
- }
- break;
- case 0x7b : ComOut( CGM_UNKNOWN_LEVEL, "set Gradient Edge" )
- {
- mnAct4PostReset |= ACT4_GRADIENT_ACTION;
- }
- break;
- case 0x7c : ComOut( CGM_UNKNOWN_LEVEL, "set Gradient Angle" )
- {
- mpOutAct->SetGradientAngle( ImplGetI( pElement->nIndexPrecision ) );
- mnAct4PostReset |= ACT4_GRADIENT_ACTION;
- }
- break;
- case 0x7d : ComOut( CGM_UNKNOWN_LEVEL, "set Gradient Description" )
- {
- ImplGetI( pElement->nIndexPrecision ); // -Wall is this needed?
- sal_uInt32 nNumberOfStages = ImplGetI( pElement->nIndexPrecision );
- sal_uInt32 i, nColorFrom = 0;
- sal_uInt32 nColorTo = 0xffffff;
-
- //FIXME, does this loop actually do anything?
- for ( i = 0; i < nNumberOfStages; i++ )
- {
- ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize ); // -Wall is this needed
- }
-
- for ( i = 0; i <= nNumberOfStages; i++ )
- {
- sal_uInt32 nPara = mnParaSize + 24;
- if ( i == 0 )
- {
- nColorTo = ImplGetBitmapColor();
- nColorFrom = nColorTo ^ 0xffffff;
- }
- else if ( i == 1 )
- nColorFrom = ImplGetBitmapColor();
- mnParaSize = nPara;
- }
- if ( nNumberOfStages > 1 )
- mpOutAct->SetGradientStyle( 0xff, 1 );
-
- mpOutAct->SetGradientDescriptor( nColorFrom, nColorTo );
- mnAct4PostReset |= ACT4_GRADIENT_ACTION;
- }
- break;
- case 0x7e : ComOut( CGM_UNKNOWN_LEVEL, "set Gradient Style" )
- {
- sal_uInt32 nStyle = ImplGetUI16( 8 );
- double fRatio = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
- mpOutAct->SetGradientStyle( nStyle, fRatio );
- mnAct4PostReset |= ACT4_GRADIENT_ACTION;
- }
- break;
- case 0xff : ComOut( CGM_GDSF_ONLY, "inquire Font metrics" ) break;
- case 0xfe : ComOut( CGM_GDSF_ONLY, "inquire character widths" ) break;
- case 0xfd : ComOut( CGM_GDSF_ONLY, "set Text Font" ) break;
- case 0xfc : ComOut( CGM_GDSF_ONLY, "set current position" ) break;
- case 0xfb : ComOut( CGM_GDSF_ONLY, "set current position mode" ) break;
- case 0xfa : ComOut( CGM_GDSF_ONLY, "set character height mode" ) break;
- case 0xf9 : ComOut( CGM_GDSF_ONLY, "set Transform matrix 2D" ) break;
- case 0xf8 : ComOut( CGM_GDSF_ONLY, "set Transform matrix 3D" ) break;
- case 0xf7 : ComOut( CGM_GDSF_ONLY, "pop transformation state" ) break;
- case 0xf6 : ComOut( CGM_GDSF_ONLY, "clear transformation state" ) break;
- case 0xf5 : ComOut( CGM_GDSF_ONLY, "set character widths" ) break;
- case 0xf4 : ComOut( CGM_GDSF_ONLY, "set color name - for Pantone support" ) break;
- default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
- }
-};
-
-
diff --git a/goodies/source/filter.vcl/icgm/class7.cxx b/goodies/source/filter.vcl/icgm/class7.cxx
deleted file mode 100644
index c815822678e5..000000000000
--- a/goodies/source/filter.vcl/icgm/class7.cxx
+++ /dev/null
@@ -1,240 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: class7.cxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <main.hxx>
-#include <chart.hxx>
-#include <outact.hxx>
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDoClass7()
-{
- switch ( mnElementID )
- {
- case 0x01 : ComOut( CGM_LEVEL1, "Message" ) break;
- case 0x02 :
- {
- sal_uInt8* pAppData = mpSource + 12;
- sal_uInt16* pTemp = (sal_uInt16*)mpSource;
- sal_uInt16 nOpcode = pTemp[ 4 ];
-
- if ( mpChart || ( nOpcode == 0 ) )
- {
- switch ( nOpcode )
- {
- case 0x000 : ComOut( CGM_LEVEL1, "AppData - Beginning of File Opcodes" )
- {
- if ( mpChart == NULL )
- mpChart = new CGMChart( *this );
- mpChart->mnCurrentFileType = pAppData[ 3 ];
- }
- break;
- case 0x001 : ComOut( CGM_LEVEL1, "AppData - End of File Opcodes" ) break;
- case 0x190 : ComOut( CGM_LEVEL1, "AppData - FDESC" ) break;
- case 0x192 : ComOut( CGM_LEVEL1, "AppData - FNOTES" ) break;
- case 0x1F4 : ComOut( CGM_LEVEL1, "AppData - BOGENFILE" ) break;
- case 0x1F5 : ComOut( CGM_LEVEL1, "AppData - EOGENFILE" ) break;
- case 0x1F8 : ComOut( CGM_LEVEL1, "AppData - BOCHTGROUP" ) break;
- case 0x1F9 : ComOut( CGM_LEVEL1, "AppData - EOCHTGROUP" ) break;
- case 0x1FC : ComOut( CGM_LEVEL1, "AppData - BOCHTDATA" ) break;
- case 0x1FD : ComOut( CGM_LEVEL1, "AppData - EOCHTDATA" )
- {
- mpOutAct->DrawChart();
- }
- break;
- case 0x200 : ComOut( CGM_LEVEL1, "AppData - BOSYMGROUP" ) break;
- case 0x201 : ComOut( CGM_LEVEL1, "AppData - EOSYMGROUP" ) break;
- case 0x204 : ComOut( CGM_LEVEL1, "AppData - BEGSYMBOL" ) break;
- case 0x205 : ComOut( CGM_LEVEL1, "AppData - ENDSYMBOL" ) break;
- case 0x208 : ComOut( CGM_LEVEL1, "AppData - BOSHWGROUP" ) break;
- case 0x209 : ComOut( CGM_LEVEL1, "AppData - EOSHWGROUP" ) break;
- case 0x260 : ComOut( CGM_LEVEL1, "AppData - BEGGROUP" ) break;
- case 0x262 : ComOut( CGM_LEVEL1, "AppData - ENDGROUP" ) break;
- case 0x264 : ComOut( CGM_LEVEL1, "AppData - DATANODE" )
- {
- mpChart->mDataNode[ 0 ] = *(DataNode*)( pAppData );
- sal_Int8 nZoneEnum = mpChart->mDataNode[ 0 ].nZoneEnum;
- if ( nZoneEnum && ( nZoneEnum <= 6 ) )
- mpChart->mDataNode[ nZoneEnum ] = *(DataNode*)( pAppData );
- }
- break;
- case 0x2BE : ComOut( CGM_LEVEL1, "AppData - SHWSLIDEREC" )
- {
- if ( mnMode & CGM_EXPORT_IMPRESS )
- {
- if ( pAppData[ 16 ] == 0 ) // a blank template ?
- {
- if ( pAppData[ 2 ] == 46 )
- {
- // this starts the document -> maybe we could insert a new document
- }
- else if ( pAppData[ 2 ] & 0x80 )
- {
- // this is a template
- }
- else
- {
- mpOutAct->InsertPage();
- }
- }
- mpChart->ResetAnnotation();
- }
- }
- break;
- case 0x2C0 : ComOut( CGM_LEVEL1, "AppData - SHWKEYTABLE" ) break;
- case 0x2C2 : ComOut( CGM_LEVEL1, "AppData - SHWBUTTONTAB" ) break;
- case 0x2C4 : ComOut( CGM_LEVEL1, "AppData - SHWGLOBAL" ) break;
- case 0x2C6 : ComOut( CGM_LEVEL1, "AppData - SHWTITLE" ) break;
- case 0x2CA : ComOut( CGM_LEVEL1, "AppData - SHWAPP" ) break;
- case 0x320 : ComOut( CGM_LEVEL1, "AppData - TEXT" )
- {
- TextEntry* pTextEntry = new TextEntry;
- pTextEntry->nTypeOfText = *((sal_uInt16*)( pAppData ) );
- pTextEntry->nRowOrLineNum = *((sal_uInt16*)( pAppData + 2 ) );
- pTextEntry->nColumnNum = *((sal_uInt16*)( pAppData + 4 ) );
- sal_uInt16 nAttributes = *( (sal_uInt16*)( pAppData + 6 ) );
- pTextEntry->nZoneSize = nAttributes & 0xff;
- pTextEntry->nLineType = ( nAttributes >> 8 ) & 0xf;
- nAttributes >>= 12;
- pTextEntry->nAttributes = nAttributes;
- pAppData += 8;
- sal_uInt32 nLen = strlen( (char*)( pAppData ) ) + 1;
- pTextEntry->pText = new char[ nLen ];
- memcpy( pTextEntry->pText, pAppData, nLen );
- pAppData += nLen;
-
- TextAttribute* pTextOld = 0;
- for ( sal_uInt16 i = 0; i < nAttributes; i++ )
- {
- TextAttribute* pTextAttr = new TextAttribute;
-
- *pTextAttr = *(TextAttribute*)( pAppData );
-
- pTextAttr->pNextAttribute = NULL;
- if ( i == 0 )
- pTextEntry->pAttribute = pTextAttr;
- else
- pTextOld->pNextAttribute = pTextAttr;
-
- pAppData += sizeof( TextAttribute ) - 4;
- pTextOld = pTextAttr;
- }
- mpChart->InsertTextEntry( pTextEntry );
- }
- break;
- case 0x321 : ComOut( CGM_LEVEL1, "AppData - IOC_TABS" ) break;
- case 0x322 : ComOut( CGM_LEVEL1, "AppData - CHARTZONE" )
- {
- mpChart->mChartZone = *( ChartZone* )( pAppData );
- }
- break;
- case 0x324 : ComOut( CGM_LEVEL1, "AppData - TITLEZONE" ) break;
- case 0x328 : ComOut( CGM_LEVEL1, "AppData - FOOTNOTEZONE" ) break;
- case 0x32A : ComOut( CGM_LEVEL1, "AppData - LEGENDZONE" ) break;
- case 0x330 : ComOut( CGM_LEVEL1, "AppData - PAGEORIENTDIM" )
- {
- mpChart->mPageOrientDim = *( PageOrientDim*)( pAppData );
- }
- break;
- case 0x334 : ComOut( CGM_LEVEL1, "AppData - CHTZONEOPTN" )
- {
- mpChart->mZoneOption = *( ZoneOption*)( pAppData );
- }
- break;
- case 0x336 : ComOut( CGM_LEVEL1, "AppData - CHTINTL" )
- {
- mpChart->mIntSettings = *( IntSettings*)( pAppData );
- }
- break;
- case 0x338 : ComOut( CGM_LEVEL1, "AppData - CHTLINESPC" ) break;
- case 0x384 : ComOut( CGM_LEVEL1, "AppData - ORGGRIDSTATE" ) break;
- case 0x386 : ComOut( CGM_LEVEL1, "AppData - ORGSCRSTATE" ) break;
- case 0x388 : ComOut( CGM_LEVEL1, "AppData - ORGTREESTATE" ) break;
- case 0x38A : ComOut( CGM_LEVEL1, "AppData - ORGTEXTOPTN" ) break;
- case 0x38E : ComOut( CGM_LEVEL1, "AppData - ORGBOXOPTN" ) break;
- case 0x390 : ComOut( CGM_LEVEL1, "AppData - ORGBOXDIM" ) break;
- case 0x392 : ComOut( CGM_LEVEL1, "AppData - ORGBOX" ) break;
- case 0x3EA : ComOut( CGM_LEVEL1, "AppData - TTLTEXTOPTN" ) break;
- case 0x3EE : ComOut( CGM_LEVEL1, "AppData - TTLAUTOBUILD" ) break;
- case 0x44E : ComOut( CGM_LEVEL1, "AppData - BULTEXTOPTN" ) break;
- case 0x452 : ComOut( CGM_LEVEL1, "AppData - BULLETOPTN" )
- {
- mpChart->mBulletOption = *( BulletOption*)( pAppData );
- }
- break;
- case 0x454 : ComOut( CGM_LEVEL1, "AppData - BULLETLINES" )
- {
- mpChart->mBulletLines = *( BulletLines*)( pAppData );
- }
- break;
- case 0x456 : ComOut( CGM_LEVEL1, "AppData - BULAUTOBUILD" ) break;
- case 0x4B2 : ComOut( CGM_LEVEL1, "AppData - TBLTEXTOPTN" ) break;
- case 0x4B6 : ComOut( CGM_LEVEL1, "AppData - TBLOPTN" ) break;
- case 0x4B8 : ComOut( CGM_LEVEL1, "AppData - TBLCOLOPTN" ) break;
- case 0x4BA : ComOut( CGM_LEVEL1, "AppData - TBLLEGENDOPTN" ) break;
- case 0x4BC : ComOut( CGM_LEVEL1, "AppData - TBLRANGEOPTN" ) break;
- case 0x4BE : ComOut( CGM_LEVEL1, "AppData - TBLROWOPTN" ) break;
- case 0x4C0 : ComOut( CGM_LEVEL1, "AppData - TBLAUTOBUILD" ) break;
- case 0x518 : ComOut( CGM_LEVEL1, "AppData - PIECHARTOPTN" ) break;
- case 0x51A : ComOut( CGM_LEVEL1, "AppData - PIELEGENDOPTN" ) break;
- case 0x51C : ComOut( CGM_LEVEL1, "AppData - PIETEXTOPTN" ) break;
- case 0x51E : ComOut( CGM_LEVEL1, "AppData - PIEOPTN" ) break;
- case 0x520 : ComOut( CGM_LEVEL1, "AppData - PIEPCTLABOPTN" ) break;
- case 0x522 : ComOut( CGM_LEVEL1, "AppData - PIEVALLABOPTN" ) break;
- case 0x524 : ComOut( CGM_LEVEL1, "AppData - PIESLICE" ) break;
- case 0x57A : ComOut( CGM_LEVEL1, "AppData - XYAXISOPTN" ) break;
- case 0x57C : ComOut( CGM_LEVEL1, "AppData - XYGRIDOPTN" ) break;
- case 0x57D : ComOut( CGM_LEVEL1, "AppData - XYGRIDSHOWFILL" ) break;
- case 0x57E : ComOut( CGM_LEVEL1, "AppData - XYSERIESOPTN" ) break;
- case 0x580 : ComOut( CGM_LEVEL1, "AppData - XYSTYLEOPTN" ) break;
- case 0x582 : ComOut( CGM_LEVEL1, "AppData - XYTABLEOPTN" ) break;
- case 0x584 : ComOut( CGM_LEVEL1, "AppData - XYTEXTOPTN" ) break;
- case 0x586 : ComOut( CGM_LEVEL1, "AppData - XYDATAOPTN" ) break;
- case 0x58A : ComOut( CGM_LEVEL1, "AppData - XYLEGENDOPN" ) break;
- case 0x58C : ComOut( CGM_LEVEL1, "AppData - XYCALCULATION" ) break;
- case 0x58E : ComOut( CGM_LEVEL1, "AppData - XYXVALUE" ) break;
- case 0x590 : ComOut( CGM_LEVEL1, "AppData - XYYVALUE" ) break;
- case 0x592 : ComOut( CGM_LEVEL1, "AppData - XYXEXTVALUE" ) break;
- case 0x618 : ComOut( CGM_LEVEL1, "AppData - IOC_CHTCOLRTAB" ) break;
- case 0x619 : ComOut( CGM_LEVEL1, "AppData - IOC_CHTFONTTAB" ) break;
- case 0x1fff : ComOut( CGM_LEVEL1, "AppData - 0x1fff" ) break;
- default : ComOut( CGM_LEVEL1, "UNKNOWN Application Data" ) break;
- }
- }
- mnParaSize = mnElementSize;
- break;
- }
- default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
- }
-};
-
diff --git a/goodies/source/filter.vcl/icgm/classx.cxx b/goodies/source/filter.vcl/icgm/classx.cxx
deleted file mode 100644
index 9b75c6d1a3f9..000000000000
--- a/goodies/source/filter.vcl/icgm/classx.cxx
+++ /dev/null
@@ -1,265 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: classx.cxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <main.hxx>
-#include <outact.hxx>
-
-// ---------------------------------------------------------------
-
-#define ImplSetUnderlineMode() \
- \
- sal_uInt32 nMode = ImplGetUI16(); \
- switch ( nMode ) \
- { \
- case 1 : pElement->eUnderlineMode = UM_LOW; break; \
- case 2 : pElement->eUnderlineMode = UM_HIGH; break; \
- case 4 : pElement->eUnderlineMode = UM_STRIKEOUT; break;\
- case 8 : pElement->eUnderlineMode = UM_OVERSCORE; break;\
- default: pElement->eUnderlineMode = UM_OFF; break; \
- } \
- pElement->nUnderlineColor = ImplGetBitmapColor();
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDoClass6()
-{
- switch ( mnElementID )
- {
- case 0x01 : ComOut( CGM_LEVEL1, "Escape" )
- {
- long nIdentifier = ImplGetI( pElement->nIntegerPrecision );
- switch ( nIdentifier )
- {
- case 0 : ComOut( CGM_DESCRIPTION, "inquire function support" ) break;
- case -1 : ComOut( CGM_DESCRIPTION, "set underline mode" )
- {
- ImplSetUnderlineMode()
- }
- break;
- case -2 : ComOut( CGM_DESCRIPTION, "set script mode" ) break;
- case -3 : ComOut( CGM_DESCRIPTION, "set shadow mode" ) break;
- case -6 : ComOut( CGM_DESCRIPTION, "inquire origin offset" ) break;
- case -8 : ComOut( CGM_DESCRIPTION, "set media size" ) break;
- case -10 : ComOut( CGM_DESCRIPTION, "set character mode" ) break;
- case -14 : ComOut( CGM_DESCRIPTION, "resolution mode" ) break;
- case -17 : ComOut( CGM_DESCRIPTION, "line cap" ) break;
- case -18 : ComOut( CGM_DESCRIPTION, "line join" ) break;
- case -19 : ComOut( CGM_DESCRIPTION, "edge join" ) break;
- case -30 : ComOut( CGM_DESCRIPTION, "media type" ) break;
- case -31 : ComOut( CGM_DESCRIPTION, "number of copies" ) break;
- case -32 : ComOut( CGM_DESCRIPTION, "orientation" ) break;
- case -33 : ComOut( CGM_DESCRIPTION, "device color representation" ) break;
- case -34 : ComOut( CGM_DESCRIPTION, "device font list" ) break;
- case -35 : ComOut( CGM_DESCRIPTION, "color reversal mode" ) break;
- case -36 : ComOut( CGM_DESCRIPTION, "line cap attributes" ) break;
- case -37 : ComOut( CGM_DESCRIPTION, "begin effect" ) break;
- case -38 : ComOut( CGM_DESCRIPTION, "end effect" ) break;
- case -39 : ComOut( CGM_DESCRIPTION, "begin effect definition" ) break;
- case -40 : ComOut( CGM_DESCRIPTION, "end effect definition" ) break;
- case -41 : ComOut( CGM_DESCRIPTION, "end style definition" ) break;
- case -42 : ComOut( CGM_DESCRIPTION, "begin eps data" ) break;
- case -43 : ComOut( CGM_DESCRIPTION, "eps data" ) break;
- case -44 : ComOut( CGM_DESCRIPTION, "end eps data" ) break;
- case -45 : ComOut( CGM_DESCRIPTION, "set background style" ) break;
- case -46 : ComOut( CGM_DESCRIPTION, "set eps mode" ) break;
- case -47 : ComOut( CGM_DESCRIPTION, "fill mode" ) break;
- case -48 : ComOut( CGM_DESCRIPTION, "begin symbol" ) break;
- case -49 : ComOut( CGM_DESCRIPTION, "end symbol" ) break;
- case -50 : ComOut( CGM_DESCRIPTION, "begin layer" ) break;
- case -51 : ComOut( CGM_DESCRIPTION, "end layer" ) break;
- case -52 : ComOut( CGM_DESCRIPTION, "layer visibility" ) break;
- case -53 : ComOut( CGM_DESCRIPTION, "inquire foreign data" ) break;
- case -54 : ComOut( CGM_DESCRIPTION, "set text offset" ) break;
- case -55 : ComOut( CGM_DESCRIPTION, "begin group" ) break;
- case -56 : ComOut( CGM_DESCRIPTION, "end group" ) break;
- case -100 : ComOut( CGM_DESCRIPTION, "begin patch" ) break;
- case -101 : ComOut( CGM_DESCRIPTION, "end patch" ) break;
- case -102 : ComOut( CGM_DESCRIPTION, "begin block text region" ) break;
- case -103 : ComOut( CGM_DESCRIPTION, "end block text region" ) break;
- case -120 : ComOut( CGM_DESCRIPTION, "region margins" ) break;
- case -121 : ComOut( CGM_DESCRIPTION, "region expansions" ) break;
- case -122 : ComOut( CGM_DESCRIPTION, "region anchor" ) break;
- case -123 : ComOut( CGM_DESCRIPTION, "paragraph horizontal align" ) break;
- case -124 : ComOut( CGM_DESCRIPTION, "paragraph vertical align" ) break;
- case -125 : ComOut( CGM_DESCRIPTION, "region line flow" ) break;
- case -130 : ComOut( CGM_DESCRIPTION, "paragraph spacing" ) break;
- case -131 : ComOut( CGM_DESCRIPTION, "paragraph identation" ) break;
- case -132 : ComOut( CGM_DESCRIPTION, "paragraph tabs" ) break;
- case -133 : ComOut( CGM_DESCRIPTION, "paragraph bullet" ) break;
- case -134 : ComOut( CGM_DESCRIPTION, "paragraph bulet level" ) break;
- case -135 : ComOut( CGM_DESCRIPTION, "line horuzontal align" ) break;
- case -136 : ComOut( CGM_DESCRIPTION, "line vertical align" ) break;
- case -137 : ComOut( CGM_DESCRIPTION, "line spacing" ) break;
- case -138 : ComOut( CGM_DESCRIPTION, "word wrap" ) break;
- case -150 : ComOut( CGM_DESCRIPTION, "forward advance distance" ) break;
- case -151 : ComOut( CGM_DESCRIPTION, "word spacing" ) break;
- case -152 : ComOut( CGM_DESCRIPTION, "external leading" ) break;
- case -160 : ComOut( CGM_DESCRIPTION, "set gradient offset" ) break;
- case -161 : ComOut( CGM_DESCRIPTION, "set gradient edge" ) break;
- case -162 : ComOut( CGM_DESCRIPTION, "set gradient angle" ) break;
- case -163 : ComOut( CGM_DESCRIPTION, "set gradient description" ) break;
- case -164 : ComOut( CGM_DESCRIPTION, "set gradient style" ) break;
- case -165 : ComOut( CGM_DESCRIPTION, "set back ground style" ) break;
- case -170 : ComOut( CGM_DESCRIPTION, "geometric pattern draw style" ) break;
- case -190 : ComOut( CGM_DESCRIPTION, "set character width" ) break;
- case -191 : ComOut( CGM_DESCRIPTION, "hyperlink definitions" ) break;
- case -192 : ComOut( CGM_DESCRIPTION, "set color name for pantone" ) break;
- case -32746 : ComOut( CGM_DESCRIPTION, "set text font" ) break;
- case -32747 : ComOut( CGM_DESCRIPTION, "font selection mode" ) break;
- case -32752 : ComOut( CGM_DESCRIPTION, "connecting edge" ) break;
- case -32753 : ComOut( CGM_DESCRIPTION, "set drawing mode" ) break;
- case -32754 : ComOut( CGM_DESCRIPTION, "inquire clip rectangle" ) break;
- case -32755 : ComOut( CGM_DESCRIPTION, "protection region indicator" ) break;
- case -32756 : ComOut( CGM_DESCRIPTION, "end protection region" ) break;
- case -32757 : ComOut( CGM_DESCRIPTION, "begin protection region" ) break;
- case -32758 : ComOut( CGM_DESCRIPTION, "geometric pattern definition" ) break;
- case -32759 : ComOut( CGM_DESCRIPTION, "hatch style definition" ) break;
- case -32760 : ComOut( CGM_DESCRIPTION, "close figure" ) break;
- case -32761 : ComOut( CGM_DESCRIPTION, "end figure" )
- {
- mpOutAct->EndFigure();
- mbFigure = sal_False;
- }
- break;
- case -32762 : ComOut( CGM_DESCRIPTION, "begin figure" )
- {
- mbFigure = sal_True;
- mpOutAct->BeginFigure();
- }
- break;
- case -32763 : ComOut( CGM_DESCRIPTION, "pop transformatin" ) break;
- case -32764 : ComOut( CGM_DESCRIPTION, "push transformation" ) break;
- case -32765 : ComOut( CGM_DESCRIPTION, "copy segment" ) break;
- case -32766 : ComOut( CGM_DESCRIPTION, "endseg" ) break;
- case -32767 : ComOut( CGM_DESCRIPTION, "begin segment" ) break;
- default : ComOut( CGM_DESCRIPTION, "????????????????????????????????" ) break;
- }
- mnParaSize = mnElementSize;
- }
- break;
- case 0x02 : ComOut( CGM_LEVEL1, "Get Escape" ) break;
- case 0x11 : ComOut( CGM_GDSF_ONLY, "Set Underline Mode" )
- {
- ImplSetUnderlineMode();
- }
- break;
- case 0x12 : ComOut( CGM_GDSF_ONLY, "Set Script Mode" ) break;
- case 0x13 : ComOut( CGM_GDSF_ONLY, "Set Shadow Mode" ) break;
- case 0x18 : ComOut( CGM_GDSF_ONLY, "Set Media Size" ) break;
- case 0x20 : ComOut( CGM_GDSF_ONLY, "Set Character Mode" ) break;
- case 0x24 : ComOut( CGM_GDSF_ONLY, "Resolution Mode" ) break;
- case 0x27 : ComOut( CGM_GDSF_ONLY, "Line Cap" ) break;
- case 0x28 : ComOut( CGM_GDSF_ONLY, "Line Join" ) break;
- case 0x29 : ComOut( CGM_GDSF_ONLY, "Edge Join" ) break;
- case 0x40 : ComOut( CGM_GDSF_ONLY, "Media Type" ) break;
- case 0x41 : ComOut( CGM_GDSF_ONLY, "Number of Copies" ) break;
- case 0x42 : ComOut( CGM_GDSF_ONLY, "Origin" ) break;
- case 0x45 : ComOut( CGM_GDSF_ONLY, "Color Reversal Mode" ) break;
- case 0x46 : ComOut( CGM_GDSF_ONLY, "Line Cap Attributes" ) break;
- case 0x49 : ComOut( CGM_GDSF_ONLY, "Begin Effect Definition" ) break;
- case 0x50 : ComOut( CGM_GDSF_ONLY, "End Effect Definition" ) break;
- case 0x51 : ComOut( CGM_GDSF_ONLY, "Line End Style Attributes" ) break;
- case 0x52 : ComOut( CGM_GDSF_ONLY, "Begin Data" ) break;
- case 0x53 : ComOut( CGM_GDSF_ONLY, "Data" ) break;
- case 0x54 : ComOut( CGM_GDSF_ONLY, "End Data" ) break;
- case 0x55 : ComOut( CGM_GDSF_ONLY, "Set Background Style" ) break;
- case 0x56 : ComOut( CGM_GDSF_ONLY, "Set EPS Mode" ) break;
- case 0x57 : ComOut( CGM_GDSF_ONLY, "Fill Mode" ) break;
- case 0x58 : ComOut( CGM_GDSF_ONLY, "Begin Symbol" ) break;
- case 0x59 : ComOut( CGM_GDSF_ONLY, "End Symbol" ) break;
- case 0x60 : ComOut( CGM_GDSF_ONLY, "Begin Layer" ) break;
- case 0x61 : ComOut( CGM_GDSF_ONLY, "End Layer" ) break;
- case 0x62 : ComOut( CGM_GDSF_ONLY, "Layer Visibility" ) break;
- case 0x64 : ComOut( CGM_GDSF_ONLY, "Set Text Offset" ) break;
- case 0xFF : ComOut( CGM_GDSF_ONLY, "Inquire Function Support" ) break;
- case 0xFE : ComOut( CGM_GDSF_ONLY, "Inquire Origin" ) break;
- case 0xFD : ComOut( CGM_GDSF_ONLY, "Inquire Foreign Data Mode" ) break;
- case 0xFC : ComOut( CGM_GDSF_ONLY, "Inquire Text Extent" ) break;
- case 0xFB : ComOut( CGM_GDSF_ONLY, "Inquire DPI" ) break;
- default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDoClass8()
-{
- switch ( mnElementID )
- {
- case 0x01 : ComOut( CGM_LEVEL2, "Copy Segment" ) break; // NS
- case 0x02 : ComOut( CGM_LEVEL2, "Inheritance Filter" ) break; // NS
- case 0x03 : ComOut( CGM_LEVEL2, "Clip Inheritance" ) break; // NS
- case 0x04 : ComOut( CGM_LEVEL2, "Segment Transformation" ) break;
- case 0x05 : ComOut( CGM_LEVEL2, "Segment HighLighting" ) break; // NS
- case 0x06 : ComOut( CGM_LEVEL2, "Segment Display Priority" ) break; // NS
- case 0x07 : ComOut( CGM_LEVEL2, "Segment Pick Priority" ) break; // NS
- case 0xfe : ComOut( CGM_GDSF_ONLY, "INQ Current Position" ) break;
- case 0xff : ComOut( CGM_GDSF_ONLY, "INQ Inserted Object Extent" ) break;
- default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break; // NS
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDoClass9()
-{
- switch ( mnElementID )
- {
- case 0x01 : ComOut( CGM_UNKNOWN_LEVEL, "Pixel Array" ) break; // NS
- case 0x02 : ComOut( CGM_UNKNOWN_LEVEL, "Create Bitmap" ) break; // NS
- case 0x03 : ComOut( CGM_UNKNOWN_LEVEL, "Delete Bitmap" ) break; // NS
- case 0x04 : ComOut( CGM_UNKNOWN_LEVEL, "Select Drawing Bitmap" ) break; // NS
- case 0x05 : ComOut( CGM_UNKNOWN_LEVEL, "Display Bitmap" ) break; // NS
- case 0x06 : ComOut( CGM_UNKNOWN_LEVEL, "Drawing Mode" ) break;
- case 0x07 : ComOut( CGM_UNKNOWN_LEVEL, "Mapped Bitmap ForeGrnd Color" ) break; // NS
- case 0x08 : ComOut( CGM_UNKNOWN_LEVEL, "Fill Bitmap" ) break; // NS
- case 0x09 : ComOut( CGM_UNKNOWN_LEVEL, "Two Operand BitBlt" ) break; // NS
- case 0x0a : ComOut( CGM_UNKNOWN_LEVEL, "Three Operand BitBlt" ) break; // NS
- default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
- }
-};
-
-// ---------------------------------------------------------------
-
-void CGM::ImplDoClass15()
-{
- switch ( mnElementID )
- {
- case 0x01 : ComOut( CGM_UNKNOWN_LEVEL, "Inquire Error Stack" ) break;
- case 0x02 : ComOut( CGM_UNKNOWN_LEVEL, "Pop Error Stack" ) break;
- case 0x03 : ComOut( CGM_UNKNOWN_LEVEL, "Empty Error Stack" ) break;
- default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
- }
-};
-
-// ---------------------------------------------------------------
diff --git a/goodies/source/filter.vcl/icgm/elements.cxx b/goodies/source/filter.vcl/icgm/elements.cxx
deleted file mode 100644
index 7c5b99c43539..000000000000
--- a/goodies/source/filter.vcl/icgm/elements.cxx
+++ /dev/null
@@ -1,398 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: elements.cxx,v $
- * $Revision: 1.6.38.1 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include "elements.hxx"
-
-// ---------------------------------------------------------------
-
-
-CGMElements::CGMElements( CGM& rCGM ) :
- mpCGM ( &rCGM )
-{
- Init();
-};
-
-// ---------------------------------------------------------------
-
-CGMElements::~CGMElements()
-{
- DeleteTable( aHatchTable );
- DeleteAllBundles( aLineList );
- DeleteAllBundles( aMarkerList );
- DeleteAllBundles( aEdgeList );
- DeleteAllBundles( aTextList );
- DeleteAllBundles( aFillList );
-}
-
-// ---------------------------------------------------------------
-
-CGMElements& CGMElements::operator=( CGMElements& rSource )
-{
- sal_uInt32 nIndex;
-
- nVDCIntegerPrecision = rSource.nVDCIntegerPrecision;
- nIntegerPrecision = rSource.nIntegerPrecision;
- eRealPrecision = rSource.eRealPrecision;
- nRealSize = rSource.nRealSize;
- nIndexPrecision = rSource.nIndexPrecision;
- nColorPrecision = rSource.nColorPrecision;
- nColorIndexPrecision = rSource.nColorIndexPrecision;
-
- nMetaFileVersion = rSource.nMetaFileVersion;
- eScalingMode = rSource.eScalingMode;
- nScalingFactor = rSource.nScalingFactor;
- eVDCType = rSource.eVDCType;
- eVDCRealPrecision = rSource.eVDCRealPrecision;
- nVDCRealSize = rSource.nVDCRealSize;
- aVDCExtent = rSource.aVDCExtent;
- aVDCExtentMaximum = rSource.aVDCExtentMaximum;
- eDeviceViewPortMode = rSource.eDeviceViewPortMode;
- nDeviceViewPortScale = rSource.nDeviceViewPortScale;
- eDeviceViewPortMap = rSource.eDeviceViewPortMap;
- eDeviceViewPortMapH = rSource.eDeviceViewPortMapH;
- eDeviceViewPortMapV = rSource.eDeviceViewPortMapV;
- aDeviceViewPort = rSource.aDeviceViewPort;
- nMitreLimit = rSource.nMitreLimit;
- eClipIndicator = rSource.eClipIndicator;
- aClipRect = rSource.aClipRect;
- eColorSelectionMode = rSource.eColorSelectionMode;
- eColorModel = rSource.eColorModel;
- nColorMaximumIndex = rSource.nColorMaximumIndex;
- nLatestColorMaximumIndex = rSource.nLatestColorMaximumIndex;
-
- for ( nIndex = 1; nIndex < 256; nIndex++ ) // do not overwrite the background color
- {
- aColorTableEntryIs[ nIndex ] = rSource.aColorTableEntryIs[ nIndex ];
- aColorTable[ nIndex ] = rSource.aColorTable[ nIndex ];
- aLatestColorTable[ nIndex ] = rSource.aColorTable[ nIndex ];
- }
-
- for ( nIndex = 0; nIndex < 8; nIndex++ )
- {
- nColorValueExtent[ nIndex ] = rSource.nColorValueExtent[ nIndex ];
- }
- nAspectSourceFlags = rSource.nAspectSourceFlags;
-
- CopyAllBundles( rSource.aLineList, aLineList );
- aLineBundle = rSource.aLineBundle;
- pLineBundle = (LineBundle*)GetBundle( aLineList, rSource.pLineBundle->GetIndex() );
- eLineWidthSpecMode = rSource.eLineWidthSpecMode;
- eLineCapType = rSource.eLineCapType;
- eLineJoinType = rSource.eLineJoinType;
-
- CopyAllBundles( rSource.aMarkerList, aMarkerList );
- aMarkerBundle = rSource.aMarkerBundle;
- pMarkerBundle = (MarkerBundle*)GetBundle( aMarkerList, rSource.pMarkerBundle->GetIndex() );
- eMarkerSizeSpecMode = rSource.eMarkerSizeSpecMode;
-
- CopyAllBundles( rSource.aEdgeList, aEdgeList );
- aEdgeBundle = rSource.aEdgeBundle;
- pEdgeBundle = (EdgeBundle*)GetBundle( aEdgeList, rSource.pEdgeBundle->GetIndex() );
- eEdgeVisibility = rSource.eEdgeVisibility;
- eEdgeWidthSpecMode = rSource.eEdgeWidthSpecMode;
-
- CopyAllBundles( rSource.aTextList, aTextList );
- aTextBundle = rSource.aTextBundle;
- pTextBundle = (TextBundle*)GetBundle( aTextList, rSource.pTextBundle->GetIndex() );
- nCharacterHeight = rSource.nCharacterHeight;
- nCharacterOrientation[ 0 ] = rSource.nCharacterOrientation[ 0 ];
- nCharacterOrientation[ 1 ] = rSource.nCharacterOrientation[ 1 ];
- nCharacterOrientation[ 2 ] = rSource.nCharacterOrientation[ 2 ];
- nCharacterOrientation[ 3 ] = rSource.nCharacterOrientation[ 3 ];
- eUnderlineMode = rSource.eUnderlineMode;
- nUnderlineColor = rSource.nUnderlineColor;
- eTextPath = rSource.eTextPath;
- eTextAlignmentH = rSource.eTextAlignmentH;
- eTextAlignmentV = rSource.eTextAlignmentV;
- nTextAlignmentHCont = rSource.nTextAlignmentHCont;
- nTextAlignmentVCont = rSource.nTextAlignmentVCont;
- nCharacterSetIndex = rSource.nCharacterSetIndex;
- nAlternateCharacterSetIndex = rSource.nAlternateCharacterSetIndex;
- aFontList = rSource.aFontList;
- eCharacterCodingA = rSource.eCharacterCodingA;
-
- CopyAllBundles( rSource.aFillList, aFillList );
- aFillBundle = rSource.aFillBundle;
- pFillBundle = (FillBundle*)GetBundle( aFillList, rSource.pFillBundle->GetIndex() );
- aFillRefPoint = rSource.aFillRefPoint;
- eTransparency = rSource.eTransparency;
- nAuxiliaryColor = rSource.nAuxiliaryColor;
-
- DeleteTable( aHatchTable );
- HatchEntry* pSource = (HatchEntry*)rSource.aHatchTable.First();
- while ( pSource )
- {
- sal_uInt32 nKey = rSource.aHatchTable.GetKey( pSource );
- aHatchTable.Insert( nKey, new HatchEntry( *pSource ) );
- pSource = (HatchEntry*)rSource.aHatchTable.Next();
- }
- bSegmentCount = rSource.bSegmentCount;
- return (*this);
-}
-
-// ---------------------------------------------------------------
-
-void CGMElements::Init()
-{
-
- nIntegerPrecision = nIndexPrecision = 2;
- nRealSize = nVDCRealSize = 4;
- nColorIndexPrecision = 1;
- nColorPrecision = 1;
- nVDCIntegerPrecision = 2;
- eRealPrecision = eVDCRealPrecision = RP_FIXED; //RP_FLOAT;
-
- nMetaFileVersion = 1;
- eScalingMode = SM_ABSTRACT;
- eVDCType = VDC_INTEGER;
- aVDCExtent.Left = aVDCExtent.Bottom = 0;
-// aVDCExtent.Right = aVDCExtent.Top = 32767;
- aVDCExtent.Right = aVDCExtent.Top = 1.0;
- aVDCExtentMaximum.Left = aVDCExtentMaximum.Bottom = 0;
-// aVDCExtentMaximum.Right = aVDCExtentMaximum.Top = 32767;
- aVDCExtentMaximum.Right = aVDCExtentMaximum.Top = 1.0;
-
- eDeviceViewPortMode = DVPM_FRACTION;
- nDeviceViewPortScale = 1;
- eDeviceViewPortMap = DVPM_FORCED;
- eDeviceViewPortMapH = DVPMH_LEFT;
- eDeviceViewPortMapV = DVPMV_BOTTOM;
- aDeviceViewPort.Left = 0;
- aDeviceViewPort.Top = 1;
- aDeviceViewPort.Right = 0;
- aDeviceViewPort.Bottom = 1;
-
- nMitreLimit = 32767;
- eClipIndicator = CI_ON;
- aClipRect = aVDCExtent;
-
- eColorSelectionMode = CSM_INDEXED;
- eColorModel = CM_RGB;
- nColorMaximumIndex = 63;
- int i;
- for ( i = 0; i < 256; aColorTableEntryIs[ i++ ] = 0 ) ;
- aColorTable[ 0 ] = 0;
- for ( i = 1; i < 256; aColorTable[ i++ ] = 0xffffff ) ;
- nLatestColorMaximumIndex = 63;
- aLatestColorTable[ 0 ] = 0;
- for ( i = 1; i < 256; aLatestColorTable[ i++ ] = 0xffffff ) ;
- nColorValueExtent[ 0 ] = nColorValueExtent[ 1 ] = nColorValueExtent[ 2 ] = 0;
- nColorValueExtent[ 3 ] = nColorValueExtent[ 4 ] = nColorValueExtent[ 5 ] = 255;
-
- nAspectSourceFlags = 0; // all flags are individual
-
- eLineWidthSpecMode = SM_SCALED; // line parameter
- eLineCapType = LCT_NONE;
- eLineJoinType = LJT_NONE;
- pLineBundle = &aLineBundle; // line bundle parameter
- aLineBundle.SetIndex( 1 );
- aLineBundle.eLineType = LT_SOLID;
- aLineBundle.nLineWidth = 1;
- aLineBundle.SetColor( 0xffffff );
- InsertBundle( aLineList, aLineBundle );
-
- eMarkerSizeSpecMode = SM_SCALED; // marker parameter
- pMarkerBundle = &aMarkerBundle; // marker bundle parameter
- aMarkerBundle.SetIndex( 1 );
- aMarkerBundle.eMarkerType = MT_STAR;
- aMarkerBundle.nMarkerSize = 1;
- aMarkerBundle.SetColor( 0xffffff );
- InsertBundle( aMarkerList, aMarkerBundle );
-
- eEdgeVisibility = EV_OFF; // edge parameter
- eEdgeWidthSpecMode = SM_SCALED;
- pEdgeBundle = &aEdgeBundle; // edge bundle parameter
- aEdgeBundle.SetIndex( 1 );
- aEdgeBundle.eEdgeType = ET_SOLID;
- aEdgeBundle.nEdgeWidth = 1;
- aEdgeBundle.SetColor( 0xffffff );
- InsertBundle( aEdgeList, aEdgeBundle );
-
- nCharacterHeight = 327; // text parameter
- nCharacterOrientation[0] = 0;
- nCharacterOrientation[1] = 1;
- nCharacterOrientation[2] = 1;
- nCharacterOrientation[3] = 0;
- eUnderlineMode = UM_OFF;
- nUnderlineColor = 0xffffff;
- eTextPath = TPR_RIGHT;
- eTextAlignmentH = TAH_NORMAL;
- eTextAlignmentV = TAV_NORMAL;
- nCharacterSetIndex = nAlternateCharacterSetIndex = 1;
- eCharacterCodingA = CCA_BASIC_7;
- pTextBundle = &aTextBundle; // text bundle parameter
- aTextBundle.SetIndex( 1 );
- aTextBundle.nTextFontIndex = 1;
- aTextBundle.eTextPrecision = TPR_STRING;
- aTextBundle.nCharacterExpansion = 1;
- aTextBundle.nCharacterSpacing = 0;
- aTextBundle.SetColor( 0xffffff );
- InsertBundle( aTextList, aTextBundle );
-
- pFillBundle = &aFillBundle; // fill bundle parameter
- aFillBundle.SetIndex( 1 );
- aFillBundle.eFillInteriorStyle = FIS_HOLLOW;
- aFillBundle.nFillHatchIndex = 1;
- aFillBundle.nFillPatternIndex = 1;
- aFillBundle.SetColor( 0xffffff );
- InsertBundle( aFillList, aFillBundle );
-
- ImplInsertHatch( 0, 0, 0, 0 );
- ImplInsertHatch( 1, 0, 125, 0 );
- ImplInsertHatch( 2, 0, 125, 900 );
- ImplInsertHatch( 3, 0, 125, 450 );
- ImplInsertHatch( 4, 0, 125, 1350 );
- ImplInsertHatch( 5, 1, 125, 0 );
- ImplInsertHatch( 6, 1, 125, 450 );
- ImplInsertHatch( -1, 0, 75, 0 );
- ImplInsertHatch( -2, 0, 75, 900 );
- ImplInsertHatch( -3, 0, 75, 450 );
- ImplInsertHatch( -4, 0, 75, 1350 );
- ImplInsertHatch( -5, 1, 75, 0 );
- ImplInsertHatch( -6, 1, 75, 450 );
- ImplInsertHatch( -7, 2, 125, 0 );
- ImplInsertHatch( -8, 2, 125, 900 );
- ImplInsertHatch( -9, 2, 125, 450 );
- ImplInsertHatch( -10, 2, 125, 1350 );
- ImplInsertHatch( -11, 0, 40, 0 );
- ImplInsertHatch( -12, 0, 40, 900 );
- ImplInsertHatch( -13, 0, 40, 450 );
- ImplInsertHatch( -14, 0, 40, 1350 );
- ImplInsertHatch( -15, 1, 40, 0 );
- ImplInsertHatch( -16, 1, 40, 900 );
- ImplInsertHatch( -21, 0, 250, 0 );
- ImplInsertHatch( -22, 0, 250, 900 );
- ImplInsertHatch( -23, 0, 250, 450 );
- ImplInsertHatch( -24, 0, 250, 1350 );
- ImplInsertHatch( -25, 1, 250, 0 );
- ImplInsertHatch( -26, 1, 250, 450 );
-
- eTransparency = T_ON;
-
- nBackGroundColor = nAuxiliaryColor = 0;
-
- bSegmentCount = sal_False;
-}
-
-// ---------------------------------------------------------------
-
-void CGMElements::ImplInsertHatch( sal_Int32 nKey, int nStyle, long nDistance, long nAngle )
-{
- HatchEntry* pHatchEntry;
- pHatchEntry = new HatchEntry;
- aHatchTable.Insert( (sal_uInt32)nKey, pHatchEntry );
- pHatchEntry->HatchStyle = nStyle;
- pHatchEntry->HatchDistance = nDistance;
- pHatchEntry->HatchAngle = nAngle;
-}
-
-// ---------------------------------------------------------------
-
-void CGMElements::DeleteTable( Table& rTable )
-{
- HatchEntry* pPtr = (HatchEntry*)rTable.First();
- while ( pPtr )
- {
- delete pPtr;
- pPtr = (HatchEntry*)rTable.Next();
- }
- rTable.Clear();
-}
-
-// ---------------------------------------------------------------
-
-void CGMElements::DeleteAllBundles( List& rList )
-{
- void* pPtr = rList.First();
- while( pPtr )
- {
- delete (Bundle*)pPtr;
- pPtr = rList.Next();
- }
-};
-
-
-// ---------------------------------------------------------------
-
-void CGMElements::CopyAllBundles( List& rSource, List& rDest )
-{
- DeleteAllBundles( rDest );
- rDest.Clear();
-
- void* pPtr = rSource.First();
- while( pPtr )
- {
- Bundle* pTempBundle = ( (Bundle*)pPtr)->Clone();
- rDest.Insert( pTempBundle, LIST_APPEND );
- pPtr = rSource.Next();
- }
-};
-
-// ---------------------------------------------------------------
-
-Bundle* CGMElements::GetBundleIndex( sal_uInt32 nIndex, List& rList, Bundle& rBundle )
-{
- rBundle.SetIndex( nIndex );
- Bundle* pBundle = GetBundle( rList, nIndex );
- if ( !pBundle )
- pBundle = InsertBundle( rList, rBundle );
- return pBundle;
-}
-
-// ---------------------------------------------------------------
-
-Bundle* CGMElements::GetBundle( List& rList, long nIndex )
-{
- Bundle* pBundle = (Bundle*)rList.First();
- while( pBundle && ( pBundle->GetIndex() != nIndex ) )
- {
- pBundle = (Bundle*)rList.Next();
- }
- return pBundle;
-}
-
-// ---------------------------------------------------------------
-
-Bundle* CGMElements::InsertBundle( List& rList, Bundle& rBundle )
-{
- Bundle* pBundle = GetBundle( rList, rBundle.GetIndex() );
- if ( pBundle )
- {
- rList.Remove( pBundle );
- delete pBundle;
- }
- pBundle = rBundle.Clone();
- rList.Insert( pBundle, LIST_APPEND );
- return pBundle;
-};
-
diff --git a/goodies/source/filter.vcl/icgm/elements.hxx b/goodies/source/filter.vcl/icgm/elements.hxx
deleted file mode 100644
index 4df6c8602a2c..000000000000
--- a/goodies/source/filter.vcl/icgm/elements.hxx
+++ /dev/null
@@ -1,148 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: elements.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef CGM_ELEMENTS_HXX_
-#define CGM_ELEMENTS_HXX_
-
-#include "main.hxx"
-#include <tools/table.hxx>
-
-#define nBackGroundColor aColorTable[ 0 ]
-
-class CGMElements
-{
- void ImplInsertHatch( sal_Int32 Key, int Style, long Distance, long Angle );
- public:
- CGM* mpCGM;
- long nMetaFileVersion;
-
- sal_uInt32 nIntegerPrecision; // maybe 1, 2, 4 Bytes
- sal_uInt32 nIndexPrecision; // " " "
- RealPrecision eRealPrecision;
- sal_uInt32 nRealSize; // maybe 4 or 8 bytes
- sal_uInt32 nColorPrecision; // " " "
- sal_uInt32 nColorIndexPrecision;// " " "
-
- ScalingMode eScalingMode;
- double nScalingFactor;
-
- VDCType eVDCType; // Integer / Real
- sal_uInt32 nVDCIntegerPrecision;
- RealPrecision eVDCRealPrecision;
- sal_uInt32 nVDCRealSize;
- FloatRect aVDCExtent;
- FloatRect aVDCExtentMaximum;
-
- DeviceViewPortMode eDeviceViewPortMode;
- double nDeviceViewPortScale;
- DeviceViewPortMap eDeviceViewPortMap;
- DeviceViewPortMapH eDeviceViewPortMapH;
- DeviceViewPortMapV eDeviceViewPortMapV;
- FloatRect aDeviceViewPort;
-
- double nMitreLimit;
-
- ClipIndicator eClipIndicator;
- FloatRect aClipRect;
-
- ColorSelectionMode eColorSelectionMode;
- ColorModel eColorModel;
- sal_uInt32 nColorMaximumIndex; // default 63
- sal_uInt32 nLatestColorMaximumIndex; // default 63
- sal_Int8 aColorTableEntryIs[ 256 ];
- sal_uInt32 aColorTable[ 256 ];
- sal_uInt32 aLatestColorTable[ 256 ];
- sal_uInt32 nColorValueExtent[ 8 ]; // RGB, CMYK
-
- // ASPECT SOURCE FLAGS
- sal_uInt32 nAspectSourceFlags; // bit = 0 -> INDIVIDUAL
- // 1 -> BUNDLED
-
- LineBundle* pLineBundle; // Pointer to the current LineBundleIndex
- LineBundle aLineBundle;
- List aLineList;
- SpecMode eLineWidthSpecMode;
- LineCapType eLineCapType;
- LineJoinType eLineJoinType;
-
- MarkerBundle* pMarkerBundle; // Pointer to the current MarkerBundleIndex
- MarkerBundle aMarkerBundle;
- List aMarkerList;
- SpecMode eMarkerSizeSpecMode;
-
- EdgeBundle* pEdgeBundle; // Pointer to the current EdgeBundleIndex
- EdgeBundle aEdgeBundle;
- List aEdgeList;
- EdgeVisibility eEdgeVisibility;
- SpecMode eEdgeWidthSpecMode;
-
- TextBundle* pTextBundle; // Pointer to the current TextBundleIndex
- TextBundle aTextBundle;
- List aTextList;
- double nCharacterHeight;
- double nCharacterOrientation[ 4 ];
- UnderlineMode eUnderlineMode;
- sal_uInt32 nUnderlineColor;
- TextPath eTextPath;
- TextAlignmentH eTextAlignmentH;
- TextAlignmentV eTextAlignmentV;
- double nTextAlignmentHCont;
- double nTextAlignmentVCont;
- long nCharacterSetIndex;
- long nAlternateCharacterSetIndex;
- CharacterCodingA eCharacterCodingA;
- CGMFList aFontList;
-
- FillBundle* pFillBundle; // Pointer to the current EdgeBundleIndex
- FillBundle aFillBundle;
- List aFillList;
- FloatPoint aFillRefPoint;
- Table aHatchTable;
-
- Transparency eTransparency;
-
- sal_uInt32 nAuxiliaryColor;
-
- // Delimiter Counts -> which will be increased by each 'begin' operation
- // and decreased by each 'end' operation
- sal_Bool bSegmentCount;
- CGMElements( CGM& rCGM );
- ~CGMElements();
- CGMElements& operator=( CGMElements& );
- void Init();
- void DeleteTable( Table& );
- Bundle* GetBundleIndex( sal_uInt32 nIndex, List&, Bundle& );
- Bundle* GetBundle( List& rList, long nIndex );
- Bundle* InsertBundle( List&, Bundle& );
- void DeleteAllBundles( List& );
- void CopyAllBundles( List& Source, List& Dest );
-};
-
-#endif
-
diff --git a/goodies/source/filter.vcl/icgm/exports.map b/goodies/source/filter.vcl/icgm/exports.map
deleted file mode 100644
index eaa1db885d5e..000000000000
--- a/goodies/source/filter.vcl/icgm/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-CGMIMPORTER_1_0 {
- global:
- ImportCGM;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/icgm/main.hxx b/goodies/source/filter.vcl/icgm/main.hxx
deleted file mode 100644
index cdc4b052d3ad..000000000000
--- a/goodies/source/filter.vcl/icgm/main.hxx
+++ /dev/null
@@ -1,66 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: main.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef CGM_MAIN_HXX
-#define CGM_MAIN_HXX
-
-#include "cgm.hxx"
-
-// ---------------------------------------------------------------
-
-#define CGM_LEVEL1 0x0001 // VERSION 1 METAFILE
-#define CGM_LEVEL2 0x0002
-#define CGM_LEVEL3 0x0003
-#define CGM_GDSF_ONLY 0x00F0
-#define CGM_UNKNOWN_LEVEL 0x00F1
-#define CGM_UNKNOWN_COMMAND 0x00F2
-#define CGM_DESCRIPTION 0x00F3
-
-#define CGM_EXTENDED_PRIMITIVES_SET 0x0100 // INDICATES PRIMITIVES WHICH ARE AVAILABLE IN
- // LEVEL 1 BUT ARE NOT DEFINED IN ISO 7942(GKS)
-#define CGM_DRAWING_PLUS_CONTROL_SET 0x0200 // INDICATES THAT THIS IS AN ADDITIONAL LEVEL 1
- // ELEMENT
-#define ComOut( Level, Description ) if ( mpCommentOut ) ImplComment( Level, Description );
-
-#define BMCOL( _col ) BitmapColor( (sal_Int8)(_col >> 16 ), (sal_Int8)( _col >> 8 ), (sal_Int8)_col )
-#define ALIGN2( _nElementSize ) { _nElementSize = ( _nElementSize + 1 ) & ~1; }
-#define ALIGN4( _nElementSize ) { _nElementSize = ( _nElementSize + 3 ) & ~3; }
-#define ALIGN8( _nElementSize ) { _nElementSize = ( _nElementSize + 7 ) & ~7; }
-
-#include <vcl/salbtype.hxx>
-#include <tools/stream.hxx>
-#include <tools/list.hxx>
-#include "bundles.hxx"
-#include "bitmap.hxx"
-#include "elements.hxx"
-
-
-#endif
-
diff --git a/goodies/source/filter.vcl/icgm/makefile.mk b/goodies/source/filter.vcl/icgm/makefile.mk
deleted file mode 100644
index ee62bbfb051c..000000000000
--- a/goodies/source/filter.vcl/icgm/makefile.mk
+++ /dev/null
@@ -1,84 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.12 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-PRJNAME=goodies
-TARGET=icgm
-ENABLE_EXCEPTIONS=TRUE
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/cgm.obj \
- $(SLO)$/chart.obj \
- $(SLO)$/class0.obj \
- $(SLO)$/class1.obj \
- $(SLO)$/class2.obj \
- $(SLO)$/class3.obj \
- $(SLO)$/class4.obj \
- $(SLO)$/class5.obj \
- $(SLO)$/class7.obj \
- $(SLO)$/classx.obj \
- $(SLO)$/outact.obj \
- $(SLO)$/actimpr.obj \
- $(SLO)$/bundles.obj \
- $(SLO)$/bitmap.obj \
- $(SLO)$/elements.obj
-# $(SLO)$/svdem.obj
-
-SHL1TARGET = icg$(DLLPOSTFIX)
-SHL1IMPLIB = icgm
-SHL1VERSIONMAP=exports.map
-SHL1DEF = $(MISC)$/$(SHL1TARGET).def
-SHL1LIBS = $(SLB)$/icgm.lib
-
-DEF1NAME=$(SHL1TARGET)
-
-.IF "$(GUI)"=="OS2"
-SHL1OBJS = $(SLO)$/class0.obj
-.ENDIF
-
-SHL1STDLIBS = \
- $(TKLIB) \
- $(VCLLIB) \
- $(UNOTOOLSLIB) \
- $(TOOLSLIB) \
- $(CPPULIB) \
- $(SALLIB)
-.ENDIF
-
-# --- Targets --------------------------------------------------------------
-
-.INCLUDE : target.mk
-
diff --git a/goodies/source/filter.vcl/icgm/outact.cxx b/goodies/source/filter.vcl/icgm/outact.cxx
deleted file mode 100644
index 22eac554a109..000000000000
--- a/goodies/source/filter.vcl/icgm/outact.cxx
+++ /dev/null
@@ -1,203 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outact.cxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <outact.hxx>
-#include <vcl/gradient.hxx>
-
-using namespace ::com::sun::star;
-
-// ---------------------------------------------------------------
-
-CGMOutAct::CGMOutAct( CGM& rCGM )
-{
- mpCGM = &rCGM;
- mnCurrentPage = 0;
- mnGroupActCount = mnGroupLevel = 0;
- mpGroupLevel = new sal_uInt32[ CGM_OUTACT_MAX_GROUP_LEVEL ];
- mpPoints = (Point*)new sal_Int8[ 0x2000 * sizeof( Point ) ];
- mpFlags = new BYTE[ 0x2000 ];
-
- mnIndex = 0;
- mpGradient = NULL;
-};
-
-// ---------------------------------------------------------------
-
-CGMOutAct::~CGMOutAct()
-{
- delete[] (sal_Int8*) mpPoints;
- delete[] mpFlags;
- delete[] mpGroupLevel;
-
- if ( mpGradient )
- delete mpGradient;
-};
-
-// ---------------------------------------------------------------
-
-void CGMOutAct::BeginFigure()
-{
- if ( mnIndex )
- EndFigure();
-
- BeginGroup();
- mnIndex = 0;
-}
-
-// ---------------------------------------------------------------
-
-void CGMOutAct::CloseRegion()
-{
- if ( mnIndex > 2 )
- {
- NewRegion();
- DrawPolyPolygon( maPolyPolygon );
- maPolyPolygon.Clear();
- }
-}
-
-// ---------------------------------------------------------------
-
-void CGMOutAct::NewRegion()
-{
- if ( mnIndex > 2 )
- {
- Polygon aPolygon( mnIndex, mpPoints, mpFlags );
- maPolyPolygon.Insert( aPolygon );
- }
- mnIndex = 0;
-}
-
-// ---------------------------------------------------------------
-
-void CGMOutAct::EndFigure()
-{
- NewRegion();
- DrawPolyPolygon( maPolyPolygon );
- maPolyPolygon.Clear();
- EndGroup();
- mnIndex = 0;
-}
-
-// ---------------------------------------------------------------
-
-void CGMOutAct::RegPolyLine( Polygon& rPolygon, sal_Bool bReverse )
-{
- USHORT nPoints = rPolygon.GetSize();
- if ( nPoints )
- {
- if ( bReverse )
- {
- for ( USHORT i = 0; i < nPoints; i++ )
- {
- mpPoints[ mnIndex + i ] = rPolygon.GetPoint( nPoints - i - 1 );
- mpFlags[ mnIndex + i ] = (sal_Int8)rPolygon.GetFlags( nPoints - i - 1 );
- }
- }
- else
- {
- for ( USHORT i = 0; i < nPoints; i++ )
- {
- mpPoints[ mnIndex + i ] = rPolygon.GetPoint( i );
- mpFlags[ mnIndex + i ] = (sal_Int8)rPolygon.GetFlags( i );
- }
- }
- mnIndex = mnIndex + nPoints;
- }
-}
-
-// ---------------------------------------------------------------
-
-void CGMOutAct::SetGradientOffset( long nHorzOfs, long nVertOfs, sal_uInt32 /*nType*/ )
-{
- if ( !mpGradient )
- mpGradient = new awt::Gradient;
- mpGradient->XOffset = ( (sal_uInt16)nHorzOfs & 0x7f );
- mpGradient->YOffset = ( (sal_uInt16)nVertOfs & 0x7f );
-}
-
-// ---------------------------------------------------------------
-
-void CGMOutAct::SetGradientAngle( long nAngle )
-{
- if ( !mpGradient )
- mpGradient = new awt::Gradient;
- mpGradient->Angle = sal::static_int_cast< sal_Int16 >(nAngle);
-}
-
-// ---------------------------------------------------------------
-
-void CGMOutAct::SetGradientDescriptor( sal_uInt32 nColorFrom, sal_uInt32 nColorTo )
-{
- if ( !mpGradient )
- mpGradient = new awt::Gradient;
- mpGradient->StartColor = nColorFrom;
- mpGradient->EndColor = nColorTo;
-}
-
-// ---------------------------------------------------------------
-
-void CGMOutAct::SetGradientStyle( sal_uInt32 nStyle, double /*fRatio*/ )
-{
- if ( !mpGradient )
- mpGradient = new awt::Gradient;
- switch ( nStyle )
- {
- case 0xff :
- {
- mpGradient->Style = awt::GradientStyle_AXIAL;
- }
- break;
- case 4 :
- {
- mpGradient->Style = awt::GradientStyle_RADIAL; // CONICAL
- }
- break;
- case 3 :
- {
- mpGradient->Style = awt::GradientStyle_RECT;
- }
- break;
- case 2 :
- {
- mpGradient->Style = awt::GradientStyle_ELLIPTICAL;
- }
- break;
- default :
- {
- mpGradient->Style = awt::GradientStyle_LINEAR;
- }
- }
-}
-
-
diff --git a/goodies/source/filter.vcl/icgm/outact.hxx b/goodies/source/filter.vcl/icgm/outact.hxx
deleted file mode 100644
index 3a78d6b73199..000000000000
--- a/goodies/source/filter.vcl/icgm/outact.hxx
+++ /dev/null
@@ -1,151 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outact.hxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef CGM_OUTACT_HXX_
-#define CGM_OUTACT_HXX_
-
-#include <com/sun/star/awt/Gradient.hpp>
-#include <com/sun/star/drawing/XDrawPages.hpp>
-#include <com/sun/star/drawing/XDrawPage.hpp>
-#include <com/sun/star/drawing/XShape.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-
-
-#define CGM_OUTACT_MAX_GROUP_LEVEL 64
-
-#include "cgm.hxx"
-#include <chart.hxx>
-#include <tools/poly.hxx>
-
-typedef struct NodeFrameSet
-{
- Point nTopLeft;
- Point nBottomRight;
- ::com::sun::star::awt::Size nSize;
-} NodeFrameSet;
-
-class CGM;
-class VclGradient;
-class CGMOutAct
-{
- protected:
- sal_uInt16 mnCurrentPage; // defaulted to zero
-
- sal_uInt32 mnGroupActCount; // grouping
- sal_uInt32 mnGroupLevel;
- sal_uInt32* mpGroupLevel;
-
- USHORT mnIndex; // figure
- BYTE* mpFlags;
- Point* mpPoints;
- PolyPolygon maPolyPolygon;
- ::com::sun::star::awt::Gradient* mpGradient;
-
- CGM* mpCGM;
-
- public:
- CGMOutAct( CGM& rCGM );
- virtual ~CGMOutAct();
- virtual void FirstOutPut() { mpCGM->mbFirstOutPut = sal_False; } ;
- virtual void InsertPage() { mnCurrentPage++; } ;
- virtual void BeginGroup() {} ;
- virtual void EndGroup() {};
- virtual void EndGrouping() {} ;
- void BeginFigure() ;
- void CloseRegion() ;
- void NewRegion() ;
- void EndFigure() ;
- void RegPolyLine( Polygon&, sal_Bool bReverse = sal_False ) ;
- void SetGradientOffset( long nHorzOfs, long nVertOfs, sal_uInt32 nType );
- void SetGradientAngle( long nAngle );
- void SetGradientDescriptor( sal_uInt32 nColorFrom, sal_uInt32 nColorTo );
- void SetGradientStyle( sal_uInt32 nStyle, double fRatio );
- virtual void DrawRectangle( FloatRect& ) {} ;
- virtual void DrawEllipse( FloatPoint&, FloatPoint&, double& ) {} ;
- virtual void DrawEllipticalArc( FloatPoint&, FloatPoint&, double&,
- sal_uInt32, double&, double&) {} ;
- virtual void DrawBitmap( CGMBitmapDescriptor* ) {} ;
- virtual void DrawPolygon( Polygon& ) {} ;
- virtual void DrawPolyLine( Polygon& ) {} ;
- virtual void DrawPolybezier( Polygon& ) {} ;
- virtual void DrawPolyPolygon( PolyPolygon& ) {} ;
- virtual void DrawText( ::com::sun::star::awt::Point&, ::com::sun::star::awt::Size&, char*, sal_uInt32, FinalFlag ) {} ;
- virtual void AppendText( char*, sal_uInt32, FinalFlag ) {} ;
- virtual sal_uInt32 DrawText( TextEntry*, NodeFrameSet&, sal_uInt32 ) { return 0; } ;
- virtual void DrawChart(){} ;
-};
-
-class CGMImpressOutAct : public CGMOutAct
-{
- ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPages > maXDrawPages;
- ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > maXDrawPage;
-
-// ::com::sun::star::uno::Reference< XServiceRegistry > maXServiceRegistry;
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > maXMultiServiceFactory;
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > maXServiceManagerSC;
- ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > maXShape;
- sal_Bool ImplCreateShape( const ::rtl::OUString& rType );
-
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > maXPropSet;
- ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > maXShapes;
-
- sal_uInt32 nFinalTextCount;
-
- sal_Bool ImplInitPage();
- void ImplSetOrientation( FloatPoint& RefPoint, double& Orientation ) ;
- void ImplSetLineBundle() ;
- void ImplSetFillBundle() ;
- void ImplSetTextBundle( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & ) ;
-public:
- CGMImpressOutAct( CGM&, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & ) ;
- ~CGMImpressOutAct() {} ;
- virtual void InsertPage() ;
- virtual void BeginGroup() ;
- virtual void EndGroup() ;
- virtual void EndGrouping() ;
- virtual void DrawRectangle( FloatRect& ) ;
- virtual void DrawEllipse( FloatPoint& center, FloatPoint&, double& Orientation ) ;
- virtual void DrawEllipticalArc( FloatPoint& center, FloatPoint& size, double& orientation,
- sal_uInt32 etype, double& startangle, double& endangle ) ;
- virtual void DrawBitmap( CGMBitmapDescriptor* ) ;
- virtual void DrawPolygon( Polygon& ) ;
- virtual void DrawPolyLine( Polygon& ) ;
- virtual void DrawPolybezier( Polygon& ) ;
- virtual void DrawPolyPolygon( PolyPolygon& ) ;
- virtual void DrawText( ::com::sun::star::awt::Point& TextRectPos, ::com::sun::star::awt::Size& TextRectSize, char* String, sal_uInt32 StringSize, FinalFlag ) ;
- virtual void AppendText( char* String, sal_uInt32 StringSize, FinalFlag ) ;
- virtual sal_uInt32 DrawText( TextEntry*, NodeFrameSet&, sal_uInt32 ) ;
- virtual void DrawChart();
-};
-
-
-#endif
-
diff --git a/goodies/source/filter.vcl/idxf/dxf2mtf.cxx b/goodies/source/filter.vcl/idxf/dxf2mtf.cxx
deleted file mode 100644
index 654b66888f67..000000000000
--- a/goodies/source/filter.vcl/idxf/dxf2mtf.cxx
+++ /dev/null
@@ -1,983 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxf2mtf.cxx,v $
- * $Revision: 1.14 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <string.h>
-#include <vcl/gdimtf.hxx>
-#include <vcl/virdev.hxx>
-#include <tools/poly.hxx>
-#include "dxf2mtf.hxx"
-
-#include <math.h>
-
-
-ULONG DXF2GDIMetaFile::CountEntities(const DXFEntities & rEntities)
-{
- const DXFBasicEntity * pBE;
- ULONG nRes;
-
- nRes=0;
- for (pBE=rEntities.pFirst; pBE!=NULL; pBE=pBE->pSucc) nRes++;
- return nRes;
-}
-
-
-void DXF2GDIMetaFile::MayCallback(ULONG /*nMainEntitiesProcessed*/)
-{
- // ULONG nPercent;
-/*
- if (pCallback!=NULL && nMainEntitiesCount!=0) {
- nPercent=nMinPercent+(nMaxPercent-nMinPercent)*nMainEntitiesProcessed/nMainEntitiesCount;
- if (nPercent>=nLastPercent+4) {
- if (((*pCallback)(pCallerData,(USHORT)nPercent))==TRUE) bStatus=FALSE;
- nLastPercent=nPercent;
- }
- }
-*/
-}
-
-Color DXF2GDIMetaFile::ConvertColor(BYTE nColor)
-{
- return Color(
- pDXF->aPalette.GetRed( nColor ),
- pDXF->aPalette.GetGreen( nColor ),
- pDXF->aPalette.GetBlue( nColor ) );
-}
-
-long DXF2GDIMetaFile::GetEntityColor(const DXFBasicEntity & rE)
-{
- long nColor;
- const DXFLayer * pLayer;
-
- nColor=rE.nColor;
- if (nColor==256) {
- if (rE.sLayer[0]=='0' && rE.sLayer[1]==0) nColor=nParentLayerColor;
- else {
- pLayer=pDXF->aTables.SearchLayer(rE.sLayer);
- if (pLayer!=NULL) nColor=pLayer->nColor;
- else nColor=nParentLayerColor;
- }
- }
- else if (nColor==0) nColor=nBlockColor;
- return nColor;
-}
-
-DXFLineInfo DXF2GDIMetaFile::LTypeToDXFLineInfo(const char * sLineType)
-{
- const DXFLType * pLT;
- DXFLineInfo aDXFLineInfo;
-
- pLT=pDXF->aTables.SearchLType(sLineType);
- if (pLT==NULL || pLT->nDashCount == 0) {
- aDXFLineInfo.eStyle = LINE_SOLID;
- }
- else {
- sal_Int32 i;
- double x;
- aDXFLineInfo.eStyle = LINE_DASH;
- for (i=0; i < (pLT->nDashCount); i++) {
- x = pLT->fDash[i] * pDXF->getGlobalLineTypeScale();
-// ####
- // x = (sal_Int32) rTransform.TransLineWidth( pLT->fDash[i] * pDXF->getGlobalLineTypeScale() );
- if ( x >= 0.0 ) {
- if ( aDXFLineInfo.nDotCount == 0 ) {
- aDXFLineInfo.nDotCount ++;
- aDXFLineInfo.fDotLen = x;
- }
- else if ( aDXFLineInfo.fDotLen == x ) {
- aDXFLineInfo.nDotCount ++;
- }
- else if ( aDXFLineInfo.nDashCount == 0 ) {
- aDXFLineInfo.nDashCount ++;
- aDXFLineInfo.fDashLen = x;
- }
- else if ( aDXFLineInfo.fDashLen == x ) {
- aDXFLineInfo.nDashCount ++;
- }
- else {
- // It is impossible to be converted.
- }
- }
- else {
- if ( aDXFLineInfo.fDistance == 0 ) {
- aDXFLineInfo.fDistance = -1 * x;
- }
- else {
- // It is impossible to be converted.
- }
- }
-
- }
- }
-
-#if 0
- if (aDXFLineInfo.DashCount > 0 && aDXFLineInfo.DashLen == 0.0)
- aDXFLineInfo.DashLen ( 1 );
- if (aDXFLineInfo.DotCount > 0 && aDXFLineInfo.DotLen() == 0.0)
- aDXFLineInfo.SetDotLen( 1 );
- if (aDXFLineInfo.GetDashCount > 0 || aDXFLineInfo.GetDotCount > 0)
- if (aDXFLineInfo.GetDistance() == 0)
- aDXFLineInfo.SetDistance( 1 );
-#endif
-
- return aDXFLineInfo;
-}
-
-DXFLineInfo DXF2GDIMetaFile::GetEntityDXFLineInfo(const DXFBasicEntity & rE)
-{
- DXFLineInfo aDXFLineInfo;
- const DXFLayer * pLayer;
-
- aDXFLineInfo.eStyle = LINE_SOLID;
- aDXFLineInfo.fWidth = 0;
- aDXFLineInfo.nDashCount = 0;
- aDXFLineInfo.fDashLen = 0;
- aDXFLineInfo.nDotCount = 0;
- aDXFLineInfo.fDotLen = 0;
- aDXFLineInfo.fDistance = 0;
-
- if (strcmp(rE.sLineType,"BYLAYER")==0) {
- if (rE.sLayer[0]=='0' && rE.sLayer[1]==0) aDXFLineInfo=aParentLayerDXFLineInfo;
- else {
- pLayer=pDXF->aTables.SearchLayer(rE.sLayer);
- if (pLayer!=NULL) aDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType);
- else aDXFLineInfo=aParentLayerDXFLineInfo;
- }
- }
- else if (strcmp(rE.sLineType,"BYBLOCK")==0) {
- aDXFLineInfo=aBlockDXFLineInfo;
- }
- else aDXFLineInfo=LTypeToDXFLineInfo(rE.sLineType);
- return aDXFLineInfo;
-}
-
-
-BOOL DXF2GDIMetaFile::SetLineAttribute(const DXFBasicEntity & rE, ULONG /*nWidth*/)
-{
- long nColor;
- Color aColor;
-
- nColor=GetEntityColor(rE);
- if (nColor<0) return FALSE;
- aColor=ConvertColor((BYTE)nColor);
-
- if (aActLineColor!=aColor) {
- pVirDev->SetLineColor( aActLineColor = aColor );
- }
-
- if (aActFillColor!=Color( COL_TRANSPARENT )) {
- pVirDev->SetFillColor(aActFillColor = Color( COL_TRANSPARENT ));
- }
- return TRUE;
-}
-
-
-BOOL DXF2GDIMetaFile::SetAreaAttribute(const DXFBasicEntity & rE)
-{
- long nColor;
- Color aColor;
-
- nColor=GetEntityColor(rE);
- if (nColor<0) return FALSE;
- aColor=ConvertColor((BYTE)nColor);
-
- if (aActLineColor!=aColor) {
- pVirDev->SetLineColor( aActLineColor = aColor );
- }
-
- if ( aActFillColor == Color( COL_TRANSPARENT ) || aActFillColor != aColor) {
- pVirDev->SetFillColor( aActFillColor = aColor );
- }
- return TRUE;
-}
-
-
-BOOL DXF2GDIMetaFile::SetFontAttribute(const DXFBasicEntity & rE, short nAngle, USHORT nHeight, double /*fWidthScale*/)
-{
- long nColor;
- Color aColor;
- Font aFont;
-
- nAngle=-nAngle;
- while (nAngle>3600) nAngle-=3600;
- while (nAngle<0) nAngle+=3600;
-
- nColor=GetEntityColor(rE);
- if (nColor<0) return FALSE;
- aColor=ConvertColor((BYTE)nColor);
-
- aFont.SetColor(aColor);
- aFont.SetTransparent(TRUE);
- aFont.SetFamily(FAMILY_SWISS);
- aFont.SetSize(Size(0,nHeight));
- aFont.SetAlign(ALIGN_BASELINE);
- aFont.SetOrientation(nAngle);
- if (aActFont!=aFont) {
- aActFont=aFont;
- pVirDev->SetFont(aActFont);
- }
-
- return TRUE;
-}
-
-
-void DXF2GDIMetaFile::DrawLineEntity(const DXFLineEntity & rE, const DXFTransform & rTransform)
-{
- if (SetLineAttribute(rE)) {
- Point aP0,aP1;
- rTransform.Transform(rE.aP0,aP0);
- rTransform.Transform(rE.aP1,aP1);
-
- DXFLineInfo aDXFLineInfo;
- aDXFLineInfo=GetEntityDXFLineInfo(rE);
- LineInfo aLineInfo;
- aLineInfo = rTransform.Transform(aDXFLineInfo);
-
-#if 0
- printf("%f\n", rTransform.TransLineWidth(1000.0));
-
- // LINE_NONE = 0, LINE_SOLID = 1, LINE_DASH = 2, LineStyle_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
- aLineInfo.SetStyle( LINE_DASH );
- aLineInfo.SetWidth( 300 );
- aLineInfo.SetDashCount( 2 );
- aLineInfo.SetDashLen( 100 );
- aLineInfo.SetDotCount( 1 );
- aLineInfo.SetDotLen( 0 );
- aLineInfo.SetDistance( 500 );
-#endif
-
- pVirDev->DrawLine(aP0,aP1,aLineInfo);
- if (rE.fThickness!=0) {
- Point aP2,aP3;
- rTransform.Transform(rE.aP0+DXFVector(0,0,rE.fThickness),aP2);
- rTransform.Transform(rE.aP1+DXFVector(0,0,rE.fThickness),aP3);
- pVirDev->DrawLine(aP2,aP3);
- pVirDev->DrawLine(aP0,aP2);
- pVirDev->DrawLine(aP1,aP3);
- }
- }
-}
-
-
-void DXF2GDIMetaFile::DrawPointEntity(const DXFPointEntity & rE, const DXFTransform & rTransform)
-{
-
- if (SetLineAttribute(rE)) {
- Point aP0;
- rTransform.Transform(rE.aP0,aP0);
- if (rE.fThickness==0) pVirDev->DrawPixel(aP0);
- else {
- Point aP1;
- rTransform.Transform(rE.aP0+DXFVector(0,0,rE.fThickness),aP1);
- pVirDev->DrawLine(aP0,aP1);
- }
- }
-}
-
-
-void DXF2GDIMetaFile::DrawCircleEntity(const DXFCircleEntity & rE, const DXFTransform & rTransform)
-{
- double frx,fry,fAng;
- USHORT nPoints,i;
- DXFVector aC;
-
- if (SetLineAttribute(rE)==FALSE) return;
- rTransform.Transform(rE.aP0,aC);
- if (rE.fThickness==0 && rTransform.TransCircleToEllipse(rE.fRadius,frx,fry)==TRUE) {
- pVirDev->DrawEllipse(
- Rectangle((long)(aC.fx-frx+0.5),(long)(aC.fy-fry+0.5),
- (long)(aC.fx+frx+0.5),(long)(aC.fy+fry+0.5)));
- }
- else {
- nPoints=OptPointsPerCircle;
- Polygon aPoly(nPoints);
- for (i=0; i<nPoints; i++) {
- fAng=2*3.14159265359/(double)(nPoints-1)*(double)i;
- rTransform.Transform(
- rE.aP0+DXFVector(rE.fRadius*cos(fAng),rE.fRadius*sin(fAng),0),
- aPoly[i]
- );
- }
- pVirDev->DrawPolyLine(aPoly);
- if (rE.fThickness!=0) {
- Polygon aPoly2(nPoints);
- for (i=0; i<nPoints; i++) {
- fAng=2*3.14159265359/(double)(nPoints-1)*(double)i;
- rTransform.Transform(
- rE.aP0+DXFVector(rE.fRadius*cos(fAng),rE.fRadius*sin(fAng),rE.fThickness),
- aPoly2[i]
- );
-
- }
- pVirDev->DrawPolyLine(aPoly2);
- for (i=0; i<nPoints-1; i++) pVirDev->DrawLine(aPoly[i],aPoly2[i]);
- }
- }
-}
-
-
-void DXF2GDIMetaFile::DrawArcEntity(const DXFArcEntity & rE, const DXFTransform & rTransform)
-{
- double frx,fry,fA1,fdA,fAng;
- USHORT nPoints,i;
- DXFVector aC;
- Point aPS,aPE;
-
- if (SetLineAttribute(rE)==FALSE) return;
- fA1=rE.fStart;
- fdA=rE.fEnd-fA1;
- while (fdA>=360.0) fdA-=360.0;
- while (fdA<=0) fdA+=360.0;
- rTransform.Transform(rE.aP0,aC);
- if (rE.fThickness==0 && fdA>5.0 && rTransform.TransCircleToEllipse(rE.fRadius,frx,fry)==TRUE) {
- DXFVector aVS(cos(fA1/180.0*3.14159265359),sin(fA1/180.0*3.14159265359),0.0);
- aVS*=rE.fRadius;
- aVS+=rE.aP0;
- DXFVector aVE(cos((fA1+fdA)/180.0*3.14159265359),sin((fA1+fdA)/180.0*3.14159265359),0.0);
- aVE*=rE.fRadius;
- aVE+=rE.aP0;
- if (rTransform.Mirror()==TRUE) {
- rTransform.Transform(aVS,aPS);
- rTransform.Transform(aVE,aPE);
- }
- else {
- rTransform.Transform(aVS,aPE);
- rTransform.Transform(aVE,aPS);
- }
- pVirDev->DrawArc(
- Rectangle((long)(aC.fx-frx+0.5),(long)(aC.fy-fry+0.5),
- (long)(aC.fx+frx+0.5),(long)(aC.fy+fry+0.5)),
- aPS,aPE
- );
- }
- else {
- nPoints=(USHORT)(fdA/360.0*(double)OptPointsPerCircle+0.5);
- if (nPoints<2) nPoints=2;
- Polygon aPoly(nPoints);
- for (i=0; i<nPoints; i++) {
- fAng=3.14159265359/180.0 * ( fA1 + fdA/(double)(nPoints-1)*(double)i );
- rTransform.Transform(
- rE.aP0+DXFVector(rE.fRadius*cos(fAng),rE.fRadius*sin(fAng),0),
- aPoly[i]
- );
- }
- pVirDev->DrawPolyLine(aPoly);
- if (rE.fThickness!=0) {
- Polygon aPoly2(nPoints);
- for (i=0; i<nPoints; i++) {
- fAng=3.14159265359/180.0 * ( fA1 + fdA/(double)(nPoints-1)*(double)i );
- rTransform.Transform(
- rE.aP0+DXFVector(rE.fRadius*cos(fAng),rE.fRadius*sin(fAng),rE.fThickness),
- aPoly2[i]
- );
- }
- pVirDev->DrawPolyLine(aPoly2);
- for (i=0; i<nPoints; i++) pVirDev->DrawLine(aPoly[i],aPoly2[i]);
- }
- }
-}
-
-
-void DXF2GDIMetaFile::DrawTraceEntity(const DXFTraceEntity & rE, const DXFTransform & rTransform)
-{
- if (SetLineAttribute(rE)) {
- Polygon aPoly(4);
- rTransform.Transform(rE.aP0,aPoly[0]);
- rTransform.Transform(rE.aP1,aPoly[1]);
- rTransform.Transform(rE.aP3,aPoly[2]);
- rTransform.Transform(rE.aP2,aPoly[3]);
- pVirDev->DrawPolygon(aPoly);
- if (rE.fThickness!=0) {
- USHORT i;
- Polygon aPoly2(4);
- DXFVector aVAdd(0,0,rE.fThickness);
- rTransform.Transform(rE.aP0+aVAdd,aPoly2[0]);
- rTransform.Transform(rE.aP1+aVAdd,aPoly2[1]);
- rTransform.Transform(rE.aP3+aVAdd,aPoly2[2]);
- rTransform.Transform(rE.aP2+aVAdd,aPoly2[3]);
- pVirDev->DrawPolygon(aPoly2);
- for (i=0; i<4; i++) pVirDev->DrawLine(aPoly[i],aPoly2[i]);
- }
- }
-}
-
-
-void DXF2GDIMetaFile::DrawSolidEntity(const DXFSolidEntity & rE, const DXFTransform & rTransform)
-{
- if (SetAreaAttribute(rE)) {
- USHORT nN;
- if (rE.aP2==rE.aP3) nN=3; else nN=4;
- Polygon aPoly(nN);
- rTransform.Transform(rE.aP0,aPoly[0]);
- rTransform.Transform(rE.aP1,aPoly[1]);
- rTransform.Transform(rE.aP3,aPoly[2]);
- if (nN>3) rTransform.Transform(rE.aP2,aPoly[3]);
- pVirDev->DrawPolygon(aPoly);
- if (rE.fThickness!=0) {
- Polygon aPoly2(nN);
- DXFVector aVAdd(0,0,rE.fThickness);
- rTransform.Transform(rE.aP0+aVAdd,aPoly2[0]);
- rTransform.Transform(rE.aP1+aVAdd,aPoly2[1]);
- rTransform.Transform(rE.aP3+aVAdd,aPoly2[2]);
- if (nN>3) rTransform.Transform(rE.aP2+aVAdd,aPoly2[3]);
- pVirDev->DrawPolygon(aPoly2);
- if (SetLineAttribute(rE)) {
- USHORT i;
- for (i=0; i<nN; i++) pVirDev->DrawLine(aPoly[i],aPoly2[i]);
- }
- }
- }
-}
-
-
-void DXF2GDIMetaFile::DrawTextEntity(const DXFTextEntity & rE, const DXFTransform & rTransform)
-{
- DXFVector aV;
- Point aPt;
- double fA;
- USHORT nHeight;
- short nAng;
- ByteString aStr( rE.sText );
- DXFTransform aT( DXFTransform(rE.fXScale,rE.fHeight,1.0,rE.fRotAngle,rE.aP0), rTransform );
- aT.TransDir(DXFVector(0,1,0),aV);
- nHeight=(USHORT)(aV.Abs()+0.5);
- fA=aT.CalcRotAngle();
- nAng=(short)(fA*10.0+0.5);
- aT.TransDir(DXFVector(1,0,0),aV);
- if ( SetFontAttribute( rE,nAng, nHeight, aV. Abs() ) )
- {
- String aUString( aStr, pDXF->getTextEncoding() );
- aT.Transform( DXFVector( 0, 0, 0 ), aPt );
- pVirDev->DrawText( aPt, aUString );
- }
-}
-
-
-void DXF2GDIMetaFile::DrawInsertEntity(const DXFInsertEntity & rE, const DXFTransform & rTransform)
-{
- const DXFBlock * pB;
- pB=pDXF->aBlocks.Search(rE.sName);
- if (pB!=NULL) {
- DXFTransform aDXFTransform1(1.0,1.0,1.0,DXFVector(0.0,0.0,0.0)-pB->aBasePoint);
- DXFTransform aDXFTransform2(rE.fXScale,rE.fYScale,rE.fZScale,rE.fRotAngle,rE.aP0);
- DXFTransform aT(
- DXFTransform( aDXFTransform1, aDXFTransform2 ),
- rTransform
- );
- long nSavedBlockColor, nSavedParentLayerColor;
- DXFLineInfo aSavedBlockDXFLineInfo, aSavedParentLayerDXFLineInfo;
- nSavedBlockColor=nBlockColor;
- nSavedParentLayerColor=nParentLayerColor;
- aSavedBlockDXFLineInfo=aBlockDXFLineInfo;
- aSavedParentLayerDXFLineInfo=aParentLayerDXFLineInfo;
- nBlockColor=GetEntityColor(rE);
- aBlockDXFLineInfo=GetEntityDXFLineInfo(rE);
- if (rE.sLayer[0]!='0' || rE.sLayer[1]!=0) {
- DXFLayer * pLayer=pDXF->aTables.SearchLayer(rE.sLayer);
- if (pLayer!=NULL) {
- nParentLayerColor=pLayer->nColor;
- aParentLayerDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType);
- }
- }
- DrawEntities(*pB,aT,FALSE);
- aBlockDXFLineInfo=aSavedBlockDXFLineInfo;
- aParentLayerDXFLineInfo=aSavedParentLayerDXFLineInfo;
- nBlockColor=nSavedBlockColor;
- nParentLayerColor=nSavedParentLayerColor;
- }
-}
-
-
-void DXF2GDIMetaFile::DrawAttribEntity(const DXFAttribEntity & rE, const DXFTransform & rTransform)
-{
- if ((rE.nAttrFlags&1)==0) {
- DXFVector aV;
- Point aPt;
- double fA;
- USHORT nHeight;
- short nAng;
- ByteString aStr( rE.sText );
- DXFTransform aT( DXFTransform( rE.fXScale, rE.fHeight, 1.0, rE.fRotAngle, rE.aP0 ), rTransform );
- aT.TransDir(DXFVector(0,1,0),aV);
- nHeight=(USHORT)(aV.Abs()+0.5);
- fA=aT.CalcRotAngle();
- nAng=(short)(fA*10.0+0.5);
- aT.TransDir(DXFVector(1,0,0),aV);
- if (SetFontAttribute(rE,nAng,nHeight,aV.Abs()))
- {
- String aUString( aStr, pDXF->getTextEncoding() );
- aT.Transform( DXFVector( 0, 0, 0 ), aPt );
- pVirDev->DrawText( aPt, aUString );
- }
- }
-}
-
-
-void DXF2GDIMetaFile::DrawPolyLineEntity(const DXFPolyLineEntity & rE, const DXFTransform & rTransform)
-{
- USHORT i,nPolySize;
- double fW;
- const DXFBasicEntity * pBE;
-
- nPolySize=0;
- pBE=rE.pSucc;
- while (pBE!=NULL && pBE->eType==DXF_VERTEX) {
- nPolySize++;
- pBE=pBE->pSucc;
- }
- if (nPolySize<2) return;
- Polygon aPoly(nPolySize);
- fW=0.0;
- pBE=rE.pSucc;
- for (i=0; i<nPolySize; i++) {
- rTransform.Transform(((DXFVertexEntity*)pBE)->aP0,aPoly[i]);
- if (i+1<nPolySize || (rE.nFlags&1)!=0) {
- if (((DXFVertexEntity*)pBE)->fSWidth>=0.0) fW+=((DXFVertexEntity*)pBE)->fSWidth;
- else fW+=rE.fSWidth;
- if (((DXFVertexEntity*)pBE)->fEWidth>=0.0) fW+=((DXFVertexEntity*)pBE)->fEWidth;
- else fW+=rE.fEWidth;
- }
- pBE=pBE->pSucc;
- }
- fW/=2.0;
- if ((rE.nFlags&1)!=0) fW/=(double)nPolySize;
- else fW/=(double)(nPolySize-1);
- if (SetLineAttribute(rE,rTransform.TransLineWidth(fW))) {
- if ((rE.nFlags&1)!=0) pVirDev->DrawPolygon(aPoly);
- else pVirDev->DrawPolyLine(aPoly);
- if (rE.fThickness!=0) {
- Polygon aPoly2(nPolySize);
- pBE=rE.pSucc;
- for (i=0; i<nPolySize; i++) {
- rTransform.Transform(
- (((DXFVertexEntity*)pBE)->aP0)+DXFVector(0,0,rE.fThickness),
- aPoly2[i]
- );
- pBE=pBE->pSucc;
- }
- if ((rE.nFlags&1)!=0) pVirDev->DrawPolygon(aPoly2);
- else pVirDev->DrawPolyLine(aPoly2);
- for (i=0; i<nPolySize; i++) pVirDev->DrawLine(aPoly[i],aPoly2[i]);
- }
- }
-}
-
-void DXF2GDIMetaFile::DrawLWPolyLineEntity(const DXFLWPolyLineEntity & rE, const DXFTransform & rTransform )
-{
- sal_Int32 i, nPolySize = rE.nCount;
- if ( nPolySize && rE.pP )
- {
- Polygon aPoly( (sal_uInt16)nPolySize);
- for ( i = 0; i < nPolySize; i++ )
- {
- rTransform.Transform( rE.pP[ (sal_uInt16)i ], aPoly[ (sal_uInt16)i ] );
- }
- double fW = rE.fConstantWidth;
- if ( SetLineAttribute( rE, rTransform.TransLineWidth( fW ) ) )
- {
- if ( ( rE.nFlags & 1 ) != 0 )
- pVirDev->DrawPolygon( aPoly );
- else
- pVirDev->DrawPolyLine( aPoly );
- // ####
- //pVirDev->DrawPolyLine( aPoly, aDXFLineInfo );
- }
- }
-}
-
-void DXF2GDIMetaFile::DrawHatchEntity(const DXFHatchEntity & rE, const DXFTransform & rTransform )
-{
- if ( rE.nBoundaryPathCount )
- {
- SetAreaAttribute( rE );
- sal_Int32 j = 0;
- PolyPolygon aPolyPoly;
- for ( j = 0; j < rE.nBoundaryPathCount; j++ )
- {
- DXFPointArray aPtAry;
- const DXFBoundaryPathData& rPathData = rE.pBoundaryPathData[ j ];
- if ( rPathData.bIsPolyLine )
- {
- sal_Int32 i;
- for( i = 0; i < rPathData.nPointCount; i++ )
- {
- Point aPt;
- rTransform.Transform( rPathData.pP[ i ], aPt );
- aPtAry.push_back( aPt );
- }
- }
- else
- {
- sal_uInt32 i;
- for ( i = 0; i < rPathData.aEdges.size(); i++ )
- {
- const DXFEdgeType* pEdge = rPathData.aEdges[ i ];
- switch( pEdge->nEdgeType )
- {
- case 1 :
- {
- Point aPt;
- rTransform.Transform( ((DXFEdgeTypeLine*)pEdge)->aStartPoint, aPt );
- aPtAry.push_back( aPt );
- rTransform.Transform( ((DXFEdgeTypeLine*)pEdge)->aEndPoint, aPt );
- aPtAry.push_back( aPt );
- }
- break;
- case 2 :
- {
-/*
- double frx,fry,fA1,fdA,fAng;
- USHORT nPoints,i;
- DXFVector aC;
- Point aPS,aPE;
- fA1=((DXFEdgeTypeCircularArc*)pEdge)->fStartAngle;
- fdA=((DXFEdgeTypeCircularArc*)pEdge)->fEndAngle - fA1;
- while ( fdA >= 360.0 )
- fdA -= 360.0;
- while ( fdA <= 0 )
- fdA += 360.0;
- rTransform.Transform(((DXFEdgeTypeCircularArc*)pEdge)->aCenter, aC);
- if ( fdA > 5.0 && rTransform.TransCircleToEllipse(((DXFEdgeTypeCircularArc*)pEdge)->fRadius,frx,fry ) == TRUE )
- {
- DXFVector aVS(cos(fA1/180.0*3.14159265359),sin(fA1/180.0*3.14159265359),0.0);
- aVS*=((DXFEdgeTypeCircularArc*)pEdge)->fRadius;
- aVS+=((DXFEdgeTypeCircularArc*)pEdge)->aCenter;
- DXFVector aVE(cos((fA1+fdA)/180.0*3.14159265359),sin((fA1+fdA)/180.0*3.14159265359),0.0);
- aVE*=((DXFEdgeTypeCircularArc*)pEdge)->fRadius;
- aVE+=((DXFEdgeTypeCircularArc*)pEdge)->aCenter;
- if ( rTransform.Mirror() == TRUE )
- {
- rTransform.Transform(aVS,aPS);
- rTransform.Transform(aVE,aPE);
- }
- else
- {
- rTransform.Transform(aVS,aPE);
- rTransform.Transform(aVE,aPS);
- }
- pVirDev->DrawArc(
- Rectangle((long)(aC.fx-frx+0.5),(long)(aC.fy-fry+0.5),
- (long)(aC.fx+frx+0.5),(long)(aC.fy+fry+0.5)),
- aPS,aPE
- );
- }
-*/
- }
- break;
- case 3 :
- case 4 :
- break;
- }
- }
- }
- sal_uInt16 i, nSize = (sal_uInt16)aPtAry.size();
- if ( nSize )
- {
- Polygon aPoly( nSize );
- for ( i = 0; i < nSize; i++ )
- aPoly[ i ] = aPtAry[ i ];
- aPolyPoly.Insert( aPoly, POLYPOLY_APPEND );
- }
- }
- if ( aPolyPoly.Count() )
- pVirDev->DrawPolyPolygon( aPolyPoly );
- }
-}
-
-void DXF2GDIMetaFile::Draw3DFaceEntity(const DXF3DFaceEntity & rE, const DXFTransform & rTransform)
-{
- USHORT nN,i;
- if (SetLineAttribute(rE)) {
- if (rE.aP2==rE.aP3) nN=3; else nN=4;
- Polygon aPoly(nN);
- rTransform.Transform(rE.aP0,aPoly[0]);
- rTransform.Transform(rE.aP1,aPoly[1]);
- rTransform.Transform(rE.aP2,aPoly[2]);
- if (nN>3) rTransform.Transform(rE.aP3,aPoly[3]);
- if ((rE.nIEFlags&0x0f)==0) pVirDev->DrawPolygon(aPoly);
- else {
- for (i=0; i<nN; i++) {
- if ( (rE.nIEFlags & (1<<i)) == 0 ) {
- pVirDev->DrawLine(aPoly[i],aPoly[(i+1)%nN]);
- }
- }
- }
- }
-}
-
-
-void DXF2GDIMetaFile::DrawDimensionEntity(const DXFDimensionEntity & rE, const DXFTransform & rTransform)
-{
- const DXFBlock * pB;
- pB=pDXF->aBlocks.Search(rE.sPseudoBlock);
- if (pB!=NULL) {
- DXFTransform aT(
- DXFTransform(1.0,1.0,1.0,DXFVector(0.0,0.0,0.0)-pB->aBasePoint),
- rTransform
- );
- long nSavedBlockColor, nSavedParentLayerColor;
- DXFLineInfo aSavedBlockDXFLineInfo, aSavedParentLayerDXFLineInfo;
- nSavedBlockColor=nBlockColor;
- nSavedParentLayerColor=nParentLayerColor;
- aSavedBlockDXFLineInfo=aBlockDXFLineInfo;
- aSavedParentLayerDXFLineInfo=aParentLayerDXFLineInfo;
- nBlockColor=GetEntityColor(rE);
- aBlockDXFLineInfo=GetEntityDXFLineInfo(rE);
- if (rE.sLayer[0]!='0' || rE.sLayer[1]!=0) {
- DXFLayer * pLayer=pDXF->aTables.SearchLayer(rE.sLayer);
- if (pLayer!=NULL) {
- nParentLayerColor=pLayer->nColor;
- aParentLayerDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType);
- }
- }
- DrawEntities(*pB,aT,FALSE);
- aBlockDXFLineInfo=aSavedBlockDXFLineInfo;
- aParentLayerDXFLineInfo=aSavedParentLayerDXFLineInfo;
- nBlockColor=nSavedBlockColor;
- nParentLayerColor=nSavedParentLayerColor;
- }
-}
-
-
-void DXF2GDIMetaFile::DrawEntities(const DXFEntities & rEntities,
- const DXFTransform & rTransform,
- BOOL bTopEntities)
-{
- ULONG nCount=0;
- DXFTransform aET;
- const DXFTransform * pT;
-
- const DXFBasicEntity * pE=rEntities.pFirst;
-
- while (pE!=NULL && bStatus==TRUE) {
- if (pE->nSpace==0) {
- if (pE->aExtrusion.fz==1.0) {
- pT=&rTransform;
- }
- else {
- aET=DXFTransform(DXFTransform(pE->aExtrusion),rTransform);
- pT=&aET;
- }
- switch (pE->eType) {
- case DXF_LINE:
- DrawLineEntity((DXFLineEntity&)*pE,*pT);
- break;
- case DXF_POINT:
- DrawPointEntity((DXFPointEntity&)*pE,*pT);
- break;
- case DXF_CIRCLE:
- DrawCircleEntity((DXFCircleEntity&)*pE,*pT);
- break;
- case DXF_ARC:
- DrawArcEntity((DXFArcEntity&)*pE,*pT);
- break;
- case DXF_TRACE:
- DrawTraceEntity((DXFTraceEntity&)*pE,*pT);
- break;
- case DXF_SOLID:
- DrawSolidEntity((DXFSolidEntity&)*pE,*pT);
- break;
- case DXF_TEXT:
- DrawTextEntity((DXFTextEntity&)*pE,*pT);
- break;
- case DXF_INSERT:
- DrawInsertEntity((DXFInsertEntity&)*pE,*pT);
- break;
- case DXF_ATTRIB:
- DrawAttribEntity((DXFAttribEntity&)*pE,*pT);
- break;
- case DXF_POLYLINE:
- DrawPolyLineEntity((DXFPolyLineEntity&)*pE,*pT);
- break;
- case DXF_LWPOLYLINE :
- DrawLWPolyLineEntity((DXFLWPolyLineEntity&)*pE, *pT);
- break;
- case DXF_HATCH :
- DrawHatchEntity((DXFHatchEntity&)*pE, *pT);
- break;
- case DXF_3DFACE:
- Draw3DFaceEntity((DXF3DFaceEntity&)*pE,*pT);
- break;
- case DXF_DIMENSION:
- DrawDimensionEntity((DXFDimensionEntity&)*pE,*pT);
- break;
- default:
- break; // four other values not handled -Wall
- }
- }
- pE=pE->pSucc;
- nCount++;
- if (bTopEntities) MayCallback(nCount);
- }
-}
-
-
-DXF2GDIMetaFile::DXF2GDIMetaFile()
-{
-}
-
-
-DXF2GDIMetaFile::~DXF2GDIMetaFile()
-{
-}
-
-
-BOOL DXF2GDIMetaFile::Convert(const DXFRepresentation & rDXF, GDIMetaFile & rMTF, USHORT nminpercent, USHORT nmaxpercent)
-{
- double fWidth,fHeight,fScale;
- DXFTransform aTransform;
- Size aPrefSize;
- const DXFLayer * pLayer;
- const DXFVPort * pVPort;
-
- pVirDev = new VirtualDevice;
- pDXF = &rDXF;
- bStatus = TRUE;
-
- OptPointsPerCircle=50;
-
- nMinPercent=(ULONG)nminpercent;
- nMaxPercent=(ULONG)nmaxpercent;
- nLastPercent=nMinPercent;
- nMainEntitiesCount=CountEntities(pDXF->aEntities);
-
- nBlockColor=7;
- aBlockDXFLineInfo.eStyle = LINE_SOLID;
- aBlockDXFLineInfo.fWidth = 0;
- aBlockDXFLineInfo.nDashCount = 0;
- aBlockDXFLineInfo.fDashLen = 0;
- aBlockDXFLineInfo.nDotCount = 0;
- aBlockDXFLineInfo.fDotLen = 0;
- aBlockDXFLineInfo.fDistance = 0;
-
- pLayer=pDXF->aTables.SearchLayer("0");
- if (pLayer!=NULL) {
- nParentLayerColor=pLayer->nColor & 0xff;
- aParentLayerDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType);
- }
- else {
- nParentLayerColor=7;
- aParentLayerDXFLineInfo.eStyle = LINE_SOLID;
- aParentLayerDXFLineInfo.fWidth = 0;
- aParentLayerDXFLineInfo.nDashCount = 0;
- aParentLayerDXFLineInfo.fDashLen = 0;
- aParentLayerDXFLineInfo.nDotCount = 0;
- aParentLayerDXFLineInfo.fDotLen = 0;
- aParentLayerDXFLineInfo.fDistance = 0;
- }
-
- pVirDev->EnableOutput(FALSE);
- rMTF.Record(pVirDev);
-
- aActLineColor = pVirDev->GetLineColor();
- aActFillColor = pVirDev->GetFillColor();
- aActFont = pVirDev->GetFont();
-
- pVPort=pDXF->aTables.SearchVPort("*ACTIVE");
- if (pVPort!=NULL) {
- if (pVPort->aDirection.fx==0 && pVPort->aDirection.fy==0)
- pVPort=NULL;
- }
-
- if (pVPort==NULL) {
- if (pDXF->aBoundingBox.bEmpty==TRUE)
- bStatus=FALSE;
- else {
- fWidth=pDXF->aBoundingBox.fMaxX-pDXF->aBoundingBox.fMinX;
- fHeight=pDXF->aBoundingBox.fMaxY-pDXF->aBoundingBox.fMinY;
- if (fWidth<=0 || fHeight<=0) {
- bStatus=FALSE;
- fScale = 0; // -Wall added this...
- }
- else {
-// if (fWidth<500.0 || fHeight<500.0 || fWidth>32767.0 || fHeight>32767.0) {
- if (fWidth>fHeight)
- fScale=10000.0/fWidth;
- else
- fScale=10000.0/fHeight;
-// }
-// else
-// fScale=1.0;
- aTransform=DXFTransform(fScale,-fScale,fScale,
- DXFVector(-pDXF->aBoundingBox.fMinX*fScale,
- pDXF->aBoundingBox.fMaxY*fScale,
- -pDXF->aBoundingBox.fMinZ*fScale));
- }
- aPrefSize.Width() =(long)(fWidth*fScale+1.5);
- aPrefSize.Height()=(long)(fHeight*fScale+1.5);
- }
- }
- else {
- fHeight=pVPort->fHeight;
- fWidth=fHeight*pVPort->fAspectRatio;
-// if (fWidth<500.0 || fHeight<500.0 || fWidth>32767.0 || fHeight>32767.0) {
- if (fWidth>fHeight)
- fScale=10000.0/fWidth;
- else
- fScale=10000.0/fHeight;
-// }
-// else
-// fScale=1.0;
- aTransform=DXFTransform(
- DXFTransform(pVPort->aDirection,pVPort->aTarget),
- DXFTransform(
- DXFTransform(1.0,-1.0,1.0,DXFVector(fWidth/2-pVPort->fCenterX,fHeight/2+pVPort->fCenterY,0)),
- DXFTransform(fScale,fScale,fScale,DXFVector(0,0,0))
- )
- );
- aPrefSize.Width() =(long)(fWidth*fScale+1.5);
- aPrefSize.Height()=(long)(fHeight*fScale+1.5);
- }
-
- if (bStatus==TRUE)
- DrawEntities(pDXF->aEntities,aTransform,TRUE);
-
- rMTF.Stop();
-
- if ( bStatus==TRUE )
- {
- rMTF.SetPrefSize( aPrefSize );
-
- // MapMode einfach, falls Grafik dann nicht zu klein wird (<0,5cm),
- // auf 1/100-mm (1/10-mm) setzen
- if( ( aPrefSize.Width() < 500 ) && ( aPrefSize.Height() < 500 ) )
- rMTF.SetPrefMapMode( MapMode( MAP_10TH_MM ) );
- else
- rMTF.SetPrefMapMode( MapMode( MAP_100TH_MM ) );
- }
-
- delete pVirDev;
- return bStatus;
-}
-
-
-
diff --git a/goodies/source/filter.vcl/idxf/dxf2mtf.hxx b/goodies/source/filter.vcl/idxf/dxf2mtf.hxx
deleted file mode 100644
index a1bf99639430..000000000000
--- a/goodies/source/filter.vcl/idxf/dxf2mtf.hxx
+++ /dev/null
@@ -1,131 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxf2mtf.hxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _DXF2MTF_HXX
-#define _DXF2MTF_HXX
-
-#include "dxfreprd.hxx"
-#include <vcl/font.hxx>
-#include <vcl/lineinfo.hxx>
-
-// MT: NOOLDSV, someone should change the code...
-enum PenStyle { PEN_NULL, PEN_SOLID, PEN_DOT, PEN_DASH, PEN_DASHDOT };
-enum BrushStyle { BRUSH_NULL, BRUSH_SOLID, BRUSH_HORZ, BRUSH_VERT,
- BRUSH_CROSS, BRUSH_DIAGCROSS, BRUSH_UPDIAG, BRUSH_DOWNDIAG,
- BRUSH_25, BRUSH_50, BRUSH_75,
- BRUSH_BITMAP };
-
-
-class DXF2GDIMetaFile {
-private:
-
- VirtualDevice * pVirDev;
- const DXFRepresentation * pDXF;
- BOOL bStatus;
-
- USHORT OptPointsPerCircle;
-
- ULONG nMinPercent;
- ULONG nMaxPercent;
- ULONG nLastPercent;
- ULONG nMainEntitiesCount;
-
- long nBlockColor;
- DXFLineInfo aBlockDXFLineInfo;
- long nParentLayerColor;
- DXFLineInfo aParentLayerDXFLineInfo;
- Color aActLineColor;
- Color aActFillColor;
- Font aActFont;
-
- ULONG CountEntities(const DXFEntities & rEntities);
-
- void MayCallback(ULONG nMainEntitiesProcessed);
-
- Color ConvertColor(BYTE nColor);
-
- long GetEntityColor(const DXFBasicEntity & rE);
-
- DXFLineInfo LTypeToDXFLineInfo(const char * sLineType);
-
- DXFLineInfo GetEntityDXFLineInfo(const DXFBasicEntity & rE);
-
- BOOL SetLineAttribute(const DXFBasicEntity & rE, ULONG nWidth=0);
-
- BOOL SetAreaAttribute(const DXFBasicEntity & rE);
-
- BOOL SetFontAttribute(const DXFBasicEntity & rE, short nAngle,
- USHORT nHeight, double fWidthScale);
-
- void DrawLineEntity(const DXFLineEntity & rE, const DXFTransform & rTransform);
-
- void DrawPointEntity(const DXFPointEntity & rE, const DXFTransform & rTransform);
-
- void DrawCircleEntity(const DXFCircleEntity & rE, const DXFTransform & rTransform);
-
- void DrawArcEntity(const DXFArcEntity & rE, const DXFTransform & rTransform);
-
- void DrawTraceEntity(const DXFTraceEntity & rE, const DXFTransform & rTransform);
-
- void DrawSolidEntity(const DXFSolidEntity & rE, const DXFTransform & rTransform);
-
- void DrawTextEntity(const DXFTextEntity & rE, const DXFTransform & rTransform);
-
- void DrawInsertEntity(const DXFInsertEntity & rE, const DXFTransform & rTransform);
-
- void DrawAttribEntity(const DXFAttribEntity & rE, const DXFTransform & rTransform);
-
- void DrawPolyLineEntity(const DXFPolyLineEntity & rE, const DXFTransform & rTransform);
-
- void Draw3DFaceEntity(const DXF3DFaceEntity & rE, const DXFTransform & rTransform);
-
- void DrawDimensionEntity(const DXFDimensionEntity & rE, const DXFTransform & rTransform);
-
- void DrawLWPolyLineEntity( const DXFLWPolyLineEntity & rE, const DXFTransform & rTransform );
-
- void DrawHatchEntity( const DXFHatchEntity & rE, const DXFTransform & rTransform );
-
- void DrawEntities(const DXFEntities & rEntities,
- const DXFTransform & rTransform,
- BOOL bTopEntities);
-
-public:
-
- DXF2GDIMetaFile();
- ~DXF2GDIMetaFile();
-
- BOOL Convert( const DXFRepresentation & rDXF, GDIMetaFile & rMTF, USHORT nMinPercent, USHORT nMaxPercent);
-
-};
-
-
-#endif
-
-
diff --git a/goodies/source/filter.vcl/idxf/dxfblkrd.cxx b/goodies/source/filter.vcl/idxf/dxfblkrd.cxx
deleted file mode 100644
index 590301f857ee..000000000000
--- a/goodies/source/filter.vcl/idxf/dxfblkrd.cxx
+++ /dev/null
@@ -1,142 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxfblkrd.cxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <string.h>
-#include <dxfblkrd.hxx>
-
-
-//----------------------------------------------------------------------------
-//---------------- DXFBlock --------------------------------------------------
-//----------------------------------------------------------------------------
-
-
-DXFBlock::DXFBlock()
-{
- pSucc=NULL;
-}
-
-
-DXFBlock::~DXFBlock()
-{
-}
-
-
-void DXFBlock::Read(DXFGroupReader & rDGR)
-{
- sName[0]=0;
- sAlsoName[0]=0;
- aBasePoint.fx=0.0;
- aBasePoint.fy=0.0;
- aBasePoint.fz=0.0;
- nFlags=0;
- sXRef[0]=0;
-
- while (rDGR.Read()!=0)
- {
- switch (rDGR.GetG())
- {
- case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 3: strncpy( sAlsoName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 70: nFlags=rDGR.GetI(); break;
- case 10: aBasePoint.fx=rDGR.GetF(); break;
- case 20: aBasePoint.fy=rDGR.GetF(); break;
- case 30: aBasePoint.fz=rDGR.GetF(); break;
- case 1: strncpy( sXRef, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- }
- }
- DXFEntities::Read(rDGR);
-}
-
-
-//----------------------------------------------------------------------------
-//---------------- DXFBlocks -------------------------------------------------
-//----------------------------------------------------------------------------
-
-
-DXFBlocks::DXFBlocks()
-{
- pFirst=NULL;
-}
-
-
-DXFBlocks::~DXFBlocks()
-{
- Clear();
-}
-
-
-void DXFBlocks::Read(DXFGroupReader & rDGR)
-{
- DXFBlock * pB, * * ppSucc;
-
- ppSucc=&pFirst;
- while (*ppSucc!=NULL) ppSucc=&((*ppSucc)->pSucc);
-
- for (;;) {
- while (rDGR.GetG()!=0) rDGR.Read();
- if (strcmp(rDGR.GetS(),"ENDSEC")==0 ||
- strcmp(rDGR.GetS(),"EOF")==0) break;
- if (strcmp(rDGR.GetS(),"BLOCK")==0) {
- pB=new DXFBlock;
- pB->Read(rDGR);
- *ppSucc=pB;
- ppSucc=&(pB->pSucc);
- }
- else rDGR.Read();
- }
-}
-
-
-DXFBlock * DXFBlocks::Search(const char * sName) const
-{
- DXFBlock * pB;
- for (pB=pFirst; pB!=NULL; pB=pB->pSucc) {
- if (strcmp(sName,pB->sName)==0) break;
- }
- return pB;
-}
-
-
-void DXFBlocks::Clear()
-{
- DXFBlock * ptmp;
-
- while (pFirst!=NULL) {
- ptmp=pFirst;
- pFirst=ptmp->pSucc;
- delete ptmp;
- }
-}
-
-
-
diff --git a/goodies/source/filter.vcl/idxf/dxfblkrd.hxx b/goodies/source/filter.vcl/idxf/dxfblkrd.hxx
deleted file mode 100644
index 8468ca204601..000000000000
--- a/goodies/source/filter.vcl/idxf/dxfblkrd.hxx
+++ /dev/null
@@ -1,90 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxfblkrd.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _DXFBLKRD_HXX
-#define _DXFBLKRD_HXX
-
-#include <dxfentrd.hxx>
-
-//----------------------------------------------------------------------------
-//---------------- Ein Block (= Menge von Entities) --------------------------
-//----------------------------------------------------------------------------
-
-class DXFBlock : public DXFEntities {
-
-public:
-
- DXFBlock * pSucc;
- // Zeiger auf naechsten Block in der Liste DXFBlocks::pFirst
-
- // Eigenschaften des Blocks, durch Gruppencodes kommentiert:
- char sName[DXF_MAX_STRING_LEN+1]; // 2
- char sAlsoName[DXF_MAX_STRING_LEN+1]; // 3
- long nFlags; // 70
- DXFVector aBasePoint; // 10,20,30
- char sXRef[DXF_MAX_STRING_LEN+1]; // 1
-
- DXFBlock();
- ~DXFBlock();
-
- void Read(DXFGroupReader & rDGR);
- // Liest den Block (einschliesslich der Entities) per rGDR
- // aus einer DXF-Datei bis zu einem ENDBLK, ENDSEC oder EOF.
-};
-
-
-//----------------------------------------------------------------------------
-//---------------- Eine Menge von Bloecken -----------------------------------
-//----------------------------------------------------------------------------
-
-class DXFBlocks {
-
-public:
-
- DXFBlock * pFirst;
- // Liste der Bloecke, READ ONLY!
-
- DXFBlocks();
- ~DXFBlocks();
-
- void Read(DXFGroupReader & rDGR);
- // Liesst alle Bloecke per rDGR bis zu einem ENDSEC oder EOF.
-
- DXFBlock * Search(const char * sName) const;
- // Sucht einen Block mit dem Namen, liefert NULL bei Misserfolg.
-
- void Clear();
- // Loescht alle Bloecke;
-
-};
-
-#endif
-
-
diff --git a/goodies/source/filter.vcl/idxf/dxfentrd.cxx b/goodies/source/filter.vcl/idxf/dxfentrd.cxx
deleted file mode 100644
index f7a957bfa811..000000000000
--- a/goodies/source/filter.vcl/idxf/dxfentrd.cxx
+++ /dev/null
@@ -1,874 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxfentrd.cxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <string.h>
-#include <dxfentrd.hxx>
-
-//--------------------------DXFBasicEntity--------------------------------------
-
-DXFBasicEntity::DXFBasicEntity(DXFEntityType eThisType)
-{
- eType=eThisType;
- pSucc=NULL;
- strncpy(sLayer,"0", 2 );
- strncpy(sLineType,"BYLAYER", 8 );
- fElevation=0;
- fThickness=0;
- nColor=256;
- nSpace=0;
- aExtrusion.fx=0.0;
- aExtrusion.fy=0.0;
- aExtrusion.fz=1.0;
-}
-
-void DXFBasicEntity::Read(DXFGroupReader & rDGR)
-{
- while (rDGR.Read()!=0) EvaluateGroup(rDGR);
-}
-
-void DXFBasicEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG())
- {
- case 8: strncpy( sLayer, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 6: strncpy( sLineType, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 38: fElevation=rDGR.GetF(); break;
- case 39: fThickness=rDGR.GetF(); break;
- case 62: nColor=rDGR.GetI(); break;
- case 67: nSpace=rDGR.GetI(); break;
- case 210: aExtrusion.fx=rDGR.GetF(); break;
- case 220: aExtrusion.fy=rDGR.GetF(); break;
- case 230: aExtrusion.fz=rDGR.GetF(); break;
- }
-}
-
-DXFBasicEntity::~DXFBasicEntity()
-{
-}
-
-//--------------------------DXFLineEntity---------------------------------------
-
-DXFLineEntity::DXFLineEntity() : DXFBasicEntity(DXF_LINE)
-{
-}
-
-void DXFLineEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 11: aP1.fx=rDGR.GetF(); break;
- case 21: aP1.fy=rDGR.GetF(); break;
- case 31: aP1.fz=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFPointEntity--------------------------------------
-
-DXFPointEntity::DXFPointEntity() : DXFBasicEntity(DXF_POINT)
-{
-}
-
-void DXFPointEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFCircleEntity-------------------------------------
-
-DXFCircleEntity::DXFCircleEntity() : DXFBasicEntity(DXF_CIRCLE)
-{
- fRadius=1.0;
-}
-
-void DXFCircleEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 40: fRadius=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFArcEntity----------------------------------------
-
-DXFArcEntity::DXFArcEntity() : DXFBasicEntity(DXF_ARC)
-{
- fRadius=1.0;
- fStart=0;
- fEnd=360.0;
-}
-
-void DXFArcEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 40: fRadius=rDGR.GetF(); break;
- case 50: fStart=rDGR.GetF(); break;
- case 51: fEnd=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFTraceEntity--------------------------------------
-
-DXFTraceEntity::DXFTraceEntity() : DXFBasicEntity(DXF_TRACE)
-{
-}
-
-void DXFTraceEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 11: aP1.fx=rDGR.GetF(); break;
- case 21: aP1.fy=rDGR.GetF(); break;
- case 31: aP1.fz=rDGR.GetF(); break;
- case 12: aP2.fx=rDGR.GetF(); break;
- case 22: aP2.fy=rDGR.GetF(); break;
- case 32: aP2.fz=rDGR.GetF(); break;
- case 13: aP3.fx=rDGR.GetF(); break;
- case 23: aP3.fy=rDGR.GetF(); break;
- case 33: aP3.fz=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFSolidEntity--------------------------------------
-
-DXFSolidEntity::DXFSolidEntity() : DXFBasicEntity(DXF_SOLID)
-{
-}
-
-void DXFSolidEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 11: aP1.fx=rDGR.GetF(); break;
- case 21: aP1.fy=rDGR.GetF(); break;
- case 31: aP1.fz=rDGR.GetF(); break;
- case 12: aP2.fx=rDGR.GetF(); break;
- case 22: aP2.fy=rDGR.GetF(); break;
- case 32: aP2.fz=rDGR.GetF(); break;
- case 13: aP3.fx=rDGR.GetF(); break;
- case 23: aP3.fy=rDGR.GetF(); break;
- case 33: aP3.fz=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFTextEntity---------------------------------------
-
-DXFTextEntity::DXFTextEntity() : DXFBasicEntity(DXF_TEXT)
-{
- fHeight=1.0;
- sText[0]=0;
- fRotAngle=0.0;
- fXScale=1.0;
- fOblAngle=0.0;
- strncpy( sStyle, "STANDARD", 9 );
- nGenFlags=0;
- nHorzJust=0;
- nVertJust=0;
-}
-
-void DXFTextEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 40: fHeight=rDGR.GetF(); break;
- case 1: strncpy( sText, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 50: fRotAngle=rDGR.GetF(); break;
- case 41: fXScale=rDGR.GetF(); break;
- case 42: fOblAngle=rDGR.GetF(); break;
- case 7: strncpy( sStyle, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 71: nGenFlags=rDGR.GetI(); break;
- case 72: nHorzJust=rDGR.GetI(); break;
- case 73: nVertJust=rDGR.GetI(); break;
- case 11: aAlign.fx=rDGR.GetF(); break;
- case 21: aAlign.fy=rDGR.GetF(); break;
- case 31: aAlign.fz=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFShapeEntity--------------------------------------
-
-DXFShapeEntity::DXFShapeEntity() : DXFBasicEntity(DXF_SHAPE)
-{
- fSize=1.0;
- sName[0]=0;
- fRotAngle=0;
- fXScale=1.0;
- fOblAngle=0;
-}
-
-void DXFShapeEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 40: fSize=rDGR.GetF(); break;
- case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 50: fRotAngle=rDGR.GetF(); break;
- case 41: fXScale=rDGR.GetF(); break;
- case 51: fOblAngle=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFInsertEntity-------------------------------------
-
-DXFInsertEntity::DXFInsertEntity() : DXFBasicEntity(DXF_INSERT)
-{
- nAttrFlag=0;
- sName[0]=0;
- fXScale=1.0;
- fYScale=1.0;
- fZScale=1.0;
- fRotAngle=0.0;
- nColCount=1;
- nRowCount=1;
- fColSpace=0.0;
- fRowSpace=0.0;
-}
-
-void DXFInsertEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 66: nAttrFlag=rDGR.GetI(); break;
- case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 41: fXScale=rDGR.GetF(); break;
- case 42: fYScale=rDGR.GetF(); break;
- case 43: fZScale=rDGR.GetF(); break;
- case 50: fRotAngle=rDGR.GetF(); break;
- case 70: nColCount=rDGR.GetI(); break;
- case 71: nRowCount=rDGR.GetI(); break;
- case 44: fColSpace=rDGR.GetF(); break;
- case 45: fRowSpace=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFAttDefEntity-------------------------------------
-
-DXFAttDefEntity::DXFAttDefEntity() : DXFBasicEntity(DXF_ATTDEF)
-{
- fHeight=1.0;
- sDefVal[0]=0;
- sPrompt[0]=0;
- sTagStr[0]=0;
- nAttrFlags=0;
- nFieldLen=0;
- fRotAngle=0.0;
- fXScale=1.0;
- fOblAngle=0.0;
- strncpy( sStyle, "STANDARD", 9 );
- nGenFlags=0;
- nHorzJust=0;
- nVertJust=0;
-}
-
-void DXFAttDefEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 40: fHeight=rDGR.GetF(); break;
- case 1: strncpy( sDefVal, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 3: strncpy( sPrompt, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 2: strncpy( sTagStr, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 70: nAttrFlags=rDGR.GetI(); break;
- case 73: nFieldLen=rDGR.GetI(); break;
- case 50: fRotAngle=rDGR.GetF(); break;
- case 41: fXScale=rDGR.GetF(); break;
- case 51: fOblAngle=rDGR.GetF(); break;
- case 7: strncpy( sStyle, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 71: nGenFlags=rDGR.GetI(); break;
- case 72: nHorzJust=rDGR.GetI(); break;
- case 74: nVertJust=rDGR.GetI(); break;
- case 11: aAlign.fx=rDGR.GetF(); break;
- case 21: aAlign.fy=rDGR.GetF(); break;
- case 31: aAlign.fz=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFAttribEntity-------------------------------------
-
-DXFAttribEntity::DXFAttribEntity() : DXFBasicEntity(DXF_ATTRIB)
-{
- fHeight=1.0;
- sText[0]=0;
- sTagStr[0]=0;
- nAttrFlags=0;
- nFieldLen=0;
- fRotAngle=0.0;
- fXScale=1.0;
- fOblAngle=0.0;
- strncpy( sStyle, "STANDARD", 9 );
- nGenFlags=0;
- nHorzJust=0;
- nVertJust=0;
-}
-
-void DXFAttribEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 40: fHeight=rDGR.GetF(); break;
- case 1: strncpy( sText, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 2: strncpy( sTagStr, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 70: nAttrFlags=rDGR.GetI(); break;
- case 73: nFieldLen=rDGR.GetI(); break;
- case 50: fRotAngle=rDGR.GetF(); break;
- case 41: fXScale=rDGR.GetF(); break;
- case 51: fOblAngle=rDGR.GetF(); break;
- case 7: strncpy( sStyle, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 71: nGenFlags=rDGR.GetI(); break;
- case 72: nHorzJust=rDGR.GetI(); break;
- case 74: nVertJust=rDGR.GetI(); break;
- case 11: aAlign.fx=rDGR.GetF(); break;
- case 21: aAlign.fy=rDGR.GetF(); break;
- case 31: aAlign.fz=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFPolyLine-----------------------------------------
-
-DXFPolyLineEntity::DXFPolyLineEntity() : DXFBasicEntity(DXF_POLYLINE)
-{
- fElevation=0.0;
- nFlags=0;
- fSWidth=0.0;
- fEWidth=0.0;
- nMeshMCount=0;
- nMeshNCount=0;
- nMDensity=0;
- nNDensity=0;
- nCSSType=0;
-}
-
-void DXFPolyLineEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 30: fElevation=rDGR.GetF(); break;
- case 70: nFlags=rDGR.GetI(); break;
- case 40: fSWidth=rDGR.GetF(); break;
- case 41: fEWidth=rDGR.GetF(); break;
- case 71: nMeshMCount=rDGR.GetI(); break;
- case 72: nMeshNCount=rDGR.GetI(); break;
- case 73: nMDensity=rDGR.GetI(); break;
- case 74: nNDensity=rDGR.GetI(); break;
- case 75: nCSSType=rDGR.GetI(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFLWPolyLine---------------------------------------
-
-DXFLWPolyLineEntity::DXFLWPolyLineEntity() :
- DXFBasicEntity( DXF_LWPOLYLINE ),
- nIndex( 0 ),
- nCount( 0 ),
- nFlags( 0 ),
- fConstantWidth( 0.0 ),
- fStartWidth( 0.0 ),
- fEndWidth( 0.0 ),
- pP( NULL )
-{
-}
-
-void DXFLWPolyLineEntity::EvaluateGroup( DXFGroupReader & rDGR )
-{
- switch ( rDGR.GetG() )
- {
- case 90 :
- {
- nCount = rDGR.GetI();
- if ( nCount )
- pP = new DXFVector[ nCount ];
- }
- break;
- case 70: nFlags = rDGR.GetI(); break;
- case 43: fConstantWidth = rDGR.GetF(); break;
- case 40: fStartWidth = rDGR.GetF(); break;
- case 41: fEndWidth = rDGR.GetF(); break;
- case 10:
- {
- if ( pP && ( nIndex < nCount ) )
- pP[ nIndex ].fx = rDGR.GetF();
- }
- break;
- case 20:
- {
- if ( pP && ( nIndex < nCount ) )
- pP[ nIndex++ ].fy = rDGR.GetF();
- }
- break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-DXFLWPolyLineEntity::~DXFLWPolyLineEntity()
-{
- delete[] pP;
-}
-
-//--------------------------DXFHatchEntity-------------------------------------
-
-DXFEdgeTypeLine::DXFEdgeTypeLine() :
- DXFEdgeType( 1 )
-{
-
-}
-DXFEdgeTypeLine::~DXFEdgeTypeLine()
-{
-
-}
-sal_Bool DXFEdgeTypeLine::EvaluateGroup( DXFGroupReader & rDGR )
-{
- sal_Bool bExecutingGroupCode = sal_True;
- switch ( rDGR.GetG() )
- {
- case 10 : aStartPoint.fx = rDGR.GetF(); break;
- case 20 : aStartPoint.fy = rDGR.GetF(); break;
- case 11 : aEndPoint.fx = rDGR.GetF(); break;
- case 21 : aEndPoint.fy = rDGR.GetF(); break;
- default : bExecutingGroupCode = sal_False; break;
- }
- return bExecutingGroupCode;
-}
-
-DXFEdgeTypeCircularArc::DXFEdgeTypeCircularArc() :
- DXFEdgeType( 2 ),
- fRadius( 0.0 ),
- fStartAngle( 0.0 ),
- fEndAngle( 0.0 ),
- nIsCounterClockwiseFlag( 0 )
-{
-}
-DXFEdgeTypeCircularArc::~DXFEdgeTypeCircularArc()
-{
-}
-sal_Bool DXFEdgeTypeCircularArc::EvaluateGroup( DXFGroupReader & rDGR )
-{
- sal_Bool bExecutingGroupCode = sal_True;
- switch ( rDGR.GetG() )
- {
- case 10 : aCenter.fx = rDGR.GetF(); break;
- case 20 : aCenter.fy = rDGR.GetF(); break;
- case 40 : fRadius = rDGR.GetF(); break;
- case 50 : fStartAngle = rDGR.GetF(); break;
- case 51 : fEndAngle = rDGR.GetF(); break;
- case 73 : nIsCounterClockwiseFlag = rDGR.GetI(); break;
- default : bExecutingGroupCode = sal_False; break;
- }
- return bExecutingGroupCode;
-}
-
-DXFEdgeTypeEllipticalArc::DXFEdgeTypeEllipticalArc() :
- DXFEdgeType( 3 ),
- fLength( 0.0 ),
- fStartAngle( 0.0 ),
- fEndAngle( 0.0 ),
- nIsCounterClockwiseFlag( 0 )
-{
-}
-DXFEdgeTypeEllipticalArc::~DXFEdgeTypeEllipticalArc()
-{
-
-}
-sal_Bool DXFEdgeTypeEllipticalArc::EvaluateGroup( DXFGroupReader & rDGR )
-{
- sal_Bool bExecutingGroupCode = sal_True;
- switch( rDGR.GetG() )
- {
- case 10 : aCenter.fx = rDGR.GetF(); break;
- case 20 : aCenter.fy = rDGR.GetF(); break;
- case 11 : aEndPoint.fx = rDGR.GetF(); break;
- case 21 : aEndPoint.fy = rDGR.GetF(); break;
- case 40 : fLength = rDGR.GetF(); break;
- case 50 : fStartAngle = rDGR.GetF(); break;
- case 51 : fEndAngle = rDGR.GetF(); break;
- case 73 : nIsCounterClockwiseFlag = rDGR.GetI(); break;
- default : bExecutingGroupCode = sal_False; break;
- }
- return bExecutingGroupCode;
-}
-
-DXFEdgeTypeSpline::DXFEdgeTypeSpline() :
- DXFEdgeType( 4 ),
- nDegree( 0 ),
- nRational( 0 ),
- nPeriodic( 0 ),
- nKnotCount( 0 ),
- nControlCount( 0 )
-{
-}
-DXFEdgeTypeSpline::~DXFEdgeTypeSpline()
-{
-
-}
-sal_Bool DXFEdgeTypeSpline::EvaluateGroup( DXFGroupReader & rDGR )
-{
- sal_Bool bExecutingGroupCode = sal_True;
- switch ( rDGR.GetG() )
- {
- case 94 : nDegree = rDGR.GetI(); break;
- case 73 : nRational = rDGR.GetI(); break;
- case 74 : nPeriodic = rDGR.GetI(); break;
- case 95 : nKnotCount = rDGR.GetI(); break;
- case 96 : nControlCount = rDGR.GetI(); break;
- default : bExecutingGroupCode = sal_False; break;
- }
- return bExecutingGroupCode;
-}
-
-DXFBoundaryPathData::DXFBoundaryPathData() :
- nFlags( 0 ),
- nHasBulgeFlag( 0 ),
- nIsClosedFlag( 0 ),
- nPointCount( 0 ),
- fBulge( 0.0 ),
- nSourceBoundaryObjects( 0 ),
- nEdgeCount( 0 ),
- bIsPolyLine( sal_True ),
- nPointIndex( 0 ),
- pP( NULL )
-{
-}
-
-DXFBoundaryPathData::~DXFBoundaryPathData()
-{
- sal_uInt32 i = 0;
- for ( i = 0; i < aEdges.size(); i++ )
- delete aEdges[ i ];
- delete[] pP;
-}
-
-sal_Bool DXFBoundaryPathData::EvaluateGroup( DXFGroupReader & rDGR )
-{
- sal_Bool bExecutingGroupCode = sal_True;
- if ( bIsPolyLine )
- {
- switch( rDGR.GetG() )
- {
- case 92 :
- {
- nFlags = rDGR.GetI();
- if ( ( nFlags & 2 ) == 0 )
- bIsPolyLine = sal_False;
- }
- break;
- case 93 :
- {
- nPointCount = rDGR.GetI();
- if ( nPointCount )
- pP = new DXFVector[ nPointCount ];
- }
- break;
- case 72 : nHasBulgeFlag = rDGR.GetI(); break;
- case 73 : nIsClosedFlag = rDGR.GetI(); break;
- case 97 : nSourceBoundaryObjects = rDGR.GetI(); break;
- case 42 : fBulge = rDGR.GetF(); break;
- case 10:
- {
- if ( pP && ( nPointIndex < nPointCount ) )
- pP[ nPointIndex ].fx = rDGR.GetF();
- }
- break;
- case 20:
- {
- if ( pP && ( nPointIndex < nPointCount ) )
- pP[ nPointIndex++ ].fy = rDGR.GetF();
- }
- break;
-
- default : bExecutingGroupCode = sal_False; break;
- }
- }
- else
- {
- if ( rDGR.GetG() == 93 )
- nEdgeCount = rDGR.GetI();
- else if ( rDGR.GetG() == 72 )
- {
- sal_Int32 nEdgeType = rDGR.GetI();
- switch( nEdgeType )
- {
- case 1 : aEdges.push_back( new DXFEdgeTypeLine() ); break;
- case 2 : aEdges.push_back( new DXFEdgeTypeCircularArc() ); break;
- case 3 : aEdges.push_back( new DXFEdgeTypeEllipticalArc() ); break;
- case 4 : aEdges.push_back( new DXFEdgeTypeSpline() ); break;
- }
- }
- else if ( aEdges.size() )
- aEdges[ aEdges.size() - 1 ]->EvaluateGroup( rDGR );
- else
- bExecutingGroupCode = sal_False;
- }
- return bExecutingGroupCode;
-}
-
-DXFHatchEntity::DXFHatchEntity() :
- DXFBasicEntity( DXF_HATCH ),
- bIsInBoundaryPathContext( sal_False ),
- nCurrentBoundaryPathIndex( -1 ),
- nFlags( 0 ),
- nAssociativityFlag( 0 ),
- nBoundaryPathCount( 0 ),
- nHatchStyle( 0 ),
- nHatchPatternType( 0 ),
- fHatchPatternAngle( 0.0 ),
- fHatchPatternScale( 1.0 ),
- nHatchDoubleFlag( 0 ),
- nHatchPatternDefinitionLines( 0 ),
- fPixelSize( 1.0 ),
- nNumberOfSeedPoints( 0 ),
- pBoundaryPathData( NULL )
-{
-}
-
-void DXFHatchEntity::EvaluateGroup( DXFGroupReader & rDGR )
-{
- switch ( rDGR.GetG() )
- {
-// case 10 : aElevationPoint.fx = rDGR.GetF(); break;
-// case 20 : aElevationPoint.fy = rDGR.GetF(); break;
-// case 30 : aElevationPoint.fz = rDGR.GetF(); break;
- case 70 : nFlags = rDGR.GetI(); break;
- case 71 : nAssociativityFlag = rDGR.GetI(); break;
- case 91 :
- {
- bIsInBoundaryPathContext = sal_True;
- nBoundaryPathCount = rDGR.GetI();
- if ( nBoundaryPathCount )
- pBoundaryPathData = new DXFBoundaryPathData[ nBoundaryPathCount ];
- }
- break;
- case 75 :
- {
- nHatchStyle = rDGR.GetI();
- bIsInBoundaryPathContext = sal_False;
- }
- break;
- case 76 : nHatchPatternType = rDGR.GetI(); break;
- case 52 : fHatchPatternAngle = rDGR.GetF(); break;
- case 41 : fHatchPatternScale = rDGR.GetF(); break;
- case 77 : nHatchDoubleFlag = rDGR.GetI(); break;
- case 78 : nHatchPatternDefinitionLines = rDGR.GetI(); break;
- case 47 : fPixelSize = rDGR.GetF(); break;
- case 98 : nNumberOfSeedPoints = rDGR.GetI(); break;
-
- //!! passthrough !!
- case 92 : nCurrentBoundaryPathIndex++;
- default:
- {
- sal_Bool bExecutingGroupCode = sal_False;
- if ( bIsInBoundaryPathContext )
- {
- if ( ( nCurrentBoundaryPathIndex >= 0 ) &&
- ( nCurrentBoundaryPathIndex < nBoundaryPathCount ) )
- bExecutingGroupCode = pBoundaryPathData[ nCurrentBoundaryPathIndex ].EvaluateGroup( rDGR );
- }
- if ( bExecutingGroupCode == sal_False )
- DXFBasicEntity::EvaluateGroup(rDGR);
- }
- break;
- }
-}
-
-DXFHatchEntity::~DXFHatchEntity()
-{
- delete[] pBoundaryPathData;
-}
-
-//--------------------------DXFVertexEntity-------------------------------------
-
-DXFVertexEntity::DXFVertexEntity() : DXFBasicEntity(DXF_VERTEX)
-{
- fSWidth=-1.0;
- fEWidth=-1.0;
- fBulge=0.0;
- nFlags=0;
- fCFTDir=0.0;
-
-}
-
-void DXFVertexEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 40: fSWidth=rDGR.GetF(); break;
- case 41: fEWidth=rDGR.GetF(); break;
- case 42: fBulge=rDGR.GetF(); break;
- case 70: nFlags=rDGR.GetI(); break;
- case 50: fCFTDir=rDGR.GetF(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//--------------------------DXFSeqEndEntity-------------------------------------
-
-DXFSeqEndEntity::DXFSeqEndEntity() : DXFBasicEntity(DXF_SEQEND)
-{
-}
-
-//--------------------------DXF3DFace-------------------------------------------
-
-DXF3DFaceEntity::DXF3DFaceEntity() : DXFBasicEntity(DXF_3DFACE)
-{
- nIEFlags=0;
-}
-
-void DXF3DFaceEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 10: aP0.fx=rDGR.GetF(); break;
- case 20: aP0.fy=rDGR.GetF(); break;
- case 30: aP0.fz=rDGR.GetF(); break;
- case 11: aP1.fx=rDGR.GetF(); break;
- case 21: aP1.fy=rDGR.GetF(); break;
- case 31: aP1.fz=rDGR.GetF(); break;
- case 12: aP2.fx=rDGR.GetF(); break;
- case 22: aP2.fy=rDGR.GetF(); break;
- case 32: aP2.fz=rDGR.GetF(); break;
- case 13: aP3.fx=rDGR.GetF(); break;
- case 23: aP3.fy=rDGR.GetF(); break;
- case 33: aP3.fz=rDGR.GetF(); break;
- case 70: nIEFlags=rDGR.GetI(); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-
-//--------------------------DXFDimensionEntity----------------------------------
-
-DXFDimensionEntity::DXFDimensionEntity() : DXFBasicEntity(DXF_DIMENSION)
-{
- sPseudoBlock[0]=0;
-}
-
-void DXFDimensionEntity::EvaluateGroup(DXFGroupReader & rDGR)
-{
- switch (rDGR.GetG()) {
- case 2: strncpy( sPseudoBlock, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- default: DXFBasicEntity::EvaluateGroup(rDGR);
- }
-}
-
-//---------------------------- DXFEntites --------------------------------------
-
-void DXFEntities::Read(DXFGroupReader & rDGR)
-{
- DXFBasicEntity * pE, * * ppSucc;
-
- ppSucc=&pFirst;
- while (*ppSucc!=NULL) ppSucc=&((*ppSucc)->pSucc);
-
- while (rDGR.GetG()!=0) rDGR.Read();
-
- while (strcmp(rDGR.GetS(),"ENDBLK")!=0 &&
- strcmp(rDGR.GetS(),"ENDSEC")!=0 &&
- strcmp(rDGR.GetS(),"EOF")!=0 )
- {
-
- if (strcmp(rDGR.GetS(),"LINE" )==0) pE=new DXFLineEntity;
- else if (strcmp(rDGR.GetS(),"POINT" )==0) pE=new DXFPointEntity;
- else if (strcmp(rDGR.GetS(),"CIRCLE" )==0) pE=new DXFCircleEntity;
- else if (strcmp(rDGR.GetS(),"ARC" )==0) pE=new DXFArcEntity;
- else if (strcmp(rDGR.GetS(),"TRACE" )==0) pE=new DXFTraceEntity;
- else if (strcmp(rDGR.GetS(),"SOLID" )==0) pE=new DXFSolidEntity;
- else if (strcmp(rDGR.GetS(),"TEXT" )==0) pE=new DXFTextEntity;
- else if (strcmp(rDGR.GetS(),"SHAPE" )==0) pE=new DXFShapeEntity;
- else if (strcmp(rDGR.GetS(),"INSERT" )==0) pE=new DXFInsertEntity;
- else if (strcmp(rDGR.GetS(),"ATTDEF" )==0) pE=new DXFAttDefEntity;
- else if (strcmp(rDGR.GetS(),"ATTRIB" )==0) pE=new DXFAttribEntity;
- else if (strcmp(rDGR.GetS(),"POLYLINE" )==0) pE=new DXFPolyLineEntity;
- else if (strcmp(rDGR.GetS(),"LWPOLYLINE")==0) pE=new DXFLWPolyLineEntity;
- else if (strcmp(rDGR.GetS(),"VERTEX" )==0) pE=new DXFVertexEntity;
- else if (strcmp(rDGR.GetS(),"SEQEND" )==0) pE=new DXFSeqEndEntity;
- else if (strcmp(rDGR.GetS(),"3DFACE" )==0) pE=new DXF3DFaceEntity;
- else if (strcmp(rDGR.GetS(),"DIMENSION" )==0) pE=new DXFDimensionEntity;
- else if (strcmp(rDGR.GetS(),"HATCH" )==0) pE=new DXFHatchEntity;
- else
- {
- do {
- rDGR.Read();
- } while (rDGR.GetG()!=0);
- continue;
- }
- *ppSucc=pE;
- ppSucc=&(pE->pSucc);
- pE->Read(rDGR);
- }
-}
-
-void DXFEntities::Clear()
-{
- DXFBasicEntity * ptmp;
-
- while (pFirst!=NULL) {
- ptmp=pFirst;
- pFirst=ptmp->pSucc;
- delete ptmp;
- }
-}
-
diff --git a/goodies/source/filter.vcl/idxf/dxfentrd.hxx b/goodies/source/filter.vcl/idxf/dxfentrd.hxx
deleted file mode 100644
index 8c0eee5d10d4..000000000000
--- a/goodies/source/filter.vcl/idxf/dxfentrd.hxx
+++ /dev/null
@@ -1,605 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxfentrd.hxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _DXFENTRD_HXX
-#define _DXFENTRD_HXX
-
-#include <dxfgrprd.hxx>
-#include <dxfvec.hxx>
-
-#include <deque>
-
-typedef std::deque< Point > DXFPointArray;
-
-//------------------------------------------------------------------------------
-//------------------------- Art eines Entity -----------------------------------
-//------------------------------------------------------------------------------
-
-enum DXFEntityType {
- DXF_LINE,
- DXF_POINT,
- DXF_CIRCLE,
- DXF_ARC,
- DXF_TRACE,
- DXF_SOLID,
- DXF_TEXT,
- DXF_SHAPE,
- DXF_INSERT,
- DXF_ATTDEF,
- DXF_ATTRIB,
- DXF_POLYLINE,
- DXF_VERTEX,
- DXF_SEQEND,
- DXF_3DFACE,
- DXF_DIMENSION,
- DXF_LWPOLYLINE,
- DXF_HATCH
-};
-
-//------------------------------------------------------------------------------
-//---------------------- Basisklasse fuer ein Entity ---------------------------
-//------------------------------------------------------------------------------
-
-class DXFBasicEntity {
-
-public:
-
- DXFBasicEntity * pSucc;
- // Zeiger auf naechstes Entity (in der Liste DXFEntities.pFirst)
-
- DXFEntityType eType;
- // Art des Entitys (Linie oder Kreis oder was)
-
- // Eigenschaftenm, die alle Entities besitzen, jeweils
- // durch den Gruppencode kommentiert:
- char sLayer[DXF_MAX_STRING_LEN+1]; // 8
- char sLineType[DXF_MAX_STRING_LEN+1]; // 6
- double fElevation; // 38
- double fThickness; // 39
- long nColor; // 62
- long nSpace; // 67
- DXFVector aExtrusion; // 210,220,230
-
-protected:
-
- DXFBasicEntity(DXFEntityType eThisType);
- // Konstruktoren der Entities initialiseren immer mit Defaultwerten.
-
-public:
-
- virtual ~DXFBasicEntity();
- virtual void Read(DXFGroupReader & rDGR);
- // Liest die Prameter ein, bis zur naechten 0-Gruppe
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
- // Diese Methode wird durch Read() fuer jeden Parameter (bzw. fuer jede
- // Gruppe) aufgerufen.
- // Sofern der Gruppencode dem Entity bekannt ist, wird der entsprechende
- // Parameter geholt.
-
-};
-
-//------------------------------------------------------------------------------
-//---------------- die verschiedenen Arten von Entyties ------------------------
-//------------------------------------------------------------------------------
-
-//--------------------------Line------------------------------------------------
-
-class DXFLineEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
- DXFVector aP1; // 11,21,31
-
- DXFLineEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------Point-----------------------------------------------
-
-class DXFPointEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
-
- DXFPointEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------Circle----------------------------------------------
-
-class DXFCircleEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
- double fRadius; // 40
-
- DXFCircleEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------Arc-------------------------------------------------
-
-class DXFArcEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
- double fRadius; // 40
- double fStart; // 50
- double fEnd; // 51
-
- DXFArcEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------Trace-----------------------------------------------
-
-class DXFTraceEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
- DXFVector aP1; // 11,21,31
- DXFVector aP2; // 12,22,32
- DXFVector aP3; // 13,23,33
-
- DXFTraceEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------Solid-----------------------------------------------
-
-class DXFSolidEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
- DXFVector aP1; // 11,21,31
- DXFVector aP2; // 12,22,32
- DXFVector aP3; // 13,23,33
-
- DXFSolidEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------Text------------------------------------------------
-
-class DXFTextEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
- double fHeight; // 40
- char sText[DXF_MAX_STRING_LEN+1]; // 1
- double fRotAngle; // 50
- double fXScale; // 41
- double fOblAngle; // 42
- char sStyle[DXF_MAX_STRING_LEN+1]; // 7
- long nGenFlags; // 71
- long nHorzJust; // 72
- long nVertJust; // 73
- DXFVector aAlign; // 11,21,31
-
- DXFTextEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------Shape-----------------------------------------------
-
-class DXFShapeEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
- double fSize; // 40
- char sName[DXF_MAX_STRING_LEN+1]; // 2
- double fRotAngle; // 50
- double fXScale; // 41
- double fOblAngle; // 51
-
- DXFShapeEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------Insert----------------------------------------------
-
-class DXFInsertEntity : public DXFBasicEntity {
-
-public:
-
- long nAttrFlag; // 66
- char sName[DXF_MAX_STRING_LEN+1]; // 2
- DXFVector aP0; // 10,20,30
- double fXScale; // 41
- double fYScale; // 42
- double fZScale; // 43
- double fRotAngle; // 50
- long nColCount; // 70
- long nRowCount; // 71
- double fColSpace; // 44
- double fRowSpace; // 45
-
- DXFInsertEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------AttDef----------------------------------------------
-
-class DXFAttDefEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
- double fHeight; // 40
- char sDefVal[DXF_MAX_STRING_LEN+1]; // 1
- char sPrompt[DXF_MAX_STRING_LEN+1]; // 3
- char sTagStr[DXF_MAX_STRING_LEN+1]; // 2
- long nAttrFlags; // 70
- long nFieldLen; // 73
- double fRotAngle; // 50
- double fXScale; // 41
- double fOblAngle; // 51
- char sStyle[DXF_MAX_STRING_LEN+1]; // 7
- long nGenFlags; // 71
- long nHorzJust; // 72
- long nVertJust; // 74
- DXFVector aAlign; // 11,21,31
-
- DXFAttDefEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------Attrib----------------------------------------------
-
-class DXFAttribEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
- double fHeight; // 40
- char sText[DXF_MAX_STRING_LEN+1]; // 1
- char sTagStr[DXF_MAX_STRING_LEN+1]; // 2
- long nAttrFlags; // 70
- long nFieldLen; // 73
- double fRotAngle; // 50
- double fXScale; // 41
- double fOblAngle; // 51
- char sStyle[DXF_MAX_STRING_LEN+1]; // 7
- long nGenFlags; // 71
- long nHorzJust; // 72
- long nVertJust; // 74
- DXFVector aAlign; // 11,21,31
-
- DXFAttribEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------PolyLine--------------------------------------------
-
-class DXFPolyLineEntity : public DXFBasicEntity {
-
-public:
-
- double fElevation; // 30
- long nFlags; // 70
- double fSWidth; // 40
- double fEWidth; // 41
- long nMeshMCount; // 71
- long nMeshNCount; // 72
- long nMDensity; // 73
- long nNDensity; // 74
- long nCSSType; // 75
-
- DXFPolyLineEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-class DXFLWPolyLineEntity : public DXFBasicEntity
-{
- sal_Int32 nIndex;
-
- public :
-
- sal_Int32 nCount; // 90
- sal_Int32 nFlags; // 70 1 = closed, 128 = plinegen
- double fConstantWidth; // 43 (optional - default: 0, not used if fStartWidth and/or fEndWidth is used)
- double fStartWidth; // 40
- double fEndWidth; // 41
-
- DXFVector* pP;
-
- DXFLWPolyLineEntity();
- ~DXFLWPolyLineEntity();
-
- protected :
-
- virtual void EvaluateGroup( DXFGroupReader & rDGR );
-
-};
-
-//-------------------------- Hatch ---------------------------------------------
-
-struct DXFEdgeType
-{
- sal_Int32 nEdgeType;
-
- virtual ~DXFEdgeType(){};
- virtual sal_Bool EvaluateGroup( DXFGroupReader & /*rDGR*/ ){ return sal_True; };
-
- protected :
-
- DXFEdgeType( sal_Int32 EdgeType ):nEdgeType(EdgeType){};
-};
-struct DXFEdgeTypeLine : public DXFEdgeType
-{
- DXFVector aStartPoint; // 10,20
- DXFVector aEndPoint; // 11,21
- DXFEdgeTypeLine();
- virtual ~DXFEdgeTypeLine();
- virtual sal_Bool EvaluateGroup( DXFGroupReader & rDGR );
-};
-struct DXFEdgeTypeCircularArc : public DXFEdgeType
-{
- DXFVector aCenter; // 10,20
- double fRadius; // 40
- double fStartAngle; // 50
- double fEndAngle; // 51
- sal_Int32 nIsCounterClockwiseFlag; // 73
- DXFEdgeTypeCircularArc();
- virtual ~DXFEdgeTypeCircularArc();
- virtual sal_Bool EvaluateGroup( DXFGroupReader & rDGR );
-};
-struct DXFEdgeTypeEllipticalArc : public DXFEdgeType
-{
- DXFVector aCenter; // 10,20
- DXFVector aEndPoint; // 11,21
- double fLength; // 40
- double fStartAngle; // 50
- double fEndAngle; // 51
- sal_Int32 nIsCounterClockwiseFlag; // 73
-
- DXFEdgeTypeEllipticalArc();
- virtual ~DXFEdgeTypeEllipticalArc();
- virtual sal_Bool EvaluateGroup( DXFGroupReader & rDGR );
-};
-struct DXFEdgeTypeSpline : public DXFEdgeType
-{
- sal_Int32 nDegree; // 94
- sal_Int32 nRational; // 73
- sal_Int32 nPeriodic; // 74
- sal_Int32 nKnotCount; // 75
- sal_Int32 nControlCount; // 76
-
- DXFEdgeTypeSpline();
- virtual ~DXFEdgeTypeSpline();
- virtual sal_Bool EvaluateGroup( DXFGroupReader & rDGR );
-};
-
-typedef std::deque< DXFEdgeType* > DXFEdgeTypeArray;
-
-struct DXFBoundaryPathData
-{
- sal_Int32 nFlags; // 92
- sal_Int32 nHasBulgeFlag; // 72
- sal_Int32 nIsClosedFlag; // 73
- sal_Int32 nPointCount; // 93
- double fBulge; // 42
- sal_Int32 nSourceBoundaryObjects; // 97
- sal_Int32 nEdgeCount; // 93
-
- sal_Bool bIsPolyLine;
- sal_Int32 nPointIndex;
-
- DXFVector* pP;
- DXFEdgeTypeArray aEdges;
-
- DXFBoundaryPathData();
- ~DXFBoundaryPathData();
-
- sal_Bool EvaluateGroup( DXFGroupReader & rDGR );
-};
-
-class DXFHatchEntity : public DXFBasicEntity
-{
- sal_Bool bIsInBoundaryPathContext;
- sal_Int32 nCurrentBoundaryPathIndex;
-
- public :
-
- DXFVector aElevationPoint;
- sal_Int32 nFlags; // 70 (solid fill = 1, pattern fill = 0)
- sal_Int32 nAssociativityFlag; // 71 (assoiciative = 1, non-associative = 0)
- sal_Int32 nBoundaryPathCount; // 91
- sal_Int32 nHatchStyle; // 75 (odd parity = 0, outmost area = 1, entire area = 2 )
- sal_Int32 nHatchPatternType; // 76 (user defined = 0, predefined = 1, custom = 2)
- double fHatchPatternAngle; // 52 (pattern fill only)
- double fHatchPatternScale; // 41 (pattern fill only:scale or spacing)
- sal_Int32 nHatchDoubleFlag; // 77 (pattern fill only:double = 1, not double = 0)
- sal_Int32 nHatchPatternDefinitionLines; // 78
- double fPixelSize; // 47
- sal_Int32 nNumberOfSeedPoints; // 98
-
- DXFBoundaryPathData* pBoundaryPathData;
-
- DXFHatchEntity();
- ~DXFHatchEntity();
-
- protected :
-
- virtual void EvaluateGroup( DXFGroupReader & rDGR );
-};
-
-
-//--------------------------Vertex----------------------------------------------
-
-class DXFVertexEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
- double fSWidth; // 40 (Wenn <0.0, dann gilt DXFPolyLine::fSWidth)
- double fEWidth; // 41 (Wenn <0.0, dann gilt DXFPolyLine::fEWidth)
- double fBulge; // 42
- long nFlags; // 70
- double fCFTDir; // 50
-
- DXFVertexEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------SeqEnd----------------------------------------------
-
-class DXFSeqEndEntity : public DXFBasicEntity {
-
-public:
-
- DXFSeqEndEntity();
-};
-
-//--------------------------3DFace----------------------------------------------
-
-class DXF3DFaceEntity : public DXFBasicEntity {
-
-public:
-
- DXFVector aP0; // 10,20,30
- DXFVector aP1; // 11,21,31
- DXFVector aP2; // 12,22,32
- DXFVector aP3; // 13,23,33
- long nIEFlags; // 70
-
- DXF3DFaceEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//--------------------------Dimension-------------------------------------------
-
-class DXFDimensionEntity : public DXFBasicEntity {
-
-public:
-
- char sPseudoBlock[DXF_MAX_STRING_LEN+1]; // 2
-
- DXFDimensionEntity();
-
-protected:
-
- virtual void EvaluateGroup(DXFGroupReader & rDGR);
-};
-
-//------------------------------------------------------------------------------
-//----------- Eine Menge von Entities lesen und repraesentieren ----------------
-//------------------------------------------------------------------------------
-
-class DXFEntities {
-
-public:
-
- DXFEntities();
- ~DXFEntities();
-
- DXFBasicEntity * pFirst; // Liste von Entities, READ ONLY!
-
- void Read(DXFGroupReader & rDGR);
- // Liest Entitis per rGDR aus einer DXF-Datei bis zu
- // einem ENDBLK, ENDSEC oder EOF (der Gruppe 0).
- // (Alle unbekannten Dinge werden uebersprungen)
-
- void Clear();
- // Loescht alle Entities
-};
-
-//------------------------------------------------------------------------------
-//--------------------------------- inlines ------------------------------------
-//------------------------------------------------------------------------------
-
-inline DXFEntities::DXFEntities()
-{
- pFirst=NULL;
-}
-
-
-inline DXFEntities::~DXFEntities()
-{
- Clear();
-}
-
-
-#endif
-
-
diff --git a/goodies/source/filter.vcl/idxf/dxfgrprd.cxx b/goodies/source/filter.vcl/idxf/dxfgrprd.cxx
deleted file mode 100644
index e1849ec3682f..000000000000
--- a/goodies/source/filter.vcl/idxf/dxfgrprd.cxx
+++ /dev/null
@@ -1,364 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxfgrprd.cxx,v $
- * $Revision: 1.12 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <string.h>
-#include <stdlib.h>
-#include <tools/stream.hxx>
-#include "dxfgrprd.hxx"
-
-// ----------------------------------------------------------------------------
-
-// we use an own ReadLine function, because Stream::ReadLine stops if
-// a 0-sign occurs; this functions converts 0-signs to blanks and reads
-// a complete line until a cr/lf is found
-
-BOOL DXFReadLine( SvStream& rIStm, ByteString& rStr )
-{
- char buf[256 + 1];
- BOOL bEnd = FALSE;
- ULONG nOldFilePos = rIStm.Tell();
- char c = 0;
-
- rStr.Erase();
-
- while( !bEnd && !rIStm.GetError() ) // !!! nicht auf EOF testen,
- // !!! weil wir blockweise
- // !!! lesen
- {
- USHORT nLen = (USHORT)rIStm.Read( buf, sizeof(buf)-1 );
- if( !nLen )
- {
- if( rStr.Len() == 0 )
- return FALSE;
- else
- break;
- }
-
- for( USHORT n = 0; n < nLen ; n++ )
- {
- c = buf[n];
- if( c != '\n' && c != '\r' )
- {
- if( !c )
- c = ' ';
- rStr += c;
- }
- else
- {
- bEnd = TRUE;
- break;
- }
- }
- }
-
- if( !bEnd && !rIStm.GetError() && rStr.Len() )
- bEnd = TRUE;
-
- nOldFilePos += rStr.Len();
- if( rIStm.Tell() > nOldFilePos )
- nOldFilePos++;
- rIStm.Seek( nOldFilePos ); // seeken wg. obigem BlockRead!
-
- if( bEnd && (c=='\r' || c=='\n')) // Sonderbehandlung DOS-Dateien
- {
- char cTemp;
- rIStm.Read((char*)&cTemp , sizeof(cTemp) );
- if( cTemp == c || (cTemp != '\n' && cTemp != '\r') )
- rIStm.Seek( nOldFilePos );
- }
-
- return bEnd;
-}
-
-// ------------------
-
-DXFGroupReader::DXFGroupReader(SvStream & rIStream, USHORT nminpercent, USHORT nmaxpercent ) :
- rIS(rIStream)
-{
- USHORT i;
-
- nIBuffPos=0;
- nIBuffSize=0;
- bStatus=TRUE;
- nLastG=0;
- nGCount=0;
-
- nMinPercent=(ULONG)nminpercent;
- nMaxPercent=(ULONG)nmaxpercent;
- nLastPercent=nMinPercent;
-
- rIS.Seek(STREAM_SEEK_TO_END);
- nFileSize=rIS.Tell();
- rIS.Seek(0);
-
- for (i=0; i<10; i++) S0_9[i][0]=0;
- S100[ 0 ] = S102[ 0 ] = 0;
- for (i=0; i<50; i++) F10_59[i]=0.0;
- for (i=0; i<20; i++) I60_79[i]=0;
- for (i=0; i<10; i++) I90_99[i]=0;
- for (i=0; i< 8; i++) F140_147[i]=0.0;
- for (i=0; i< 6; i++) I170_175[i]=0;
- for (i=0; i<30; i++) F210_239[i]=0.0;
- for (i=0; i<11; i++) S999_1009[i][0]=0;
- for (i=0; i<50; i++) F1010_1059[i]=0.0;
- for (i=0; i<20; i++) I1060_1079[i]=0;
-
-}
-
-
-USHORT DXFGroupReader::Read()
-{
- sal_uInt16 nG = 0;
- if ( bStatus )
- {
- nGCount++;
- nG = (sal_uInt16)ReadI();
- if ( bStatus )
- {
- char aTmp[ DXF_MAX_STRING_LEN + 1 ];
-
- if (nG< 10) ReadS(S0_9[nG]);
- else if (nG< 60) F10_59[nG-10]=ReadF();
- else if (nG< 80) I60_79[nG-60]=ReadI();
- else if (nG< 90) ReadS( aTmp );
- else if (nG< 99) I90_99[nG-90]=ReadI();
- else if (nG==100) ReadS(S100);
- else if (nG==102) ReadS(S102);
- else if (nG==105) ReadS( aTmp );
- else if (nG< 140) ReadS( aTmp );
- else if (nG< 148) F140_147[nG-140]=ReadF();
- else if (nG< 170) ReadS( aTmp );
- else if (nG< 176) I170_175[nG-175]=ReadI();
- else if (nG< 180) ReadI();
- else if (nG< 210) ReadS( aTmp );
- else if (nG< 240) F210_239[nG-210]=ReadF();
- else if (nG<=369) ReadS( aTmp );
- else if (nG< 999) ReadS( aTmp );
- else if (nG<1010) ReadS(S999_1009[nG-999]);
- else if (nG<1060) F1010_1059[nG-1010]=ReadF();
- else if (nG<1080) I1060_1079[nG-1060]=ReadI();
- else bStatus = sal_False;
- }
- }
- if ( bStatus )
- nLastG = nG;
- else
- {
- nG = 0;
- SetS( 0, "EOF" );
- if ( nGCount != 0xffffffff )
- {
- // InfoBox(NULL,String("Fehler ab Gruppe Nr ")+String(nGCount)).Execute();
- nGCount=0xffffffff;
- }
- }
- nLastG = nG;
- return nG;
-}
-
-
-long DXFGroupReader::GetI(USHORT nG)
-{
- sal_Int32 nRetValue = 0;
- if ( ( nG >= 60 ) && ( nG <= 79 ) )
- nRetValue = I60_79[ nG - 60 ];
- else if ( ( nG >= 90 ) && ( nG <= 99 ) )
- nRetValue = I90_99[ nG - 90 ];
- else if ( ( nG >= 170 ) && ( nG <= 175 ) )
- nRetValue = I170_175[ nG - 170 ];
- else if ( ( nG >= 1060 ) && ( nG <= 1079 ) )
- nRetValue = I1060_1079[ nG - 1060 ];
- return nRetValue;
-}
-
-double DXFGroupReader::GetF(USHORT nG)
-{
- nG-=10;
- if (nG<50) return F10_59[nG];
- else {
- nG-=130;
- if (nG<8) return F140_147[nG];
- else {
- nG-=70;
- if (nG<30) return F210_239[nG];
- else {
- nG-=800;
- if (nG<50) return F1010_1059[nG];
- else return 0;
- }
- }
- }
-}
-
-const char * DXFGroupReader::GetS(USHORT nG)
-{
- if (nG<10) return S0_9[nG];
- else if ( nG == 100 )
- return S100;
- else if ( nG == 102 )
- return S102;
- else
- {
- nG-=999;
- if (nG<11) return S999_1009[nG];
- else return NULL;
- }
-}
-
-void DXFGroupReader::SetF(USHORT nG, double fF)
-{
- nG-=10;
- if (nG<50) F10_59[nG]=fF;
- else {
- nG-=130;
- if (nG<8) F140_147[nG]=fF;
- else {
- nG-=70;
- if (nG<30) F210_239[nG]=fF;
- else {
- nG-=800;
- if (nG<50) F1010_1059[nG]=fF;
- }
- }
- }
-}
-
-
-void DXFGroupReader::SetS(USHORT nG, const char * sS)
-{
- char* pPtr = NULL;
- if ( nG < 10 )
- pPtr = S0_9[ nG ];
- else if ( nG == 100 )
- pPtr = S100;
- else if ( nG == 102 )
- pPtr = S102;
- else
- {
- nG -= 999;
- if ( nG < 11 )
- pPtr = S999_1009[ nG ];
- }
- if ( pPtr )
- strncpy( pPtr, sS, DXF_MAX_STRING_LEN + 1 );
-}
-
-
-void DXFGroupReader::ReadLine(char * ptgt)
-{
- ByteString aStr;
- ULONG nLen;
-
- DXFReadLine( rIS, aStr );
-
- nLen = aStr.Len();
- if ( nLen > DXF_MAX_STRING_LEN )
- nLen = DXF_MAX_STRING_LEN;
-
- memcpy( ptgt, aStr.GetBuffer(), nLen );
- ptgt[ nLen ] = 0x00;
-/*
- if ( pCallback )
- {
- const ULONG nPercent= nMinPercent + (nMaxPercent-nMinPercent)*rIS.Tell() / nFileSize;
-
- if ( nPercent >= nLastPercent + 4 )
- {
- nLastPercent=nPercent;
- if (((*pCallback)(pCallerData,(USHORT)nPercent))==TRUE)
- bStatus=FALSE;
- }
- }
-*/
-}
-
-
-long DXFGroupReader::ReadI()
-{
- char sl[DXF_MAX_STRING_LEN+1],*p;
- long res,nv;
-
- ReadLine(sl);
-
- p=sl;
-
- while(*p==0x20) p++;
-
- if ((*p<'0' || *p>'9') && *p!='-') {
- bStatus=FALSE;
- return 0;
- }
-
- if (*p=='-') {
- nv=-1;
- p++;
- }
- else nv=1;
-
- res=0;
- do {
- res=res*10+(long)(*p-'0');
- p++;
- } while (*p>='0' && *p<='9');
-
- while (*p==0x20) p++;
- if (*p!=0) {
- bStatus=FALSE;
- return 0;
- }
-
- return res*nv;
-}
-
-
-double DXFGroupReader::ReadF()
-{
- char sl[DXF_MAX_STRING_LEN+1],*p;
-
- ReadLine(sl);
- p=sl;
- while(*p==0x20) p++;
- if ((*p<'0' || *p>'9') && *p!='.' && *p!='-') {
- bStatus=FALSE;
- return 0.0;
- }
- return atof(p);
-}
-
-
-void DXFGroupReader::ReadS(char * ptgt)
-{
- ReadLine(ptgt);
-}
-
-
diff --git a/goodies/source/filter.vcl/idxf/dxfgrprd.hxx b/goodies/source/filter.vcl/idxf/dxfgrprd.hxx
deleted file mode 100644
index 80a87ba4f4a8..000000000000
--- a/goodies/source/filter.vcl/idxf/dxfgrprd.hxx
+++ /dev/null
@@ -1,158 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxfgrprd.hxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _DXFGRPRD_HXX
-#define _DXFGRPRD_HXX
-
-#include <svtools/fltcall.hxx>
-
-#define DXF_MAX_STRING_LEN 256 // Max Stringlaenge (ohne die 0)
-
-
-class DXFGroupReader
-{
-
-public:
-
- // Anmerkkung:
- // sizeof(DXFGroupReader) ist gross, also nur dynamisch anlegen!
-
- DXFGroupReader( SvStream & rIStream, USHORT nMinPercent, USHORT nMaxPercent );
-
- BOOL GetStatus();
-
- void SetError();
-
- USHORT Read();
- // Liesst die naechste Gruppe ein und liefert den Gruppencode zurueck.
- // Im Falle eines Fehlers liefert GetStatus() FALSE, Gruppencode wird 0
- // gesetzt, und es wird SetS(0,"EOF") ausgefuehrt.
-
- USHORT GetG();
- // Liefert den letzten Gruppencode (also was Read() zuletzt lieferte)
-
- long GetI();
- // Liefert den Integer-Wert zur Gruppe, die vorher mit Read() gelesen wurde.
- // Dabei muss es sich um einen Gruppencode fuer den Datentyp Integer
- // gehandelt haben, wenn nicht, wird 0 gelieferet.
-
- double GetF();
- // Liefert den Floatingpoint-Wert zur Gruppe, die vorher mit Read() gelesen wurde.
- // Dabei muss es sich um einen Gruppencode fuer den Datentyp Floatingpoint
- // gehandelt haben, wenn nicht, wird 0 geliefert.
-
- const char * GetS();
- // Liefert den String zur Gruppe, die vorher mit Read() gelesen wurde.
- // Dabei muss es sich um einen Gruppencode fuer den Datentyp String
- // gehandelt haben, wenn nicht, wird NULL geliefert.
-
- // Folgende drei Methoden arbeiten wie die obigen, nur kann auch ein anderer als der
- // aktuelle Gruppencode angegeben werden. (DXFGroupReader speichert die Parameter
- // zu allen Gruppencodes. Dadurch ist es moeglich, dass zunaechst mit Read() einige
- // verschiedene Gruppen eingelesen werden, bevor sie ausgewertet werden.)
- long GetI(USHORT nG);
- double GetF(USHORT nG);
- const char * GetS(USHORT nG);
-
- // Mit folgenden Methoden koennen die aktuell gespeicherten Werte zu den
- // Gruppencodes veraendert werden. (z.B. um Defaultwerte zu setzen, bevor
- // 'blind' eine Menge von Gruppen eingelesen wird.)
- void SetF(USHORT nG, double fF);
- void SetS(USHORT nG, const char * sS); // (wird kopiert)
-
-private:
-
- void ReadLine(char * ptgt);
- long ReadI();
- double ReadF();
- void ReadS(char * ptgt);
-
- SvStream & rIS;
- char sIBuff[1024];
- USHORT nIBuffSize,nIBuffPos;
- BOOL bStatus;
- USHORT nLastG;
- ULONG nGCount;
-
- ULONG nMinPercent;
- ULONG nMaxPercent;
- ULONG nLastPercent;
- ULONG nFileSize;
-
- char S0_9 [10][DXF_MAX_STRING_LEN+1]; // Strings Gruppencodes 0..9
- double F10_59 [50]; // Floats Gruppencodes 10..59
- long I60_79 [20]; // Integers Gruppencodes 60..79
- long I90_99 [10];
- char S100 [DXF_MAX_STRING_LEN+1];
- char S102 [DXF_MAX_STRING_LEN+1];
- double F140_147 [ 8]; // Floats Gruppencodes 140..147
- long I170_175 [ 6]; // Integers Gruppencodes 170..175
- double F210_239 [30]; // Floats Gruppencodes 210..239
- char S999_1009 [11][DXF_MAX_STRING_LEN+1]; // Strings Gruppencodes 999..1009
- double F1010_1059[50]; // Floats Gruppencodes 1010..1059
- long I1060_1079[20]; // Integers Gruppencodes 1060..1079
-
-};
-
-
-inline BOOL DXFGroupReader::GetStatus()
-{
- return bStatus;
-}
-
-
-inline void DXFGroupReader::SetError()
-{
- bStatus=FALSE;
-}
-
-inline USHORT DXFGroupReader::GetG()
-{
- return nLastG;
-}
-
-inline long DXFGroupReader::GetI()
-{
- return GetI(nLastG);
-}
-
-inline double DXFGroupReader::GetF()
-{
- return GetF(nLastG);
-}
-
-inline const char * DXFGroupReader::GetS()
-{
- return GetS(nLastG);
-}
-
-#endif
-
-
diff --git a/goodies/source/filter.vcl/idxf/dxfreprd.cxx b/goodies/source/filter.vcl/idxf/dxfreprd.cxx
deleted file mode 100644
index 80b4cb599b73..000000000000
--- a/goodies/source/filter.vcl/idxf/dxfreprd.cxx
+++ /dev/null
@@ -1,388 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxfreprd.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <string.h>
-#include <dxfreprd.hxx>
-
-
-//------------------DXFBoundingBox--------------------------------------------
-
-
-void DXFBoundingBox::Union(const DXFVector & rVector)
-{
- if (bEmpty==TRUE) {
- fMinX=rVector.fx;
- fMinY=rVector.fy;
- fMinZ=rVector.fz;
- fMaxX=rVector.fx;
- fMaxY=rVector.fy;
- fMaxZ=rVector.fz;
- bEmpty=FALSE;
- }
- else {
- if (fMinX>rVector.fx) fMinX=rVector.fx;
- if (fMinY>rVector.fy) fMinY=rVector.fy;
- if (fMinZ>rVector.fz) fMinZ=rVector.fz;
- if (fMaxX<rVector.fx) fMaxX=rVector.fx;
- if (fMaxY<rVector.fy) fMaxY=rVector.fy;
- if (fMaxZ<rVector.fz) fMaxZ=rVector.fz;
- }
-}
-
-
-//------------------DXFPalette------------------------------------------------
-
-
-DXFPalette::DXFPalette()
-{
- short i,j,nHue,nNSat,nVal,nC[3],nmax,nmed,nmin;
- BYTE nV;
-
- pRed =new BYTE[256];
- pGreen=new BYTE[256];
- pBlue =new BYTE[256];
-
- // Farben 0 - 9 (normale Farben)
- SetColor(0, 0x00, 0x00, 0x00); // eigentlich nie benutzt
- SetColor(1, 0xff, 0x00, 0x00);
- SetColor(2, 0xff, 0xff, 0x00);
- SetColor(3, 0x00, 0xff, 0x00);
- SetColor(4, 0x00, 0xff, 0xff);
- SetColor(5, 0x00, 0x00, 0xff);
- SetColor(6, 0xff, 0x00, 0xff);
- SetColor(7, 0x0f, 0x0f, 0x0f); // eigentlich weiss ???
- SetColor(8, 0x80, 0x80, 0x80);
- SetColor(9, 0xc0, 0xc0, 0xc0);
-
- // Farben 10 - 249
- // (Universal-Palette: 24 Farbtoene * 5 Helligkeiten * 2 Saettigungen )
- i=10;
- for (nHue=0; nHue<24; nHue++) {
- for (nVal=5; nVal>=1; nVal--) {
- for (nNSat=0; nNSat<2; nNSat++) {
- nmax=((nHue+3)>>3)%3;
- j=nHue-(nmax<<3); if (j>4) j=j-24;
- if (j>=0) {
- nmed=(nmax+1)%3;
- nmin=(nmax+2)%3;
- }
- else {
- nmed=(nmax+2)%3;
- nmin=(nmax+1)%3;
- j=-j;
- }
- nC[nmin]=0;
- nC[nmed]=255*j/4;
- nC[nmax]=255;
- if (nNSat!=0) {
- for (j=0; j<3; j++) nC[j]=(nC[j]>>1)+128;
- }
- for (j=0; j<3; j++) nC[j]=nC[j]*nVal/5;
- SetColor((BYTE)(i++),(BYTE)nC[0],(BYTE)nC[1],(BYTE)nC[2]);
- }
- }
- }
-
- // Farben 250 - 255 (Grautoenne)
- for (i=0; i<6; i++) {
- nV=(BYTE)(i*38+65);
- SetColor((BYTE)(250+i),nV,nV,nV);
- }
-}
-
-
-DXFPalette::~DXFPalette()
-{
- delete[] pBlue;
- delete[] pGreen;
- delete[] pRed;
-}
-
-
-void DXFPalette::SetColor(BYTE nIndex, BYTE nRed, BYTE nGreen, BYTE nBlue)
-{
- pRed[nIndex]=nRed;
- pGreen[nIndex]=nGreen;
- pBlue[nIndex]=nBlue;
-}
-
-
-//------------------DXFRepresentation-----------------------------------------
-
-
-DXFRepresentation::DXFRepresentation()
-{
- setTextEncoding(RTL_TEXTENCODING_IBM_437);
- setGlobalLineTypeScale(1.0);
-}
-
-
-DXFRepresentation::~DXFRepresentation()
-{
-}
-
-
-BOOL DXFRepresentation::Read( SvStream & rIStream, USHORT nMinPercent, USHORT nMaxPercent)
-{
- DXFGroupReader * pDGR;
- BOOL bRes;
-
- aTables.Clear();
- aBlocks.Clear();
- aEntities.Clear();
-
- pDGR = new DXFGroupReader( rIStream, nMinPercent, nMaxPercent );
-
- pDGR->Read();
- while (pDGR->GetG()!=0 || strcmp(pDGR->GetS(),"EOF")!=0) {
- if (pDGR->GetG()==0 && strcmp(pDGR->GetS(),"SECTION")==0) {
- if (pDGR->Read()!=2) {
- pDGR->SetError();
- break;
- }
- if (strcmp(pDGR->GetS(),"HEADER" )==0) ReadHeader(*pDGR);
- else if (strcmp(pDGR->GetS(),"TABLES" )==0) aTables.Read(*pDGR);
- else if (strcmp(pDGR->GetS(),"BLOCKS" )==0) aBlocks.Read(*pDGR);
- else if (strcmp(pDGR->GetS(),"ENTITIES")==0) aEntities.Read(*pDGR);
- else pDGR->Read();
- }
- else pDGR->Read();
- }
-
- bRes=pDGR->GetStatus();
-
- delete pDGR;
-
- if (bRes==TRUE && aBoundingBox.bEmpty==TRUE)
- CalcBoundingBox(aEntities,aBoundingBox);
-
- return bRes;
-}
-
-
-void DXFRepresentation::ReadHeader(DXFGroupReader & rDGR)
-{
-
- while (rDGR.GetG()!=0 || (strcmp(rDGR.GetS(),"EOF")!=0 && strcmp(rDGR.GetS(),"ENDSEC")!=0) )
- {
- if (rDGR.GetG()==9) {
- if (strcmp(rDGR.GetS(),"$EXTMIN")==0 ||
- strcmp(rDGR.GetS(),"$EXTMAX")==0)
- {
- DXFVector aVector;
- rDGR.SetF(10,0.0);
- rDGR.SetF(20,0.0);
- rDGR.SetF(30,0.0);
- do {
- rDGR.Read();
- } while (rDGR.GetG()!=9 && rDGR.GetG()!=0);
- aVector.fx=rDGR.GetF(10);
- aVector.fy=rDGR.GetF(20);
- aVector.fz=rDGR.GetF(30);
- aBoundingBox.Union(aVector);
- } else {
- if (strcmp(rDGR.GetS(),"$DWGCODEPAGE")==0)
- {
- rDGR.Read();
-
- // FIXME: we really need a whole table of
- // $DWGCODEPAGE to encodings mappings
- if ( (strcmp(rDGR.GetS(),"ANSI_932")==0) ||
- (strcmp(rDGR.GetS(),"ansi_932")==0) ||
- (strcmp(rDGR.GetS(),"DOS932")==0) ||
- (strcmp(rDGR.GetS(),"dos932")==0) )
- {
- setTextEncoding(RTL_TEXTENCODING_MS_932);
- }
- }
- else if (strcmp(rDGR.GetS(),"$LTSCALE")==0)
- {
- rDGR.Read();
- setGlobalLineTypeScale(getGlobalLineTypeScale() * rDGR.GetF());
- }
- else rDGR.Read();
- }
- }
- else rDGR.Read();
- }
-}
-
-
-void DXFRepresentation::CalcBoundingBox(const DXFEntities & rEntities,
- DXFBoundingBox & rBox)
-{
- DXFBasicEntity * pBE=rEntities.pFirst;
- while (pBE!=NULL) {
- switch (pBE->eType) {
- case DXF_LINE: {
- const DXFLineEntity * pE = (DXFLineEntity*)pBE;
- rBox.Union(pE->aP0);
- rBox.Union(pE->aP1);
- break;
- }
- case DXF_POINT: {
- const DXFPointEntity * pE = (DXFPointEntity*)pBE;
- rBox.Union(pE->aP0);
- break;
- }
- case DXF_CIRCLE: {
- const DXFCircleEntity * pE = (DXFCircleEntity*)pBE;
- DXFVector aP;
- aP=pE->aP0;
- aP.fx-=pE->fRadius;
- aP.fy-=pE->fRadius;
- rBox.Union(aP);
- aP=pE->aP0;
- aP.fx+=pE->fRadius;
- aP.fy+=pE->fRadius;
- rBox.Union(aP);
- break;
- }
- case DXF_ARC: {
- const DXFArcEntity * pE = (DXFArcEntity*)pBE;
- DXFVector aP;
- aP=pE->aP0;
- aP.fx-=pE->fRadius;
- aP.fy-=pE->fRadius;
- rBox.Union(aP);
- aP=pE->aP0;
- aP.fx+=pE->fRadius;
- aP.fy+=pE->fRadius;
- rBox.Union(aP);
- break;
- }
- case DXF_TRACE: {
- const DXFTraceEntity * pE = (DXFTraceEntity*)pBE;
- rBox.Union(pE->aP0);
- rBox.Union(pE->aP1);
- rBox.Union(pE->aP2);
- rBox.Union(pE->aP3);
- break;
- }
- case DXF_SOLID: {
- const DXFSolidEntity * pE = (DXFSolidEntity*)pBE;
- rBox.Union(pE->aP0);
- rBox.Union(pE->aP1);
- rBox.Union(pE->aP2);
- rBox.Union(pE->aP3);
- break;
- }
- case DXF_TEXT: {
- //const DXFTextEntity * pE = (DXFTextEntity*)pBE;
- //???
- break;
- }
- case DXF_SHAPE: {
- //const DXFShapeEntity * pE = (DXFShapeEntity*)pBE;
- //???
- break;
- }
- case DXF_INSERT: {
- const DXFInsertEntity * pE = (DXFInsertEntity*)pBE;
- DXFBlock * pB;
- DXFBoundingBox aBox;
- DXFVector aP;
- pB=aBlocks.Search(pE->sName);
- if (pB==NULL) break;
- CalcBoundingBox(*pB,aBox);
- if (aBox.bEmpty==TRUE) break;
- aP.fx=(aBox.fMinX-pB->aBasePoint.fx)*pE->fXScale+pE->aP0.fx;
- aP.fy=(aBox.fMinY-pB->aBasePoint.fy)*pE->fYScale+pE->aP0.fy;
- aP.fz=(aBox.fMinZ-pB->aBasePoint.fz)*pE->fZScale+pE->aP0.fz;
- rBox.Union(aP);
- aP.fx=(aBox.fMaxX-pB->aBasePoint.fx)*pE->fXScale+pE->aP0.fx;
- aP.fy=(aBox.fMaxY-pB->aBasePoint.fy)*pE->fYScale+pE->aP0.fy;
- aP.fz=(aBox.fMaxZ-pB->aBasePoint.fz)*pE->fZScale+pE->aP0.fz;
- rBox.Union(aP);
- break;
- }
- case DXF_ATTDEF: {
- //const DXFAttDefEntity * pE = (DXFAttDefEntity*)pBE;
- //???
- break;
- }
- case DXF_ATTRIB: {
- //const DXFAttribEntity * pE = (DXFAttribEntity*)pBE;
- //???
- break;
- }
- case DXF_VERTEX: {
- const DXFVertexEntity * pE = (DXFVertexEntity*)pBE;
- rBox.Union(pE->aP0);
- break;
- }
- case DXF_3DFACE: {
- const DXF3DFaceEntity * pE = (DXF3DFaceEntity*)pBE;
- rBox.Union(pE->aP0);
- rBox.Union(pE->aP1);
- rBox.Union(pE->aP2);
- rBox.Union(pE->aP3);
- break;
- }
- case DXF_DIMENSION: {
- const DXFDimensionEntity * pE = (DXFDimensionEntity*)pBE;
- DXFBlock * pB;
- DXFBoundingBox aBox;
- DXFVector aP;
- pB=aBlocks.Search(pE->sPseudoBlock);
- if (pB==NULL) break;
- CalcBoundingBox(*pB,aBox);
- if (aBox.bEmpty==TRUE) break;
- aP.fx=aBox.fMinX-pB->aBasePoint.fx;
- aP.fy=aBox.fMinY-pB->aBasePoint.fy;
- aP.fz=aBox.fMinZ-pB->aBasePoint.fz;
- rBox.Union(aP);
- aP.fx=aBox.fMaxX-pB->aBasePoint.fx;
- aP.fy=aBox.fMaxY-pB->aBasePoint.fy;
- aP.fz=aBox.fMaxZ-pB->aBasePoint.fz;
- rBox.Union(aP);
- break;
- }
- case DXF_POLYLINE: {
- //const DXFAttribEntity * pE = (DXFAttribEntity*)pBE;
- //???
- break;
- }
- case DXF_SEQEND: {
- //const DXFAttribEntity * pE = (DXFAttribEntity*)pBE;
- //???
- break;
- }
- case DXF_HATCH :
- break;
- case DXF_LWPOLYLINE :
- break;
- }
- pBE=pBE->pSucc;
- }
-}
diff --git a/goodies/source/filter.vcl/idxf/dxfreprd.hxx b/goodies/source/filter.vcl/idxf/dxfreprd.hxx
deleted file mode 100644
index 13ca7d022697..000000000000
--- a/goodies/source/filter.vcl/idxf/dxfreprd.hxx
+++ /dev/null
@@ -1,141 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxfreprd.hxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _DXFREPRD_HXX
-#define _DXFREPRD_HXX
-
-#include <dxfblkrd.hxx>
-#include <dxftblrd.hxx>
-
-
-//----------------------------------------------------------------------------
-//--------------------Nebensachen---------------------------------------------
-//----------------------------------------------------------------------------
-
-//-------------------Eine 3D-Min/Max-Box--------------------------------------
-
-class DXFBoundingBox {
-public:
- BOOL bEmpty;
- double fMinX;
- double fMinY;
- double fMinZ;
- double fMaxX;
- double fMaxY;
- double fMaxZ;
-
- DXFBoundingBox() { bEmpty=TRUE; }
- void Union(const DXFVector & rVector);
-};
-
-
-//-------------------Die (konstante) Palette fuer DXF-------------------------
-
-class DXFPalette {
-
-public:
-
- DXFPalette();
- ~DXFPalette();
-
- BYTE GetRed(BYTE nIndex) const;
- BYTE GetGreen(BYTE nIndex) const;
- BYTE GetBlue(BYTE nIndex) const;
-
-private:
- BYTE * pRed;
- BYTE * pGreen;
- BYTE * pBlue;
- void SetColor(BYTE nIndex, BYTE nRed, BYTE nGreen, BYTE nBlue);
-};
-
-
-//----------------------------------------------------------------------------
-//-----------------DXF Datei lesen und repraesentieren------------------------
-//----------------------------------------------------------------------------
-
-class DXFRepresentation {
-
-public:
-
- DXFPalette aPalette;
- // Die immer gleiche DXF-Farb-Palette
-
- DXFBoundingBox aBoundingBox;
- // Ist gleich den AutoCAD-Variablen EXTMIN, EXTMAX sofern in DXF-Datei
- // vorhanden, anderenfalls wird die BoundingBox berechnet (in Read()).
-
- DXFTables aTables;
- // Die Tabellen der DXF-Datei
-
- DXFBlocks aBlocks;
- // Die Bloecke der DXF-Datei
-
- DXFEntities aEntities;
- // Die Entities (aus der Entities-Section) der DXF-Datei
-
- rtl_TextEncoding mEnc; // $DWGCODEPAGE
-
- double mfGlobalLineTypeScale; // $LTSCALE
-
- DXFRepresentation();
- ~DXFRepresentation();
-
- rtl_TextEncoding getTextEncoding() const;
- void setTextEncoding(rtl_TextEncoding aEnc);
-
- double getGlobalLineTypeScale() const;
- void setGlobalLineTypeScale(double fGlobalLineTypeScale);
-
- BOOL Read( SvStream & rIStream, USHORT nMinPercent, USHORT nMaxPercent);
- // Liesst die komplette DXF-Datei ein.
-
-private:
-
- void ReadHeader(DXFGroupReader & rDGR);
- void CalcBoundingBox(const DXFEntities & rEntities,
- DXFBoundingBox & rBox);
-};
-
-//----------------------------------------------------------------------------
-//-------------------inlines--------------------------------------------------
-//----------------------------------------------------------------------------
-
-inline BYTE DXFPalette::GetRed(BYTE nIndex) const { return pRed[nIndex]; }
-inline BYTE DXFPalette::GetGreen(BYTE nIndex) const { return pGreen[nIndex]; }
-inline BYTE DXFPalette::GetBlue(BYTE nIndex) const { return pBlue[nIndex]; }
-inline rtl_TextEncoding DXFRepresentation::getTextEncoding() const { return mEnc; }
-inline void DXFRepresentation::setTextEncoding(rtl_TextEncoding aEnc) { mEnc = aEnc; }
-inline double DXFRepresentation::getGlobalLineTypeScale() const { return mfGlobalLineTypeScale; }
-inline void DXFRepresentation::setGlobalLineTypeScale(double fGlobalLineTypeScale) { mfGlobalLineTypeScale = fGlobalLineTypeScale; }
-
-#endif
-
-
diff --git a/goodies/source/filter.vcl/idxf/dxftblrd.cxx b/goodies/source/filter.vcl/idxf/dxftblrd.cxx
deleted file mode 100644
index 3edacc9c1d14..000000000000
--- a/goodies/source/filter.vcl/idxf/dxftblrd.cxx
+++ /dev/null
@@ -1,351 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxftblrd.cxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <string.h>
-#include <dxftblrd.hxx>
-
-//----------------------------------DXFLType-----------------------------------
-
-DXFLType::DXFLType()
-{
- pSucc=NULL;
- sName[0]=0;
- nFlags=0;
- sDescription[0]=0;
- nDashCount=0;
-}
-
-void DXFLType::Read(DXFGroupReader & rDGR)
-{
- long nDashIndex=-1;
-
- while (rDGR.Read()!=0)
- {
- switch (rDGR.GetG())
- {
- case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 70: nFlags=rDGR.GetI(); break;
- case 3: strncpy( sDescription, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 73:
- if (nDashIndex!=-1) {
- rDGR.SetError();
- return;
- }
- nDashCount=rDGR.GetI();
- if (nDashCount>DXF_MAX_DASH_COUNT)
- nDashCount=DXF_MAX_DASH_COUNT;
- nDashIndex=0;
- break;
- case 40: fPatternLength=rDGR.GetF(); break;
- case 49:
- if (nDashCount==-1) {
- rDGR.SetError();
- return;
- }
- if (nDashIndex<nDashCount)
- fDash[nDashIndex++]=rDGR.GetF();
- break;
- }
- }
-}
-
-//----------------------------------DXFLayer-----------------------------------
-
-DXFLayer::DXFLayer()
-{
- pSucc=NULL;
- sName[0]=0;
- nFlags=0;
- nColor=-1;
- sLineType[0]=0;
-}
-
-void DXFLayer::Read(DXFGroupReader & rDGR)
-{
- while (rDGR.Read()!=0) {
- switch(rDGR.GetG()) {
- case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 70: nFlags=rDGR.GetI(); break;
- case 62: nColor=rDGR.GetI(); break;
- case 6: strncpy( sLineType, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- }
- }
-}
-
-//----------------------------------DXFStyle-----------------------------------
-
-DXFStyle::DXFStyle()
-{
- pSucc=NULL;
- sName[0]=0;
- nFlags=0;
- fHeight=0.0;
- fWidthFak=1.0;
- fOblAngle=0.0;
- nTextGenFlags=0;
- fLastHeightUsed=0.0;
- sPrimFontFile[0]=0;
- sBigFontFile[0]=0;
-}
-
-void DXFStyle::Read(DXFGroupReader & rDGR)
-{
- while (rDGR.Read()!=0) {
- switch(rDGR.GetG()) {
- case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 70: nFlags=rDGR.GetI(); break;
- case 40: fHeight=rDGR.GetF(); break;
- case 41: fWidthFak=rDGR.GetF(); break;
- case 50: fOblAngle=rDGR.GetF(); break;
- case 71: nTextGenFlags=rDGR.GetI(); break;
- case 42: fLastHeightUsed=rDGR.GetF(); break;
- case 3: strncpy( sPrimFontFile, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- case 4: strncpy( sBigFontFile, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
- }
- }
-}
-
-//----------------------------------DXFVPort-----------------------------------
-
-DXFVPort::DXFVPort()
-{
- pSucc=NULL;
-
- sName[0]=0;
- nFlags=0;
- fMinX=0;
- fMinY=0;
- fMaxX=0;
- fMaxY=0;
- fCenterX=0;
- fCenterY=0;
- fSnapBaseX=0;
- fSnapBaseY=0;
- fSnapSapcingX=0;
- fSnapSpacingY=0;
- fGridX=0;
- fGridY=0;
- aDirection=DXFVector(0,0,1);
- aTarget=DXFVector(0,0,0);
- fHeight=0;
- fAspectRatio=0;
- fLensLength=0;
- fFrontClipPlane=0;
- fBackClipPlane=0;
- fTwistAngle=0;
- nStatus=0;
- nID=0;
- nMode=0;
- nCircleZoomPercent=0;
- nFastZoom=0;
- nUCSICON=0;
- nSnap=0;
- nGrid=0;
- nSnapStyle=0;
- nSnapIsopair=0;
-}
-
-void DXFVPort::Read(DXFGroupReader & rDGR)
-{
- while (rDGR.Read()!=0) {
- switch(rDGR.GetG()) {
- case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1); break;
- case 70: nFlags=rDGR.GetI(); break;
- case 10: fMinX=rDGR.GetF(); break;
- case 20: fMinY=rDGR.GetF(); break;
- case 11: fMaxX=rDGR.GetF(); break;
- case 21: fMaxY=rDGR.GetF(); break;
- case 12: fCenterX=rDGR.GetF(); break;
- case 22: fCenterY=rDGR.GetF(); break;
- case 13: fSnapBaseX=rDGR.GetF(); break;
- case 23: fSnapBaseY=rDGR.GetF(); break;
- case 14: fSnapSapcingX=rDGR.GetF(); break;
- case 24: fSnapSpacingY=rDGR.GetF(); break;
- case 15: fGridX=rDGR.GetF(); break;
- case 25: fGridY=rDGR.GetF(); break;
- case 16: aDirection.fx=rDGR.GetF(); break;
- case 26: aDirection.fy=rDGR.GetF(); break;
- case 36: aDirection.fz=rDGR.GetF(); break;
- case 17: aTarget.fx=rDGR.GetF(); break;
- case 27: aTarget.fy=rDGR.GetF(); break;
- case 37: aTarget.fz=rDGR.GetF(); break;
- case 40: fHeight=rDGR.GetF(); break;
- case 41: fAspectRatio=rDGR.GetF(); break;
- case 42: fLensLength=rDGR.GetF(); break;
- case 43: fFrontClipPlane=rDGR.GetF(); break;
- case 44: fBackClipPlane=rDGR.GetF(); break;
- case 51: fTwistAngle=rDGR.GetF(); break;
- case 68: nStatus=rDGR.GetI(); break;
- case 69: nID=rDGR.GetI(); break;
- case 71: nMode=rDGR.GetI(); break;
- case 72: nCircleZoomPercent=rDGR.GetI(); break;
- case 73: nFastZoom=rDGR.GetI(); break;
- case 74: nUCSICON=rDGR.GetI(); break;
- case 75: nSnap=rDGR.GetI(); break;
- case 76: nGrid=rDGR.GetI(); break;
- case 77: nSnapStyle=rDGR.GetI(); break;
- case 78: nSnapIsopair=rDGR.GetI(); break;
- }
- }
-}
-
-//----------------------------------DXFTables----------------------------------
-
-
-DXFTables::DXFTables()
-{
- pLTypes=NULL;
- pLayers=NULL;
- pStyles=NULL;
- pVPorts=NULL;
-}
-
-
-DXFTables::~DXFTables()
-{
- Clear();
-}
-
-
-void DXFTables::Read(DXFGroupReader & rDGR)
-{
- DXFLType * * ppLT, * pLT;
- DXFLayer * * ppLa, * pLa;
- DXFStyle * * ppSt, * pSt;
- DXFVPort * * ppVP, * pVP;
-
- ppLT=&pLTypes;
- while(*ppLT!=NULL) ppLT=&((*ppLT)->pSucc);
-
- ppLa=&pLayers;
- while(*ppLa!=NULL) ppLa=&((*ppLa)->pSucc);
-
- ppSt=&pStyles;
- while(*ppSt!=NULL) ppSt=&((*ppSt)->pSucc);
-
- ppVP=&pVPorts;
- while(*ppVP!=NULL) ppVP=&((*ppVP)->pSucc);
-
- for (;;) {
- while (rDGR.GetG()!=0) rDGR.Read();
- if (strcmp(rDGR.GetS(),"EOF")==0 ||
- strcmp(rDGR.GetS(),"ENDSEC")==0) break;
- else if (strcmp(rDGR.GetS(),"LTYPE")==0) {
- pLT=new DXFLType;
- pLT->Read(rDGR);
- *ppLT=pLT;
- ppLT=&(pLT->pSucc);
- }
- else if (strcmp(rDGR.GetS(),"LAYER")==0) {
- pLa=new DXFLayer;
- pLa->Read(rDGR);
- *ppLa=pLa;
- ppLa=&(pLa->pSucc);
- }
- else if (strcmp(rDGR.GetS(),"STYLE")==0) {
- pSt=new DXFStyle;
- pSt->Read(rDGR);
- *ppSt=pSt;
- ppSt=&(pSt->pSucc);
- }
- else if (strcmp(rDGR.GetS(),"VPORT")==0) {
- pVP=new DXFVPort;
- pVP->Read(rDGR);
- *ppVP=pVP;
- ppVP=&(pVP->pSucc);
- }
- else rDGR.Read();
- }
-}
-
-
-void DXFTables::Clear()
-{
- DXFLType * pLT;
- DXFLayer * pLa;
- DXFStyle * pSt;
- DXFVPort * pVP;
-
- while (pStyles!=NULL) {
- pSt=pStyles;
- pStyles=pSt->pSucc;
- delete pSt;
- }
- while (pLayers!=NULL) {
- pLa=pLayers;
- pLayers=pLa->pSucc;
- delete pLa;
- }
- while (pLTypes!=NULL) {
- pLT=pLTypes;
- pLTypes=pLT->pSucc;
- delete pLT;
- }
- while (pVPorts!=NULL) {
- pVP=pVPorts;
- pVPorts=pVP->pSucc;
- delete pVP;
- }
-}
-
-
-DXFLType * DXFTables::SearchLType(const char * pName) const
-{
- DXFLType * p;
- for (p=pLTypes; p!=NULL; p=p->pSucc) {
- if (strcmp(pName,p->sName)==0) break;
- }
- return p;
-}
-
-
-DXFLayer * DXFTables::SearchLayer(const char * pName) const
-{
- DXFLayer * p;
- for (p=pLayers; p!=NULL; p=p->pSucc) {
- if (strcmp(pName,p->sName)==0) break;
- }
- return p;
-}
-
-
-DXFVPort * DXFTables::SearchVPort(const char * pName) const
-{
- DXFVPort * p;
- for (p=pVPorts; p!=NULL; p=p->pSucc) {
- if (strcmp(pName,p->sName)==0) break;
- }
- return p;
-}
-
-
diff --git a/goodies/source/filter.vcl/idxf/dxftblrd.hxx b/goodies/source/filter.vcl/idxf/dxftblrd.hxx
deleted file mode 100644
index 9d1df2487129..000000000000
--- a/goodies/source/filter.vcl/idxf/dxftblrd.hxx
+++ /dev/null
@@ -1,186 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxftblrd.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _DXFTBLRD_HXX
-#define _DXFTBLRD_HXX
-
-#include <dxfgrprd.hxx>
-#include <dxfvec.hxx>
-
-
-//----------------------------------------------------------------------------
-//------------------ Linien-Typ ----------------------------------------------
-//----------------------------------------------------------------------------
-
-#define DXF_MAX_DASH_COUNT 32
-
-class DXFLType {
-
-public:
-
- DXFLType * pSucc;
-
- char sName[DXF_MAX_STRING_LEN+1]; // 2
- long nFlags; // 70
- char sDescription[DXF_MAX_STRING_LEN+1]; // 3
- long nDashCount; // 73
- double fPatternLength; // 40
- double fDash[DXF_MAX_DASH_COUNT]; // 49,49,...
-
- DXFLType();
- void Read(DXFGroupReader & rDGR);
-};
-
-
-//----------------------------------------------------------------------------
-//------------------ Layer ---------------------------------------------------
-//----------------------------------------------------------------------------
-
-class DXFLayer {
-
-public:
-
- DXFLayer * pSucc;
-
- char sName[DXF_MAX_STRING_LEN+1]; // 2
- long nFlags; // 70
- long nColor; // 62
- char sLineType[DXF_MAX_STRING_LEN+1]; // 6
-
- DXFLayer();
- void Read(DXFGroupReader & rDGR);
-};
-
-
-//----------------------------------------------------------------------------
-//------------------ Style ---------------------------------------------------
-//----------------------------------------------------------------------------
-
-class DXFStyle {
-
-public:
-
- DXFStyle * pSucc;
-
- char sName[DXF_MAX_STRING_LEN+1]; // 2
- long nFlags; // 70
- double fHeight; // 40
- double fWidthFak; // 41
- double fOblAngle; // 50
- long nTextGenFlags; // 71
- double fLastHeightUsed; // 42
- char sPrimFontFile[DXF_MAX_STRING_LEN+1]; // 3
- char sBigFontFile[DXF_MAX_STRING_LEN+1]; // 4
-
- DXFStyle();
- void Read(DXFGroupReader & rDGR);
-};
-
-
-//----------------------------------------------------------------------------
-//------------------ VPort ---------------------------------------------------
-//----------------------------------------------------------------------------
-
-class DXFVPort {
-
-public:
-
- DXFVPort * pSucc;
-
- char sName[DXF_MAX_STRING_LEN+1]; // 2
- long nFlags; // 70
- double fMinX; // 10
- double fMinY; // 20
- double fMaxX; // 11
- double fMaxY; // 21
- double fCenterX; // 12
- double fCenterY; // 22
- double fSnapBaseX; // 13
- double fSnapBaseY; // 23
- double fSnapSapcingX; // 14
- double fSnapSpacingY; // 24
- double fGridX; // 15
- double fGridY; // 25
- DXFVector aDirection; // 16,26,36
- DXFVector aTarget; // 17,27,37
- double fHeight; // 40
- double fAspectRatio; // 41
- double fLensLength; // 42
- double fFrontClipPlane; // 43
- double fBackClipPlane; // 44
- double fTwistAngle; // 51
- long nStatus; // 68
- long nID; // 69
- long nMode; // 71
- long nCircleZoomPercent; // 72
- long nFastZoom; // 73
- long nUCSICON; // 74
- long nSnap; // 75
- long nGrid; // 76
- long nSnapStyle; // 77
- long nSnapIsopair; // 78
-
- DXFVPort();
- void Read(DXFGroupReader & rDGR);
-};
-
-
-//----------------------------------------------------------------------------
-//------------------ Tabellen ------------------------------------------------
-//----------------------------------------------------------------------------
-
-class DXFTables {
-
-public:
-
- DXFLType * pLTypes; // Liste der Linientypen
- DXFLayer * pLayers; // Liste der Layers
- DXFStyle * pStyles; // Liste der Styles
- DXFVPort * pVPorts; // Liste der Viewports
-
- DXFTables();
- ~DXFTables();
-
- void Read(DXFGroupReader & rDGR);
- // Liest die Tabellen ein bis zu einem ENDSEC oder EOF
- // (unbekannte Dinge/Tabellen werden uebersprungen)
-
- void Clear();
-
- // Suche nach Tabelleneintraegen:
- DXFLType * SearchLType(const char * pName) const;
- DXFLayer * SearchLayer(const char * pName) const;
- DXFVPort * SearchVPort(const char * pName) const;
-
-};
-
-#endif
-
-
diff --git a/goodies/source/filter.vcl/idxf/dxfvec.cxx b/goodies/source/filter.vcl/idxf/dxfvec.cxx
deleted file mode 100644
index 48bc93ae3eb6..000000000000
--- a/goodies/source/filter.vcl/idxf/dxfvec.cxx
+++ /dev/null
@@ -1,257 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxfvec.cxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <math.h>
-#include <dxfvec.hxx>
-
-
-//---------------------------- DXFVector ---------------------------------------
-
-
-double DXFVector::Abs() const
-{
- return sqrt(SProd(*this));
-}
-
-
-DXFVector DXFVector::Unit() const
-{
- double flen;
-
- flen=Abs();
- if (flen!=0) return (*this)*(1.0/flen);
- else return DXFVector(1.0,0.0,0.0);
-}
-
-
-//---------------------------- DXFTransform ------------------------------------
-
-
-DXFTransform::DXFTransform() :
- aMX(1.0, 0.0, 0.0),
- aMY(0.0, 1.0, 0.0),
- aMZ(0.0, 0.0, 1.0),
- aMP(0.0, 0.0, 0.0)
-{
-}
-
-
-DXFTransform::DXFTransform(double fScaleX, double fScaleY, double fScaleZ,
- const DXFVector & rShift) :
- aMX(fScaleX, 0.0, 0.0),
- aMY(0.0, fScaleY, 0.0),
- aMZ(0.0, 0.0, fScaleZ),
- aMP(rShift)
-{
-}
-
-
-DXFTransform::DXFTransform(double fScaleX, double fScaleY, double fScaleZ,
- double fRotAngle,
- const DXFVector & rShift) :
- aMX(0.0, 0.0, 0.0),
- aMY(0.0, 0.0, 0.0),
- aMZ(0.0, 0.0, fScaleZ),
- aMP(rShift)
-{
- aMX.fx=cos(3.14159265359/180.0*fRotAngle);
- aMX.fy=sin(3.14159265359/180.0*fRotAngle);
- aMY.fx=-aMX.fy;
- aMY.fy=aMX.fx;
- aMX*=fScaleX;
- aMY*=fScaleY;
-}
-
-
-DXFTransform::DXFTransform(const DXFVector & rExtrusion) :
- aMX(), aMY(), aMZ(), aMP(0.0, 0.0, 0.0)
-{
- // 'Arbitrary Axis Algorithm' (siehe DXF-Doku von Autodesk)
- if ( fabs(rExtrusion.fx) < 1.0/64.0 && fabs(rExtrusion.fy) < 1.0/64.0) {
- aMX = DXFVector(0.0, 1.0, 0.0) * rExtrusion;
- }
- else {
- aMX = DXFVector(0.0, 0.0, 1.0) * rExtrusion;
- }
- aMX=aMX.Unit();
- aMY=(rExtrusion*aMX).Unit();
- aMZ=rExtrusion.Unit();
-}
-
-
-DXFTransform::DXFTransform(const DXFVector & rViewDir, const DXFVector & rViewTarget) :
- aMX(), aMY(), aMZ(), aMP()
-{
- DXFVector aV;
-
- aV=rViewDir.Unit();
- aMX.fz=aV.fx;
- aMY.fz=aV.fy;
- aMZ.fz=aV.fz;
-
- aMZ.fx=0;
- if (aV.fx==0) aMY.fx=0; else aMY.fx=sqrt(1/(1+aV.fy*aV.fy/(aV.fx*aV.fx)));
- aMX.fx=sqrt(1-aMY.fx*aMY.fx);
- if (aV.fx*aV.fy*aMY.fx>0) aMX.fx=-aMX.fx;
-
- aV=aV*DXFVector(aMX.fx,aMY.fx,aMZ.fx);
- aMX.fy=aV.fx;
- aMY.fy=aV.fy;
- aMZ.fy=aV.fz;
-
- if (aMZ.fy<0) {
- aMX.fy=-aMX.fy;
- aMY.fy=-aMY.fy;
- aMZ.fy=-aMZ.fy;
- aMX.fx=-aMX.fx;
- aMY.fx=-aMY.fx;
- }
-
- aV=DXFVector(0,0,0)-rViewTarget;
- aMP.fx = aV.fx * aMX.fx + aV.fy * aMY.fx + aV.fz * aMZ.fx;
- aMP.fy = aV.fx * aMX.fy + aV.fy * aMY.fy + aV.fz * aMZ.fy;
- aMP.fz = aV.fx * aMX.fz + aV.fy * aMY.fz + aV.fz * aMZ.fz;
-}
-
-
-DXFTransform::DXFTransform(const DXFTransform & rT1, const DXFTransform & rT2) :
- aMX(),aMY(),aMZ(),aMP()
-{
- rT2.TransDir(rT1.aMX,aMX);
- rT2.TransDir(rT1.aMY,aMY);
- rT2.TransDir(rT1.aMZ,aMZ);
- rT2.Transform(rT1.aMP,aMP);
-}
-
-
-void DXFTransform::Transform(const DXFVector & rSrc, DXFVector & rTgt) const
-{
- rTgt.fx = rSrc.fx * aMX.fx + rSrc.fy * aMY.fx + rSrc.fz * aMZ.fx + aMP.fx;
- rTgt.fy = rSrc.fx * aMX.fy + rSrc.fy * aMY.fy + rSrc.fz * aMZ.fy + aMP.fy;
- rTgt.fz = rSrc.fx * aMX.fz + rSrc.fy * aMY.fz + rSrc.fz * aMZ.fz + aMP.fz;
-}
-
-
-void DXFTransform::Transform(const DXFVector & rSrc, Point & rTgt) const
-{
- rTgt.X()=(long)( rSrc.fx * aMX.fx + rSrc.fy * aMY.fx + rSrc.fz * aMZ.fx + aMP.fx + 0.5 );
- rTgt.Y()=(long)( rSrc.fx * aMX.fy + rSrc.fy * aMY.fy + rSrc.fz * aMZ.fy + aMP.fy + 0.5 );
-}
-
-
-void DXFTransform::TransDir(const DXFVector & rSrc, DXFVector & rTgt) const
-{
- rTgt.fx = rSrc.fx * aMX.fx + rSrc.fy * aMY.fx + rSrc.fz * aMZ.fx;
- rTgt.fy = rSrc.fx * aMX.fy + rSrc.fy * aMY.fy + rSrc.fz * aMZ.fy;
- rTgt.fz = rSrc.fx * aMX.fz + rSrc.fy * aMY.fz + rSrc.fz * aMZ.fz;
-}
-
-
-BOOL DXFTransform::TransCircleToEllipse(double fRadius, double & rEx, double & rEy) const
-{
- double fMXAbs=aMX.Abs();
- double fMYAbs=aMY.Abs();
- double fNearNull=(fMXAbs+fMYAbs)*0.001;
-
- if (fabs(aMX.fy)<=fNearNull && fabs(aMX.fz)<=fNearNull &&
- fabs(aMY.fx)<=fNearNull && fabs(aMY.fz)<=fNearNull)
- {
- rEx=fabs(aMX.fx*fRadius);
- rEy=fabs(aMY.fy*fRadius);
- return TRUE;
- }
- else if (fabs(aMX.fx)<=fNearNull && fabs(aMX.fz)<=fNearNull &&
- fabs(aMY.fy)<=fNearNull && fabs(aMY.fz)<=fNearNull)
- {
- rEx=fabs(aMY.fx*fRadius);
- rEy=fabs(aMX.fy*fRadius);
- return TRUE;
- }
- else if (fabs(fMXAbs-fMYAbs)<=fNearNull &&
- fabs(aMX.fz)<=fNearNull && fabs(aMY.fz)<=fNearNull)
- {
- rEx=rEy=fabs(((fMXAbs+fMYAbs)/2)*fRadius);
- return TRUE;
- }
- else return FALSE;
-}
-
-LineInfo DXFTransform::Transform(const DXFLineInfo& aDXFLineInfo) const
-{
- double fex,fey,scale;
-
- fex=sqrt(aMX.fx*aMX.fx + aMX.fy*aMX.fy);
- fey=sqrt(aMY.fx*aMY.fx + aMY.fy*aMY.fy);
- scale = (fex+fey)/2.0;
-
- LineInfo aLineInfo;
-
- aLineInfo.SetStyle( aDXFLineInfo.eStyle );
- aLineInfo.SetWidth( (sal_Int32) (aDXFLineInfo.fWidth * scale + 0.5) );
- aLineInfo.SetDashCount( static_cast< USHORT >( aDXFLineInfo.nDashCount ) );
- aLineInfo.SetDashLen( (sal_Int32) (aDXFLineInfo.fDashLen * scale + 0.5) );
- aLineInfo.SetDotCount( static_cast< USHORT >( aDXFLineInfo.nDotCount ) );
- aLineInfo.SetDotLen( (sal_Int32) (aDXFLineInfo.fDotLen * scale + 0.5) );
- aLineInfo.SetDistance( (sal_Int32) (aDXFLineInfo.fDistance * scale + 0.5) );
-
- if ( aLineInfo.GetDashCount() > 0 && aLineInfo.GetDashLen() == 0 )
- aLineInfo.SetDashLen(1);
-
- if ( aLineInfo.GetDotCount() > 0 && aLineInfo.GetDotLen() == 0 )
- aLineInfo.SetDotLen(1);
-
- return aLineInfo;
-}
-
-ULONG DXFTransform::TransLineWidth(double fW) const
-{
- double fex,fey;
-
- fex=sqrt(aMX.fx*aMX.fx + aMX.fy*aMX.fy);
- fey=sqrt(aMY.fx*aMY.fx + aMY.fy*aMY.fy);
- // ###
- // printf("fex=%f fey=%f\n", fex, fey);
- return (ULONG)(fabs(fW)*(fex+fey)/2.0+0.5);
-}
-
-
-double DXFTransform::CalcRotAngle() const
-{
- return atan2(aMX.fy,aMX.fx)/3.14159265359*180.0;
-}
-
-BOOL DXFTransform::Mirror() const
-{
- if (aMZ.SProd(aMX*aMY)<0) return TRUE; else return FALSE;
-}
-
diff --git a/goodies/source/filter.vcl/idxf/dxfvec.hxx b/goodies/source/filter.vcl/idxf/dxfvec.hxx
deleted file mode 100644
index aca26df46676..000000000000
--- a/goodies/source/filter.vcl/idxf/dxfvec.hxx
+++ /dev/null
@@ -1,264 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: dxfvec.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _DXFVEC_HXX
-#define _DXFVEC_HXX
-
-#include <tools/gen.hxx>
-#include <vcl/lineinfo.hxx>
-
-class DXFLineInfo {
-public:
- LineStyle eStyle;
- double fWidth;
- sal_Int32 nDashCount;
- double fDashLen;
- sal_Int32 nDotCount;
- double fDotLen;
- double fDistance;
-
- DXFLineInfo() :
- eStyle(LINE_SOLID),
- fWidth(0),
- nDashCount(0),
- fDashLen(0),
- nDotCount(0),
- fDotLen(0),
- fDistance(0) {}
-
- DXFLineInfo(const DXFLineInfo& x) :
- eStyle(x.eStyle),
- fWidth(x.fWidth),
- nDashCount(x.nDashCount),
- fDashLen(x.fDashLen),
- nDotCount(x.nDotCount),
- fDotLen(x.fDotLen),
- fDistance(x.fDistance) {}
-
-};
-
-
-//------------------------------------------------------------------------------
-//---------------------------- DXFVector ---------------------------------------
-//------------------------------------------------------------------------------
-// Allgemeiner 3D-Vektor mit double
-
-class DXFVector {
-
-public:
-
- double fx,fy,fz; // public ! - Warum nicht ?
-
- inline DXFVector(double fX=0.0, double fY=0.0, double fZ=0.0);
- inline DXFVector(const DXFVector & rV);
-
- // Addition/Subtraktion:
- DXFVector & operator += (const DXFVector & rV);
- DXFVector operator + (const DXFVector & rV) const;
- DXFVector & operator -= (const DXFVector & rV);
- DXFVector operator - (const DXFVector & rV) const;
-
- // Vektorprodukt
- DXFVector operator * (const DXFVector & rV) const;
-
- // Skalarprodukt:
- double SProd(const DXFVector & rV) const;
-
- // Multiplikation mit Skalar:
- DXFVector & operator *= (double fs);
- DXFVector operator * (double fs) const;
-
- // Laenge:
- double Abs() const;
-
- // Vektor gleicher Richtung und der Laenge 1:
- DXFVector Unit() const;
-
- // Aequivalenz oder nicht:
- BOOL operator == (const DXFVector & rV) const;
- BOOL operator != (const DXFVector & rV) const;
-};
-
-//------------------------------------------------------------------------------
-//---------------------------- DXFTransform ------------------------------------
-//------------------------------------------------------------------------------
-// Eine Transformationsmatrix, spezialisiert auf unser Problem
-
-class DXFTransform {
-
-public:
-
- DXFTransform();
- // Zielkoordinate = Quellkoordinate
-
- DXFTransform(double fScaleX, double fScaleY, double fScaleZ,
- const DXFVector & rShift);
- // Zielkoordinate = Verschoben(Skaliert(Quellkoorinate))
-
- DXFTransform(double fScaleX, double fScaleY, double fScaleZ,
- double fRotAngle,
- const DXFVector & rShift);
- // Zielkoordinate = Verschoben(Gedreht(Skaliert(Quellkoorinate)))
- // Drehung geshieht um die Z-Achse, fRotAngle in Grad.
-
- DXFTransform(const DXFVector & rExtrusion);
- // Transformation "ECS->WCS" per "Entity Extrusion Direction"
- // und dem "Arbitrary Axis Algorithm"
- // (Siehe DXF-Docu von AutoDesk)
-
- DXFTransform(const DXFVector & rViewDir, const DXFVector & rViewTarget);
- // Transformation Objektraum->Bildraum anhand von Richtung und
- // Zielpunkt eines ViewPort.
- // (siehe DXF-Docu von AutoDesk: VPORT)
-
- DXFTransform(const DXFTransform & rT1, const DXFTransform & rT2);
- // Zielkoordinate = rT2(rT1(Quellkoorinate))
-
-
- void Transform(const DXFVector & rSrc, DXFVector & rTgt) const;
- // Transformation DXFVector nach DXFVector
-
- void Transform(const DXFVector & rSrc, Point & rTgt) const;
- // Transformation DXFVector nach SvPoint
-
- void TransDir(const DXFVector & rSrc, DXFVector & rTgt) const;
- // Transformation eines relativen Vektors (also kein Verschiebung)
-
- BOOL TransCircleToEllipse(double fRadius, double & rEx, double & rEy) const;
- // Versucht, einen Kreis (in der XY-Ebene) zu transformieren, so dass eine
- // ausgerichtete Ellipse entsteht. Wenn das nicht geht, weil Ellipse
- // in belibieger Lage entstehen wuerde, wird FALSE geliefert.
- // (Der Mittelpunkt wird hiermit nicht transformiert, nehme Transform(..))
-
- ULONG TransLineWidth(double fW) const;
- // Transformiert die Liniendicke (so gut es geht)
-
- double CalcRotAngle() const;
- // Ermittelt den Rotationswinkel um die Z-Achse (in Grad)
-
- BOOL Mirror() const;
- // Liefert TRUE, wenn die Matrix ein Linkssystem bildet
-
- LineInfo Transform(const DXFLineInfo& aDXFLineInfo) const;
- // Transform to LineInfo
-
-private:
- DXFVector aMX;
- DXFVector aMY;
- DXFVector aMZ;
- DXFVector aMP;
-};
-
-//------------------------------------------------------------------------------
-//------------------------------- inlines --------------------------------------
-//------------------------------------------------------------------------------
-
-
-inline DXFVector::DXFVector(double fX, double fY, double fZ)
-{
- fx=fX; fy=fY; fz=fZ;
-}
-
-
-inline DXFVector::DXFVector(const DXFVector & rV)
-{
- fx=rV.fx; fy=rV.fy; fz=rV.fz;
-}
-
-
-inline DXFVector & DXFVector::operator += (const DXFVector & rV)
-{
- fx+=rV.fx; fy+=rV.fy; fz+=rV.fz;
- return *this;
-}
-
-
-inline DXFVector DXFVector::operator + (const DXFVector & rV) const
-{
- return DXFVector(fx+rV.fx, fy+rV.fy, fz+rV.fz);
-}
-
-
-inline DXFVector & DXFVector::operator -= (const DXFVector & rV)
-{
- fx-=rV.fx; fy-=rV.fy; fz-=rV.fz;
- return *this;
-}
-
-
-inline DXFVector DXFVector::operator - (const DXFVector & rV) const
-{
- return DXFVector(fx-rV.fx, fy-rV.fy, fz-rV.fz);
-}
-
-
-inline DXFVector DXFVector::operator * (const DXFVector & rV) const
-{
- return DXFVector(
- fy * rV.fz - fz * rV.fy,
- fz * rV.fx - fx * rV.fz,
- fx * rV.fy - fy * rV.fx
- );
-}
-
-
-inline double DXFVector::SProd(const DXFVector & rV) const
-{
- return fx*rV.fx + fy*rV.fy + fz*rV.fz;
-}
-
-
-inline DXFVector & DXFVector::operator *= (double fs)
-{
- fx*=fs; fy*=fs; fz*=fs;
- return *this;
-}
-
-
-inline DXFVector DXFVector::operator * (double fs) const
-{
- return DXFVector(fx*fs,fy*fs,fz*fs);
-}
-
-
-inline BOOL DXFVector::operator == (const DXFVector & rV) const
-{
- if (fx==rV.fx && fy==rV.fy && fz==rV.fz) return TRUE;
- else return FALSE;
-}
-
-
-inline BOOL DXFVector::operator != (const DXFVector & rV) const
-{
- if (fx!=rV.fx || fy!=rV.fy || fz!=rV.fz) return TRUE;
- else return FALSE;
-}
-
-#endif
diff --git a/goodies/source/filter.vcl/idxf/exports.map b/goodies/source/filter.vcl/idxf/exports.map
deleted file mode 100644
index d107435568e5..000000000000
--- a/goodies/source/filter.vcl/idxf/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-DXFIMPORTER_1_0 {
- global:
- GraphicImport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/idxf/idxf.cxx b/goodies/source/filter.vcl/idxf/idxf.cxx
deleted file mode 100644
index 9d11a1e29ad0..000000000000
--- a/goodies/source/filter.vcl/idxf/idxf.cxx
+++ /dev/null
@@ -1,85 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: idxf.cxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <string.h>
-#include <vcl/gdimtf.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/virdev.hxx>
-#include "dxf2mtf.hxx"
-#include <math.h>
-
-//================== GraphicImport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
-{
- DXFRepresentation aDXF;
- DXF2GDIMetaFile aConverter;
- GDIMetaFile aMTF;
-
- if ( aDXF.Read( rStream, 0, 60 ) == FALSE )
- return FALSE;
- if ( aConverter.Convert( aDXF, aMTF, 60, 100 ) == FALSE )
- return FALSE;
- rGraphic=Graphic(aMTF);
-
- return TRUE;
-}
-
-//============================= fuer Windows ==================================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
-
-
diff --git a/goodies/source/filter.vcl/idxf/makefile.mk b/goodies/source/filter.vcl/idxf/makefile.mk
deleted file mode 100644
index 081022cd4e5b..000000000000
--- a/goodies/source/filter.vcl/idxf/makefile.mk
+++ /dev/null
@@ -1,83 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.14 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=idxf
-DEPTARGET=vidxf
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-EXCEPTIONSFILES=\
- $(SLO)$/dxfentrd.obj \
- $(SLO)$/dxf2mtf.obj
-
-SLOFILES = $(SLO)$/dxfgrprd.obj \
- $(SLO)$/dxfvec.obj \
- $(SLO)$/dxfentrd.obj \
- $(SLO)$/dxfblkrd.obj \
- $(SLO)$/dxftblrd.obj \
- $(SLO)$/dxfreprd.obj \
- $(SLO)$/dxf2mtf.obj \
- $(SLO)$/idxf.obj
-
-# ==========================================================================
-
-SHL1TARGET= idx$(DLLPOSTFIX)
-SHL1IMPLIB= idxf
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
-
-SHL1LIBS= $(SLB)$/idxf.lib # $(LB)$/rtftoken.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/idxf.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/ieps/exports.map b/goodies/source/filter.vcl/ieps/exports.map
deleted file mode 100644
index 59406d7255ef..000000000000
--- a/goodies/source/filter.vcl/ieps/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-EPSIMPORTER_1_0 {
- global:
- GraphicImport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/ieps/ieps.cxx b/goodies/source/filter.vcl/ieps/ieps.cxx
deleted file mode 100644
index f315ee864310..000000000000
--- a/goodies/source/filter.vcl/ieps/ieps.cxx
+++ /dev/null
@@ -1,732 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: ieps.cxx,v $
- * $Revision: 1.20 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <stdio.h>
-
-//
-#include <vcl/sv.h>
-#include <vcl/svapp.hxx>
-#include <vcl/bitmap.hxx>
-#include <vcl/bitmapex.hxx>
-#include <vcl/animate.hxx>
-#include <vcl/gdimtf.hxx>
-#include <vcl/graph.h>
-#include <vcl/window.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/metaact.hxx>
-#include <vcl/gdimtf.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/cvtgrf.hxx>
-#include <vcl/bmpacc.hxx>
-#include <svtools/fltcall.hxx>
-#include <tools/urlobj.hxx>
-#include <tools/tempfile.hxx>
-#include <osl/process.h>
-#include <osl/file.hxx>
-
-/*************************************************************************
-|*
-|* ImpSearchEntry()
-|*
-|* Beschreibung Prueft ob im Speicherbereich pSource der nComp Bytes
-|* gross ist eine Zeichenkette(pDest) mit der l�nge nSize
-|* liegt. Geprueft wird NON-CASE-SENSITIVE und der Rueck-
-|* gabewert ist die Adresse an der die Zeichekette gefunden
-|* wurde oder NULL
-|*
-|* Ersterstellung SJ 04.03.98 ( und das an meinem Geburtstag )
-|* Letzte Aenderung SJ 04.03.98
-|*
-*************************************************************************/
-
-static BYTE* ImplSearchEntry( BYTE* pSource, BYTE* pDest, ULONG nComp, ULONG nSize )
-{
- while ( nComp-- >= nSize )
- {
- ULONG i;
- for ( i = 0; i < nSize; i++ )
- {
- if ( ( pSource[i]&~0x20 ) != ( pDest[i]&~0x20 ) )
- break;
- }
- if ( i == nSize )
- return pSource;
- pSource++;
- }
- return NULL;
-}
-
-//--------------------------------------------------------------------------
-// SecurityCount is the buffersize of the buffer in which we will parse for a number
-static long ImplGetNumber( BYTE **pBuf, int& nSecurityCount )
-{
- BOOL bValid = TRUE;
- BOOL bNegative = FALSE;
- long nRetValue = 0;
- while ( ( --nSecurityCount ) && ( ( **pBuf == ' ' ) || ( **pBuf == 0x9 ) ) )
- (*pBuf)++;
- BYTE nByte = **pBuf;
- while ( nSecurityCount && ( nByte != ' ' ) && ( nByte != 0x9 ) && ( nByte != 0xd ) && ( nByte != 0xa ) )
- {
- switch ( nByte )
- {
- case '.' :
- // we'll only use the integer format
- bValid = FALSE;
- break;
- case '-' :
- bNegative = TRUE;
- break;
- default :
- if ( ( nByte < '0' ) || ( nByte > '9' ) )
- nSecurityCount = 1; // error parsing the bounding box values
- else if ( bValid )
- {
- nRetValue *= 10;
- nRetValue += nByte - '0';
- }
- break;
- }
- nSecurityCount--;
- nByte = *(++(*pBuf));
- }
- if ( bNegative )
- nRetValue = -nRetValue;
- return nRetValue;
-}
-
-//--------------------------------------------------------------------------
-
-static int ImplGetLen( BYTE* pBuf, int nMax )
-{
- int nLen = 0;
- while( nLen != nMax )
- {
- BYTE nDat = *pBuf++;
- if ( nDat == 0x0a || nDat == 0x25 )
- break;
- nLen++;
- }
- return nLen;
-}
-
-static void MakeAsMeta(Graphic &rGraphic)
-{
- VirtualDevice aVDev;
- GDIMetaFile aMtf;
- Bitmap aBmp( rGraphic.GetBitmap() );
- Size aSize = aBmp.GetPrefSize();
-
- if( !aSize.Width() || !aSize.Height() )
- aSize = Application::GetDefaultDevice()->PixelToLogic(
- aBmp.GetSizePixel(), MAP_100TH_MM );
- else
- aSize = Application::GetDefaultDevice()->LogicToLogic( aSize,
- aBmp.GetPrefMapMode(), MAP_100TH_MM );
-
- aVDev.EnableOutput( FALSE );
- aMtf.Record( &aVDev );
- aVDev.DrawBitmap( Point(), aSize, rGraphic.GetBitmap() );
- aMtf.Stop();
- aMtf.WindStart();
- aMtf.SetPrefMapMode( MAP_100TH_MM );
- aMtf.SetPrefSize( aSize );
- rGraphic = aMtf;
-}
-
-static bool RenderAsEMF(const sal_uInt8* pBuf, sal_uInt32 nBytesRead, Graphic &rGraphic)
-{
- TempFile aTemp;
- aTemp.EnableKillingFile();
- rtl::OUString fileName =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pstoedit"));
- rtl::OUString arg1 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-f"));
- rtl::OUString arg2 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("emf:-OO"));
- rtl::OUString arg3 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-"));
- rtl::OUString output;
- osl::FileBase::getSystemPathFromFileURL(aTemp.GetName(), output);
- rtl_uString *args[] =
- {
- arg1.pData, arg2.pData, arg3.pData, output.pData
- };
- oslProcess aProcess;
- oslFileHandle pIn = NULL;
- oslFileHandle pOut = NULL;
- oslFileHandle pErr = NULL;
- oslProcessError eErr = osl_executeProcess_WithRedirectedIO(fileName.pData,
- args, sizeof(args)/sizeof(rtl_uString *),
- osl_Process_SEARCHPATH | osl_Process_HIDDEN,
- osl_getCurrentSecurity(), 0, 0, 0, &aProcess, &pIn, &pOut, &pErr);
- if (eErr!=osl_Process_E_None)
- return false;
-
- bool bRet = false;
- sal_uInt64 nCount;
- osl_writeFile(pIn, pBuf, nBytesRead, &nCount);
- if (pIn) osl_closeFile(pIn);
- bool bEMFSupported=true;
- if (pOut)
- {
- rtl::ByteSequence seq;
- if (osl_File_E_None == osl_readLine(pOut, (sal_Sequence **)&seq))
- {
- rtl::OString line( (const sal_Char *) seq.getConstArray(), seq.getLength() );
- if (line.indexOf(rtl::OString("Unsupported output format")) == 0)
- bEMFSupported=false;
- }
- osl_closeFile(pOut);
- }
- if (pErr) osl_closeFile(pErr);
- if (nCount == nBytesRead && bEMFSupported)
- {
- SvFileStream aFile(output, STREAM_READ);
- if (GraphicConverter::Import(aFile, rGraphic, CVT_EMF) == ERRCODE_NONE)
- bRet = true;
- }
- osl_joinProcess(aProcess);
- osl_freeProcessHandle(aProcess);
- return bRet;
-}
-
-static bool RenderAsPNGThroughHelper(const sal_uInt8* pBuf, sal_uInt32 nBytesRead,
- Graphic &rGraphic, rtl::OUString &rProgName, rtl_uString **pArgs, size_t nArgs)
-{
- oslProcess aProcess;
- oslFileHandle pIn = NULL;
- oslFileHandle pOut = NULL;
- oslFileHandle pErr = NULL;
- oslProcessError eErr = osl_executeProcess_WithRedirectedIO(rProgName.pData,
- pArgs, nArgs, osl_Process_SEARCHPATH | osl_Process_HIDDEN,
- osl_getCurrentSecurity(), 0, 0, 0, &aProcess, &pIn, &pOut, &pErr);
- if (eErr!=osl_Process_E_None)
- return false;
-
- bool bRet = false;
- sal_uInt64 nCount;
- osl_writeFile(pIn, pBuf, nBytesRead, &nCount);
- if (pIn) osl_closeFile(pIn);
- if (nCount == nBytesRead)
- {
- SvMemoryStream aMemStm;
- sal_uInt8 aBuf[32000];
- oslFileError eFileErr = osl_readFile(pOut, aBuf, 32000, &nCount);
- while (eFileErr == osl_File_E_None && nCount)
- {
- aMemStm.Write(aBuf, sal::static_int_cast< sal_Size >(nCount));
- eFileErr = osl_readFile(pOut, aBuf, 32000, &nCount);
- }
-
- aMemStm.Seek(0);
- if (
- eFileErr == osl_File_E_None &&
- GraphicConverter::Import(aMemStm, rGraphic, CVT_PNG) == ERRCODE_NONE
- )
- {
- MakeAsMeta(rGraphic);
- bRet = true;
- }
- }
- if (pOut) osl_closeFile(pOut);
- if (pErr) osl_closeFile(pErr);
- osl_joinProcess(aProcess);
- osl_freeProcessHandle(aProcess);
- return bRet;
-}
-
-static bool RenderAsPNGThroughConvert(const sal_uInt8* pBuf, sal_uInt32 nBytesRead,
- Graphic &rGraphic)
-{
- rtl::OUString fileName =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("convert"));
- // density in pixel/inch
- rtl::OUString arg1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-density"));
- // since the preview is also used for PDF-Export & printing on non-PS-printers,
- // use some better quality - 300x300 should allow some resizing as well
- rtl::OUString arg2 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("300x300"));
- // read eps from STDIN
- rtl::OUString arg3 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("eps:-"));
- // write png to STDOUT
- rtl::OUString arg4 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("png:-"));
- rtl_uString *args[] =
- {
- arg1.pData, arg2.pData, arg3.pData, arg4.pData
- };
- return RenderAsPNGThroughHelper(pBuf, nBytesRead, rGraphic, fileName, args,
- sizeof(args)/sizeof(rtl_uString *));
-}
-
-static bool RenderAsPNGThroughGS(const sal_uInt8* pBuf, sal_uInt32 nBytesRead,
- Graphic &rGraphic)
-{
-#ifdef WNT
- rtl::OUString fileName =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("gswin32c"));
-#else
- rtl::OUString fileName =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("gs"));
-#endif
- rtl::OUString arg1 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-q"));
- rtl::OUString arg2 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dBATCH"));
- rtl::OUString arg3 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dNOPAUSE"));
- rtl::OUString arg4 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dPARANOIDSAFER"));
- rtl::OUString arg5 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dEPSCrop"));
- rtl::OUString arg6 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dTextAlphaBits=4"));
- rtl::OUString arg7 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dGraphicsAlphaBits=4"));
- rtl::OUString arg8 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-r300x300"));
- rtl::OUString arg9 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-sDEVICE=png256"));
- rtl::OUString arg10 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-sOutputFile=-"));
- rtl::OUString arg11 =
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-"));
- rtl_uString *args[] =
- {
- arg1.pData, arg2.pData, arg3.pData, arg4.pData, arg5.pData,
- arg6.pData, arg7.pData, arg8.pData, arg9.pData, arg10.pData,
- arg11.pData
- };
- return RenderAsPNGThroughHelper(pBuf, nBytesRead, rGraphic, fileName, args,
- sizeof(args)/sizeof(rtl_uString *));
-}
-
-static bool RenderAsPNG(const sal_uInt8* pBuf, sal_uInt32 nBytesRead, Graphic &rGraphic)
-{
- if (RenderAsPNGThroughConvert(pBuf, nBytesRead, rGraphic))
- return true;
- else
- return RenderAsPNGThroughGS(pBuf, nBytesRead, rGraphic);
-}
-
-// this method adds a replacement action containing the original wmf or tiff replacement,
-// so the original eps can be written when storing to ODF.
-void CreateMtfReplacementAction( GDIMetaFile& rMtf, SvStream& rStrm, sal_uInt32 nOrigPos, sal_uInt32 nPSSize,
- sal_uInt32 nPosWMF, sal_uInt32 nSizeWMF, sal_uInt32 nPosTIFF, sal_uInt32 nSizeTIFF )
-{
- ByteString aComment( (const sal_Char*)"EPSReplacementGraphic" );
- if ( nSizeWMF || nSizeTIFF )
- {
- SvMemoryStream aReplacement( nSizeWMF + nSizeTIFF + 28 );
- sal_uInt32 nMagic = 0xc6d3d0c5;
- sal_uInt32 nPPos = 28 + nSizeWMF + nSizeTIFF;
- sal_uInt32 nWPos = nSizeWMF ? 28 : 0;
- sal_uInt32 nTPos = nSizeTIFF ? 28 + nSizeWMF : 0;
-
- aReplacement << nMagic << nPPos << nPSSize
- << nWPos << nSizeWMF
- << nTPos << nSizeTIFF;
- if ( nSizeWMF )
- {
- sal_uInt8* pBuf = new sal_uInt8[ nSizeWMF ];
- rStrm.Seek( nOrigPos + nPosWMF );
- rStrm.Read( pBuf, nSizeWMF );
- aReplacement.Write( pBuf, nSizeWMF );
- delete[] pBuf;
- }
- if ( nSizeTIFF )
- {
- sal_uInt8* pBuf = new sal_uInt8[ nSizeTIFF ];
- rStrm.Seek( nOrigPos + nPosTIFF );
- rStrm.Read( pBuf, nSizeTIFF );
- aReplacement.Write( pBuf, nSizeTIFF );
- delete[] pBuf;
- }
- rMtf.AddAction( (MetaAction*)( new MetaCommentAction( aComment, 0, (const BYTE*)aReplacement.GetData(), aReplacement.Tell() ) ) );
- }
- else
- rMtf.AddAction( (MetaAction*)( new MetaCommentAction( aComment, 0, NULL, 0 ) ) );
-}
-
-//there is no preview -> make a red box
-void MakePreview(sal_uInt8* pBuf, sal_uInt32 nBytesRead,
- long nWidth, long nHeight, Graphic &rGraphic)
-{
- GDIMetaFile aMtf;
- VirtualDevice aVDev;
- Font aFont;
-
- aVDev.EnableOutput( FALSE );
- aMtf.Record( &aVDev );
- aVDev.SetLineColor( Color( COL_RED ) );
- aVDev.SetFillColor();
-
- aFont.SetColor( COL_LIGHTRED );
-// aFont.SetSize( Size( 0, 32 ) );
-
- aVDev.Push( PUSH_FONT );
- aVDev.SetFont( aFont );
-
- Rectangle aRect( Point( 1, 1 ), Size( nWidth - 2, nHeight - 2 ) );
- aVDev.DrawRect( aRect );
-
- String aString;
- int nLen;
- BYTE* pDest = ImplSearchEntry( pBuf, (BYTE*)"%%Title:", nBytesRead - 32, 8 );
- if ( pDest )
- {
- pDest += 8;
- if ( *pDest == ' ' )
- pDest++;
- nLen = ImplGetLen( pDest, 32 );
- BYTE aOldValue(pDest[ nLen ]); pDest[ nLen ] = 0;
- if ( strcmp( (const char*)pDest, "none" ) != 0 )
- {
- aString.AppendAscii( " Title:" );
- aString.AppendAscii( (char*)pDest );
- aString.AppendAscii( "\n" );
- }
- pDest[ nLen ] = aOldValue;
- }
- pDest = ImplSearchEntry( pBuf, (BYTE*)"%%Creator:", nBytesRead - 32, 10 );
- if ( pDest )
- {
- pDest += 10;
- if ( *pDest == ' ' )
- pDest++;
- nLen = ImplGetLen( pDest, 32 );
- BYTE aOldValue(pDest[ nLen ]); pDest[ nLen ] = 0;
- aString.AppendAscii( " Creator:" );
- aString.AppendAscii( (char*)pDest );
- aString.AppendAscii( "\n" );
- pDest[ nLen ] = aOldValue;
- }
- pDest = ImplSearchEntry( pBuf, (BYTE*)"%%CreationDate:", nBytesRead - 32, 15 );
- if ( pDest )
- {
- pDest += 15;
- if ( *pDest == ' ' )
- pDest++;
- nLen = ImplGetLen( pDest, 32 );
- BYTE aOldValue(pDest[ nLen ]); pDest[ nLen ] = 0;
- if ( strcmp( (const char*)pDest, "none" ) != 0 )
- {
- aString.AppendAscii( " CreationDate:" );
- aString.AppendAscii( (char*)pDest );
- aString.AppendAscii( "\n" );
- }
- pDest[ nLen ] = aOldValue;
- }
- pDest = ImplSearchEntry( pBuf, (BYTE*)"%%LanguageLevel:", nBytesRead - 4, 16 );
- if ( pDest )
- {
- pDest += 16;
- int nCount = 4;
- long nNumber = ImplGetNumber( &pDest, nCount );
- if ( nCount && ( (UINT32)nNumber < 10 ) )
- {
- aString.AppendAscii( " LanguageLevel:" );
- aString.Append( UniString::CreateFromInt32( nNumber ) );
- }
- }
- aVDev.DrawText( aRect, aString, TEXT_DRAW_CLIP | TEXT_DRAW_MULTILINE );
- aVDev.Pop();
- aMtf.Stop();
- aMtf.WindStart();
- aMtf.SetPrefMapMode( MAP_POINT );
- aMtf.SetPrefSize( Size( nWidth, nHeight ) );
- rGraphic = aMtf;
-}
-
-
-//================== GraphicImport - die exportierte Funktion ================
-
-#ifdef WNT
-extern "C" BOOL _cdecl GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL)
-#else
-extern "C" BOOL GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL)
-#endif
-{
- if ( rStream.GetError() )
- return FALSE;
-
- Graphic aGraphic;
- sal_Bool bRetValue = sal_False;
- sal_Bool bHasPreview = sal_False;
- sal_Bool bGraphicLinkCreated = sal_False;
- sal_uInt32 nSignature, nPSStreamPos, nPSSize;
- sal_uInt32 nSizeWMF = 0;
- sal_uInt32 nPosWMF = 0;
- sal_uInt32 nSizeTIFF = 0;
- sal_uInt32 nPosTIFF = 0;
- sal_uInt32 nOrigPos = nPSStreamPos = rStream.Tell();
- sal_uInt16 nOldFormat = rStream.GetNumberFormatInt();
- rStream.SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
- rStream >> nSignature;
- if ( nSignature == 0xc6d3d0c5 )
- {
- rStream >> nPSStreamPos >> nPSSize >> nPosWMF >> nSizeWMF;
-
- // first we try to get the metafile grafix
-
- if ( nSizeWMF )
- {
- if ( nPosWMF != 0 )
- {
- rStream.Seek( nOrigPos + nPosWMF );
- if ( GraphicConverter::Import( rStream, aGraphic, CVT_WMF ) == ERRCODE_NONE )
- bHasPreview = bRetValue = TRUE;
- }
- }
- else
- {
- rStream >> nPosTIFF >> nSizeTIFF;
-
- // else we have to get the tiff grafix
-
- if ( nPosTIFF && nSizeTIFF )
- {
- rStream.Seek( nOrigPos + nPosTIFF );
- if ( GraphicConverter::Import( rStream, aGraphic, CVT_TIF ) == ERRCODE_NONE )
- {
- MakeAsMeta(aGraphic);
- rStream.Seek( nOrigPos + nPosTIFF );
- bHasPreview = bRetValue = TRUE;
- }
- }
- }
- }
- else
- {
- nPSStreamPos = nOrigPos; // no preview available _>so we must get the size manually
- nPSSize = rStream.Seek( STREAM_SEEK_TO_END ) - nOrigPos;
- }
- sal_uInt8* pHeader = new sal_uInt8[ 22 ];
- rStream.Seek( nPSStreamPos );
- rStream.Read( pHeader, 22 ); // check PostScript header
- if ( ImplSearchEntry( pHeader, (BYTE*)"%!PS-Adobe", 10, 10 ) &&
- ImplSearchEntry( &pHeader[ 15 ], (BYTE*)"EPS", 3, 3 ) )
- {
- rStream.Seek( nPSStreamPos );
- sal_uInt8* pBuf = new sal_uInt8[ nPSSize ];
- if ( pBuf )
- {
- sal_uInt32 nBufStartPos = rStream.Tell();
- sal_uInt32 nBytesRead = rStream.Read( pBuf, nPSSize );
- if ( nBytesRead == nPSSize )
- {
- int nSecurityCount = 32;
- if ( !bHasPreview ) // if there is no tiff/wmf preview, we will parse for an preview in the eps prolog
- {
- BYTE* pDest = ImplSearchEntry( pBuf, (BYTE*)"%%BeginPreview:", nBytesRead - 32, 15 );
- if ( pDest )
- {
- pDest += 15;
- long nWidth = ImplGetNumber( &pDest, nSecurityCount );
- long nHeight = ImplGetNumber( &pDest, nSecurityCount );
- long nBitDepth = ImplGetNumber( &pDest, nSecurityCount );
- long nScanLines = ImplGetNumber( &pDest, nSecurityCount );
- pDest = ImplSearchEntry( pDest, (BYTE*)"%", 16, 1 ); // go to the first Scanline
- if ( nSecurityCount && pDest && nWidth && nHeight && ( ( nBitDepth == 1 ) || ( nBitDepth == 8 ) ) && nScanLines )
- {
- rStream.Seek( nBufStartPos + ( pDest - pBuf ) );
-
- Bitmap aBitmap( Size( nWidth, nHeight ), 1 );
- BitmapWriteAccess* pAcc = aBitmap.AcquireWriteAccess();
- if ( pAcc )
- {
- int nBitsLeft;
- BOOL bIsValid = TRUE;
- BYTE nDat = 0;
- char nByte;
- for ( long y = 0; bIsValid && ( y < nHeight ); y++ )
- {
- nBitsLeft = 0;
- for ( long x = 0; x < nWidth; x++ )
- {
- if ( --nBitsLeft < 0 )
- {
- while ( bIsValid && ( nBitsLeft != 7 ) )
- {
- rStream >> nByte;
- switch ( nByte )
- {
- case 0x0a :
- if ( --nScanLines < 0 )
- bIsValid = FALSE;
- case 0x09 :
- case 0x0d :
- case 0x20 :
- case 0x25 :
- break;
- default:
- {
- if ( nByte >= '0' )
- {
- if ( nByte > '9' )
- {
- nByte &=~0x20; // case none sensitive for hexadezimal values
- nByte -= ( 'A' - 10 );
- if ( nByte > 15 )
- bIsValid = FALSE;
- }
- else
- nByte -= '0';
- nBitsLeft += 4;
- nDat <<= 4;
- nDat |= ( nByte ^ 0xf ); // in epsi a zero bit represents white color
- }
- else
- bIsValid = FALSE;
- }
- break;
- }
- }
- }
- if ( nBitDepth == 1 )
- pAcc->SetPixel( y, x, sal::static_int_cast< BYTE >(( nDat >> nBitsLeft ) & 1) );
- else
- {
- pAcc->SetPixel( y, x, ( nDat ) ? 1 : 0 ); // nBitDepth == 8
- nBitsLeft = 0;
- }
- }
- }
- if ( bIsValid )
- {
- VirtualDevice aVDev;
- GDIMetaFile aMtf;
- Size aSize;
- aVDev.EnableOutput( FALSE );
- aMtf.Record( &aVDev );
- aSize = aBitmap.GetPrefSize();
- if( !aSize.Width() || !aSize.Height() )
- aSize = Application::GetDefaultDevice()->PixelToLogic( aBitmap.GetSizePixel(), MAP_100TH_MM );
- else
- aSize = Application::GetDefaultDevice()->LogicToLogic( aSize, aBitmap.GetPrefMapMode(), MAP_100TH_MM );
- aVDev.DrawBitmap( Point(), aSize, aBitmap );
- aMtf.Stop();
- aMtf.WindStart();
- aMtf.SetPrefMapMode( MAP_100TH_MM );
- aMtf.SetPrefSize( aSize );
- aGraphic = aMtf;
- bHasPreview = bRetValue = TRUE;
- }
- aBitmap.ReleaseAccess( pAcc );
- }
- }
- }
- }
-
- BYTE* pDest = ImplSearchEntry( pBuf, (BYTE*)"%%BoundingBox:", nBytesRead, 14 );
- if ( pDest )
- {
- nSecurityCount = 100;
- long nNumb[4];
- nNumb[0] = nNumb[1] = nNumb[2] = nNumb[3] = 0;
- pDest += 14;
- for ( int i = 0; ( i < 4 ) && nSecurityCount; i++ )
- {
- nNumb[ i ] = ImplGetNumber( &pDest, nSecurityCount );
- }
- if ( nSecurityCount)
- {
- bGraphicLinkCreated = sal_True;
- GfxLink aGfxLink( pBuf, nPSSize, GFX_LINK_TYPE_EPS_BUFFER, TRUE ) ;
- GDIMetaFile aMtf;
-
- long nWidth = nNumb[2] - nNumb[0] + 1;
- long nHeight = nNumb[3] - nNumb[1] + 1;
-
- // if there is no preview -> try with gs to make one
- if( !bHasPreview )
- {
- bHasPreview = RenderAsEMF(pBuf, nBytesRead, aGraphic);
- if (!bHasPreview)
- bHasPreview = RenderAsPNG(pBuf, nBytesRead, aGraphic);
- }
-
- // if there is no preview -> make a red box
- if( !bHasPreview )
- {
- MakePreview(pBuf, nBytesRead, nWidth, nHeight,
- aGraphic);
- }
-
- aMtf.AddAction( (MetaAction*)( new MetaEPSAction( Point(), Size( nWidth, nHeight ),
- aGfxLink, aGraphic.GetGDIMetaFile() ) ) );
- CreateMtfReplacementAction( aMtf, rStream, nOrigPos, nPSSize, nPosWMF, nSizeWMF, nPosTIFF, nSizeTIFF );
- aMtf.WindStart();
- aMtf.SetPrefMapMode( MAP_POINT );
- aMtf.SetPrefSize( Size( nWidth, nHeight ) );
- rGraphic = aMtf;
- bRetValue = sal_True;
- }
- }
- }
- }
- if ( !bGraphicLinkCreated )
- delete[] pBuf;
- }
- delete[] pHeader;
- rStream.SetNumberFormatInt(nOldFormat);
- rStream.Seek( nOrigPos );
- return ( bRetValue );
-}
-
-//================== ein bischen Muell fuer Windows ==========================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
-
diff --git a/goodies/source/filter.vcl/ieps/makefile.mk b/goodies/source/filter.vcl/ieps/makefile.mk
deleted file mode 100644
index 673cce72744c..000000000000
--- a/goodies/source/filter.vcl/ieps/makefile.mk
+++ /dev/null
@@ -1,70 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=ieps
-DEPTARGET=vieps
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/ieps.obj
-
-# ==========================================================================
-
-SHL1TARGET= ips$(DLLPOSTFIX)
-SHL1IMPLIB= ieps
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
-SHL1LIBS= $(SLB)$/ieps.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/ieps.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/ios2met/exports.map b/goodies/source/filter.vcl/ios2met/exports.map
deleted file mode 100644
index 440afa9245d8..000000000000
--- a/goodies/source/filter.vcl/ios2met/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-METIMPORTER_1_0 {
- global:
- GraphicImport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/ios2met/ios2met.cxx b/goodies/source/filter.vcl/ios2met/ios2met.cxx
deleted file mode 100644
index 0fbf24f56029..000000000000
--- a/goodies/source/filter.vcl/ios2met/ios2met.cxx
+++ /dev/null
@@ -1,2787 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: ios2met.cxx,v $
- * $Revision: 1.14 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/graph.hxx>
-#include <tools/poly.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/lineinfo.hxx>
-#include <svtools/fltcall.hxx>
-
-#include <math.h>
-
-// MT: NOOLDSV, someone should change the code...
-enum PenStyle { PEN_NULL, PEN_SOLID, PEN_DOT, PEN_DASH, PEN_DASHDOT };
-
-
-//============================== defines ===================================
-
-#define OOODEBUG(str,Num) //InfoBox(NULL,String(str)+String(" ")+String(Num)).Execute();
-
-// -----------------------------Feld-Typen-------------------------------
-
-#define BegDocumnMagic 0xA8A8 /* Begin Document */
-#define EndDocumnMagic 0xA8A9 /* End Document */
-
-#define BegResGrpMagic 0xC6A8 /* Begin Resource Group */
-#define EndResGrpMagic 0xC6A9 /* End Resource Group */
-
-#define BegColAtrMagic 0x77A8 /* Begin Color Attribute Table */
-#define EndColAtrMagic 0x77A9 /* End Color Attribute Table */
-#define BlkColAtrMagic 0x77B0 /* Color Attribute Table */
-#define MapColAtrMagic 0x77AB /* Map Color Attribute Table */
-
-#define BegImgObjMagic 0xFBA8 /* Begin Image Object */
-#define EndImgObjMagic 0xFBA9 /* End Image Object */
-#define DscImgObjMagic 0xFBA6 /* Image Data Descriptor */
-#define DatImgObjMagic 0xFBEE /* Image Picture Data */
-
-#define BegObEnv1Magic 0xC7A8 /* Begin Object Environment Group */
-#define EndObEnv1Magic 0xC7A9 /* End Object Environment Group */
-
-#define BegGrfObjMagic 0xBBA8 /* Begin Graphics Object */
-#define EndGrfObjMagic 0xBBA9 /* End Graphics Object */
-#define DscGrfObjMagic 0xBBA6 /* Graphics Data Descritor */
-#define DatGrfObjMagic 0xBBEE /* Graphics Data */
-
-#define MapCodFntMagic 0x8AAB /* Map Coded Font */
-#define MapDatResMagic 0xC3AB /* Map Data Resource */
-
-// -----------------------------Order-Typen-------------------------------
-
-#define GOrdGivArc 0xC6 /* 1 Arc at given position */
-#define GOrdCurArc 0x86 /* 1 Arc at current position */
-#define GOrdGivBzr 0xE5 /* 1 Beziercurve at given position */
-#define GOrdCurBzr 0xA5 /* 1 Beziercurve at current position */
-#define GOrdGivBox 0xC0 /* 1 Box at given position */
-#define GOrdCurBox 0x80 /* 1 Box at current position */
-#define GOrdGivFil 0xC5 /* 1 Fillet at given position */
-#define GOrdCurFil 0x85 /* 1 Fillet at current position */
-#define GOrdGivCrc 0xC7 /* 1 Full arc (circle) at given position */
-#define GOrdCurCrc 0x87 /* 1 Full arc (circle) at current position */
-#define GOrdGivLin 0xC1 /* 1 Line at given position */
-#define GOrdCurLin 0x81 /* 1 Line at current position */
-#define GOrdGivMrk 0xC2 /* 1 Marker at given position */
-#define GOrdCurMrk 0x82 /* 1 Marker at current position */
-#define GOrdGivArP 0xE3 /* 1 Partial arc at given position */
-#define GOrdCurArP 0xA3 /* 1 Partial arc at current position */
-#define GOrdGivRLn 0xE1 /* 1 Relative line at given position */
-#define GOrdCurRLn 0xA1 /* 1 Relative line at current position */
-#define GOrdGivSFl 0xE4 /* 1 Sharp fillet at given position */
-#define GOrdCurSFl 0xA4 /* 1 Sharp fillet at current position */
-
-#define GOrdGivStM 0xF1 /* 1 Character string move at given position */
-#define GOrdCurStM 0xB1 /* 1 Character string move at current position */
-#define GOrdGivStr 0xC3 /* 1 Character string at given position */
-#define GOrdCurStr 0x83 /* 1 Character string at current position */
-#define GOrdGivStx 0xFEF0 /* 2 Character string extended at given position */
-#define GOrdCurStx 0xFEB0 /* 2 Character string extended at current position */
-
-#define GOrdGivImg 0xD1 /* 1 Begin Image at given position */
-#define GOrdCurImg 0x91 /* 1 Begin Image at current position */
-#define GOrdImgDat 0x92 /* 1 Image data */
-#define GOrdEndImg 0x93 /* 1 End Image */
-#define GOrdBegAra 0x68 /* 0 1 Begin area */
-#define GOrdEndAra 0x60 /* 1 End area */
-#define GOrdBegElm 0xD2 /* 1 Begin element */
-#define GOrdEndElm 0x49 /* 0 1 End element */
-
-#define GOrdBegPth 0xD0 /* 1 Begin path */
-#define GOrdEndPth 0x7F /* 0 1 End path */
-#define GOrdFilPth 0xD7 /* 1 Fill path */
-#define GOrdModPth 0xD8 /* 1 Modify path */
-#define GOrdOutPth 0xD4 /* 1 Outline path */
-#define GOrdSClPth 0xB4 /* 1 Set clip path */
-
-#define GOrdNopNop 0x00 /* 0 0 No operation */
-#define GOrdRemark 0x01 /* 1 Comment */
-#define GOrdSegLab 0xD3 /* 1 Label */
-#define GOrdBitBlt 0xD6 /* 1 Bitblt */
-#define GOrdCalSeg 0x07 /* 1 Call Segment */
-#define GOrdSSgBnd 0x32 /* 1 Set segment boundary */
-#define GOrdSegChr 0x04 /* 1 Segment characteristics */
-#define GOrdCloFig 0x7D /* 0 1 Close Figure */
-#define GOrdEndSym 0xFF /* 0 0 End of symbol definition */
-#define GOrdEndPlg 0x3E /* 0 1 End prolog */
-#define GOrdEscape 0xD5 /* 1 Escape */
-#define GOrdExtEsc 0xFED5 /* 2 Extended Escape */
-#define GOrdPolygn 0xF3 /* 2 Polygons */
-
-#define GOrdStkPop 0x3F /* 0 1 Pop */
-
-#define GOrdSIvAtr 0x14 /* 1 Set individual attribute */
-#define GOrdPIvAtr 0x54 /* 1 Push and set individual attribute */
-#define GOrdSColor 0x0A /* 0 1 Set color */
-#define GOrdPColor 0x4A /* 0 1 Push and set color */
-#define GOrdSIxCol 0xA6 /* 1 Set indexed color */
-#define GOrdPIxCol 0xE6 /* 1 Push and set indexed color */
-#define GOrdSXtCol 0x26 /* 1 Set extended color */
-#define GOrdPXtCol 0x66 /* 1 Push and set extended color */
-#define GOrdSBgCol 0x25 /* 1 Set background color */
-#define GOrdPBgCol 0x65 /* 1 Push and set background color */
-#define GOrdSBxCol 0xA7 /* 1 Set background indexed color */
-#define GOrdPBxCol 0xE7 /* 1 Push and set background indexed color */
-#define GOrdSMixMd 0x0C /* 0 1 Set mix */
-#define GOrdPMixMd 0x4C /* 0 1 Push and set mix */
-#define GOrdSBgMix 0x0D /* 0 1 Set background mix */
-#define GOrdPBgMix 0x4D /* 0 1 Push and set background mix */
-
-#define GOrdSPtSet 0x08 /* 0 1 Set pattern set */
-#define GOrdPPtSet 0x48 /* 0 1 Push and set pattern set */
-#define GOrdSPtSym 0x28 /* 0 1 Set pattern symbol */
-#define GOrdPPtSym 0x09 /* 0 1 Push and set pattern symbol */
-#define GOrdSPtRef 0xA0 /* 1 Set model pattern reference */
-#define GOrdPPtRef 0xE0 /* 1 Push and set pattern reference point */
-
-#define GOrdSLnEnd 0x1A /* 0 1 Set line end */
-#define GOrdPLnEnd 0x5A /* 0 1 Push and set line end */
-#define GOrdSLnJoi 0x1B /* 0 1 Set line join */
-#define GOrdPLnJoi 0x5B /* 0 1 Push and set line join */
-#define GOrdSLnTyp 0x18 /* 0 1 Set line type */
-#define GOrdPLnTyp 0x58 /* 0 1 Push and set line type */
-#define GOrdSLnWdt 0x19 /* 0 1 Set line width */
-#define GOrdPLnWdt 0x59 /* 0 1 Push and set line width */
-#define GOrdSFrLWd 0x11 /* 1 Set fractional line width */
-#define GOrdPFrLWd 0x51 /* 1 Push and set fractional line width */
-#define GOrdSStLWd 0x15 /* 1 Set stroke line width */
-#define GOrdPStLWd 0x55 /* 1 Push and set stroke line width */
-
-#define GOrdSChDir 0x3A /* 0 1 Set character direction */
-#define GOrdPChDir 0x7A /* 0 1 Push and set character direction */
-#define GOrdSChPrc 0x39 /* 0 1 Set character precision */
-#define GOrdPChPrc 0x79 /* 0 1 Push and set character precision */
-#define GOrdSChSet 0x38 /* 0 1 Set character set */
-#define GOrdPChSet 0x78 /* 0 1 Push and set character set */
-#define GOrdSChAng 0x34 /* 1 Set character angle */
-#define GOrdPChAng 0x74 /* 1 Push and set character angle */
-#define GOrdSChBrx 0x05 /* 1 Set character break extra */
-#define GOrdPChBrx 0x45 /* 1 Push and set character break extra */
-#define GOrdSChCel 0x33 /* 1 Set character cell */
-#define GOrdPChCel 0x03 /* 1 Push and set character cell */
-#define GOrdSChXtr 0x17 /* 1 Set character extra */
-#define GOrdPChXtr 0x57 /* 1 Push and set character extra */
-#define GOrdSChShr 0x35 /* 1 Set character shear */
-#define GOrdPChShr 0x75 /* 1 Push and set character shear */
-#define GOrdSTxAlg 0x36 /* 0 2 Set text allingment */
-#define GOrdPTxAlg 0x76 /* 0 2 Push and set text allingment */
-
-#define GOrdSMkPrc 0x3B /* 0 1 Set marker precision */
-#define GOrdPMkPrc 0x7B /* 0 1 Push and set marker precision */
-#define GOrdSMkSet 0x3C /* 0 1 Set marker set */
-#define GOrdPMkSet 0x7C /* 0 1 Push and set marker set */
-#define GOrdSMkSym 0x29 /* 0 1 Set marker symbol */
-#define GOrdPMkSym 0x69 /* 0 1 Push and set marker symbol */
-#define GOrdSMkCel 0x37 /* 1 Set marker cell */
-#define GOrdPMkCel 0x77 /* 1 Push and set marker cell */
-
-#define GOrdSArcPa 0x22 /* 1 Set arc parameters */
-#define GOrdPArcPa 0x62 /* 1 Push and set arc parameters */
-
-#define GOrdSCrPos 0x21 /* 1 Set current position */
-#define GOrdPCrPos 0x61 /* 1 Push and set current position */
-
-#define GOrdSMdTrn 0x24 /* 1 Set model transform */
-#define GOrdPMdTrn 0x64 /* 1 Push and set model transform */
-#define GOrdSPkIdn 0x43 /* 1 Set pick identifier */
-#define GOrdPPkIdn 0x23 /* 1 Push and set pick identifier */
-#define GOrdSVwTrn 0x31 /* 1 Set viewing transform */
-#define GOrdSVwWin 0x27 /* 1 Set viewing window */
-#define GOrdPVwWin 0x67 /* 1 Push and set viewing window */
-
-//============================ OS2METReader ==================================
-
-struct OSPalette {
- OSPalette * pSucc;
- sal_uInt32 * p0RGB; // Darf auch NULL sein!
- USHORT nSize;
-};
-
-struct OSArea {
- OSArea * pSucc;
- BYTE nFlags;
- PolyPolygon aPPoly;
- BOOL bClosed;
- Color aCol;
- Color aBgCol;
- RasterOp eMix;
- RasterOp eBgMix;
- BOOL bFill;
- OSArea(){} ~OSArea(){}
-};
-
-struct OSPath
-{
- OSPath* pSucc;
- sal_uInt32 nID;
- PolyPolygon aPPoly;
- BOOL bClosed;
- BOOL bStroke;
-
- OSPath(){}
- ~OSPath(){}
-};
-
-struct OSFont {
- OSFont * pSucc;
- ULONG nID;
- Font aFont;
- OSFont(){} ~OSFont(){}
-};
-
-struct OSBitmap {
- OSBitmap * pSucc;
- ULONG nID;
- Bitmap aBitmap;
-
- // Waehrend des Lesens der Bitmap benoetigt:
- SvStream * pBMP; // Zeiger auf temporaere Windows-BMP-Datei oder NULL
- sal_uInt32 nWidth, nHeight;
- USHORT nBitsPerPixel;
- ULONG nMapPos;
- OSBitmap(){} ~OSBitmap(){}
-};
-
-struct OSAttr {
- OSAttr * pSucc;
- USHORT nPushOrder;
- BYTE nIvAttrA, nIvAttrP; // Spezialvariablen fuer den Order "GOrdPIvAtr"
-
- Color aLinCol;
- Color aLinBgCol;
- RasterOp eLinMix;
- RasterOp eLinBgMix;
- Color aChrCol;
- Color aChrBgCol;
- RasterOp eChrMix;
- RasterOp eChrBgMix;
- Color aMrkCol;
- Color aMrkBgCol;
- RasterOp eMrkMix;
- RasterOp eMrkBgMix;
- Color aPatCol;
- Color aPatBgCol;
- RasterOp ePatMix;
- RasterOp ePatBgMix;
- Color aImgCol;
- Color aImgBgCol;
- RasterOp eImgMix;
- RasterOp eImgBgMix;
- long nArcP, nArcQ, nArcR, nArcS;
- short nChrAng;
-// long nChrBreakExtra;
- Size aChrCellSize;
-// BYTE nChrDir;
-// long nChrExtra;
-// BYTE nChrPrec;
- ULONG nChrSet;
-// Size aChrShear;
- Point aCurPos;
-// long nFracLinWidth;
-// BYTE nLinEnd;
-// BYTE nLinJoin;
- PenStyle eLinStyle;
- USHORT nLinWidth;
- Size aMrkCellSize;
- BYTE nMrkPrec;
- BYTE nMrkSet;
- BYTE nMrkSymbol;
-// //... aModTransform;
-// Point aPatRef;
-// BYTE nPatSet;
- BOOL bFill;
-// ULONG nPickId;
-// //... aSegBound;
- USHORT nStrLinWidth;
-// BYTE nTxtAlignHor,nTxtAlignVer;
-// //... aViewTransform;
-// //... aViewWindow;
- OSAttr(){} ~OSAttr(){}
-};
-
-class OS2METReader {
-
-private:
-
- long ErrorCode;
-
- SvStream * pOS2MET; // Die einzulesende OS2MET-Datei
- VirtualDevice * pVirDev; // Hier werden die Drawing-Methoden aufgerufen.
- // Dabei findet ein Recording in das GDIMetaFile
- // statt.
- ULONG nOrigPos; // Anfaengliche Position in pOS2MET
- UINT16 nOrigNumberFormat; // Anfaengliches Nummern-Format von pOS2MET
- Rectangle aBoundingRect; // Boundingrectangle wie in Datei angegeben
- Rectangle aCalcBndRect; // selbst ermitteltes Boundingrectangle
- MapMode aGlobMapMode; // Aufloesung des Bildes
- BOOL bCoord32;
-
- OSPalette * pPaletteStack;
-
- LineInfo aLineInfo;
-
- OSArea * pAreaStack; // Areas, die in Arbeit sind
-
- OSPath * pPathStack; // Paths, die in Arbeit sind
- OSPath * pPathList; // Vollendete Paths
-
- OSFont * pFontList;
-
- OSBitmap * pBitmapList;
-
- OSAttr aDefAttr;
- OSAttr aAttr;
- OSAttr * pAttrStack;
-
- SvStream * pOrdFile;
-
- BOOL Callback(USHORT nPercent);
-
- void AddPointsToPath(const Polygon & rPoly);
- void AddPointsToArea(const Polygon & rPoly);
- void CloseFigure();
- void PushAttr(USHORT nPushOrder);
- void PopAttr();
-
- void ChangeBrush( const Color& rPatColor, const Color& rBGColor, BOOL bFill );
- void SetPen( const Color& rColor, USHORT nStrLinWidth = 0, PenStyle ePenStyle = PEN_SOLID );
- void SetRasterOp(RasterOp eROP);
-
- void SetPalette0RGB(USHORT nIndex, ULONG nCol);
- sal_uInt32 GetPalette0RGB(sal_uInt32 nIndex);
- // Holt Farbe aus der Palette, oder, wenn nicht vorhanden,
- // interpretiert nIndex als direkten RGB-Wert.
- Color GetPaletteColor(sal_uInt32 nIndex);
-
-
- BOOL IsLineInfo();
- void DrawPolyLine( const Polygon& rPolygon );
- void DrawPolygon( const Polygon& rPolygon );
- void DrawPolyPolygon( const PolyPolygon& rPolygon );
- USHORT ReadBigEndianWord();
- ULONG ReadBigEndian3BytesLong();
- ULONG ReadLittleEndian3BytesLong();
- long ReadCoord(BOOL b32);
- Point ReadPoint( const BOOL bAdjustBoundRect = TRUE );
- RasterOp OS2MixToRasterOp(BYTE nMix);
- void ReadLine(BOOL bGivenPos, USHORT nOrderLen);
- void ReadRelLine(BOOL bGivenPos, USHORT nOrderLen);
- void ReadBox(BOOL bGivenPos);
- void ReadBitBlt();
- void ReadChrStr(BOOL bGivenPos, BOOL bMove, BOOL bExtra, USHORT nOrderLen);
- void ReadArc(BOOL bGivenPos);
- void ReadFullArc(BOOL bGivenPos, USHORT nOrderSize);
- void ReadPartialArc(BOOL bGivenPos, USHORT nOrderSize);
- void ReadPolygons();
- void ReadBezier(BOOL bGivenPos, USHORT nOrderLen);
- void ReadFillet(BOOL bGivenPos, USHORT nOrderLen);
- void ReadFilletSharp(BOOL bGivenPos, USHORT nOrderLen);
- void ReadMarker(BOOL bGivenPos, USHORT nOrderLen);
- void ReadOrder(USHORT nOrderID, USHORT nOrderLen);
- void ReadDsc(USHORT nDscID, USHORT nDscLen);
- void ReadImageData(USHORT nDataID, USHORT nDataLen);
- void ReadFont(USHORT nFieldSize);
- void ReadField(USHORT nFieldType, USHORT nFieldSize);
-
-public:
-
- OS2METReader();
- ~OS2METReader();
-
- void ReadOS2MET( SvStream & rStreamOS2MET, GDIMetaFile & rGDIMetaFile );
- // Liesst aus dem Stream eine OS2MET-Datei und fuellt das GDIMetaFile
-
-};
-
-//=================== Methoden von OS2METReader ==============================
-
-BOOL OS2METReader::Callback(USHORT /*nPercent*/)
-{
-/*
- if (pCallback!=NULL) {
- if (((*pCallback)(pCallerData,nPercent))==TRUE) {
- pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
- return TRUE;
- }
- }
-*/
- return FALSE;
-}
-
-OS2METReader::OS2METReader()
-{
-}
-
-OS2METReader::~OS2METReader()
-{
-}
-
-BOOL OS2METReader::IsLineInfo()
-{
- return ( ! ( aLineInfo.IsDefault() || ( aLineInfo.GetStyle() == LINE_NONE ) || ( pVirDev->GetLineColor() == COL_TRANSPARENT ) ) );
-}
-
-void OS2METReader::DrawPolyLine( const Polygon& rPolygon )
-{
- if ( aLineInfo.GetStyle() == LINE_DASH || ( aLineInfo.GetWidth() > 1 ) )
- pVirDev->DrawPolyLine( rPolygon, aLineInfo );
- else
- pVirDev->DrawPolyLine( rPolygon );
-}
-
-void OS2METReader::DrawPolygon( const Polygon& rPolygon )
-{
- if ( IsLineInfo() )
- {
- pVirDev->Push( PUSH_LINECOLOR );
- pVirDev->SetLineColor( COL_TRANSPARENT );
- pVirDev->DrawPolygon( rPolygon );
- pVirDev->Pop();
- pVirDev->DrawPolyLine( rPolygon, aLineInfo );
- }
- else
- pVirDev->DrawPolygon( rPolygon );
-}
-
-void OS2METReader::DrawPolyPolygon( const PolyPolygon& rPolyPolygon )
-{
- if ( IsLineInfo() )
- {
- pVirDev->Push( PUSH_LINECOLOR );
- pVirDev->SetLineColor( COL_TRANSPARENT );
- pVirDev->DrawPolyPolygon( rPolyPolygon );
- pVirDev->Pop();
- for ( USHORT i = 0; i < rPolyPolygon.Count(); i++ )
- pVirDev->DrawPolyLine( rPolyPolygon.GetObject( i ), aLineInfo );
- }
- else
- pVirDev->DrawPolyPolygon( rPolyPolygon );
-}
-
-void OS2METReader::AddPointsToArea(const Polygon & rPoly)
-{
- USHORT nOldSize, nNewSize,i;
-
- if (pAreaStack==NULL || rPoly.GetSize()==0) return;
- PolyPolygon * pPP=&(pAreaStack->aPPoly);
- if (pPP->Count()==0 || pAreaStack->bClosed==TRUE) pPP->Insert(rPoly);
- else {
- Polygon aLastPoly(pPP->GetObject(pPP->Count()-1));
- nOldSize=aLastPoly.GetSize();
- if (aLastPoly.GetPoint(nOldSize-1)==rPoly.GetPoint(0)) nOldSize--;
- nNewSize=nOldSize+rPoly.GetSize();
- aLastPoly.SetSize(nNewSize);
- for (i=nOldSize; i<nNewSize; i++) {
- aLastPoly.SetPoint(rPoly.GetPoint(i-nOldSize),i);
- }
- pPP->Replace(aLastPoly,pPP->Count()-1);
- }
- pAreaStack->bClosed=FALSE;
-}
-
-void OS2METReader::AddPointsToPath(const Polygon & rPoly)
-{
- USHORT nOldSize, nNewSize,i;
-
- if (pPathStack==NULL || rPoly.GetSize()==0) return;
- PolyPolygon * pPP=&(pPathStack->aPPoly);
- if (pPP->Count()==0 /*|| pPathStack->bClosed==TRUE*/) pPP->Insert(rPoly);
- else {
- Polygon aLastPoly(pPP->GetObject(pPP->Count()-1));
- nOldSize=aLastPoly.GetSize();
- if (aLastPoly.GetPoint(nOldSize-1)!=rPoly.GetPoint(0)) pPP->Insert(rPoly);
- else {
- nOldSize--;
- nNewSize=nOldSize+rPoly.GetSize();
- aLastPoly.SetSize(nNewSize);
- for (i=nOldSize; i<nNewSize; i++) {
- aLastPoly.SetPoint(rPoly.GetPoint(i-nOldSize),i);
- }
- pPP->Replace(aLastPoly,pPP->Count()-1);
- }
- }
- pPathStack->bClosed=FALSE;
-}
-
-void OS2METReader::CloseFigure()
-{
- if (pAreaStack!=NULL) pAreaStack->bClosed=TRUE;
- else if (pPathStack!=NULL) pPathStack->bClosed=TRUE;
-}
-
-void OS2METReader::PushAttr(USHORT nPushOrder)
-{
- OSAttr * p;
- p=new OSAttr;
- *p=aAttr;
- p->pSucc=pAttrStack; pAttrStack=p;
- p->nPushOrder=nPushOrder;
-}
-
-void OS2METReader::PopAttr()
-{
- OSAttr * p=pAttrStack;
-
- if (p==NULL) return;
- switch (p->nPushOrder) {
-
- case GOrdPIvAtr:
- switch (p->nIvAttrA) {
- case 1: switch (p->nIvAttrP) {
- case 1: aAttr.aLinCol=p->aLinCol; break;
- case 2: aAttr.aChrCol=p->aChrCol; break;
- case 3: aAttr.aMrkCol=p->aMrkCol; break;
- case 4: aAttr.aPatCol=p->aPatCol; break;
- case 5: aAttr.aImgCol=p->aImgCol; break;
- } break;
- case 2: switch (p->nIvAttrP) {
- case 1: aAttr.aLinBgCol=p->aLinBgCol; break;
- case 2: aAttr.aChrBgCol=p->aChrBgCol; break;
- case 3: aAttr.aMrkBgCol=p->aMrkBgCol; break;
- case 4: aAttr.aPatBgCol=p->aPatBgCol; break;
- case 5: aAttr.aImgBgCol=p->aImgBgCol; break;
- } break;
- case 3: switch (p->nIvAttrP) {
- case 1: aAttr.eLinMix=p->eLinMix; break;
- case 2: aAttr.eChrMix=p->eChrMix; break;
- case 3: aAttr.eMrkMix=p->eMrkMix; break;
- case 4: aAttr.ePatMix=p->ePatMix; break;
- case 5: aAttr.eImgMix=p->eImgMix; break;
- } break;
- case 4: switch (p->nIvAttrP) {
- case 1: aAttr.eLinBgMix=p->eLinBgMix; break;
- case 2: aAttr.eChrBgMix=p->eChrBgMix; break;
- case 3: aAttr.eMrkBgMix=p->eMrkBgMix; break;
- case 4: aAttr.ePatBgMix=p->ePatBgMix; break;
- case 5: aAttr.eImgBgMix=p->eImgBgMix; break;
- } break;
- }
- break;
-
- case GOrdPLnTyp: aAttr.eLinStyle=p->eLinStyle; break;
-
- case GOrdPLnWdt: aAttr.nLinWidth=p->nLinWidth; break;
-
- case GOrdPStLWd: aAttr.nStrLinWidth=p->nStrLinWidth; break;
-
- case GOrdPChSet: aAttr.nChrSet=p->nChrSet; break;
-
- case GOrdPChAng: aAttr.nChrAng=p->nChrAng; break;
-
- case GOrdPMixMd:
- aAttr.eLinMix=p->eLinMix;
- aAttr.eChrMix=p->eChrMix;
- aAttr.eMrkMix=p->eMrkMix;
- aAttr.ePatMix=p->ePatMix;
- aAttr.eImgMix=p->eImgMix;
- break;
-
- case GOrdPBgMix:
- aAttr.eLinBgMix=p->eLinBgMix;
- aAttr.eChrBgMix=p->eChrBgMix;
- aAttr.eMrkBgMix=p->eMrkBgMix;
- aAttr.ePatBgMix=p->ePatBgMix;
- aAttr.eImgBgMix=p->eImgBgMix;
- break;
-
- case GOrdPPtSym: aAttr.bFill = p->bFill; break;
-
- case GOrdPColor:
- case GOrdPIxCol:
- case GOrdPXtCol:
- aAttr.aLinCol=p->aLinCol;
- aAttr.aChrCol=p->aChrCol;
- aAttr.aMrkCol=p->aMrkCol;
- aAttr.aPatCol=p->aPatCol;
- aAttr.aImgCol=p->aImgCol;
- break;
-
- case GOrdPBgCol:
- case GOrdPBxCol:
- aAttr.aLinBgCol=p->aLinBgCol;
- aAttr.aChrBgCol=p->aChrBgCol;
- aAttr.aMrkBgCol=p->aMrkBgCol;
- aAttr.aPatBgCol=p->aPatBgCol;
- aAttr.aImgBgCol=p->aImgBgCol;
- break;
-
- case GOrdPMkPrc: aAttr.nMrkPrec=aDefAttr.nMrkPrec; break;
-
- case GOrdPMkSet: aAttr.nMrkSet=aDefAttr.nMrkSet; break;
-
- case GOrdPMkSym: aAttr.nMrkSymbol=aDefAttr.nMrkSymbol; break;
-
- case GOrdPMkCel: aAttr.aMrkCellSize=aDefAttr.aMrkCellSize; break;
-
- case GOrdPArcPa:
- aAttr.nArcP=p->nArcP; aAttr.nArcQ=p->nArcQ;
- aAttr.nArcR=p->nArcR; aAttr.nArcS=p->nArcS;
- break;
-
- case GOrdPCrPos:
- aAttr.aCurPos=p->aCurPos;
- break;
- }
- pAttrStack=p->pSucc;
- delete p;
-}
-
-void OS2METReader::ChangeBrush(const Color& rPatColor, const Color& /*rBGColor*/, BOOL bFill )
-{
- Color aColor;
-
- if( bFill )
- aColor = rPatColor;
- else
- aColor = Color( COL_TRANSPARENT );
-
- if( pVirDev->GetFillColor() != aColor )
- pVirDev->SetFillColor( aColor );
-}
-
-void OS2METReader::SetPen( const Color& rColor, USHORT nLineWidth, PenStyle ePenStyle )
-{
- LineStyle eLineStyle( LINE_SOLID );
-
- if ( pVirDev->GetLineColor() != rColor )
- pVirDev->SetLineColor( rColor );
- aLineInfo.SetWidth( nLineWidth );
-
- USHORT nDotCount = 0;
- USHORT nDashCount = 0;
- switch ( ePenStyle )
- {
- case PEN_NULL :
- eLineStyle = LINE_NONE;
- break;
- case PEN_DASHDOT :
- nDashCount++;
- case PEN_DOT :
- nDotCount++;
- nDashCount--;
- case PEN_DASH :
- nDashCount++;
- aLineInfo.SetDotCount( nDotCount );
- aLineInfo.SetDashCount( nDashCount );
- aLineInfo.SetDistance( nLineWidth );
- aLineInfo.SetDotLen( nLineWidth );
- aLineInfo.SetDashLen( nLineWidth << 2 );
- eLineStyle = LINE_DASH;
- break;
- case PEN_SOLID:
- break; // -Wall not handled...
- }
- aLineInfo.SetStyle( eLineStyle );
-}
-
-void OS2METReader::SetRasterOp(RasterOp eROP)
-{
- if (pVirDev->GetRasterOp()!=eROP) pVirDev->SetRasterOp(eROP);
-}
-
-
-void OS2METReader::SetPalette0RGB(USHORT nIndex, ULONG nCol)
-{
- if (pPaletteStack==NULL) {
- pPaletteStack=new OSPalette;
- pPaletteStack->pSucc=NULL;
- pPaletteStack->p0RGB=NULL;
- pPaletteStack->nSize=0;
- }
- if (pPaletteStack->p0RGB==NULL || nIndex>=pPaletteStack->nSize) {
- sal_uInt32 * pOld0RGB=pPaletteStack->p0RGB;
- USHORT i,nOldSize=pPaletteStack->nSize;
- if (pOld0RGB==NULL) nOldSize=0;
- pPaletteStack->nSize=2*(nIndex+1);
- if (pPaletteStack->nSize<256) pPaletteStack->nSize=256;
- pPaletteStack->p0RGB = new sal_uInt32[pPaletteStack->nSize];
- for (i=0; i<pPaletteStack->nSize; i++) {
- if (i<nOldSize) pPaletteStack->p0RGB[i]=pOld0RGB[i];
- else if (i==0) pPaletteStack->p0RGB[i]=0x00ffffff;
- else pPaletteStack->p0RGB[i]=0;
- }
- if (pOld0RGB!=NULL) delete[] pOld0RGB;
- }
- pPaletteStack->p0RGB[nIndex]=nCol;
-}
-
-sal_uInt32 OS2METReader::GetPalette0RGB(sal_uInt32 nIndex)
-{
- if (pPaletteStack!=NULL && pPaletteStack->p0RGB!=NULL &&
- pPaletteStack->nSize>nIndex) nIndex=pPaletteStack->p0RGB[nIndex];
- return nIndex;
-}
-
-Color OS2METReader::GetPaletteColor(sal_uInt32 nIndex)
-{
- nIndex=GetPalette0RGB(nIndex);
- return Color(sal::static_int_cast< UINT8 >((nIndex>>16)&0xff),
- sal::static_int_cast< UINT8 >((nIndex>>8)&0xff),
- sal::static_int_cast< UINT8 >(nIndex&0xff));
-}
-
-
-USHORT OS2METReader::ReadBigEndianWord()
-{
- BYTE nLo,nHi;
- *pOS2MET >> nHi >> nLo;
- return (((USHORT)nHi)<<8)|(((USHORT)nLo)&0x00ff);
-}
-
-ULONG OS2METReader::ReadBigEndian3BytesLong()
-{
- USHORT nLo;
- BYTE nHi;
- *pOS2MET >> nHi;
- nLo=ReadBigEndianWord();
- return ((((ULONG)nHi)<<16)&0x00ff0000)|((ULONG)nLo);
-}
-
-ULONG OS2METReader::ReadLittleEndian3BytesLong()
-{
- BYTE nHi,nMed,nLo;
-
- *pOS2MET >> nLo >> nMed >> nHi;
- return ((((ULONG)nHi)&0xff)<<16)|((((ULONG)nMed)&0xff)<<8)|(((ULONG)nLo)&0xff);
-}
-
-long OS2METReader::ReadCoord(BOOL b32)
-{
- long l;
- short s;
-
- if (b32) *pOS2MET >> l;
- else { *pOS2MET >> s; l=(long)s; }
- return l;
-}
-
-Point OS2METReader::ReadPoint( const BOOL bAdjustBoundRect )
-{
- long x,y;
-
- x=ReadCoord(bCoord32);
- y=ReadCoord(bCoord32);
- x=x-aBoundingRect.Left();
- y=aBoundingRect.Bottom()-y;
-
- if ( bAdjustBoundRect )
- aCalcBndRect.Union(Rectangle(x,y,x+1,y+1));
-
- return Point(x,y);
-}
-
-RasterOp OS2METReader::OS2MixToRasterOp(BYTE nMix)
-{
- switch (nMix) {
- case 0x0c: return ROP_INVERT;
- case 0x04: return ROP_XOR;
- case 0x0b: return ROP_XOR;
- default: return ROP_OVERPAINT;
- }
-}
-
-void OS2METReader::ReadLine(BOOL bGivenPos, USHORT nOrderLen)
-{
- USHORT i,nPolySize;
-
- if (bCoord32) nPolySize=nOrderLen/8; else nPolySize=nOrderLen/4;
- if (!bGivenPos) nPolySize++;
- if (nPolySize==0) return;
- Polygon aPolygon(nPolySize);
- for (i=0; i<nPolySize; i++) {
- if (i==0 && !bGivenPos) aPolygon.SetPoint(aAttr.aCurPos,i);
- else aPolygon.SetPoint(ReadPoint(),i);
- }
- aAttr.aCurPos=aPolygon.GetPoint(nPolySize-1);
- if (pAreaStack!=NULL) AddPointsToArea(aPolygon);
- else if (pPathStack!=NULL) AddPointsToPath(aPolygon);
- else
- {
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- SetRasterOp(aAttr.eLinMix);
- DrawPolyLine( aPolygon );
- }
-}
-
-void OS2METReader::ReadRelLine(BOOL bGivenPos, USHORT nOrderLen)
-{
- USHORT i,nPolySize;
- Point aP0;
-
-
- if (bGivenPos) {
- aP0=ReadPoint();
- if (bCoord32) nOrderLen-=8; else nOrderLen-=4;
- }
- else aP0=aAttr.aCurPos;
- nPolySize=nOrderLen/2;
- if (nPolySize==0) return;
- Polygon aPolygon(nPolySize);
- for (i=0; i<nPolySize; i++) {
-#if (defined SOLARIS && defined PPC) || defined IRIX
- UINT8 nunsignedbyte;
- *pOS2MET >> nunsignedbyte; aP0.X()+=(INT8)nunsignedbyte;
- *pOS2MET >> nunsignedbyte; aP0.Y()+=(INT8)nunsignedbyte;
-#else
- INT8 nsignedbyte;
- *pOS2MET >> nsignedbyte; aP0.X()+=(long)nsignedbyte;
- *pOS2MET >> nsignedbyte; aP0.Y()-=(long)nsignedbyte;
-#endif
- aCalcBndRect.Union(Rectangle(aP0,Size(1,1)));
- aPolygon.SetPoint(aP0,i);
- }
- aAttr.aCurPos=aPolygon.GetPoint(nPolySize-1);
- if (pAreaStack!=NULL) AddPointsToArea(aPolygon);
- else if (pPathStack!=NULL) AddPointsToPath(aPolygon);
- else
- {
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- SetRasterOp(aAttr.eLinMix);
- DrawPolyLine( aPolygon );
- }
-}
-
-void OS2METReader::ReadBox(BOOL bGivenPos)
-{
- BYTE nFlags;
- Point P0;
- long nHRound,nVRound;
-
- *pOS2MET >> nFlags;
- pOS2MET->SeekRel(1);
-
- if ( bGivenPos )
- P0 = ReadPoint();
- else
- P0 = aAttr.aCurPos;
-
- aAttr.aCurPos=ReadPoint();
- nHRound=ReadCoord(bCoord32);
- nVRound=ReadCoord(bCoord32);
-
- Rectangle aBoxRect( P0, aAttr.aCurPos );
-
- if ( pAreaStack )
- AddPointsToArea( Polygon( aBoxRect ) );
- else if ( pPathStack )
- AddPointsToPath( Polygon( aBoxRect ) );
- else
- {
- if ( nFlags & 0x20 )
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- else
- SetPen( COL_TRANSPARENT );
-
- if ( nFlags & 0x40 )
- {
- ChangeBrush(aAttr.aPatCol,aAttr.aPatBgCol,aAttr.bFill);
- SetRasterOp(aAttr.ePatMix);
- }
- else
- {
- ChangeBrush( Color( COL_TRANSPARENT ), Color( COL_TRANSPARENT ), FALSE );
- SetRasterOp(aAttr.eLinMix);
- }
-
- if ( IsLineInfo() )
- {
- Polygon aPolygon( aBoxRect, nHRound, nVRound );
- if ( nFlags & 0x40 )
- {
- pVirDev->Push( PUSH_LINECOLOR );
- pVirDev->SetLineColor( COL_TRANSPARENT );
- pVirDev->DrawRect( aBoxRect, nHRound, nVRound );
- pVirDev->Pop();
- }
- pVirDev->DrawPolyLine( aPolygon, aLineInfo );
- }
- else
- pVirDev->DrawRect( aBoxRect, nHRound, nVRound );
- }
-}
-
-void OS2METReader::ReadBitBlt()
-{
- Point aP1,aP2;
- Size aSize;
- sal_uInt32 nID;
- OSBitmap * pB;
- long nt;
-
- pOS2MET->SeekRel(4);
- *pOS2MET >> nID;
- pOS2MET->SeekRel(4);
- aP1=ReadPoint(); aP2=ReadPoint();
- if (aP1.X() > aP2.X()) { nt=aP1.X(); aP1.X()=aP2.X(); aP2.X()=nt; }
- if (aP1.Y() > aP2.Y()) { nt=aP1.Y(); aP1.Y()=aP2.Y(); aP2.Y()=nt; }
- aSize=Size(aP2.X()-aP1.X(),aP2.Y()-aP1.Y());
-
- pB=pBitmapList;
- while (pB!=NULL && pB->nID!=nID) pB=pB->pSucc;
- if (pB!=NULL) {
- SetRasterOp(aAttr.ePatMix);
- pVirDev->DrawBitmap(aP1,aSize,pB->aBitmap);
- }
-}
-
-void OS2METReader::ReadChrStr(BOOL bGivenPos, BOOL bMove, BOOL bExtra, USHORT nOrderLen)
-{
- Point aP0;
- USHORT i, nLen;
- char * pChr;
- OSFont * pF;
- Font aFont;
- Size aSize;
-
- pF = pFontList;
- while (pF!=NULL && pF->nID!=aAttr.nChrSet) pF=pF->pSucc;
- if (pF!=NULL)
- aFont = pF->aFont;
- aFont.SetColor(aAttr.aChrCol);
- aFont.SetSize(Size(0,aAttr.aChrCellSize.Height()));
- if ( aAttr.nChrAng != 0 )
- aFont.SetOrientation(aAttr.nChrAng);
-
- if (bGivenPos)
- aP0 = ReadPoint();
- else
- aP0 = aAttr.aCurPos;
- if (bExtra)
- {
- pOS2MET->SeekRel(2);
- ReadPoint( FALSE );
- ReadPoint( FALSE );
- *pOS2MET >> nLen;
- }
- else
- {
- if ( !bGivenPos )
- nLen = nOrderLen;
- else if ( bCoord32 )
- nLen = nOrderLen-8;
- else
- nLen = nOrderLen-4;
- }
- pChr = new char[nLen+1];
- for (i=0; i<nLen; i++)
- *pOS2MET >> pChr[i];
- pChr[nLen] = 0;
- String aStr( (const sal_Char*)pChr, gsl_getSystemTextEncoding() );
- SetRasterOp(aAttr.eChrMix);
- if (pVirDev->GetFont()!=aFont)
- pVirDev->SetFont(aFont);
- pVirDev->DrawText(aP0,aStr);
-
- aSize = Size( pVirDev->GetTextWidth(aStr), pVirDev->GetTextHeight() );
- if ( aAttr.nChrAng == 0 )
- {
- aCalcBndRect.Union(Rectangle( Point(aP0.X(),aP0.Y()-aSize.Height()),
- Size(aSize.Width(),aSize.Height()*2)));
- if (bMove)
- aAttr.aCurPos = Point( aP0.X() + aSize.Width(), aP0.Y());
- }
- else
- {
- Polygon aDummyPoly(4);
-
- aDummyPoly.SetPoint( Point( aP0.X(), aP0.Y() ), 0); // TOP LEFT
- aDummyPoly.SetPoint( Point( aP0.X(), aP0.Y() - aSize.Height() ), 1); // BOTTOM LEFT
- aDummyPoly.SetPoint( Point( aP0.X() + aSize.Width(), aP0.Y() ), 2); // TOP RIGHT
- aDummyPoly.SetPoint( Point( aP0.X() + aSize.Width(), aP0.Y() - aSize.Height() ), 3);// BOTTOM RIGHT
- aDummyPoly.Rotate( aP0, (short)aAttr.nChrAng );
- if ( bMove )
- aAttr.aCurPos = aDummyPoly.GetPoint( 0 );
- aCalcBndRect.Union( Rectangle( aDummyPoly.GetPoint( 0 ), aDummyPoly.GetPoint( 3 ) ) );
- aCalcBndRect.Union( Rectangle( aDummyPoly.GetPoint( 1 ), aDummyPoly.GetPoint( 2 ) ) );
- }
- delete[] pChr;
-}
-
-void OS2METReader::ReadArc(BOOL bGivenPos)
-{
- Point aP1, aP2, aP3;
- double x1,y1,x2,y2,x3,y3,p,q,cx,cy,ncx,ncy,r,rx,ry,w1,w3;
- if (bGivenPos) aP1=ReadPoint(); else aP1=aAttr.aCurPos;
- aP2=ReadPoint(); aP3=ReadPoint();
- aAttr.aCurPos=aP3;
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- SetRasterOp(aAttr.eLinMix);
- // OK, gegeben sind 3 Punkte der Ellipse, und das Verhaeltnis
- // Breite zu Hoehe (als p zu q):
- x1=aP1.X(); y1=aP1.Y();
- x2=aP2.X(); y2=aP2.Y();
- x3=aP3.X(); y3=aP3.Y();
- p=aAttr.nArcP;q=aAttr.nArcQ;
- // Berechnet wird der Mittelpunkt cx,cy der Ellipse:
- ncy=2*p*p*((y3-y1)*(x2-x1)-(y1-y2)*(x1-x3));
- ncx=2*q*q*(x2-x1);
- if ( (ncx<0.001 && ncx>-0.001) || (ncy<0.001 && ncy>-0.001) ) {
- // Berechnung nicht moeglich, Punkte liegen auf einer Linie
- pVirDev->DrawLine(aP1,aP2);
- pVirDev->DrawLine(aP2,aP3);
- return;
- }
- cy=( q*q*((x3*x3-x1*x1)*(x2-x1)+(x2*x2-x1*x1)*(x1-x3)) +
- p*p*((y3*y3-y1*y1)*(x2-x1)+(y2*y2-y1*y1)*(x1-x3)) ) / ncy;
- cx=( q*q*(x2*x2-x1*x1)+p*p*(y2*y2-y1*y1)+cy*2*p*p*(y1-y2) ) / ncx;
- // Nun brauchen wir noch den Radius in x und y Richtung:
- r=sqrt(q*q*(x1-cx)*(x1-cx)+p*p*(y1-cy)*(y1-cy));
- rx=r/q; ry=r/p;
- // Jetzt stellt sich "nur noch" die Frage, wie Start- und Endpunkt
- // gewaehlt werden muessen, damit Punkt Nr. 2 innerhalb des
- // gezeichneten Bogens liegt:
- w1=fmod((atan2(x1-cx,y1-cy)-atan2(x2-cx,y2-cy)),6.28318530718); if (w1<0) w1+=6.28318530718;
- w3=fmod((atan2(x3-cx,y3-cy)-atan2(x2-cx,y2-cy)),6.28318530718); if (w3<0) w3+=6.28318530718;
- if (w3<w1) {
- pVirDev->DrawArc(Rectangle((long)(cx-rx),(long)(cy-ry),
- (long)(cx+rx),(long)(cy+ry)),aP1,aP3);
- }
- else {
- pVirDev->DrawArc(Rectangle((long)(cx-rx),(long)(cy-ry),
- (long)(cx+rx),(long)(cy+ry)),aP3,aP1);
- }
-}
-
-void OS2METReader::ReadFullArc(BOOL bGivenPos, USHORT nOrderSize)
-{
- Point aCenter;
- long nP,nQ,nR,nS;
- Rectangle aRect;
- sal_uInt32 nMul; USHORT nMulS;
-
- if (bGivenPos) {
- aCenter=ReadPoint();
- if (bCoord32) nOrderSize-=8; else nOrderSize-=4;
- }
- else aCenter=aAttr.aCurPos;
-
- nP=aAttr.nArcP; nQ=aAttr.nArcQ; nR=aAttr.nArcR; nS=aAttr.nArcS;
- if (nP<0) nP=-nP;
- if (nQ<0) nQ=-nQ;
- if (nR<0) nR=-nR;
- if (nS<0) nS=-nS;
- if (nOrderSize>=4) *pOS2MET >> nMul;
- else { *pOS2MET >> nMulS; nMul=((ULONG)nMulS)<<8; }
- if (nMul!=0x00010000) {
- nP=(nP*nMul)>>16;
- nQ=(nQ*nMul)>>16;
- nR=(nR*nMul)>>16;
- nS=(nS*nMul)>>16;
- }
-
- aRect=Rectangle(aCenter.X()-nP,aCenter.Y()-nQ,
- aCenter.X()+nP,aCenter.Y()+nQ);
- aCalcBndRect.Union(aRect);
-
- if (pAreaStack!=NULL) {
- ChangeBrush(aAttr.aPatCol,aAttr.aPatBgCol,aAttr.bFill);
- SetRasterOp(aAttr.ePatMix);
- if ((pAreaStack->nFlags&0x40)!=0)
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- else
- SetPen( COL_TRANSPARENT, 0, PEN_NULL );
- }
- else
- {
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- ChangeBrush(Color( COL_TRANSPARENT ),Color( COL_TRANSPARENT ),FALSE);
- SetRasterOp(aAttr.eLinMix);
- }
- pVirDev->DrawEllipse(aRect);
-}
-
-void OS2METReader::ReadPartialArc(BOOL bGivenPos, USHORT nOrderSize)
-{
- Point aP0, aCenter,aPStart,aPEnd;
- long nP,nQ,nR,nS,nStart, nSweep;
- Rectangle aRect;
- sal_uInt32 nMul; USHORT nMulS;
- double fStart, fEnd;
-
- if (bGivenPos) {
- aP0=ReadPoint();
- if (bCoord32) nOrderSize-=8; else nOrderSize-=4;
- }
- else aP0=aAttr.aCurPos;
- aCenter=ReadPoint();
-
- nP=aAttr.nArcP; nQ=aAttr.nArcQ; nR=aAttr.nArcR; nS=aAttr.nArcS;
- if (nP<0) nP=-nP;
- if (nQ<0) nQ=-nQ;
- if (nR<0) nR=-nR;
- if (nS<0) nS=-nS;
- if (nOrderSize>=12) *pOS2MET >> nMul;
- else { *pOS2MET >> nMulS; nMul=((ULONG)nMulS)<<8; }
- if (nMul!=0x00010000) {
- nP=(nP*nMul)>>16;
- nQ=(nQ*nMul)>>16;
- nR=(nR*nMul)>>16;
- nS=(nS*nMul)>>16;
- }
-
- *pOS2MET >> nStart >> nSweep;
- fStart=((double)nStart)/65536.0/180.0*3.14159265359;
- fEnd=fStart+((double)nSweep)/65536.0/180.0*3.14159265359;
- aPStart=Point(aCenter.X()+(long)( cos(fStart)*nP),
- aCenter.Y()+(long)(-sin(fStart)*nQ));
- aPEnd= Point(aCenter.X()+(long)( cos(fEnd)*nP),
- aCenter.Y()+(long)(-sin(fEnd)*nQ));
-
- aRect=Rectangle(aCenter.X()-nP,aCenter.Y()-nQ,
- aCenter.X()+nP,aCenter.Y()+nQ);
- aCalcBndRect.Union(aRect);
-
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- SetRasterOp(aAttr.eLinMix);
-
- pVirDev->DrawLine(aP0,aPStart);
- pVirDev->DrawArc(aRect,aPStart,aPEnd);
- aAttr.aCurPos=aPEnd;
-}
-
-void OS2METReader::ReadPolygons()
-{
- sal_uInt32 i,j,nNumPolys, nNumPoints;
- PolyPolygon aPolyPoly;
- Polygon aPoly;
- Point aPoint;
- BYTE nFlags;
-
- *pOS2MET >> nFlags >> nNumPolys;
- for (i=0; i<nNumPolys; i++) {
- *pOS2MET >> nNumPoints;
- if (i==0) nNumPoints++;
- aPoly.SetSize((short)nNumPoints);
- for (j=0; j<nNumPoints; j++) {
- if (i==0 && j==0) aPoint=aAttr.aCurPos;
- else aPoint=ReadPoint();
- aPoly.SetPoint(aPoint,(short)j);
- if (i==nNumPolys-1 && j==nNumPoints-1) aAttr.aCurPos=aPoint;
- }
- aPolyPoly.Insert(aPoly);
- }
-
- ChangeBrush(aAttr.aPatCol,aAttr.aPatBgCol,aAttr.bFill);
- SetRasterOp(aAttr.ePatMix);
- if ((nFlags&0x01)!=0)
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- else
- SetPen( COL_TRANSPARENT, 0, PEN_NULL );
- DrawPolyPolygon( aPolyPoly );
-}
-
-void OS2METReader::ReadBezier(BOOL bGivenPos, USHORT nOrderLen)
-{
- USHORT i, nNumPoints = nOrderLen / ( bCoord32 ? 8 : 4 );
-
- if( !bGivenPos )
- nNumPoints++;
-
- if( !nNumPoints )
- return;
-
- Polygon aPolygon( nNumPoints );
-
- for( i=0; i < nNumPoints; i++ )
- {
- if( i==0 && !bGivenPos)
- aPolygon.SetPoint( aAttr.aCurPos, i );
- else
- aPolygon.SetPoint( ReadPoint(), i );
- }
-
- if( !( nNumPoints % 4 ) )
- {
- // create bezier polygon
- const USHORT nSegPoints = 25;
- const USHORT nSegments = aPolygon.GetSize() >> 2;
- Polygon aBezPoly( nSegments * nSegPoints );
-
- USHORT nSeg, nBezPos, nStartPos;
- for( nSeg = 0, nBezPos = 0, nStartPos = 0; nSeg < nSegments; nSeg++, nStartPos += 4 )
- {
- const Polygon aSegPoly( aPolygon[ nStartPos ], aPolygon[ nStartPos + 1 ],
- aPolygon[ nStartPos + 3 ], aPolygon[ nStartPos + 2 ],
- nSegPoints );
-
- for( USHORT nSegPos = 0; nSegPos < nSegPoints; )
- aBezPoly[ nBezPos++ ] = aSegPoly[ nSegPos++ ];
- }
-
- nNumPoints = nBezPos;
-
- if( nNumPoints != aBezPoly.GetSize() )
- aBezPoly.SetSize( nNumPoints );
-
- aPolygon = aBezPoly;
- }
-
- aAttr.aCurPos = aPolygon[ nNumPoints - 1 ];
-
- if (pAreaStack!=NULL)
- AddPointsToArea(aPolygon);
- else if (pPathStack!=NULL)
- AddPointsToPath(aPolygon);
- else
- {
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- SetRasterOp(aAttr.eLinMix);
- DrawPolyLine( aPolygon );
- }
-}
-
-void OS2METReader::ReadFillet(BOOL bGivenPos, USHORT nOrderLen)
-{
- USHORT i,nNumPoints;
-
- if (bCoord32) nNumPoints=nOrderLen/8; else nNumPoints=nOrderLen/4;
- if (!bGivenPos) nNumPoints++;
- if (nNumPoints==0) return;
- Polygon aPolygon(nNumPoints);
- for (i=0; i<nNumPoints; i++) {
- if (i==0 && !bGivenPos) aPolygon.SetPoint(aAttr.aCurPos,i);
- else aPolygon.SetPoint(ReadPoint(),i);
- }
- aAttr.aCurPos=aPolygon.GetPoint(nNumPoints-1);
- if (pAreaStack!=NULL) AddPointsToArea(aPolygon);
- else if (pPathStack!=NULL) AddPointsToPath(aPolygon);
- else {
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- SetRasterOp(aAttr.eLinMix);
- DrawPolyLine( aPolygon );
- }
-}
-
-void OS2METReader::ReadFilletSharp(BOOL bGivenPos, USHORT nOrderLen)
-{
- USHORT i,nNumPoints;
-
- if (bGivenPos) {
- aAttr.aCurPos=ReadPoint();
- if (bCoord32) nOrderLen-=8; else nOrderLen-=4;
- }
- if (bCoord32) nNumPoints=1+nOrderLen/10;
- else nNumPoints=1+nOrderLen/6;
- Polygon aPolygon(nNumPoints);
- aPolygon.SetPoint(aAttr.aCurPos,0);
- for (i=1; i<nNumPoints; i++) aPolygon.SetPoint(ReadPoint(),i);
- aAttr.aCurPos=aPolygon.GetPoint(nNumPoints-1);
- if (pAreaStack!=NULL) AddPointsToArea(aPolygon);
- else if (pPathStack!=NULL) AddPointsToPath(aPolygon);
- else
- {
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- SetRasterOp(aAttr.eLinMix);
- DrawPolyLine( aPolygon );
- }
-}
-
-void OS2METReader::ReadMarker(BOOL bGivenPos, USHORT nOrderLen)
-{
- USHORT i,nNumPoints;
- long x,y;
-
- SetPen( aAttr.aMrkCol );
- SetRasterOp(aAttr.eMrkMix);
- if (aAttr.nMrkSymbol>=5 && aAttr.nMrkSymbol<=9)
- {
- ChangeBrush(aAttr.aMrkCol,aAttr.aMrkCol,TRUE);
- }
- else
- {
- ChangeBrush(Color(COL_TRANSPARENT),Color(COL_TRANSPARENT),FALSE);
- }
- if (bCoord32) nNumPoints=nOrderLen/8; else nNumPoints=nOrderLen/4;
- if (!bGivenPos) nNumPoints++;
- for (i=0; i<nNumPoints; i++) {
- if (i!=0 || bGivenPos) aAttr.aCurPos=ReadPoint();
- x=aAttr.aCurPos.X(); y=aAttr.aCurPos.Y();
- aCalcBndRect.Union(Rectangle(x-5,y-5,x+5,y+5));
- switch (aAttr.nMrkSymbol) {
- case 2: // PLUS
- pVirDev->DrawLine(Point(x-4,y),Point(x+4,y));
- pVirDev->DrawLine(Point(x,y-4),Point(x,y+4));
- break;
- case 3: // DIAMOND
- case 7: { // SOLIDDIAMOND
- Polygon aPoly(4);
- aPoly.SetPoint(Point(x,y+4),0);
- aPoly.SetPoint(Point(x+4,y),1);
- aPoly.SetPoint(Point(x,y-4),2);
- aPoly.SetPoint(Point(x-4,y),3);
- pVirDev->DrawPolygon(aPoly);
- break;
- }
- case 4: // SQARE
- case 8: { // SOLIDSUARE
- Polygon aPoly(4);
- aPoly.SetPoint(Point(x+4,y+4),0);
- aPoly.SetPoint(Point(x+4,y-4),1);
- aPoly.SetPoint(Point(x-4,y-4),2);
- aPoly.SetPoint(Point(x-4,y+4),3);
- pVirDev->DrawPolygon(aPoly);
- break;
- }
- case 5: { // SIXPOINTSTAR
- Polygon aPoly(12);
- aPoly.SetPoint(Point(x ,y-4),0);
- aPoly.SetPoint(Point(x+2,y-2),1);
- aPoly.SetPoint(Point(x+4,y-2),2);
- aPoly.SetPoint(Point(x+2,y ),3);
- aPoly.SetPoint(Point(x+4,y+2),4);
- aPoly.SetPoint(Point(x+2,y+2),5);
- aPoly.SetPoint(Point(x ,y+4),6);
- aPoly.SetPoint(Point(x-2,y+2),7);
- aPoly.SetPoint(Point(x-4,y+2),8);
- aPoly.SetPoint(Point(x-2,y ),9);
- aPoly.SetPoint(Point(x-4,y-2),10);
- aPoly.SetPoint(Point(x-2,y-2),11);
- pVirDev->DrawPolygon(aPoly);
- break;
- }
- case 6: { // EIGHTPOINTSTAR
- Polygon aPoly(16);
- aPoly.SetPoint(Point(x ,y-4),0);
- aPoly.SetPoint(Point(x+1,y-2),1);
- aPoly.SetPoint(Point(x+3,y-3),2);
- aPoly.SetPoint(Point(x+2,y-1),3);
- aPoly.SetPoint(Point(x+4,y ),4);
- aPoly.SetPoint(Point(x+2,y+1),5);
- aPoly.SetPoint(Point(x+3,y+3),6);
- aPoly.SetPoint(Point(x+1,y+2),7);
- aPoly.SetPoint(Point(x ,y+4),8);
- aPoly.SetPoint(Point(x-1,y+2),9);
- aPoly.SetPoint(Point(x-3,y+3),10);
- aPoly.SetPoint(Point(x-2,y+1),11);
- aPoly.SetPoint(Point(x-4,y ),12);
- aPoly.SetPoint(Point(x-2,y-1),13);
- aPoly.SetPoint(Point(x-3,y-3),14);
- aPoly.SetPoint(Point(x-1,y-2),15);
- pVirDev->DrawPolygon(aPoly);
- break;
- }
- case 9: // DOT
- pVirDev->DrawEllipse(Rectangle(x-1,y-1,x+1,y+1));
- break;
- case 10: // SMALLCIRCLE
- pVirDev->DrawEllipse(Rectangle(x-2,y-2,x+2,y+2));
- break;
- case 64: // BLANK
- break;
- default: // (=1) CROSS
- pVirDev->DrawLine(Point(x-4,y-4),Point(x+4,y+4));
- pVirDev->DrawLine(Point(x-4,y+4),Point(x+4,y-4));
- break;
- }
- }
-}
-
-void OS2METReader::ReadOrder(USHORT nOrderID, USHORT nOrderLen)
-{
- switch (nOrderID) {
-
- case GOrdGivArc: ReadArc(TRUE); break;
- case GOrdCurArc: ReadArc(FALSE); break;
-
- case GOrdGivBzr: ReadBezier(TRUE,nOrderLen); break;
- case GOrdCurBzr: ReadBezier(FALSE,nOrderLen); break;
-
- case GOrdGivBox: ReadBox(TRUE); break;
- case GOrdCurBox: ReadBox(FALSE); break;
-
- case GOrdGivFil: ReadFillet(TRUE,nOrderLen); break;
- case GOrdCurFil: ReadFillet(FALSE,nOrderLen); break;
-
- case GOrdGivCrc: ReadFullArc(TRUE,nOrderLen); break;
- case GOrdCurCrc: ReadFullArc(FALSE,nOrderLen); break;
-
- case GOrdGivLin: ReadLine(TRUE, nOrderLen); break;
- case GOrdCurLin: ReadLine(FALSE, nOrderLen); break;
-
- case GOrdGivMrk: ReadMarker(TRUE, nOrderLen); break;
- case GOrdCurMrk: ReadMarker(FALSE, nOrderLen); break;
-
- case GOrdGivArP: ReadPartialArc(TRUE,nOrderLen); break;
- case GOrdCurArP: ReadPartialArc(FALSE,nOrderLen); break;
-
- case GOrdGivRLn: ReadRelLine(TRUE,nOrderLen); break;
- case GOrdCurRLn: ReadRelLine(FALSE,nOrderLen); break;
-
- case GOrdGivSFl: ReadFilletSharp(TRUE,nOrderLen); break;
- case GOrdCurSFl: ReadFilletSharp(FALSE,nOrderLen); break;
-
- case GOrdGivStM: ReadChrStr(TRUE , TRUE , FALSE, nOrderLen); break;
- case GOrdCurStM: ReadChrStr(FALSE, TRUE , FALSE, nOrderLen); break;
- case GOrdGivStr: ReadChrStr(TRUE , FALSE, FALSE, nOrderLen); break;
- case GOrdCurStr: ReadChrStr(FALSE, FALSE, FALSE, nOrderLen); break;
- case GOrdGivStx: ReadChrStr(TRUE , FALSE, TRUE , nOrderLen); break;
- case GOrdCurStx: ReadChrStr(FALSE, FALSE, TRUE , nOrderLen); break;
-
- case GOrdGivImg: OOODEBUG("GOrdGivImg",0);
- break;
- case GOrdCurImg: OOODEBUG("GOrdCurImg",0);
- break;
- case GOrdImgDat: OOODEBUG("GOrdImgDat",0);
- break;
- case GOrdEndImg: OOODEBUG("GOrdEndImg",0);
- break;
-
- case GOrdBegAra: {
- OSArea * p=new OSArea;
- p->bClosed=FALSE;
- p->pSucc=pAreaStack; pAreaStack=p;
- *pOS2MET >> (p->nFlags);
- p->aCol=aAttr.aPatCol;
- p->aBgCol=aAttr.aPatBgCol;
- p->eMix=aAttr.ePatMix;
- p->eBgMix=aAttr.ePatBgMix;
- p->bFill=aAttr.bFill;
- break;
- }
- case GOrdEndAra:
- {
- OSArea * p=pAreaStack;
- if ( p )
- {
- pAreaStack = p->pSucc;
- if ( pPathStack )
- {
- for ( USHORT i=0; i<p->aPPoly.Count(); i++ )
- {
- AddPointsToPath( p->aPPoly.GetObject( i ) );
- CloseFigure();
- }
- }
- else
- {
- if ( ( p->nFlags & 0x40 ) == 0 )
- SetPen( COL_TRANSPARENT, 0, PEN_NULL );
- else
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
-
- ChangeBrush(p->aCol,p->aBgCol,p->bFill);
- SetRasterOp(p->eMix);
- DrawPolyPolygon( p->aPPoly );
- }
- delete p;
- }
- }
- break;
-
- case GOrdBegElm:// OOODEBUG("GOrdBegElm",0);
- break;
- case GOrdEndElm:// OOODEBUG("GOrdEndElm",0);
- break;
-
- case GOrdBegPth: {
- OSPath * p=new OSPath;
- p->pSucc=pPathStack; pPathStack=p;
- pOS2MET->SeekRel(2);
- *pOS2MET >> p->nID;
- p->bClosed=FALSE;
- p->bStroke=FALSE;
- break;
- }
- case GOrdEndPth: {
- OSPath * p, * pprev, * psucc;
- if (pPathStack==NULL) break;
- p=pPathList; pprev=NULL;
- while (p!=NULL) {
- psucc=p->pSucc;
- if (p->nID==pPathStack->nID) {
- if (pprev==NULL) pPathList=psucc; else pprev->pSucc=psucc;
- delete p;
- }
- else pprev=p;
- p=psucc;
- }
- p=pPathStack;
- pPathStack=p->pSucc;
- p->pSucc=pPathList; pPathList=p;
- break;
- }
- case GOrdFilPth:
- {
- sal_uInt32 nID;
- UINT16 nDummy;
- OSPath* p = pPathList;
-
- *pOS2MET >> nDummy
- >> nID;
-
- if ( ! ( nDummy & 0x20 ) ) // #30933# i do not know the exact meaning of this bit,
- { // but if set it seems to be better not to fill this path
- while( p && p->nID != nID )
- p = p->pSucc;
-
- if( p )
- {
- if( p->bStroke )
- {
- SetPen( aAttr.aPatCol, aAttr.nStrLinWidth, PEN_SOLID );
- ChangeBrush(Color(COL_TRANSPARENT),Color(COL_TRANSPARENT),FALSE);
- SetRasterOp( aAttr.ePatMix );
- if ( IsLineInfo() )
- {
- for ( USHORT i = 0; i < p->aPPoly.Count(); i++ )
- pVirDev->DrawPolyLine( p->aPPoly.GetObject( i ), aLineInfo );
- }
- else
- pVirDev->DrawPolyPolygon( p->aPPoly );
- }
- else
- {
- SetPen( COL_TRANSPARENT, 0, PEN_NULL );
- ChangeBrush( aAttr.aPatCol, aAttr.aPatBgCol, aAttr.bFill );
- SetRasterOp( aAttr.ePatMix );
- pVirDev->DrawPolyPolygon( p->aPPoly );
- }
- }
- }
- }
- break;
-
- case GOrdModPth:
- {
- OSPath* p = pPathList;
-
- while( p && p->nID != 1 )
- p = p->pSucc;
-
- if( p )
- p->bStroke = TRUE;
- }
- break;
-
- case GOrdOutPth:
- {
- sal_uInt32 nID;
- USHORT i,nC;
- OSPath* p=pPathList;
- pOS2MET->SeekRel(2);
- *pOS2MET >> nID;
- while (p!=NULL && p->nID!=nID)
- p=p->pSucc;
-
- if( p!=NULL )
- {
- SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
- SetRasterOp(aAttr.eLinMix);
- ChangeBrush(Color(COL_TRANSPARENT),Color(COL_TRANSPARENT),FALSE);
- nC=p->aPPoly.Count();
- for (i=0; i<nC; i++)
- {
- if (i+1<nC || p->bClosed==TRUE)
- DrawPolygon( p->aPPoly.GetObject( i ) );
- else
- DrawPolyLine( p->aPPoly.GetObject( i ) );
- }
- }
- break;
- }
- case GOrdSClPth: { OOODEBUG("GOrdSClPth",0);
- sal_uInt32 nID;
- OSPath * p=pPathList;
- pOS2MET->SeekRel(2);
- *pOS2MET >> nID;
- if (nID==0) p=NULL;
- while (p!=NULL && p->nID!=nID) p=p->pSucc;
- if (p!=NULL) pVirDev->SetClipRegion(Region(p->aPPoly));
- else pVirDev->SetClipRegion();
- break;
- }
- case GOrdNopNop:
- break;
- case GOrdRemark: //OOODEBUG("GOrdRemark",0);
- break;
- case GOrdSegLab: OOODEBUG("GOrdSegLab",0);
- break;
-
- case GOrdBitBlt: ReadBitBlt(); break;
-
- case GOrdCalSeg: OOODEBUG("GOrdCalSeg",0);
- break;
- case GOrdSSgBnd: OOODEBUG("GOrdSSgBnd",0);
- break;
- case GOrdSegChr: OOODEBUG("GOrdSegChr",0);
- break;
- case GOrdCloFig:
- CloseFigure();
- break;
- case GOrdEndSym: OOODEBUG("GOrdEndSym",0);
- break;
- case GOrdEndPlg: OOODEBUG("GOrdEndPlg",0);
- break;
- case GOrdEscape: OOODEBUG("GOrdEscape",0);
- break;
- case GOrdExtEsc: OOODEBUG("GOrdExtEsc",0);
- break;
-
- case GOrdPolygn: ReadPolygons(); break;
-
- case GOrdStkPop: PopAttr(); break;
-
- case GOrdPIvAtr: PushAttr(nOrderID);
- case GOrdSIvAtr: {
- BYTE nA, nP, nFlags, nMix;
- ULONG nVal;
- Color aCol;
- RasterOp eROP;
- *pOS2MET >> nA >> nP >> nFlags;
- if (nOrderID==GOrdPIvAtr) {
- pAttrStack->nIvAttrA=nA;
- pAttrStack->nIvAttrP=nP;
- }
- if (nA<=2) {
- if ((nFlags&0x80)!=0) {
- if (nA==1) switch (nP) {
- case 1: aAttr.aLinCol=aDefAttr.aLinCol; break;
- case 2: aAttr.aChrCol=aDefAttr.aChrCol; break;
- case 3: aAttr.aMrkCol=aDefAttr.aMrkCol; break;
- case 4: aAttr.aPatCol=aDefAttr.aPatCol; break;
- case 5: aAttr.aImgCol=aDefAttr.aImgCol; break;
- }
- else switch (nP) {
- case 1: aAttr.aLinBgCol=aDefAttr.aLinBgCol; break;
- case 2: aAttr.aChrBgCol=aDefAttr.aChrBgCol; break;
- case 3: aAttr.aMrkBgCol=aDefAttr.aMrkBgCol; break;
- case 4: aAttr.aPatBgCol=aDefAttr.aPatBgCol; break;
- case 5: aAttr.aImgBgCol=aDefAttr.aImgBgCol; break;
- }
- }
- else {
- nVal=ReadLittleEndian3BytesLong();
- if ((nFlags&0x40)!=0 && nVal==1) aCol=Color(COL_BLACK);
- else if ((nFlags&0x40)!=0 && nVal==2) aCol=Color(COL_WHITE);
- else if ((nFlags&0x40)!=0 && nVal==4) aCol=Color(COL_WHITE);
- else if ((nFlags&0x40)!=0 && nVal==5) aCol=Color(COL_BLACK);
- else aCol=GetPaletteColor(nVal);
- if (nA==1) switch (nP) {
- case 1: aAttr.aLinCol=aCol; break;
- case 2: aAttr.aChrCol=aCol; break;
- case 3: aAttr.aMrkCol=aCol; break;
- case 4: aAttr.aPatCol=aCol; break;
- case 5: aAttr.aImgCol=aCol; break;
- }
- else switch (nP) {
- case 1: aAttr.aLinBgCol=aCol; break;
- case 2: aAttr.aChrBgCol=aCol; break;
- case 3: aAttr.aMrkBgCol=aCol; break;
- case 4: aAttr.aPatBgCol=aCol; break;
- case 5: aAttr.aImgBgCol=aCol; break;
- }
- }
- }
- else {
- *pOS2MET >> nMix;
- if (nMix==0) {
- if (nA==1) switch (nP) {
- case 1: aAttr.eLinMix=aDefAttr.eLinMix; break;
- case 2: aAttr.eChrMix=aDefAttr.eChrMix; break;
- case 3: aAttr.eMrkMix=aDefAttr.eMrkMix; break;
- case 4: aAttr.ePatMix=aDefAttr.ePatMix; break;
- case 5: aAttr.eImgMix=aDefAttr.eImgMix; break;
- }
- else switch (nP) {
- case 1: aAttr.eLinBgMix=aDefAttr.eLinBgMix; break;
- case 2: aAttr.eChrBgMix=aDefAttr.eChrBgMix; break;
- case 3: aAttr.eMrkBgMix=aDefAttr.eMrkBgMix; break;
- case 4: aAttr.ePatBgMix=aDefAttr.ePatBgMix; break;
- case 5: aAttr.eImgBgMix=aDefAttr.eImgBgMix; break;
- }
- }
- else {
- eROP=OS2MixToRasterOp(nMix);
- if (nA==1) switch (nP) {
- case 1: aAttr.eLinMix=eROP; break;
- case 2: aAttr.eChrMix=eROP; break;
- case 3: aAttr.eMrkMix=eROP; break;
- case 4: aAttr.ePatMix=eROP; break;
- case 5: aAttr.eImgMix=eROP; break;
- }
- else switch (nP) {
- case 1: aAttr.eLinBgMix=eROP; break;
- case 2: aAttr.eChrBgMix=eROP; break;
- case 3: aAttr.eMrkBgMix=eROP; break;
- case 4: aAttr.ePatBgMix=eROP; break;
- case 5: aAttr.eImgBgMix=eROP; break;
- }
- }
- }
- break;
- }
- case GOrdPIxCol: PushAttr(nOrderID);
- case GOrdSIxCol: {
- BYTE nFlags;
- ULONG nVal;
- Color aCol;
- *pOS2MET >> nFlags;
- if ((nFlags&0x80)!=0) {
- aAttr.aLinCol=aDefAttr.aLinCol;
- aAttr.aChrCol=aDefAttr.aChrCol;
- aAttr.aMrkCol=aDefAttr.aMrkCol;
- aAttr.aPatCol=aDefAttr.aPatCol;
- aAttr.aImgCol=aDefAttr.aImgCol;
- }
- else {
- nVal=ReadLittleEndian3BytesLong();
- if ((nFlags&0x40)!=0 && nVal==1) aCol=Color(COL_BLACK);
- else if ((nFlags&0x40)!=0 && nVal==2) aCol=Color(COL_WHITE);
- else if ((nFlags&0x40)!=0 && nVal==4) aCol=Color(COL_WHITE);
- else if ((nFlags&0x40)!=0 && nVal==5) aCol=Color(COL_BLACK);
- else aCol=GetPaletteColor(nVal);
- aAttr.aLinCol = aAttr.aChrCol = aAttr.aMrkCol = aAttr.aPatCol =
- aAttr.aImgCol = aCol;
- }
- break;
- }
-
- case GOrdPColor:
- case GOrdPXtCol: PushAttr(nOrderID);
- case GOrdSColor:
- case GOrdSXtCol: {
- BYTE nbyte;
- USHORT nVal;
- Color aCol;
- if (nOrderID==GOrdPColor || nOrderID==GOrdSColor) {
- *pOS2MET >> nbyte; nVal=((USHORT)nbyte)|0xff00;
- }
- else *pOS2MET >> nVal;
- if (nVal==0x0000 || nVal==0xff00) {
- aAttr.aLinCol=aDefAttr.aLinCol;
- aAttr.aChrCol=aDefAttr.aChrCol;
- aAttr.aMrkCol=aDefAttr.aMrkCol;
- aAttr.aPatCol=aDefAttr.aPatCol;
- aAttr.aImgCol=aDefAttr.aImgCol;
- }
- else {
- if (nVal==0x0007) aCol=Color(COL_WHITE);
- else if (nVal==0x0008) aCol=Color(COL_BLACK);
- else if (nVal==0xff08) aCol=GetPaletteColor(1);
- else aCol=GetPaletteColor(((ULONG)nVal) & 0x000000ff);
- aAttr.aLinCol = aAttr.aChrCol = aAttr.aMrkCol = aAttr.aPatCol =
- aAttr.aImgCol = aCol;
- }
- break;
- }
-
- case GOrdPBgCol: PushAttr(nOrderID);
- case GOrdSBgCol: {
- USHORT nVal;
- Color aCol;
- *pOS2MET >> nVal;
- if (nVal==0x0000 || nVal==0xff00) {
- aAttr.aLinBgCol=aDefAttr.aLinBgCol;
- aAttr.aChrBgCol=aDefAttr.aChrBgCol;
- aAttr.aMrkBgCol=aDefAttr.aMrkBgCol;
- aAttr.aPatBgCol=aDefAttr.aPatBgCol;
- aAttr.aImgBgCol=aDefAttr.aImgBgCol;
- }
- else {
- if (nVal==0x0007) aCol=Color(COL_WHITE);
- else if (nVal==0x0008) aCol=Color(COL_BLACK);
- else if (nVal==0xff08) aCol=GetPaletteColor(0);
- else aCol=GetPaletteColor(((ULONG)nVal) & 0x000000ff);
- aAttr.aLinBgCol = aAttr.aChrBgCol = aAttr.aMrkBgCol =
- aAttr.aPatBgCol = aAttr.aImgBgCol = aCol;
- }
- break;
- }
- case GOrdPBxCol: PushAttr(nOrderID);
- case GOrdSBxCol: {
- BYTE nFlags;
- ULONG nVal;
- Color aCol;
- *pOS2MET >> nFlags;
- if ((nFlags&0x80)!=0) {
- aAttr.aLinBgCol=aDefAttr.aLinBgCol;
- aAttr.aChrBgCol=aDefAttr.aChrBgCol;
- aAttr.aMrkBgCol=aDefAttr.aMrkBgCol;
- aAttr.aPatBgCol=aDefAttr.aPatBgCol;
- aAttr.aImgBgCol=aDefAttr.aImgBgCol;
- }
- else {
- nVal=ReadLittleEndian3BytesLong();
- if ((nFlags&0x40)!=0 && nVal==1) aCol=Color(COL_BLACK);
- else if ((nFlags&0x40)!=0 && nVal==2) aCol=Color(COL_WHITE);
- else if ((nFlags&0x40)!=0 && nVal==4) aCol=Color(COL_WHITE);
- else if ((nFlags&0x40)!=0 && nVal==5) aCol=Color(COL_BLACK);
- else aCol=GetPaletteColor(nVal);
- aAttr.aLinBgCol = aAttr.aChrBgCol = aAttr.aMrkBgCol =
- aAttr.aPatBgCol = aAttr.aImgBgCol = aCol;
- }
- break;
- }
-
- case GOrdPMixMd: PushAttr(nOrderID);
- case GOrdSMixMd: {
- BYTE nMix;
- *pOS2MET >> nMix;
- if (nMix==0) {
- aAttr.eLinMix=aDefAttr.eLinMix;
- aAttr.eChrMix=aDefAttr.eChrMix;
- aAttr.eMrkMix=aDefAttr.eMrkMix;
- aAttr.ePatMix=aDefAttr.ePatMix;
- aAttr.eImgMix=aDefAttr.eImgMix;
- }
- else {
- aAttr.eLinMix = aAttr.eChrMix = aAttr.eMrkMix =
- aAttr.ePatMix = aAttr.eImgMix = OS2MixToRasterOp(nMix);
- }
- break;
- }
- case GOrdPBgMix: PushAttr(nOrderID);
- case GOrdSBgMix: {
- BYTE nMix;
- *pOS2MET >> nMix;
- if (nMix==0) {
- aAttr.eLinBgMix=aDefAttr.eLinBgMix;
- aAttr.eChrBgMix=aDefAttr.eChrBgMix;
- aAttr.eMrkBgMix=aDefAttr.eMrkBgMix;
- aAttr.ePatBgMix=aDefAttr.ePatBgMix;
- aAttr.eImgBgMix=aDefAttr.eImgBgMix;
- }
- else {
- aAttr.eLinBgMix = aAttr.eChrBgMix = aAttr.eMrkBgMix =
- aAttr.ePatBgMix = aAttr.eImgBgMix = OS2MixToRasterOp(nMix);
- }
- break;
- }
- case GOrdPPtSet: PushAttr(nOrderID);
- case GOrdSPtSet: OOODEBUG("GOrdSPtSet",0);
- break;
-
- case GOrdPPtSym: PushAttr(nOrderID);
- case GOrdSPtSym: {
- BYTE nPatt;
- *pOS2MET >> nPatt;
- aAttr.bFill = ( nPatt != 0x0f );
- break;
- }
-
- case GOrdPPtRef: PushAttr(nOrderID);
- case GOrdSPtRef: OOODEBUG("GOrdSPtRef",0);
- break;
-
- case GOrdPLnEnd: PushAttr(nOrderID);
- case GOrdSLnEnd:
- break;
-
- case GOrdPLnJoi: PushAttr(nOrderID);
- case GOrdSLnJoi:
- break;
-
- case GOrdPLnTyp: PushAttr(nOrderID);
- case GOrdSLnTyp: {
- BYTE nType;
- *pOS2MET >> nType;
- switch (nType) {
- case 0: aAttr.eLinStyle=aDefAttr.eLinStyle; break;
- case 1: case 4: aAttr.eLinStyle=PEN_DOT; break;
- case 2: case 5: aAttr.eLinStyle=PEN_DASH; break;
- case 3: case 6: aAttr.eLinStyle=PEN_DASHDOT; break;
- case 8: aAttr.eLinStyle=PEN_NULL; break;
- default: aAttr.eLinStyle=PEN_SOLID;
- }
- break;
- }
- case GOrdPLnWdt: PushAttr(nOrderID);
- case GOrdSLnWdt: {
- BYTE nbyte;
- *pOS2MET >> nbyte;
- if (nbyte==0) aAttr.nLinWidth=aDefAttr.nLinWidth;
- else aAttr.nLinWidth=(USHORT)nbyte-1;
- break;
- }
- case GOrdPFrLWd: PushAttr(nOrderID);
- case GOrdSFrLWd:
- break;
-
- case GOrdPStLWd: PushAttr(nOrderID);
- case GOrdSStLWd :
- {
- BYTE nFlags;
- long nWd;
-
- *pOS2MET >> nFlags;
- if ( nFlags & 0x80 )
- aAttr.nStrLinWidth = aDefAttr.nStrLinWidth;
- else
- {
- pOS2MET->SeekRel( 1 );
- nWd = ReadCoord( bCoord32 );
- if ( nWd < 0 )
- nWd = -nWd;
- aAttr.nStrLinWidth = (USHORT)nWd;
- }
- break;
- }
- case GOrdPChDir: PushAttr(nOrderID);
- case GOrdSChDir:
- break;
-
- case GOrdPChPrc: PushAttr(nOrderID);
- case GOrdSChPrc:
- break;
-
- case GOrdPChSet: PushAttr(nOrderID);
- case GOrdSChSet: {
- BYTE nbyte; *pOS2MET >> nbyte;
- aAttr.nChrSet=((ULONG)nbyte)&0xff;
- break;
- }
- case GOrdPChAng: PushAttr(nOrderID);
- case GOrdSChAng: {
- long nX,nY;
- nX=ReadCoord(bCoord32); nY=ReadCoord(bCoord32);
- if (nX>=0 && nY==0) aAttr.nChrAng=0;
- else {
- aAttr.nChrAng=(short)(atan2((double)nY,(double)nX)/3.1415926539*1800.0);
- while (aAttr.nChrAng<0) aAttr.nChrAng+=3600;
- aAttr.nChrAng%=3600;
- }
- break;
- }
- case GOrdPChBrx: PushAttr(nOrderID);
- case GOrdSChBrx:
- break;
-
- case GOrdPChCel: PushAttr(nOrderID);
- case GOrdSChCel: {
- BYTE nbyte;
- USHORT nLen=nOrderLen;
- aAttr.aChrCellSize.Width()=ReadCoord(bCoord32);
- aAttr.aChrCellSize.Height()=ReadCoord(bCoord32);
- if (bCoord32) nLen-=8; else nLen-=4;
- if (nLen>=4) {
- pOS2MET->SeekRel(4); nLen-=4;
- }
- if (nLen>=2) {
- *pOS2MET >> nbyte;
- if ((nbyte&0x80)==0 && aAttr.aChrCellSize==Size(0,0))
- aAttr.aChrCellSize=aDefAttr.aChrCellSize;
- }
- break;
- }
- case GOrdPChXtr: PushAttr(nOrderID);
- case GOrdSChXtr:
- break;
-
- case GOrdPChShr: PushAttr(nOrderID);
- case GOrdSChShr:
- break;
-
- case GOrdPTxAlg: PushAttr(nOrderID);
- case GOrdSTxAlg: OOODEBUG("GOrdSTxAlg",0);
- break;
-
- case GOrdPMkPrc: PushAttr(nOrderID);
- case GOrdSMkPrc: {
- BYTE nbyte;
- *pOS2MET >> nbyte;
- if (nbyte==0) aAttr.nMrkPrec=aDefAttr.nMrkPrec;
- else aAttr.nMrkPrec=nbyte;
- break;
- }
-
- case GOrdPMkSet: PushAttr(nOrderID);
- case GOrdSMkSet: {
- BYTE nbyte;
- *pOS2MET >> nbyte;
- if (nbyte==0) aAttr.nMrkSet=aDefAttr.nMrkSet;
- else aAttr.nMrkSet=nbyte;
- break;
- }
-
- case GOrdPMkSym: PushAttr(nOrderID);
- case GOrdSMkSym: {
- BYTE nbyte;
- *pOS2MET >> nbyte;
- if (nbyte==0) aAttr.nMrkSymbol=aDefAttr.nMrkSymbol;
- else aAttr.nMrkSymbol=nbyte;
- break;
- }
-
- case GOrdPMkCel: PushAttr(nOrderID);
- case GOrdSMkCel: {
- BYTE nbyte;
- USHORT nLen=nOrderLen;
- aAttr.aMrkCellSize.Width()=ReadCoord(bCoord32);
- aAttr.aMrkCellSize.Height()=ReadCoord(bCoord32);
- if (bCoord32) nLen-=8; else nLen-=4;
- if (nLen>=2) {
- *pOS2MET >> nbyte;
- if ((nbyte&0x80)==0 && aAttr.aMrkCellSize==Size(0,0))
- aAttr.aMrkCellSize=aDefAttr.aMrkCellSize;
- }
- break;
- }
-
- case GOrdPArcPa: PushAttr(nOrderID);
- case GOrdSArcPa:
- aAttr.nArcP=ReadCoord(bCoord32);
- aAttr.nArcQ=ReadCoord(bCoord32);
- aAttr.nArcR=ReadCoord(bCoord32);
- aAttr.nArcS=ReadCoord(bCoord32);
- break;
-
- case GOrdPCrPos: PushAttr(nOrderID);
- case GOrdSCrPos:
- aAttr.aCurPos=ReadPoint();
- break;
-
- case GOrdPMdTrn: PushAttr(nOrderID);
- case GOrdSMdTrn: OOODEBUG("GOrdSMdTrn",0);
- break;
-
- case GOrdPPkIdn: PushAttr(nOrderID);
- case GOrdSPkIdn: OOODEBUG("GOrdSPkIdn",0);
- break;
-
- case GOrdSVwTrn: OOODEBUG("GOrdSVwTrn",0);
- break;
-
- case GOrdPVwWin: PushAttr(nOrderID);
- case GOrdSVwWin: OOODEBUG("GOrdSVwWin",0);
- break;
- default: OOODEBUG("Order unbekannt:",nOrderID);
- }
-}
-
-void OS2METReader::ReadDsc(USHORT nDscID, USHORT /*nDscLen*/)
-{
- switch (nDscID) {
- case 0x00f7: { // 'Specify GVM Subset'
- BYTE nbyte;
- pOS2MET->SeekRel(6);
- *pOS2MET >> nbyte;
- if (nbyte==0x05) bCoord32=TRUE;
- else if (nbyte==0x04) bCoord32=FALSE;
- else {
- pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
- ErrorCode=1;
- }
- break;
- }
- case 0x00f6:
- {
- // 'Set Picture Descriptor'
- BOOL b32;
- BYTE nbyte,nUnitType;
- long x1,y1,x2,y2,nt,xr,yr;
-
- pOS2MET->SeekRel(2);
- *pOS2MET >> nbyte;
-
- if (nbyte==0x05)
- b32=TRUE;
- else if(nbyte==0x04)
- b32=FALSE;
- else
- {
- b32 = FALSE; // -Wall added the case.
- pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
- ErrorCode=2;
- }
-
- *pOS2MET >> nUnitType;
-
- xr=ReadCoord(b32);
- yr=ReadCoord(b32);
-
- ReadCoord(b32);
-
- if (nUnitType==0x00 && xr>0 && yr>0)
- aGlobMapMode=MapMode(MAP_INCH,Point(0,0),Fraction(10,xr),Fraction(10,yr));
- else if (nUnitType==0x01 && xr>0 && yr>0)
- aGlobMapMode=MapMode(MAP_CM,Point(0,0),Fraction(10,xr),Fraction(10,yr));
- else
- aGlobMapMode=MapMode();
-
- x1=ReadCoord(b32);
- x2=ReadCoord(b32);
- y1=ReadCoord(b32);
- y2=ReadCoord(b32);
-
- if (x1>x2)
- {
- nt=x1;
- x1=x2;
- x2=nt;
- }
-
- if (y1>y2)
- {
- nt=y1;
- y1=y2;
- y2=nt;
- }
-
- aBoundingRect.Left() = x1;
- aBoundingRect.Right() = x2;
- aBoundingRect.Top() = y1;
- aBoundingRect.Bottom() = y2;
-
- // no output beside this bounding rect
- pVirDev->IntersectClipRegion( Rectangle( Point(), aBoundingRect.GetSize() ) );
-
- break;
- }
- case 0x0021: // 'Set Current Defaults'
- break;
- }
-}
-
-void OS2METReader::ReadImageData(USHORT nDataID, USHORT nDataLen)
-{
- OSBitmap * p=pBitmapList; if (p==NULL) return; // Nanu ?
-
- switch (nDataID) {
-
- case 0x0070: // Begin Segment
- break;
-
- case 0x0091: // Begin Image Content
- break;
-
- case 0x0094: // Image Size
- pOS2MET->SeekRel(5);
- p->nHeight=ReadBigEndianWord();
- p->nWidth=ReadBigEndianWord();
- break;
-
- case 0x0095: // Image Encoding
- break;
-
- case 0x0096: { // Image IDE-Size
- BYTE nbyte;
- *pOS2MET >> nbyte; p->nBitsPerPixel=nbyte;
- break;
- }
-
- case 0x0097: // Image LUT-ID
- break;
-
- case 0x009b: // IDE Structure
- break;
-
- case 0xfe92: { // Image Data
- // Spaetestens jetzt brauchen wir die temporaere BMP-Datei
- // und darin mindestens den Header + Palette.
- if (p->pBMP==NULL) {
- p->pBMP=new SvMemoryStream();
- p->pBMP->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
- if (p->nWidth==0 || p->nHeight==0 || p->nBitsPerPixel==0) {
- pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
- ErrorCode=3;
- return;
- }
- // Schreibe (Windows-)BITMAPINFOHEADER:
- *(p->pBMP) << ((sal_uInt32)40) << p->nWidth << p->nHeight;
- *(p->pBMP) << ((USHORT)1) << p->nBitsPerPixel;
- *(p->pBMP) << ((sal_uInt32)0) << ((sal_uInt32)0) << ((sal_uInt32)0) << ((sal_uInt32)0);
- *(p->pBMP) << ((sal_uInt32)0) << ((sal_uInt32)0);
- // Schreibe Farbtabelle:
- if (p->nBitsPerPixel<=8) {
- USHORT i, nColTabSize=1<<(p->nBitsPerPixel);
- for (i=0; i<nColTabSize; i++) *(p->pBMP) << GetPalette0RGB(i);
- }
- }
- // OK, nun werden die Map-Daten ruebergeschoben. Leider haben OS2 und
- // BMP eine unterschiedliche Reihenfolge von RGB bei 24-Bit.
- BYTE * pBuf=new BYTE[nDataLen];
- pOS2MET->Read(pBuf,nDataLen);
- if (p->nBitsPerPixel==24) {
- ULONG i, j, nAlign, nBytesPerLine;
- BYTE nTemp;
- nBytesPerLine=(p->nWidth*3+3)&0xfffffffc;
- nAlign=p->nMapPos-(p->nMapPos % nBytesPerLine);
- i=0;
- while (nAlign+i+2<p->nMapPos+nDataLen) {
- if (nAlign+i>=p->nMapPos) {
- j=nAlign+i-p->nMapPos;
- nTemp=pBuf[j]; pBuf[j]=pBuf[j+2]; pBuf[j+2]=nTemp;
- }
- i+=3; if (i+2>=nBytesPerLine) {
- nAlign+=nBytesPerLine;
- i=0;
- }
- }
- }
- p->pBMP->Write(pBuf,nDataLen);
- p->nMapPos+=nDataLen;
- delete[] pBuf;
- break;
- }
- case 0x0093: // End Image Content
- break;
-
- case 0x0071: // End Segment
- break;
- }
-}
-
-void OS2METReader::ReadFont(USHORT nFieldSize)
-{
- ULONG nPos, nMaxPos;
- USHORT nLen;
- BYTE nByte, nTripType, nTripType2;
- OSFont * pF=new OSFont;
- pF->pSucc=pFontList; pFontList=pF;
- pF->nID=0;
- pF->aFont.SetTransparent(TRUE);
- pF->aFont.SetAlign(ALIGN_BASELINE);
-
- nPos=pOS2MET->Tell();
- nMaxPos=nPos+(ULONG)nFieldSize;
- pOS2MET->SeekRel(2); nPos+=2;
- while (nPos<nMaxPos && pOS2MET->GetError()==0) {
- *pOS2MET >> nByte; nLen =((USHORT)nByte) & 0x00ff;
- *pOS2MET >> nTripType;
- switch (nTripType) {
- case 0x02:
- *pOS2MET >> nTripType2;
- switch (nTripType2) {
- case 0x84: // Font name
- break;
- case 0x08: { // Font Typeface
- char str[33];
- pOS2MET->SeekRel(1);
- pOS2MET->Read( &str, 32 );
- str[ 32 ] = 0;
- String aStr( (const sal_Char*)str, gsl_getSystemTextEncoding() );
- if ( aStr.CompareIgnoreCaseToAscii( "Helv" ) == COMPARE_EQUAL )
- aStr = String::CreateFromAscii( "Helvetica" );
- pF->aFont.SetName( aStr );
- break;
- }
- }
- break;
- case 0x24: // Icid
- *pOS2MET >> nTripType2;
- switch (nTripType2) {
- case 0x05: //Icid
- *pOS2MET >> nByte;
- pF->nID=((ULONG)nByte)&0xff;
- break;
- }
- break;
- case 0x20: // Font Binary GCID
- break;
- case 0x1f: { // Font Attributes
- FontWeight eWeight;
- BYTE nbyte;
- *pOS2MET >> nbyte;
- switch (nbyte) {
- case 1: eWeight=WEIGHT_THIN; break;
- case 2: eWeight=WEIGHT_ULTRALIGHT; break;
- case 3: eWeight=WEIGHT_LIGHT; break;
- case 4: eWeight=WEIGHT_SEMILIGHT; break;
- case 5: eWeight=WEIGHT_NORMAL; break;
- case 6: eWeight=WEIGHT_SEMIBOLD; break;
- case 7: eWeight=WEIGHT_BOLD; break;
- case 8: eWeight=WEIGHT_ULTRABOLD; break;
- case 9: eWeight=WEIGHT_BLACK; break;
- default: eWeight=WEIGHT_DONTKNOW;
- }
- pF->aFont.SetWeight(eWeight);
- break;
- }
- }
- nPos+=nLen; pOS2MET->Seek(nPos);
- }
-}
-
-void OS2METReader::ReadField(USHORT nFieldType, USHORT nFieldSize)
-{
- switch (nFieldType) {
- case BegDocumnMagic:
- break;
- case EndDocumnMagic:
- break;
- case BegResGrpMagic:
- break;
- case EndResGrpMagic:
- break;
- case BegColAtrMagic:
- break;
- case EndColAtrMagic:
- break;
- case BlkColAtrMagic: {
- ULONG nPos, nMaxPos;
- BYTE nbyte;
- ULONG nCol;
- USHORT nStartIndex, nEndIndex, i, nElemLen, nBytesPerCol;
-
- nPos=pOS2MET->Tell();
- nMaxPos=nPos+(ULONG)nFieldSize;
- pOS2MET->SeekRel(3); nPos+=3;
- while (nPos<nMaxPos && pOS2MET->GetError()==0) {
- *pOS2MET >> nbyte; nElemLen=((USHORT)nbyte) & 0x00ff;
- if (nElemLen>11) {
- pOS2MET->SeekRel(4);
- nStartIndex=ReadBigEndianWord();
- pOS2MET->SeekRel(3);
- *pOS2MET >> nbyte; nBytesPerCol=((USHORT)nbyte) & 0x00ff;
- nEndIndex=nStartIndex+(nElemLen-11)/nBytesPerCol;
- for (i=nStartIndex; i<nEndIndex; i++) {
- if (nBytesPerCol > 3) pOS2MET->SeekRel(nBytesPerCol-3);
- nCol=ReadBigEndian3BytesLong();
- SetPalette0RGB(i,nCol);
- }
- }
- else if (nElemLen<10) {
- pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
- ErrorCode=4;
- }
- nPos+=(ULONG)nElemLen;
- pOS2MET->Seek(nPos);
- }
- break;
- }
- case MapColAtrMagic:
- break;
- case BegImgObjMagic: {
- // neue Bitmap schonmal herstellen: (wird spaeter gefuellt)
- OSBitmap * pB=new OSBitmap;
- pB->pSucc=pBitmapList; pBitmapList=pB;
- pB->pBMP=NULL; pB->nWidth=0; pB->nHeight=0; pB->nBitsPerPixel=0;
- pB->nMapPos=0;
- // ID der Bitmap ermitteln:
- BYTE i,nbyte,nbyte2;
- pB->nID=0;
- for (i=0; i<4; i++) {
- *pOS2MET >> nbyte >> nbyte2;
- nbyte=((nbyte-0x30)<<4)|(nbyte2-0x30);
- pB->nID=(pB->nID>>8)|(((ULONG)nbyte)<<24);
- }
- // neue Palette auf den Paletten-Stack bringen: (wird spaeter gefuellt)
- OSPalette * pP=new OSPalette;
- pP->pSucc=pPaletteStack; pPaletteStack=pP;
- pP->p0RGB=NULL; pP->nSize=0;
- break;
- }
- case EndImgObjMagic: {
- // Temporaere Windows-BMP-Datei auslesen:
- if (pBitmapList==NULL || pBitmapList->pBMP==NULL ||
- pBitmapList->pBMP->GetError()!=0) {
- pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
- ErrorCode=5;
- return;
- }
- pBitmapList->pBMP->Seek(0);
-
- pBitmapList->aBitmap.Read( *( pBitmapList->pBMP ), FALSE );
-
- if (pBitmapList->pBMP->GetError()!=0) {
- pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
- ErrorCode=6;
- }
- delete pBitmapList->pBMP; pBitmapList->pBMP=NULL;
- // Palette vom Stack killen:
- OSPalette * pP=pPaletteStack;
- if (pP!=NULL) {
- pPaletteStack=pP->pSucc;
- if (pP->p0RGB!=NULL) delete[] pP->p0RGB;
- delete pP;
- }
- break;
- }
- case DscImgObjMagic:
- break;
- case DatImgObjMagic: {
- USHORT nDataID, nDataLen;
- BYTE nbyte;
- ULONG nPos, nMaxPos;
-
- nPos=pOS2MET->Tell();
- nMaxPos=nPos+(ULONG)nFieldSize;
- while (nPos<nMaxPos && pOS2MET->GetError()==0) {
- *pOS2MET >> nbyte; nDataID=((USHORT)nbyte)&0x00ff;
- if (nDataID==0x00fe) {
- *pOS2MET >> nbyte;
- nDataID=(nDataID<<8)|(((USHORT)nbyte)&0x00ff);
- nDataLen=ReadBigEndianWord();
- nPos+=4;
- }
- else {
- *pOS2MET >> nbyte; nDataLen=((USHORT)nbyte)&0x00ff;
- nPos+=2;
- }
- ReadImageData(nDataID, nDataLen);
- nPos+=(ULONG)nDataLen;
- pOS2MET->Seek(nPos);
- }
- break;
- }
-
- case BegObEnv1Magic:
- break;
- case EndObEnv1Magic:
- break;
- case BegGrfObjMagic:
- break;
- case EndGrfObjMagic: {
- SvStream * pSave;
- ULONG nPos, nMaxPos;
- USHORT nOrderID, nOrderLen;
- BYTE nbyte;
-
- if (pOrdFile==NULL) break;
-
- // in pOrdFile wurden alle "DatGrfObj"-Felder gesammelt, so
- // dass die darin enthaltnen "Orders" zusammenhangend und nicht durch
- // "Fields" segmentiert sind. Um sie aus dem MemoryStream auszulesen,
- // ohne grosse Umstaende deswegen zu haben (frueher wurden die "Orders"
- // direkt aus pOS2MET gelesen), hier ein kleiner Trick:
- pSave=pOS2MET;
- pOS2MET=pOrdFile; //(!)
- nMaxPos=pOS2MET->Tell();
- pOS2MET->Seek(0);
-
- // "Segmentheader":
- *pOS2MET >> nbyte;
- if (nbyte==0x70) { // Header vorhanden
- pOS2MET->SeekRel(15); // brauchen wir aber nicht
- }
- else pOS2MET->SeekRel(-1); // Kein Header, Byte zurueck
-
- // Schleife ueber Order:
- while (pOS2MET->Tell()<nMaxPos && pOS2MET->GetError()==0) {
- *pOS2MET >> nbyte; nOrderID=((USHORT)nbyte) & 0x00ff;
- if (nOrderID==0x00fe) {
- *pOS2MET >> nbyte;
- nOrderID=(nOrderID << 8) | (((USHORT)nbyte) & 0x00ff);
- }
- if (nOrderID>0x00ff || nOrderID==GOrdPolygn) {
- // ooo: Laut OS2-Doku sollte die Orderlaenge nun als Big-Endian-Word
- // gegeben sein (Zitat: "Highorder byte precedes loworder byte").
- // Tatsaechlich gibt es aber Dateien, die die Laenge als
- // Little-Endian-Word angeben (zu mindestens fuer nOrderID==GOrdPolygn).
- // Also werfen wir eine Muenze oder was ?
- *pOS2MET >> nbyte; nOrderLen=(USHORT)nbyte&0x00ff;
- *pOS2MET >> nbyte; if (nbyte!=0) nOrderLen=nOrderLen<<8|(((USHORT)nbyte)&0x00ff);
- }
- else if (nOrderID==GOrdSTxAlg || nOrderID==GOrdPTxAlg) nOrderLen=2;
- else if ((nOrderID&0xff88)==0x0008) nOrderLen=1;
- else if (nOrderID==0x0000 || nOrderID==0x00ff) nOrderLen=0;
- else { *pOS2MET >> nbyte; nOrderLen=((USHORT)nbyte) & 0x00ff; }
- nPos=pOS2MET->Tell();
- ReadOrder(nOrderID, nOrderLen);
- if (nPos+nOrderLen < pOS2MET->Tell()) {
- OOODEBUG("Order kuerzer als er denkt! OrderID:",nOrderID);
- OOODEBUG("...und zwar bei Position (Parameteranfang):",nPos);
- }
- else if (nPos+nOrderLen != pOS2MET->Tell()) {
- OOODEBUG(String(nOrderID)+String(" Order nicht alles gelesen! bei:"),nPos);
- }
- pOS2MET->Seek(nPos+nOrderLen);
- }
-
- pOS2MET=pSave;
- if (pOrdFile->GetError()) {
- pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
- ErrorCode=10;
- }
- delete pOrdFile; pOrdFile=NULL;
- break;
- }
- case DscGrfObjMagic: {
- ULONG nPos, nMaxPos;
- USHORT nDscID, nDscLen;
- BYTE nbyte;
-
- nMaxPos=pOS2MET->Tell()+(ULONG)nFieldSize;
- while (pOS2MET->Tell()<nMaxPos && pOS2MET->GetError()==0) {
- *pOS2MET >> nbyte; nDscID =((USHORT)nbyte) & 0x00ff;
- *pOS2MET >> nbyte; nDscLen=((USHORT)nbyte) & 0x00ff;
- nPos=pOS2MET->Tell();
- ReadDsc(nDscID, nDscLen);
- pOS2MET->Seek(nPos+nDscLen);
- }
- break;
- }
- case DatGrfObjMagic: {
- if (pOrdFile==NULL) {
- pOrdFile = new SvMemoryStream;
- pOrdFile->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
- }
- BYTE * pBuf; pBuf = new BYTE[nFieldSize];
- pOS2MET->Read(pBuf,nFieldSize);
- pOrdFile->Write(pBuf,nFieldSize);
- delete[] pBuf;
- break;
- }
- case MapCodFntMagic:
- ReadFont(nFieldSize);
- break;
-
- case MapDatResMagic:
- break;
- }
-}
-
-void OS2METReader::ReadOS2MET( SvStream & rStreamOS2MET, GDIMetaFile & rGDIMetaFile )
-{
- USHORT nFieldSize;
- USHORT nFieldType;
- ULONG nPos, nStartPos, nEndPos, nPercent, nLastPercent;
- BYTE nMagicByte;
-
- ErrorCode=0;
-
- pOS2MET = &rStreamOS2MET;
- nOrigPos = pOS2MET->Tell();
- nOrigNumberFormat = pOS2MET->GetNumberFormatInt();
-
- bCoord32 = TRUE;
- pPaletteStack=NULL;
- pAreaStack=NULL;
- pPathStack=NULL;
- pPathList=NULL;
- pFontList=NULL;
- pBitmapList=NULL;
- pAttrStack=NULL;
-
- aDefAttr.aLinCol =Color(COL_BLACK);
- aDefAttr.aLinBgCol =Color(COL_WHITE);
- aDefAttr.eLinMix =ROP_OVERPAINT;
- aDefAttr.eLinBgMix =ROP_OVERPAINT;
- aDefAttr.aChrCol =Color(COL_BLACK);
- aDefAttr.aChrBgCol =Color(COL_WHITE);
- aDefAttr.eChrMix =ROP_OVERPAINT;
- aDefAttr.eChrBgMix =ROP_OVERPAINT;
- aDefAttr.aMrkCol =Color(COL_BLACK);
- aDefAttr.aMrkBgCol =Color(COL_WHITE);
- aDefAttr.eMrkMix =ROP_OVERPAINT;
- aDefAttr.eMrkBgMix =ROP_OVERPAINT;
- aDefAttr.aPatCol =Color(COL_BLACK);
- aDefAttr.aPatBgCol =Color(COL_WHITE);
- aDefAttr.ePatMix =ROP_OVERPAINT;
- aDefAttr.ePatBgMix =ROP_OVERPAINT;
- aDefAttr.aImgCol =Color(COL_BLACK);
- aDefAttr.aImgBgCol =Color(COL_WHITE);
- aDefAttr.eImgMix =ROP_OVERPAINT;
- aDefAttr.eImgBgMix =ROP_OVERPAINT;
- aDefAttr.nArcP =1;
- aDefAttr.nArcQ =1;
- aDefAttr.nArcR =0;
- aDefAttr.nArcS =0;
- aDefAttr.nChrAng =0;
- aDefAttr.aChrCellSize=Size(12,12);
- aDefAttr.nChrSet =0;
- aDefAttr.aCurPos =Point(0,0);
- aDefAttr.eLinStyle =PEN_SOLID;
- aDefAttr.nLinWidth =0;
- aDefAttr.aMrkCellSize=Size(10,10);
- aDefAttr.nMrkPrec =0x01;
- aDefAttr.nMrkSet =0xff;
- aDefAttr.nMrkSymbol =0x01;
- aDefAttr.bFill =TRUE;
- aDefAttr.nStrLinWidth=0;
-
- aAttr=aDefAttr;
-
- pOrdFile=NULL;
-
- pVirDev = new VirtualDevice();
- pVirDev->EnableOutput(FALSE);
- rGDIMetaFile.Record(pVirDev);
-
- pOS2MET->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
-
- nStartPos=pOS2MET->Tell();
- nEndPos=pOS2MET->Seek(STREAM_SEEK_TO_END); pOS2MET->Seek(nStartPos);
- Callback(0); nLastPercent=0;
-
- nPos=pOS2MET->Tell();
- if ( nStartPos == nEndPos )
- {
- nEndPos = 100;
- nStartPos = 0;
- }
-
- for (;;) {
-
- nPercent=(nPos-nStartPos)*100/(nEndPos-nStartPos);
- if (nLastPercent+4<=nPercent) {
- if (Callback((USHORT)nPercent)==TRUE) break;
- nLastPercent=nPercent;
- }
-
- nFieldSize=ReadBigEndianWord();
-
- *pOS2MET >> nMagicByte;
- if (nMagicByte!=0xd3) {
- pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
- ErrorCode=7;
- break;
- }
- *pOS2MET >> nFieldType;
-
- pOS2MET->SeekRel(3);
- nPos+=8; nFieldSize-=8;
-
- if (pOS2MET->GetError()) break;
- if (pOS2MET->IsEof()) {
- pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
- ErrorCode=8;
- break;
- }
-
- if (nFieldType==EndDocumnMagic) break;
-
- ReadField(nFieldType, nFieldSize);
-
- nPos+=(ULONG)nFieldSize;
- if (pOS2MET->Tell()>nPos) {
- pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
- ErrorCode=9;
- break;
- }
- pOS2MET->Seek(nPos);
- }
-
- rGDIMetaFile.Stop();
- delete pVirDev;
-
- rGDIMetaFile.SetPrefMapMode( aGlobMapMode );
-
- if( aBoundingRect.GetWidth() && aBoundingRect.GetHeight() )
- rGDIMetaFile.SetPrefSize( aBoundingRect.GetSize() );
- else
- {
- if( aCalcBndRect.Left() || aCalcBndRect.Top() )
- rGDIMetaFile.Move( -aCalcBndRect.Left(), -aCalcBndRect.Top() );
-
- rGDIMetaFile.SetPrefSize( aCalcBndRect.GetSize() );
- }
-
- if (pOrdFile!=NULL) delete pOrdFile;
-
- while (pAreaStack!=NULL) {
- OSArea * p=pAreaStack;
- pAreaStack=p->pSucc;
- delete p;
- }
-
- while (pPathStack!=NULL) {
- OSPath * p=pPathStack;
- pPathStack=p->pSucc;
- delete p;
- }
-
- while (pPathList!=NULL) {
- OSPath * p=pPathList;
- pPathList=p->pSucc;
- delete p;
- }
-
- while (pFontList!=NULL) {
- OSFont * p=pFontList;
- pFontList=p->pSucc;
- delete p;
- }
-
- while (pBitmapList!=NULL) {
- OSBitmap * p=pBitmapList;
- pBitmapList=p->pSucc;
- if (p->pBMP!=NULL) delete p->pBMP;
- delete p;
- }
-
- while (pAttrStack!=NULL) {
- OSAttr * p=pAttrStack;
- pAttrStack=p->pSucc;
- delete p;
- }
-
- while (pPaletteStack!=NULL) {
- OSPalette * p=pPaletteStack;
- pPaletteStack=p->pSucc;
- if (p->p0RGB!=NULL) delete[] p->p0RGB;
- delete p;
- }
-
- pOS2MET->SetNumberFormatInt(nOrigNumberFormat);
-
- if (pOS2MET->GetError()) {
- OOODEBUG("Fehler Nr.:",ErrorCode);
- pOS2MET->Seek(nOrigPos);
- }
-}
-
-//================== GraphicImport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
-{
- OS2METReader aOS2METReader;
- GDIMetaFile aMTF;
- BOOL bRet = FALSE;
-
- aOS2METReader.ReadOS2MET( rStream, aMTF );
-
- if ( !rStream.GetError() )
- {
- rGraphic=Graphic( aMTF );
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-//================== ein bischen Muell fuer Windows ==========================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
-
diff --git a/goodies/source/filter.vcl/ios2met/makefile.mk b/goodies/source/filter.vcl/ios2met/makefile.mk
deleted file mode 100644
index c987476316c6..000000000000
--- a/goodies/source/filter.vcl/ios2met/makefile.mk
+++ /dev/null
@@ -1,72 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=ios2met
-DEPTARGET=vios2met
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/ios2met.obj
-
-# ==========================================================================
-
-SHL1TARGET= ime$(DLLPOSTFIX)
-SHL1IMPLIB= ios2met
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
-
-SHL1LIBS= $(SLB)$/ios2met.lib # $(LB)$/rtftoken.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/ios2met.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-# ==========================================================================
-
-.INCLUDE : target.mk
-
diff --git a/goodies/source/filter.vcl/ipbm/exports.map b/goodies/source/filter.vcl/ipbm/exports.map
deleted file mode 100644
index 0e2a1bcdec9d..000000000000
--- a/goodies/source/filter.vcl/ipbm/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-PBMIMPORTER_1_0 {
- global:
- GraphicImport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/ipbm/ipbm.cxx b/goodies/source/filter.vcl/ipbm/ipbm.cxx
deleted file mode 100644
index 227490fc9d8e..000000000000
--- a/goodies/source/filter.vcl/ipbm/ipbm.cxx
+++ /dev/null
@@ -1,567 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: ipbm.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <svtools/fltcall.hxx>
-
-//============================ PBMReader ==================================
-
-class PBMReader {
-
-private:
-
- SvStream* mpPBM; // Die einzulesende PBM-Datei
-
- BOOL mbStatus;
- BOOL mbRemark; // FALSE wenn sich stream in einem Kommentar befindet
- BOOL mbRaw; // RAW/ASCII MODE
- ULONG mnMode; // 0->PBM, 1->PGM, 2->PPM
- Bitmap maBmp;
- BitmapWriteAccess* mpAcc;
- ULONG mnWidth, mnHeight; // Bildausmass in Pixeln
- ULONG mnCol;
- ULONG mnMaxVal; // maximaler wert in den
- BOOL ImplCallback( USHORT nPercent );
- BOOL ImplReadBody();
- BOOL ImplReadHeader();
-
-public:
- PBMReader();
- ~PBMReader();
- BOOL ReadPBM( SvStream & rPBM, Graphic & rGraphic );
-};
-
-//=================== Methoden von PBMReader ==============================
-
-PBMReader::PBMReader() :
- mbStatus ( TRUE ),
- mbRemark ( FALSE ),
- mbRaw ( TRUE ),
- mpAcc ( NULL )
-{
-}
-
-PBMReader::~PBMReader()
-{
-}
-
-BOOL PBMReader::ImplCallback( USHORT /*nPercent*/ )
-{
-/*
- if ( pCallback != NULL )
- {
- if ( ( (*pCallback)( pCallerData, nPercent ) ) == TRUE )
- {
- mpPBM->SetError( SVSTREAM_FILEFORMAT_ERROR );
- return TRUE;
- }
- }
-*/
- return FALSE;
-}
-
-BOOL PBMReader::ReadPBM( SvStream & rPBM, Graphic & rGraphic )
-{
- USHORT i;
-
- if ( rPBM.GetError() )
- return FALSE;
-
- mpPBM = &rPBM;
- mpPBM->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
-
- // Kopf einlesen:
-
- if ( ( mbStatus = ImplReadHeader() ) == FALSE )
- return FALSE;
-
- if ( mnWidth == 0 || mnHeight == 0 )
- return FALSE;
-
- // 0->PBM, 1->PGM, 2->PPM
- switch ( mnMode )
- {
- case 0 :
- maBmp = Bitmap( Size( mnWidth, mnHeight ), 1 );
- if ( ( mpAcc = maBmp.AcquireWriteAccess() ) == FALSE )
- return FALSE;
- mpAcc->SetPaletteEntryCount( 2 );
- mpAcc->SetPaletteColor( 0, BitmapColor( 0xff, 0xff, 0xff ) );
- mpAcc->SetPaletteColor( 1, BitmapColor( 0x00, 0x00, 0x00 ) );
- break;
-
- case 1 :
- if ( mnMaxVal <= 1 )
- maBmp = Bitmap( Size( mnWidth, mnHeight ), 1);
- else if ( mnMaxVal <= 15 )
- maBmp = Bitmap( Size( mnWidth, mnHeight ), 4);
- else
- maBmp = Bitmap( Size( mnWidth, mnHeight ), 8);
-
- if ( ( mpAcc = maBmp.AcquireWriteAccess() ) == FALSE )
- return FALSE;
- mnCol = (USHORT)mnMaxVal + 1;
- if ( mnCol > 256 )
- mnCol = 256;
-
- mpAcc->SetPaletteEntryCount( 256 );
- for ( i = 0; i < mnCol; i++ )
- {
- ULONG nCount = 255 * i / mnCol;
- mpAcc->SetPaletteColor( i, BitmapColor( (BYTE)nCount, (BYTE)nCount, (BYTE)nCount ) );
- }
- break;
- case 2 :
- maBmp = Bitmap( Size( mnWidth, mnHeight ), 24 );
- if ( ( mpAcc = maBmp.AcquireWriteAccess() ) == FALSE )
- return FALSE;
- break;
- }
-
- // Bitmap-Daten einlesen
- mbStatus = ImplReadBody();
-
- if ( mpAcc )
- {
- maBmp.ReleaseAccess( mpAcc ), mpAcc = NULL;
- }
- if ( mbStatus )
- rGraphic = maBmp;
-
- return mbStatus;
-}
-
-BOOL PBMReader::ImplReadHeader()
-{
- BYTE nID[ 2 ];
- BYTE nDat;
- BYTE nMax, nCount = 0;
- BOOL bFinished = FALSE;
-
- *mpPBM >> nID[ 0 ] >> nID[ 1 ];
- if ( nID[ 0 ] != 'P' )
- return FALSE;
- switch ( nID[ 1 ] )
- {
- case '1' :
- mbRaw = FALSE;
- case '4' :
- mnMode = 0;
- nMax = 2; // number of parameters in Header
- break;
- case '2' :
- mbRaw = FALSE;
- case '5' :
- mnMode = 1;
- nMax = 3;
- break;
- case '3' :
- mbRaw = FALSE;
- case '6' :
- mnMode = 2;
- nMax = 3;
- break;
- default:
- return FALSE;
- }
-
- mnMaxVal = mnWidth = mnHeight = 0;
-
- while ( bFinished == FALSE )
- {
- if ( mpPBM->GetError() )
- return FALSE;
-
- *mpPBM >> nDat;
-
- if ( nDat == '#' )
- {
- mbRemark = TRUE;
- continue;
- }
- else if ( ( nDat == 0x0d ) || ( nDat == 0x0a ) )
- {
- mbRemark = FALSE;
- nDat = 0x20;
- }
- if ( mbRemark )
- continue;
-
- if ( ( nDat == 0x20 ) || ( nDat == 0x09 ) )
- {
- if ( ( nCount == 0 ) && mnWidth )
- nCount++;
- else if ( ( nCount == 1 ) && mnHeight )
- {
- if ( ++nCount == nMax )
- bFinished = TRUE;
- }
- else if ( ( nCount == 2 ) && mnMaxVal )
- {
- bFinished = TRUE;
- }
- continue;
- }
- if ( ( nDat >= '0' ) && ( nDat <= '9' ) )
- {
- nDat -= '0';
- if ( nCount == 0 )
- {
- mnWidth *= 10;
- mnWidth += nDat;
- }
- else if ( nCount == 1 )
- {
- mnHeight *= 10;
- mnHeight += nDat;
- }
- else if ( nCount == 2 )
- {
- mnMaxVal *= 10;
- mnMaxVal += nDat;
- }
- }
- else
- return FALSE;
- }
- return mbStatus;
-}
-
-BOOL PBMReader::ImplReadBody()
-{
- BOOL bPara, bFinished = FALSE;
- BYTE nDat = 0, nCount;
- ULONG nGrey, nRGB[3];
- ULONG nWidth = 0;
- ULONG nHeight = 0;
- signed char nShift = 0;
-
- if ( mbRaw )
- {
- switch ( mnMode )
- {
-
- // PBM
- case 0 :
- while ( nHeight != mnHeight )
- {
- if ( mpPBM->IsEof() || mpPBM->GetError() )
- return FALSE;
-
- if ( --nShift < 0 )
- {
- *mpPBM >> nDat;
- nShift = 7;
- }
- mpAcc->SetPixel( nHeight, nWidth, nDat >> nShift );
- if ( ++nWidth == mnWidth )
- {
- nShift = 0;
- nWidth = 0;
- nHeight++;
- ImplCallback( (USHORT)( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
- }
- }
- break;
-
- // PGM
- case 1 :
- while ( nHeight != mnHeight )
- {
- if ( mpPBM->IsEof() || mpPBM->GetError() )
- return FALSE;
-
- *mpPBM >> nDat;
- mpAcc->SetPixel( nHeight, nWidth++, nDat);
-
- if ( nWidth == mnWidth )
- {
- nWidth = 0;
- nHeight++;
- ImplCallback( (USHORT)( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
- }
- }
- break;
-
- // PPM
- case 2 :
- while ( nHeight != mnHeight )
- {
- if ( mpPBM->IsEof() || mpPBM->GetError() )
- return FALSE;
-
- BYTE nR, nG, nB;
- ULONG nRed, nGreen, nBlue;
- *mpPBM >> nR >> nG >> nB;
- nRed = 255 * nR / mnMaxVal;
- nGreen = 255 * nG / mnMaxVal;
- nBlue = 255 * nB / mnMaxVal;
- mpAcc->SetPixel( nHeight, nWidth++, BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
- if ( nWidth == mnWidth )
- {
- nWidth = 0;
- nHeight++;
- ImplCallback( (USHORT) ( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
- }
- }
- break;
- }
- }
- else switch ( mnMode )
- {
- // PBM
- case 0 :
- while ( bFinished == FALSE )
- {
- if ( mpPBM->IsEof() || mpPBM->GetError() )
- return FALSE;
-
- *mpPBM >> nDat;
-
- if ( nDat == '#' )
- {
- mbRemark = TRUE;
- continue;
- }
- else if ( ( nDat == 0x0d ) || ( nDat == 0x0a ) )
- {
- mbRemark = FALSE;
- continue;
- }
- if ( mbRemark || nDat == 0x20 || nDat == 0x09 )
- continue;
-
- if ( nDat == '0' || nDat == '1' )
- {
- mpAcc->SetPixel( nHeight, nWidth, (BYTE)nDat-'0' );
- nWidth++;
- if ( nWidth == mnWidth )
- {
- nWidth = 0;
- if ( ++nHeight == mnHeight )
- bFinished = TRUE;
- ImplCallback( (USHORT) ( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
- }
- }
- else
- return FALSE;
- }
- break;
-
- // PGM
- case 1 :
-
- bPara = FALSE;
- nCount = 0;
- nGrey = 0;
-
- while ( bFinished == FALSE )
- {
- if ( nCount )
- {
- nCount--;
- if ( nGrey <= mnMaxVal )
- nGrey = 255 * nGrey / mnMaxVal;
- mpAcc->SetPixel( nHeight, nWidth++, (BYTE)nGrey );
- nGrey = 0;
- if ( nWidth == mnWidth )
- {
- nWidth = 0;
- if ( ++nHeight == mnHeight )
- bFinished = TRUE;
- ImplCallback( (USHORT) ( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
- }
- continue;
- }
-
- if ( mpPBM->IsEof() || mpPBM->GetError() )
- return FALSE;
-
- *mpPBM >> nDat;
-
- if ( nDat == '#' )
- {
- mbRemark = TRUE;
- if ( bPara )
- {
- bPara = FALSE;
- nCount++;
- }
- continue;
- }
- else if ( ( nDat == 0x0d ) || ( nDat == 0x0a ) )
- {
- mbRemark = FALSE;
- if ( bPara )
- {
- bPara = FALSE;
- nCount++;
- }
- continue;
- }
-
- if ( nDat == 0x20 || nDat == 0x09 )
- {
- if ( bPara )
- {
- bPara = FALSE;
- nCount++;
- }
- continue;
- }
- if ( nDat >= '0' && nDat <= '9' )
- {
- bPara = TRUE;
- nGrey *= 10;
- nGrey += nDat-'0';
- continue;
- }
- else
- return FALSE;
- }
- break;
-
-
-
- // PPM
- case 2 :
-
- bPara = FALSE;
- nCount = 0;
- nRGB[ 0 ] = nRGB[ 1 ] = nRGB[ 2 ] = 0;
-
- while ( bFinished == FALSE )
- {
- if ( nCount == 3 )
- {
- nCount = 0;
- mpAcc->SetPixel( nHeight, nWidth++, BitmapColor( (BYTE)nRGB[ 0 ], (BYTE)nRGB[ 1 ], (BYTE)nRGB[ 2 ] ) );
- nCount = 0;
- nRGB[ 0 ] = nRGB[ 1 ] = nRGB[ 2 ] = 0;
- if ( nWidth == mnWidth )
- {
- nWidth = 0;
- if ( ++nHeight == mnHeight )
- bFinished = TRUE;
- ImplCallback( (USHORT) ( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
- }
- continue;
- }
-
- if ( mpPBM->IsEof() || mpPBM->GetError() )
- return FALSE;
-
- *mpPBM >> nDat;
-
- if ( nDat == '#' )
- {
- mbRemark = TRUE;
- if ( bPara )
- {
- bPara = FALSE;
- nCount++;
- }
- continue;
- }
- else if ( ( nDat == 0x0d ) || ( nDat == 0x0a ) )
- {
- mbRemark = FALSE;
- if ( bPara )
- {
- bPara = FALSE;
- nCount++;
- }
- continue;
- }
-
- if ( nDat == 0x20 || nDat == 0x09 )
- {
- if ( bPara )
- {
- bPara = FALSE;
- nCount++;
- }
- continue;
- }
- if ( nDat >= '0' && nDat <= '9' )
- {
- bPara = TRUE;
- nRGB[ nCount ] *= 10;
- nRGB[ nCount ] += nDat-'0';
- continue;
- }
- else
- return FALSE;
- }
- break;
- }
- return mbStatus;
-}
-
-//================== GraphicImport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
-{
- PBMReader aPBMReader;
-
- return aPBMReader.ReadPBM( rStream, rGraphic );
-}
-
-//================== ein bischen Muell fuer Windows ==========================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
-
diff --git a/goodies/source/filter.vcl/ipbm/makefile.mk b/goodies/source/filter.vcl/ipbm/makefile.mk
deleted file mode 100644
index 84a9815a4974..000000000000
--- a/goodies/source/filter.vcl/ipbm/makefile.mk
+++ /dev/null
@@ -1,72 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=ipbm
-DEPTARGET=vipbm
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/ipbm.obj
-
-# ==========================================================================
-
-SHL1TARGET= ipb$(DLLPOSTFIX)
-SHL1IMPLIB= ipbm
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
-SHL1LIBS= $(SLB)$/ipbm.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/ipbm.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
-
diff --git a/goodies/source/filter.vcl/ipcd/exports.map b/goodies/source/filter.vcl/ipcd/exports.map
deleted file mode 100644
index a0719af28be2..000000000000
--- a/goodies/source/filter.vcl/ipcd/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-PCDIMPORTER_1_0 {
- global:
- GraphicImport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/ipcd/ipcd.cxx b/goodies/source/filter.vcl/ipcd/ipcd.cxx
deleted file mode 100644
index f7a5f3652cbf..000000000000
--- a/goodies/source/filter.vcl/ipcd/ipcd.cxx
+++ /dev/null
@@ -1,425 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: ipcd.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include "rtl/alloc.h"
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <vcl/svapp.hxx>
-#include <svtools/fltcall.hxx>
-#include <svl/solar.hrc>
-#include <svtools/FilterConfigItem.hxx>
-
-//============================ PCDReader ==================================
-
-// Diese Aufloesungen sind in einer PCD-Datei enthalten:
-enum PCDResolution {
- PCDRES_BASE16, // 192 x 128
- PCDRES_BASE4, // 384 x 256
- PCDRES_BASE, // 768 x 512
- // Die folgenden sind komprimiert und koennen
- // von uns NICHT gelesen werden:
- PCDRES_4BASE, // 1536 x 1024
- PCDRES_16BASE // 3072 x 3072
-};
-
-class PCDReader {
-
-private:
-
- BOOL bStatus;
-
- ULONG nLastPercent;
-
- SvStream* pPCD;
- BitmapWriteAccess* mpAcc;
-
- BYTE nOrientation; // Ausrichtung des Bildes in der PCD-Datei:
- // 0 - Turmspitze zeigt nach oben
- // 1 - Turmspitze zeigt nach rechts
- // 2 - Turmspitze zeigt nach unten
- // 3 - Turmspitze zeigt nach links
-
- PCDResolution eResolution; // Welche Aufloesung wir haben wollen
-
- ULONG nWidth; // Breite des PCD-Bildes
- ULONG nHeight; // Hoehe des PCD-Bildes
- ULONG nImagePos; // Position des Bildes in der PCD-Datei
-
- // Temporare BLue-Green-Red-Bitmap
- ULONG nBMPWidth;
- ULONG nBMPHeight;
-
- void MayCallback(ULONG nPercent);
-
- void CheckPCDImagePacFile();
- // Prueft, ob es eine Photo-CD-Datei mit 'Image Pac' ist.
-
- void ReadOrientation();
- // Liest die Ausrichtung und setzt nOrientation
-
- void ReadImage(ULONG nMinPercent, ULONG nMaxPercent);
-
-public:
-
- PCDReader() {}
- ~PCDReader() {}
-
- BOOL ReadPCD( SvStream & rPCD, Graphic & rGraphic, FilterConfigItem* pConfigItem );
-};
-
-//=================== Methoden von PCDReader ==============================
-
-BOOL PCDReader::ReadPCD( SvStream & rPCD, Graphic & rGraphic, FilterConfigItem* pConfigItem )
-{
- Bitmap aBmp;
-
- bStatus = TRUE;
- nLastPercent = 0;
- pPCD = &rPCD;
-
- MayCallback( 0 );
-
- // Ist es eine PCD-Datei mit Bild ? ( setzt bStatus == FALSE, wenn nicht ):
- CheckPCDImagePacFile();
-
- // Orientierung des Bildes einlesen:
- ReadOrientation();
-
- // Welche Aufloesung wollen wir ?:
- eResolution = PCDRES_BASE;
- if ( pConfigItem )
- {
- sal_Int32 nResolution = pConfigItem->ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "Resolution" ) ), 2 );
- if ( nResolution == 1 )
- eResolution = PCDRES_BASE4;
- else if ( nResolution == 0 )
- eResolution = PCDRES_BASE16;
- }
- // Groesse und Position (Position in PCD-Datei) des Bildes bestimmen:
- switch (eResolution)
- {
- case PCDRES_BASE16 :
- nWidth = 192;
- nHeight = 128;
- nImagePos = 8192;
- break;
-
- case PCDRES_BASE4 :
- nWidth = 384;
- nHeight = 256;
- nImagePos = 47104;
- break;
-
- case PCDRES_BASE :
- nWidth = 768;
- nHeight = 512;
- nImagePos = 196608;
- break;
-
- default:
- bStatus = FALSE;
- }
- if ( bStatus )
- {
- if ( ( nOrientation & 0x01 ) == 0 )
- {
- nBMPWidth = nWidth;
- nBMPHeight = nHeight;
- }
- else
- {
- nBMPWidth = nHeight;
- nBMPHeight = nWidth;
- }
- aBmp = Bitmap( Size( nBMPWidth, nBMPHeight ), 24 );
- if ( ( mpAcc = aBmp.AcquireWriteAccess() ) == FALSE )
- return FALSE;
-
- ReadImage( 5 ,65 );
-
- aBmp.ReleaseAccess( mpAcc ), mpAcc = NULL;
- rGraphic = aBmp;
- }
- return bStatus;
-}
-
-// -------------------------------------------------------------------------------------------
-
-void PCDReader::MayCallback(ULONG /*nPercent*/)
-{
-/*
- if ( nPercent >= nLastPercent + 3 )
- {
- nLastPercent=nPercent;
- if ( pCallback != NULL && nPercent <= 100 && bStatus == TRUE )
- {
- if ( ( (*pCallback)( pCallerData, (USHORT)nPercent ) ) == TRUE )
- bStatus = FALSE;
- }
- }
-*/
-}
-
-// -------------------------------------------------------------------------------------------
-
-void PCDReader::CheckPCDImagePacFile()
-{
- char Buf[ 8 ];
-
- pPCD->Seek( 2048 );
- pPCD->Read( Buf, 7 );
- Buf[ 7 ] = 0;
- if ( ByteString( Buf ).CompareTo( "PCD_IPI" ) != COMPARE_EQUAL )
- bStatus = FALSE;
-}
-
-// -------------------------------------------------------------------------------------------
-
-void PCDReader::ReadOrientation()
-{
- if ( bStatus == FALSE )
- return;
- pPCD->Seek( 194635 );
- *pPCD >> nOrientation;
- nOrientation &= 0x03;
-}
-
-// -------------------------------------------------------------------------------------------
-
-void PCDReader::ReadImage(ULONG nMinPercent, ULONG nMaxPercent)
-{
- ULONG nx,ny,nW2,nH2,nYPair,ndy,nXPair;
- long nL,nCb,nCr,nRed,nGreen,nBlue;
- BYTE * pt;
- BYTE * pL0; // Luminanz fuer jeden Pixel der 1. Zeile des aktuellen Zeilen-Paars
- BYTE * pL1; // Luminanz fuer jeden Pixel der 2. Zeile des aktuellen Zeilen-Paars
- BYTE * pCb; // Blau-Chrominanz fuer je 2x2 Pixel des aktuellen Zeilen-Paars
- BYTE * pCr; // Rot-Chrominanz fuer je 2x2 Pixel des aktuellen Zeilen-Paars
- BYTE * pL0N, * pL1N, * pCbN, * pCrN; // wie oben, nur fuer das naechste Zeilen-Paar
-
- if ( bStatus == FALSE )
- return;
-
- nW2=nWidth>>1;
- nH2=nHeight>>1;
-
- pL0 =(BYTE*)rtl_allocateMemory( nWidth );
- pL1 =(BYTE*)rtl_allocateMemory( nWidth );
- pCb =(BYTE*)rtl_allocateMemory( nW2+1 );
- pCr =(BYTE*)rtl_allocateMemory( nW2+1 );
- pL0N=(BYTE*)rtl_allocateMemory( nWidth );
- pL1N=(BYTE*)rtl_allocateMemory( nWidth );
- pCbN=(BYTE*)rtl_allocateMemory( nW2+1 );
- pCrN=(BYTE*)rtl_allocateMemory( nW2+1 );
-
- if ( pL0 == NULL || pL1 == NULL || pCb == NULL || pCr == NULL ||
- pL0N == NULL || pL1N == NULL || pCbN == NULL || pCrN == NULL)
- {
- rtl_freeMemory((void*)pL0 );
- rtl_freeMemory((void*)pL1 );
- rtl_freeMemory((void*)pCb );
- rtl_freeMemory((void*)pCr );
- rtl_freeMemory((void*)pL0N);
- rtl_freeMemory((void*)pL1N);
- rtl_freeMemory((void*)pCbN);
- rtl_freeMemory((void*)pCrN);
- bStatus = FALSE;
- return;
- }
-
- pPCD->Seek( nImagePos );
-
- // naechstes Zeilen-Paar := erstes Zeile-Paar:
- pPCD->Read( pL0N, nWidth );
- pPCD->Read( pL1N, nWidth );
- pPCD->Read( pCbN, nW2 );
- pPCD->Read( pCrN, nW2 );
- pCbN[ nW2 ] = pCbN[ nW2 - 1 ];
- pCrN[ nW2 ] = pCrN[ nW2 - 1 ];
-
- for ( nYPair = 0; nYPair < nH2; nYPair++ )
- {
- // aktuelles Zeilen-Paar := naechstes Zeilen-Paar
- pt=pL0; pL0=pL0N; pL0N=pt;
- pt=pL1; pL1=pL1N; pL1N=pt;
- pt=pCb; pCb=pCbN; pCbN=pt;
- pt=pCr; pCr=pCrN; pCrN=pt;
-
- // naechstes Zeilen-Paar holen:
- if ( nYPair < nH2 - 1 )
- {
- pPCD->Read( pL0N, nWidth );
- pPCD->Read( pL1N, nWidth );
- pPCD->Read( pCbN, nW2 );
- pPCD->Read( pCrN, nW2 );
- pCbN[nW2]=pCbN[ nW2 - 1 ];
- pCrN[nW2]=pCrN[ nW2 - 1 ];
- }
- else
- {
- for ( nXPair = 0; nXPair < nW2; nXPair++ )
- {
- pCbN[ nXPair ] = pCb[ nXPair ];
- pCrN[ nXPair ] = pCr[ nXPair ];
- }
- }
-
- // Schleife uber die beiden Zeilen des Zeilen-Paars:
- for ( ndy = 0; ndy < 2; ndy++ )
- {
- ny = ( nYPair << 1 ) + ndy;
-
- // Schleife ueber X:
- for ( nx = 0; nx < nWidth; nx++ )
- {
- // nL,nCb,nCr fuer den Pixel nx,ny holen/berechenen:
- nXPair = nx >> 1;
- if ( ndy == 0 )
- {
- nL = (long)pL0[ nx ];
- if (( nx & 1 ) == 0 )
- {
- nCb = (long)pCb[ nXPair ];
- nCr = (long)pCr[ nXPair ];
- }
- else
- {
- nCb = ( ( (long)pCb[ nXPair ] ) + ( (long)pCb[ nXPair + 1 ] ) ) >> 1;
- nCr = ( ( (long)pCr[ nXPair ] ) + ( (long)pCr[ nXPair + 1 ] ) ) >> 1;
- }
- }
- else {
- nL = pL1[ nx ];
- if ( ( nx & 1 ) == 0 )
- {
- nCb = ( ( (long)pCb[ nXPair ] ) + ( (long)pCbN[ nXPair ] ) ) >> 1;
- nCr = ( ( (long)pCr[ nXPair ] ) + ( (long)pCrN[ nXPair ] ) ) >> 1;
- }
- else
- {
- nCb = ( ( (long)pCb[ nXPair ] ) + ( (long)pCb[ nXPair + 1 ] ) +
- ( (long)pCbN[ nXPair ] ) + ( (long)pCbN[ nXPair + 1 ] ) ) >> 2;
- nCr = ( ( (long)pCr[ nXPair ] ) + ( (long)pCr[ nXPair + 1] ) +
- ( (long)pCrN[ nXPair ] ) + ( (long)pCrN[ nXPair + 1 ] ) ) >> 2;
- }
- }
- // Umwandlung von nL,nCb,nCr in nRed,nGreen,nBlue:
- nL *= 89024L;
- nCb -= 156;
- nCr -= 137;
- nRed = ( nL + nCr * 119374L + 0x8000 ) >> 16;
- if ( nRed < 0 )
- nRed = 0;
- if ( nRed > 255)
- nRed = 255;
- nGreen = ( nL - nCb * 28198L - nCr * 60761L + 0x8000 ) >> 16;
- if ( nGreen < 0 )
- nGreen = 0;
- if ( nGreen > 255 )
- nGreen = 255;
- nBlue = ( nL + nCb * 145352L + 0x8000 ) >> 16;
- if ( nBlue < 0 )
- nBlue = 0;
- if ( nBlue > 255 )
- nBlue = 255;
-
- // Farbwert in pBMPMap eintragen:
- if ( nOrientation < 2 )
- {
- if ( nOrientation == 0 )
- mpAcc->SetPixel( ny, nx, BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
- else
- mpAcc->SetPixel( nWidth - 1 - nx, ny, BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
- }
- else
- {
- if ( nOrientation == 2 )
- mpAcc->SetPixel( nHeight - 1 - ny, ( nWidth - 1 - nx ), BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
- else
- mpAcc->SetPixel( nx, ( nHeight - 1 - ny ), BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
- }
- }
- }
-
- if ( pPCD->GetError() )
- bStatus = FALSE;
- MayCallback( nMinPercent + ( nMaxPercent - nMinPercent ) * nYPair / nH2 );
- if ( bStatus == FALSE )
- break;
- }
- rtl_freeMemory((void*)pL0 );
- rtl_freeMemory((void*)pL1 );
- rtl_freeMemory((void*)pCb );
- rtl_freeMemory((void*)pCr );
- rtl_freeMemory((void*)pL0N);
- rtl_freeMemory((void*)pL1N);
- rtl_freeMemory((void*)pCbN);
- rtl_freeMemory((void*)pCrN);
-}
-
-//================== GraphicImport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem* pConfigItem, BOOL )
-{
- PCDReader aPCDReader;
- return aPCDReader.ReadPCD( rStream, rGraphic, pConfigItem );
-}
-
-//============================= fuer Windows ==================================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
-
-
diff --git a/goodies/source/filter.vcl/ipcd/makefile.mk b/goodies/source/filter.vcl/ipcd/makefile.mk
deleted file mode 100644
index 7782b7b8e627..000000000000
--- a/goodies/source/filter.vcl/ipcd/makefile.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.14 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=ipcd
-DEPTARGET=vipcd
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/ipcd.obj
-
-# ==========================================================================
-
-SHL1TARGET= icd$(DLLPOSTFIX)
-SHL1IMPLIB= ipcd
-SHL1STDLIBS= $(SVTOOLLIB) $(VCLLIB) $(TOOLSLIB) $(SALLIB)
-SHL1LIBS= $(SLB)$/ipcd.lib # $(LB)$/rtftoken.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/ipcd.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/ipcx/exports.map b/goodies/source/filter.vcl/ipcx/exports.map
deleted file mode 100644
index d44f79111a96..000000000000
--- a/goodies/source/filter.vcl/ipcx/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-PCXIMPORTER_1_0 {
- global:
- GraphicImport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/ipcx/ipcx.cxx b/goodies/source/filter.vcl/ipcx/ipcx.cxx
deleted file mode 100644
index af8e46c5ba67..000000000000
--- a/goodies/source/filter.vcl/ipcx/ipcx.cxx
+++ /dev/null
@@ -1,461 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: ipcx.cxx,v $
- * $Revision: 1.8.30.1 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <svtools/fltcall.hxx>
-
-//============================ PCXReader ==================================
-
-class PCXReader {
-
-private:
-
- SvStream* pPCX; // Die einzulesende PCX-Datei
-
- Bitmap aBmp;
- BitmapWriteAccess* pAcc;
- BYTE nVersion; // PCX-Version
- BYTE nEncoding; // Art der Komprimierung
- ULONG nBitsPerPlanePix; // Bits Pro Ebene pro Pixel
- ULONG nPlanes; // Anzahl Ebenen
- ULONG nBytesPerPlaneLin; // Bytes in einer Ebenen pro Zeile
- USHORT nPaletteInfo;
-
- ULONG nWidth, nHeight; // Bildausmass in Pixeln
- USHORT nResX, nResY; // Aufloesung in Pixel pro Inch oder 0,0
- USHORT nDestBitsPerPixel; // Bits pro Pixel der Zielbitmap 1,4,8 oder 24
- BYTE* pPalette; //
- BOOL nStatus; // status nun nicht mehr am stream abfragen ( SJ )
-
-
- BOOL Callback( USHORT nPercent );
- void ImplReadBody();
- void ImplReadPalette( ULONG nCol );
- void ImplReadHeader();
-
-public:
- PCXReader();
- ~PCXReader();
- BOOL ReadPCX( SvStream & rPCX, Graphic & rGraphic );
- // Liesst aus dem Stream eine PCX-Datei und fuellt das GDIMetaFile
-};
-
-//=================== Methoden von PCXReader ==============================
-
-PCXReader::PCXReader() :
- pAcc ( NULL )
-{
- pPalette = new BYTE[ 768 ];
-}
-
-PCXReader::~PCXReader()
-{
- delete[] pPalette;
-}
-
-BOOL PCXReader::Callback( USHORT /*nPercent*/ )
-{
-/*
- if (pCallback!=NULL) {
- if (((*pCallback)(pCallerData,nPercent))==TRUE) {
- nStatus = FALSE;
- return TRUE;
- }
- }
-*/
- return FALSE;
-}
-
-BOOL PCXReader::ReadPCX( SvStream & rPCX, Graphic & rGraphic )
-{
- if ( rPCX.GetError() )
- return FALSE;
-
- ULONG* pDummy = new ULONG; delete pDummy; // damit unter OS/2
- // das richtige (Tools-)new
- // verwendet wird, da es sonst
- // in dieser DLL nur Vector-news
- // gibt;
-
- pPCX = &rPCX;
- pPCX->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
-
- // Kopf einlesen:
-
- nStatus = TRUE;
-
- ImplReadHeader();
-
- // BMP-Header und ggf. (eventuell zunaechst ungueltige) Farbpalette schreiben:
- if ( nStatus )
- {
- aBmp = Bitmap( Size( nWidth, nHeight ), nDestBitsPerPixel );
- if ( ( pAcc = aBmp.AcquireWriteAccess() ) == FALSE )
- return FALSE;
-
- if ( nDestBitsPerPixel <= 8 )
- {
- USHORT nColors = 1 << nDestBitsPerPixel;
- BYTE* pPal = pPalette;
- pAcc->SetPaletteEntryCount( nColors );
- for ( USHORT i = 0; i < nColors; i++, pPal += 3 )
- {
- pAcc->SetPaletteColor( i, BitmapColor ( pPal[ 0 ], pPal[ 1 ], pPal[ 2 ] ) );
- }
- }
- // Bitmap-Daten einlesen
- ImplReadBody();
-
- // Wenn erweiterte Farbpalette am Ende von PCX, dann diese einlesen, und nochmals
- // in Palette schreiben:
- if ( nDestBitsPerPixel == 8 && nStatus )
- {
- BYTE* pPal = pPalette;
- pPCX->SeekRel(1);
- ImplReadPalette(256);
- pAcc->SetPaletteEntryCount( 256 );
- for ( USHORT i = 0; i < 256; i++, pPal += 3 )
- {
- pAcc->SetPaletteColor( i, BitmapColor ( pPal[ 0 ], pPal[ 1 ], pPal[ 2 ] ) );
- }
- }
- /*
- // Aufloesung einstellen:
- if (nResX!=0 && nResY!=0) {
- MapMode aMapMode(MAP_INCH,Point(0,0),Fraction(1,nResX),Fraction(1,nResY));
- rBitmap.SetPrefMapMode(aMapMode);
- rBitmap.SetPrefSize(Size(nWidth,nHeight));
- }
- */ if ( nStatus && pAcc )
- {
- aBmp.ReleaseAccess( pAcc ), pAcc = NULL;
- rGraphic = aBmp;
- return TRUE;
- }
- }
- return FALSE;
-}
-
-void PCXReader::ImplReadHeader()
-{
- BYTE nbyte;
- USHORT nushort;
- USHORT nMinX,nMinY,nMaxX,nMaxY;
-
- *pPCX >> nbyte >> nVersion >> nEncoding;
- if ( nbyte!=0x0a || (nVersion != 0 && nVersion != 2 && nVersion != 3 && nVersion != 5) || nEncoding > 1 )
- {
- nStatus = FALSE;
- return;
- }
-
- *pPCX >> nbyte; nBitsPerPlanePix = (ULONG)nbyte;
- *pPCX >> nMinX >> nMinY >> nMaxX >> nMaxY;
-
- if ((nMinX > nMaxX) || (nMinY > nMaxY))
- {
- nStatus = FALSE;
- return;
- }
-
- nWidth = nMaxX-nMinX+1;
- nHeight = nMaxY-nMinY+1;
-
- *pPCX >> nResX;
- *pPCX >> nResY;
- if ( nResX >= nWidth || nResY >= nHeight || ( nResX != nResY ) )
- nResX = nResY = 0;
-
- ImplReadPalette( 16 );
-
- pPCX->SeekRel( 1 );
- *pPCX >> nbyte; nPlanes = (ULONG)nbyte;
- *pPCX >> nushort; nBytesPerPlaneLin = (ULONG)nushort;
- *pPCX >> nPaletteInfo;
-
- pPCX->SeekRel( 58 );
-
- nDestBitsPerPixel = (USHORT)( nBitsPerPlanePix * nPlanes );
- if (nDestBitsPerPixel == 2 || nDestBitsPerPixel == 3) nDestBitsPerPixel = 4;
-
- if ( ( nDestBitsPerPixel != 1 && nDestBitsPerPixel != 4 && nDestBitsPerPixel != 8 && nDestBitsPerPixel != 24 )
- || nPlanes > 4 || nBytesPerPlaneLin < ( ( nWidth * nBitsPerPlanePix+7 ) >> 3 ) )
- {
- nStatus = FALSE;
- return;
- }
-
- // Wenn das Bild nur 2 Farben hat, ist die Palette zumeist ungueltig, und es handelt sich
- // immer (?) um ein schwarz-weiss-Bild:
- if ( nPlanes == 1 && nBitsPerPlanePix == 1 )
- {
- pPalette[ 0 ] = pPalette[ 1 ] = pPalette[ 2 ] = 0x00;
- pPalette[ 3 ] = pPalette[ 4 ] = pPalette[ 5 ] = 0xff;
- }
-}
-
-void PCXReader::ImplReadBody()
-{
- BYTE *pPlane[ 4 ], * pDest, * pSource1, * pSource2, * pSource3, *pSource4;
- ULONG i, nx, ny, np, nCount, nUsedLineSize, nLineSize, nPercent;
- ULONG nLastPercent = 0;
- BYTE nDat = 0, nCol = 0;
-
- nUsedLineSize = (ULONG)( ( ( nWidth * (ULONG)nDestBitsPerPixel ) + 7 ) >> 3 );
- nLineSize = ( nUsedLineSize + 3 ) & 0xfffc;
-
- for( np = 0; np < nPlanes; np++ )
- pPlane[ np ] = new BYTE[ nBytesPerPlaneLin ];
-
- nCount = 0;
- for ( ny = 0; ny < nHeight; ny++ )
- {
- if (pPCX->GetError() || pPCX->IsEof())
- {
- nStatus = FALSE;
- break;
- }
- nPercent = ny * 60 / nHeight + 10;
- if ( ny == 0 || nLastPercent + 4 <= nPercent )
- {
- nLastPercent = nPercent;
- if ( Callback( (USHORT)nPercent ) == TRUE )
- break;
- }
- for ( np = 0; np < nPlanes; np++)
- {
- if ( nEncoding == 0)
- pPCX->Read( (void *)pPlane[ np ], nBytesPerPlaneLin );
- else
- {
- pDest = pPlane[ np ];
- nx = nBytesPerPlaneLin;
- while ( nCount > 0 && nx > 0)
- {
- *(pDest++) = nDat;
- nx--;
- nCount--;
- }
- while ( nx > 0 )
- {
- *pPCX >> nDat;
- if ( ( nDat & 0xc0 ) == 0xc0 )
- {
- nCount =( (ULONG)nDat ) & 0x003f;
- *pPCX >> nDat;
- if ( nCount < nx )
- {
- nx -= nCount;
- while ( nCount > 0)
- {
- *(pDest++) = nDat;
- nCount--;
- }
- }
- else
- {
- nCount -= nx;
- do
- {
- *(pDest++) = nDat;
- nx--;
- }
- while ( nx > 0 );
- break;
- }
- }
- else
- {
- *(pDest++) = nDat;
- nx--;
- }
- }
- }
- }
- pSource1 = pPlane[ 0 ];
- pSource2 = pPlane[ 1 ];
- pSource3 = pPlane[ 2 ];
- pSource4 = pPlane[ 3 ];
- switch ( nBitsPerPlanePix + ( nPlanes << 8 ) )
- {
- // 2 colors
- case 0x101 :
- for ( i = 0; i < nWidth; i++ )
- {
- ULONG nShift = ( i & 7 ) ^ 7;
- if ( nShift == 0 )
- pAcc->SetPixel( ny, i, ( *pSource1++ & 1 ) );
- else
- pAcc->SetPixel(
- ny, i,
- sal::static_int_cast< BYTE >(
- ( *pSource1 >> nShift ) & 1) );
- }
- break;
- // 4 colors
- case 0x102 :
- for ( i = 0; i < nWidth; i++ )
- {
- switch( i & 3 )
- {
- case 0 :
- nCol = *pSource1 >> 6;
- break;
- case 1 :
- nCol = ( *pSource1 >> 4 ) & 0x03 ;
- break;
- case 2 :
- nCol = ( *pSource1 >> 2 ) & 0x03;
- break;
- case 3 :
- nCol = ( *pSource1++ ) & 0x03;
- break;
- }
- pAcc->SetPixel( ny, i, nCol );
- }
- break;
- // 256 colors
- case 0x108 :
- for ( i = 0; i < nWidth; i++ )
- {
- pAcc->SetPixel( ny, i, *pSource1++ );
- }
- break;
- // 8 colors
- case 0x301 :
- for ( i = 0; i < nWidth; i++ )
- {
- ULONG nShift = ( i & 7 ) ^ 7;
- if ( nShift == 0 )
- {
- nCol = ( *pSource1++ & 1) + ( ( *pSource2++ << 1 ) & 2 ) + ( ( *pSource3++ << 2 ) & 4 );
- pAcc->SetPixel( ny, i, nCol );
- }
- else
- {
- nCol = sal::static_int_cast< BYTE >(
- ( ( *pSource1 >> nShift ) & 1) + ( ( ( *pSource2 >> nShift ) << 1 ) & 2 ) +
- ( ( ( *pSource3 >> nShift ) << 2 ) & 4 ));
- pAcc->SetPixel( ny, i, nCol );
- }
- }
- break;
- // 16 colors
- case 0x401 :
- for ( i = 0; i < nWidth; i++ )
- {
- ULONG nShift = ( i & 7 ) ^ 7;
- if ( nShift == 0 )
- {
- nCol = ( *pSource1++ & 1) + ( ( *pSource2++ << 1 ) & 2 ) + ( ( *pSource3++ << 2 ) & 4 ) +
- ( ( *pSource4++ << 3 ) & 8 );
- pAcc->SetPixel( ny, i, nCol );
- }
- else
- {
- nCol = sal::static_int_cast< BYTE >(
- ( ( *pSource1 >> nShift ) & 1) + ( ( ( *pSource2 >> nShift ) << 1 ) & 2 ) +
- ( ( ( *pSource3 >> nShift ) << 2 ) & 4 ) + ( ( ( *pSource4 >> nShift ) << 3 ) & 8 ));
- pAcc->SetPixel( ny, i, nCol );
- }
- }
- break;
- // 16m colors
- case 0x308 :
- for ( i = 0; i < nWidth; i++ )
- {
- pAcc->SetPixel( ny, i, Color( *pSource1++, *pSource2++, *pSource3++ ) );
-
- }
- break;
- default :
- nStatus = FALSE;
- break;
- }
- }
- for ( np = 0; np < nPlanes; np++ )
- delete[] pPlane[ np ];
-}
-
-void PCXReader::ImplReadPalette( ULONG nCol )
-{
- BYTE r, g, b;
- BYTE* pPtr = pPalette;
- for ( ULONG i = 0; i < nCol; i++ )
- {
- *pPCX >> r >> g >> b;
- *pPtr++ = r;
- *pPtr++ = g;
- *pPtr++ = b;
- }
-}
-
-//================== GraphicImport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
-{
- PCXReader aPCXReader;
- BOOL nRetValue = aPCXReader.ReadPCX( rStream, rGraphic );
- if ( nRetValue == FALSE )
- rStream.SetError( SVSTREAM_FILEFORMAT_ERROR );
- return nRetValue;
-}
-
-//================== ein bischen Muell fuer Windows ==========================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
-
diff --git a/goodies/source/filter.vcl/ipcx/makefile.mk b/goodies/source/filter.vcl/ipcx/makefile.mk
deleted file mode 100644
index 7f0f309ae786..000000000000
--- a/goodies/source/filter.vcl/ipcx/makefile.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=ipcx
-DEPTARGET=vipcx
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/ipcx.obj
-
-# ==========================================================================
-
-SHL1TARGET= ipx$(DLLPOSTFIX)
-SHL1IMPLIB= ipcx
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
-SHL1LIBS= $(SLB)$/ipcx.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/ipcx.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/ipict/exports.map b/goodies/source/filter.vcl/ipict/exports.map
deleted file mode 100644
index 2576cecdca91..000000000000
--- a/goodies/source/filter.vcl/ipict/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-PICTIMPORTER_1_0 {
- global:
- GraphicImport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/ipict/ipict.cxx b/goodies/source/filter.vcl/ipict/ipict.cxx
deleted file mode 100644
index 0ad31ff39acf..000000000000
--- a/goodies/source/filter.vcl/ipict/ipict.cxx
+++ /dev/null
@@ -1,1940 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: ipict.cxx,v $
- * $Revision: 1.18 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <string.h>
-#include <vcl/bmpacc.hxx>
-#include <vcl/graph.hxx>
-#include <tools/poly.hxx>
-#include <vcl/virdev.hxx>
-#include <svtools/fltcall.hxx>
-#include <math.h>
-
-// MT: NOOLDSV, someone should change the code...
-enum PenStyle { PEN_NULL, PEN_SOLID, PEN_DOT, PEN_DASH, PEN_DASHDOT };
-enum BrushStyle { BRUSH_NULL, BRUSH_SOLID, BRUSH_HORZ, BRUSH_VERT,
- BRUSH_CROSS, BRUSH_DIAGCROSS, BRUSH_UPDIAG, BRUSH_DOWNDIAG,
- BRUSH_25, BRUSH_50, BRUSH_75,
- BRUSH_BITMAP };
-
-//============================ PictReader ==================================
-
-enum PictDrawingMethod {
- PDM_FRAME, PDM_PAINT, PDM_ERASE, PDM_INVERT, PDM_FILL,
- PDM_TEXT, PDM_UNDEFINED
-};
-
-class PictReader {
-
-private:
-
- SvStream * pPict; // Die einzulesende Pict-Datei
- VirtualDevice * pVirDev; // Hier werden die Drawing-Methoden aufgerufen.
- // Dabei findet ein Recording in das GDIMetaFile
- // statt.
- ULONG nOrigPos; // Anfaengliche Position in pPict
- UINT16 nOrigNumberFormat; // Anfaengliches Nummern-Format von pPict
- BOOL IsVersion2; // Ob es ein Version 2 Pictfile ist.
- Rectangle aBoundingRect; // Min/Max-Rechteck fuer die ganze Zeichnung
-
- Point aPenPosition;
- Point aTextPosition;
- Color aActForeColor;
- Color aActBackColor;
- PenStyle eActPenPenStyle;
- BrushStyle eActPenBrushStyle;
- BrushStyle eActFillStyle;
- BrushStyle eActBackStyle;
- USHORT nActPenSize;
- RasterOp eActROP;
- PictDrawingMethod eActMethod;
- Size aActOvalSize;
- Font aActFont;
-
- Fraction aHRes;
- Fraction aVRes;
-
- BOOL Callback(USHORT nPercent);
-
- Point ReadPoint();
-
- Point ReadDeltaH(Point aBase);
- Point ReadDeltaV(Point aBase);
-
- Point ReadUnsignedDeltaH(Point aBase);
- Point ReadUnsignedDeltaV(Point aBase);
-
- Size ReadSize();
-
- Color ReadColor();
-
- Color ReadRGBColor();
-
- void ReadRectangle(Rectangle & rRect);
-
- ULONG ReadPolygon(Polygon & rPoly);
-
- ULONG ReadPattern(PenStyle * pPenStyle, BrushStyle * pBrushStyle);
-
- ULONG ReadPixPattern(PenStyle * pPenStyle, BrushStyle * pBrushStyle);
-
- Rectangle aLastRect;
- ULONG ReadAndDrawRect(PictDrawingMethod eMethod);
- ULONG ReadAndDrawSameRect(PictDrawingMethod eMethod);
-
- Rectangle aLastRoundRect;
- ULONG ReadAndDrawRoundRect(PictDrawingMethod eMethod);
- ULONG ReadAndDrawSameRoundRect(PictDrawingMethod eMethod);
-
- Rectangle aLastOval;
- ULONG ReadAndDrawOval(PictDrawingMethod eMethod);
- ULONG ReadAndDrawSameOval(PictDrawingMethod eMethod);
-
- Polygon aLastPolygon;
- ULONG ReadAndDrawPolygon(PictDrawingMethod eMethod);
- ULONG ReadAndDrawSamePolygon(PictDrawingMethod eMethod);
-
- Rectangle aLastArcRect;
- ULONG ReadAndDrawArc(PictDrawingMethod eMethod);
- ULONG ReadAndDrawSameArc(PictDrawingMethod eMethod);
-
- ULONG ReadAndDrawRgn(PictDrawingMethod eMethod);
- ULONG ReadAndDrawSameRgn(PictDrawingMethod eMethod);
-
- void DrawingMethod(PictDrawingMethod eMethod);
-
- ULONG ReadAndDrawText();
-
- ULONG ReadPixMapEtc(Bitmap & rBitmap, BOOL bBaseAddr, BOOL bColorTable,
- Rectangle * pSrcRect, Rectangle * pDestRect,
- BOOL bMode, BOOL bMaskRgn);
-
- void ReadHeader();
- // Liesst den Kopf der Pict-Datei, setzt IsVersion2 und aBoundingRect
-
- ULONG ReadData(USHORT nOpcode);
- // Liesst die Daten eines Opcodes ein und fuehrt die Operation aus.
- // Auf jeden Fall wird die Anzahl der Datenbytes zu dem Opcode
- // zurueckgeliefert.
-
- void SetLineColor( const Color& rColor );
- void SetFillColor( const Color& rColor );
-
-public:
-
- PictReader() {}
-
- void ReadPict( SvStream & rStreamPict, GDIMetaFile & rGDIMetaFile );
- // Liesst aus dem Stream eine Pict-Datei und fuellt das GDIMetaFile
-
-};
-
-//------------------------------------------------------------------------------------------------
-
-#define SETBYTE \
- switch ( nPixelSize ) \
- { \
- case 1 : \
- pAcc->SetPixel( ny, nx++, nDat >> 7 ); \
- if ( nx == nWidth ) break; \
- pAcc->SetPixel( ny, nx++, nDat >> 6 ); \
- if ( nx == nWidth ) break; \
- pAcc->SetPixel( ny, nx++, nDat >> 5 ); \
- if ( nx == nWidth ) break; \
- pAcc->SetPixel( ny, nx++, nDat >> 4 ); \
- if ( nx == nWidth ) break; \
- pAcc->SetPixel( ny, nx++, nDat >> 3 ); \
- if ( nx == nWidth ) break; \
- pAcc->SetPixel( ny, nx++, nDat >> 2 ); \
- if ( nx == nWidth ) break; \
- pAcc->SetPixel( ny, nx++, nDat >> 1 ); \
- if ( nx == nWidth ) break; \
- pAcc->SetPixel( ny, nx++, nDat ); \
- break; \
- case 2 : \
- pAcc->SetPixel( ny, nx++, nDat >> 6 ); \
- if ( nx == nWidth ) break; \
- pAcc->SetPixel( ny, nx++, nDat >> 4 & 3); \
- if ( nx == nWidth ) break; \
- pAcc->SetPixel( ny, nx++, nDat >> 2 & 3 ); \
- if ( nx == nWidth ) break; \
- pAcc->SetPixel( ny, nx++, nDat & 3); \
- break; \
- case 4 : \
- pAcc->SetPixel( ny, nx++, nDat >> 4 ); \
- if ( nx == nWidth ) break; \
- pAcc->SetPixel( ny, nx++, nDat ); \
- break; \
- case 8 : \
- pAcc->SetPixel( ny, nx++, nDat ); \
- break; \
- }
-
-//------------------------------------------------------------------------------------------------
-
-#define BITMAPERROR \
-{ \
- if ( pAcc ) \
- aBitmap.ReleaseAccess( pAcc ); \
- if ( pReadAcc ) \
- aBitmap.ReleaseAccess( pReadAcc ); \
- return 0xffffffff; \
-}
-
-//=================== Methoden von PictReader ==============================
-
-void PictReader::SetLineColor( const Color& rColor )
-{
- pVirDev->SetLineColor( rColor );
-}
-
-void PictReader::SetFillColor( const Color& rColor )
-{
- pVirDev->SetFillColor( rColor );
-}
-
-BOOL PictReader::Callback(USHORT /*nPercent*/)
-{
-/*
- if (pCallback!=NULL) {
- if (((*pCallback)(pCallerData,nPercent))==TRUE) {
- pPict->SetError(SVSTREAM_FILEFORMAT_ERROR);
- return TRUE;
- }
- }
-*/
- return FALSE;
-}
-
-Point PictReader::ReadPoint()
-{
- short nx,ny;
-
- *pPict >> ny >> nx;
-
- return Point( (long)nx - aBoundingRect.Left(),
- (long)ny - aBoundingRect.Top() );
-}
-
-Point PictReader::ReadDeltaH(Point aBase)
-{
- signed char ndh;
-
- *pPict >> ((char&)ndh);
-
- return Point( aBase.X() + (long)ndh, aBase.Y() );
-}
-
-Point PictReader::ReadDeltaV(Point aBase)
-{
- signed char ndv;
-
- *pPict >> ((char&)ndv);
-
- return Point( aBase.X(), aBase.Y() + (long)ndv );
-}
-
-Point PictReader::ReadUnsignedDeltaH(Point aBase)
-{
- sal_uInt8 ndh;
-
- *pPict >> ndh;
-
- return Point( aBase.X() + (long)ndh, aBase.Y() );
-}
-
-Point PictReader::ReadUnsignedDeltaV(Point aBase)
-{
- sal_uInt8 ndv;
-
- *pPict >> ndv;
-
- return Point( aBase.X(), aBase.Y() + (long)ndv );
-}
-
-Size PictReader::ReadSize()
-{
- short nx,ny;
-
- *pPict >> ny >> nx;
-
- return Size( (long)nx, (long)ny );
-}
-
-Color PictReader::ReadColor()
-{
- sal_uInt32 nCol;
- Color aCol;
-
- *pPict >> nCol;
- switch (nCol)
- {
- case 33: aCol=Color( COL_BLACK ); break;
- case 30: aCol=Color( COL_WHITE ); break;
- case 205: aCol=Color( COL_LIGHTRED ); break;
- case 341: aCol=Color( COL_LIGHTGREEN ); break;
- case 409: aCol=Color( COL_LIGHTBLUE ); break;
- case 273: aCol=Color( COL_LIGHTCYAN ); break;
- case 137: aCol=Color( COL_LIGHTMAGENTA ); break;
- case 69: aCol=Color( COL_YELLOW ); break;
- default: aCol=Color( COL_LIGHTGRAY );
- }
- return aCol;
-}
-
-
-Color PictReader::ReadRGBColor()
-{
- USHORT nR, nG, nB;
-
- *pPict >> nR >> nG >> nB;
- return Color( (BYTE) ( nR >> 8 ), (BYTE) ( nG >> 8 ), (BYTE) ( nB >> 8 ) );
-}
-
-
-void PictReader::ReadRectangle(Rectangle & rRect)
-{
- Point aTopLeft, aBottomRight;
-
- aTopLeft=ReadPoint();
- aBottomRight=ReadPoint();
- aBottomRight.X() -= 1;
- aBottomRight.Y() -= 1;
- rRect=Rectangle(aTopLeft,aBottomRight);
-}
-
-
-ULONG PictReader::ReadPolygon(Polygon & rPoly)
-{
- USHORT nSize,i;
- ULONG nDataSize;
-
- *pPict >> nSize;
- pPict->SeekRel(8);
- nDataSize=(ULONG)nSize;
- nSize=(nSize-10)/4;
- rPoly.SetSize(nSize);
- for (i=0; i<nSize; i++) rPoly.SetPoint(ReadPoint(),i);
- return nDataSize;
-}
-
-ULONG PictReader::ReadPattern(PenStyle * pPenStyle, BrushStyle * pBrushStyle)
-{
- short nx,ny,nBitCount;
- unsigned char nbyte[8];
- BrushStyle eBrStyle;
- PenStyle ePnStyle;
- ULONG nHiBytes, nLoBytes;
-
- // Anzahl der Bits im Pattern zaehlen, die auf 1 gesetzt sind:
- nBitCount=0;
- for (ny=0; ny<8; ny++) {
- *pPict >> ((char&)nbyte[ny]);
- for (nx=0; nx<8; nx++) {
- if ( (nbyte[ny] & (1<<nx)) != 0 ) nBitCount++;
- }
- }
-
- // Pattern in 2 Langworten unterbringen:
- nHiBytes=(((((((ULONG)nbyte[0])<<8)|
- (ULONG)nbyte[1])<<8)|
- (ULONG)nbyte[2])<<8)|
- (ULONG)nbyte[3];
- nLoBytes=(((((((ULONG)nbyte[4])<<8)|
- (ULONG)nbyte[5])<<8)|
- (ULONG)nbyte[6])<<8)|
- (ULONG)nbyte[7];
-
- // Einen PenStyle machen:
- if (nBitCount<=0) ePnStyle=PEN_NULL;
- else if (nBitCount<=16) ePnStyle=PEN_DOT;
- else if (nBitCount<=32) ePnStyle=PEN_DASHDOT;
- else if (nBitCount<=48) ePnStyle=PEN_DASH;
- else ePnStyle=PEN_SOLID;
-
- // Einen BrushStyle machen:
- if (nHiBytes==0xffffffff && nLoBytes==0xffffffff) eBrStyle=BRUSH_SOLID;
- else if (nHiBytes==0xff000000 && nLoBytes==0x00000000) eBrStyle=BRUSH_HORZ;
- else if (nHiBytes==0x80808080 && nLoBytes==0x80808080) eBrStyle=BRUSH_VERT;
- else if (nHiBytes==0xff808080 && nLoBytes==0x80808080) eBrStyle=BRUSH_CROSS;
- else if (nHiBytes==0x01824428 && nLoBytes==0x10284482) eBrStyle=BRUSH_DIAGCROSS;
- else if (nHiBytes==0x80402010 && nLoBytes==0x08040201) eBrStyle=BRUSH_UPDIAG;
- else if (nHiBytes==0x01020408 && nLoBytes==0x10204080) eBrStyle=BRUSH_DOWNDIAG;
- else if (nBitCount<=24) eBrStyle=BRUSH_25;
- else if (nBitCount<=40) eBrStyle=BRUSH_50;
- else if (nBitCount<=56) eBrStyle=BRUSH_75;
- else eBrStyle=BRUSH_SOLID;
-
- if (pPenStyle!=0) *pPenStyle=ePnStyle;
-
- if (pBrushStyle!=0) *pBrushStyle=eBrStyle;
-
- return 8;
-}
-
-ULONG PictReader::ReadPixPattern(PenStyle * pPenStyle, BrushStyle * pBrushStyle)
-{
- // Keine Ahnung, ob dies richtig ist, weil kein Bild gefunden, das
- // PixPatterns enthaelt. Auch hier nur der Versuch, die Groesse der Daten zu
- // ermitteln, und einfache StarView-Styles daraus zu machen. Gluecklicherweise
- // enthaelt ein PixPattern immer auch ein normales Pattern.
-
- ULONG nDataSize;
- USHORT nPatType;
- Bitmap aBMP;
-
- *pPict >> nPatType;
- if (nPatType==1) {
- ReadPattern(pPenStyle,pBrushStyle);
- nDataSize=ReadPixMapEtc(aBMP,FALSE,TRUE,NULL,NULL,FALSE,FALSE);
- if (nDataSize!=0xffffffff) nDataSize+=10;
- }
- else if (nPatType==2) {
- ReadPattern(pPenStyle,pBrushStyle);
- pPict->SeekRel(6); // RGBColor
- nDataSize=16;
- }
- else nDataSize=0xffffffff;
-
- return nDataSize;
-}
-
-ULONG PictReader::ReadAndDrawRect(PictDrawingMethod eMethod)
-{
- ReadRectangle(aLastRect);
- DrawingMethod(eMethod);
- pVirDev->DrawRect(aLastRect);
- return 8;
-}
-
-ULONG PictReader::ReadAndDrawSameRect(PictDrawingMethod eMethod)
-{
- DrawingMethod(eMethod);
- pVirDev->DrawRect(aLastRect);
- return 0;
-}
-
-ULONG PictReader::ReadAndDrawRoundRect(PictDrawingMethod eMethod)
-{
- ReadRectangle(aLastRoundRect);
- DrawingMethod(eMethod);
- pVirDev->DrawRect(aLastRoundRect,aActOvalSize.Width(),aActOvalSize.Height());
- return 8;
-}
-
-ULONG PictReader::ReadAndDrawSameRoundRect(PictDrawingMethod eMethod)
-{
- DrawingMethod(eMethod);
- pVirDev->DrawRect(aLastRoundRect,aActOvalSize.Width(),aActOvalSize.Height());
- return 0;
-}
-
-ULONG PictReader::ReadAndDrawOval(PictDrawingMethod eMethod)
-{
- ReadRectangle(aLastOval);
- DrawingMethod(eMethod);
- pVirDev->DrawEllipse(aLastOval);
- return 8;
-}
-
-ULONG PictReader::ReadAndDrawSameOval(PictDrawingMethod eMethod)
-{
- DrawingMethod(eMethod);
- pVirDev->DrawEllipse(aLastOval);
- return 0;
-}
-
-ULONG PictReader::ReadAndDrawPolygon(PictDrawingMethod eMethod)
-{
- ULONG nDataSize;
-
- nDataSize=ReadPolygon(aLastPolygon);
- DrawingMethod(eMethod);
- if (eMethod==PDM_FRAME) pVirDev->DrawPolyLine(aLastPolygon);
- else pVirDev->DrawPolygon(aLastPolygon);
- return nDataSize;
-}
-
-ULONG PictReader::ReadAndDrawSamePolygon(PictDrawingMethod eMethod)
-{
- DrawingMethod(eMethod);
- if (eMethod==PDM_FRAME) pVirDev->DrawPolyLine(aLastPolygon);
- else pVirDev->DrawPolygon(aLastPolygon);
- return 0;
-}
-
-
-ULONG PictReader::ReadAndDrawArc(PictDrawingMethod eMethod)
-{
- short nstartAngle, narcAngle;
- double fAng1, fAng2;
- Point aStartPt, aEndPt, aCenter;
-
- ReadRectangle(aLastArcRect);
- *pPict >> nstartAngle >> narcAngle;
- if (narcAngle<0) {
- nstartAngle = nstartAngle + narcAngle;
- narcAngle=-narcAngle;
- }
- fAng1=((double)nstartAngle)/180.0*3.14159265359;
- fAng2=((double)(nstartAngle+narcAngle))/180.0*3.14159265359;
- aCenter=Point((aLastArcRect.Left()+aLastArcRect.Right())/2,
- (aLastArcRect.Top()+aLastArcRect.Bottom())/2);
- aStartPt=Point(aCenter.X()+(long)( sin(fAng2)*256.0),
- aCenter.Y()+(long)(-cos(fAng2)*256.0));
- aEndPt= Point(aCenter.X()+(long)( sin(fAng1)*256.0),
- aCenter.Y()+(long)(-cos(fAng1)*256.0));
- DrawingMethod(eMethod);
- if (eMethod==PDM_FRAME) pVirDev->DrawArc(aLastArcRect,aStartPt,aEndPt);
- else pVirDev->DrawPie(aLastArcRect,aStartPt,aEndPt);
- return 12;
-}
-
-ULONG PictReader::ReadAndDrawSameArc(PictDrawingMethod eMethod)
-{
- short nstartAngle, narcAngle;
- double fAng1, fAng2;
- Point aStartPt, aEndPt, aCenter;
-
- *pPict >> nstartAngle >> narcAngle;
- if (narcAngle<0) {
- nstartAngle = nstartAngle + narcAngle;
- narcAngle=-narcAngle;
- }
- fAng1=((double)nstartAngle)/180.0*3.14159265359;
- fAng2=((double)(nstartAngle+narcAngle))/180.0*3.14159265359;
- aCenter=Point((aLastArcRect.Left()+aLastArcRect.Right())/2,
- (aLastArcRect.Top()+aLastArcRect.Bottom())/2);
- aStartPt=Point(aCenter.X()+(long)( sin(fAng2)*256.0),
- aCenter.Y()+(long)(-cos(fAng2)*256.0));
- aEndPt= Point(aCenter.X()+(long)( sin(fAng1)*256.0),
- aCenter.Y()+(long)(-cos(fAng1)*256.0));
- DrawingMethod(eMethod);
- if (eMethod==PDM_FRAME) pVirDev->DrawArc(aLastArcRect,aStartPt,aEndPt);
- else pVirDev->DrawPie(aLastArcRect,aStartPt,aEndPt);
- return 4;
-}
-
-ULONG PictReader::ReadAndDrawRgn(PictDrawingMethod eMethod)
-{
- USHORT nSize;
-
- DrawingMethod(eMethod);
- *pPict >> nSize;
- // ...???...
- return (ULONG)nSize;
-}
-
-ULONG PictReader::ReadAndDrawSameRgn(PictDrawingMethod eMethod)
-{
- DrawingMethod(eMethod);
- // ...???...
- return 0;
-}
-
-void PictReader::DrawingMethod(PictDrawingMethod eMethod)
-{
- if( eActMethod==eMethod ) return;
- switch (eMethod) {
- case PDM_FRAME:
- SetLineColor( aActForeColor );
- SetFillColor( Color(COL_TRANSPARENT) );
- pVirDev->SetRasterOp(eActROP);
- break;
- case PDM_PAINT:
- SetLineColor( Color(COL_TRANSPARENT) );
- SetFillColor( aActForeColor );
- pVirDev->SetRasterOp(eActROP);
- break;
- case PDM_ERASE:
- SetLineColor( Color(COL_TRANSPARENT) );
- SetFillColor( aActForeColor );
- pVirDev->SetRasterOp(ROP_OVERPAINT);
- break;
- case PDM_INVERT:
- SetLineColor( Color(COL_TRANSPARENT));
- SetFillColor( Color( COL_BLACK ) );
- pVirDev->SetRasterOp(ROP_INVERT);
- break;
- case PDM_FILL:
- SetLineColor( Color(COL_TRANSPARENT) );
- SetFillColor( aActForeColor );
- pVirDev->SetRasterOp(ROP_OVERPAINT);
- break;
- case PDM_TEXT:
- aActFont.SetColor(aActForeColor);
- aActFont.SetFillColor(aActBackColor);
- aActFont.SetTransparent(TRUE);
- pVirDev->SetFont(aActFont);
- pVirDev->SetRasterOp(ROP_OVERPAINT);
- break;
- default:
- break; // -Wall undefined not handled...
- }
- eActMethod=eMethod;
-}
-
-ULONG PictReader::ReadAndDrawText()
-{
- char nByteLen;
- sal_uInt32 nLen, nDataLen;
- sal_Char sText[256];
-
- DrawingMethod(PDM_TEXT);
- *pPict >> nByteLen; nLen=((ULONG)nByteLen)&0x000000ff;
- nDataLen = nLen + 1;
- pPict->Read( &sText, nLen );
-
- // Stoerende Steuerzeuichen wegnehmen:
- while ( nLen > 0 && ( (unsigned char)sText[ nLen - 1 ] ) < 32 )
- nLen--;
- sText[ nLen ] = 0;
- String aString( (const sal_Char*)&sText, gsl_getSystemTextEncoding() );
- pVirDev->DrawText( Point( aTextPosition.X(), aTextPosition.Y() ), aString );
- return nDataLen;
-}
-
-ULONG PictReader::ReadPixMapEtc( Bitmap &rBitmap, BOOL bBaseAddr, BOOL bColorTable, Rectangle* pSrcRect,
- Rectangle* pDestRect, BOOL bMode, BOOL bMaskRgn )
-{
- Bitmap aBitmap;
- BitmapWriteAccess* pAcc = NULL;
- BitmapReadAccess* pReadAcc = NULL;
- USHORT ny, nx, nColTabSize;
- USHORT nRowBytes, nBndX, nBndY, nWidth, nHeight, nVersion, nPackType, nPixelType,
- nPixelSize, nCmpCount, nCmpSize;
- sal_uInt32 nPackSize, nPlaneBytes, nHRes, nVRes;
- BYTE nDat, nRed, nGreen, nBlue, nDummy;
- ULONG i, nDataSize = 0;
-
- // In nDataSize wird mitgerechnet, wie gross die gesammten Daten sind.
- nDataSize = 0;
-
- // ggf. BaseAddr ueberlesen
- if ( bBaseAddr )
- {
- pPict->SeekRel( 4 );
- nDataSize += 4;
- }
-
- // PixMap oder Bitmap-Struktur einlesen;
- *pPict >> nRowBytes >> nBndY >> nBndX >> nHeight >> nWidth;
- nHeight = nHeight - nBndY;
- nWidth = nWidth - nBndX;
-
- if ( ( nRowBytes & 0x8000 ) != 0 )
- { // it is a PixMap
- nRowBytes &= 0x3fff;
- *pPict >> nVersion >> nPackType >> nPackSize >> nHRes >> nVRes >> nPixelType >>
- nPixelSize >> nCmpCount >> nCmpSize >> nPlaneBytes;
-
- pPict->SeekRel( 8 );
- nDataSize += 46;
-
- sal_uInt16 nDstBitCount = nPixelSize;
- if ( nDstBitCount > 8 )
- nDstBitCount = 24;
- else if ( nDstBitCount == 2 )
- nDstBitCount = 4;
- aBitmap = Bitmap( Size( nWidth, nHeight ), nDstBitCount );
-
- if ( ( pAcc = aBitmap.AcquireWriteAccess() ) == NULL )
- BITMAPERROR;
-
- if ( bColorTable )
- {
- pPict->SeekRel( 6 );
- *pPict >> nColTabSize;
-
- if ( ++nColTabSize > 256 )
- BITMAPERROR;
-
- pAcc->SetPaletteEntryCount( nColTabSize );
-
- for ( i = 0; i < nColTabSize; i++ )
- {
- pPict->SeekRel(2);
- *pPict >> nRed >> nDummy >> nGreen >> nDummy >> nBlue >> nDummy;
- pAcc->SetPaletteColor( (USHORT) i, BitmapColor( nRed, nGreen, nBlue ) );
- }
- nDataSize += 8 + nColTabSize * 8;
- }
- }
- else
- {
- nRowBytes &= 0x3fff;
- nVersion = 0;
- nPackType = 0;
- nPackSize = nHRes = nVRes = nPlaneBytes = 0;
- nPixelType = 0;
- nPixelSize = nCmpCount = nCmpSize = 1;
- nDataSize += 10;
- aBitmap = Bitmap( Size( nWidth, nHeight ), 1 );
- if ( ( pAcc = aBitmap.AcquireWriteAccess() ) == NULL )
- BITMAPERROR;
- pAcc->SetPaletteEntryCount( 2 );
- pAcc->SetPaletteColor( 0, BitmapColor( 0xff, 0xff, 0xff ) );
- pAcc->SetPaletteColor( 1, BitmapColor( 0, 0, 0 ) );
- }
-
- // ggf. Quell-Rechteck einlesen:
- if ( pSrcRect != 0)
- {
- USHORT nTop, nLeft, nBottom, nRight;
- *pPict >> nTop >> nLeft >> nBottom >> nRight;
- *pSrcRect = Rectangle( (ULONG)nLeft, (ULONG)nTop, (ULONG)nRight, (ULONG)nBottom );
- nDataSize += 8;
- }
-
- // ggf. Ziel-Rechteck einlesen:
- if ( pDestRect != 0 )
- {
- Point aTL, aBR;
- aTL = ReadPoint();
- aBR = ReadPoint();
- *pDestRect = Rectangle( aTL, aBR );
- nDataSize += 8;
- }
-
- // ggf. Modus einlesen (bzw. ueberspringen):
- if ( bMode )
- {
- pPict->SeekRel(2);
- nDataSize += 2;
- }
-
- // ggf. Region einlesen (bzw. ueberspringen):
- if ( bMaskRgn )
- {
- USHORT nSize;
- *pPict >> nSize;
- pPict->SeekRel( nSize - 2 );
- nDataSize += (ULONG)nSize;
- }
-
-// aSMem << (nHRes/1665L) << (nVRes/1665L) << ((ULONG)0) << ((ULONG)0);
-
- // Lese und Schreibe Bitmap-Bits:
- if ( nPixelSize == 1 || nPixelSize == 2 || nPixelSize == 4 || nPixelSize == 8 )
- {
- BYTE nByteCountAsByte, nFlagCounterByte;
- USHORT nByteCount, nCount, nSrcBPL, nDestBPL;
-
- if ( nPixelSize == 1 ) nSrcBPL = ( nWidth + 7 ) >> 3;
- else if ( nPixelSize == 2 ) nSrcBPL = ( nWidth + 3 ) >> 2;
- else if ( nPixelSize == 4 ) nSrcBPL = ( nWidth + 1 ) >> 1;
- else nSrcBPL = nWidth;
- nDestBPL = ( nSrcBPL + 3 ) & 0xfffc;
- if ( nRowBytes < nSrcBPL || nRowBytes > nDestBPL )
- BITMAPERROR;
-
- for ( ny = 0; ny < nHeight; ny++ )
- {
- nx = 0;
- if ( nRowBytes < 8 || nPackType == 1 )
- {
- for ( i = 0; i < nRowBytes; i++ )
- {
- *pPict >> nDat;
- if ( nx < nWidth )
- SETBYTE;
- }
- nDataSize += nRowBytes;
- }
- else
- {
- if ( nRowBytes > 250 )
- {
- *pPict >> nByteCount;
- nDataSize += 2 + (ULONG)nByteCount;
- }
- else
- {
- *pPict >> nByteCountAsByte;
- nByteCount = ( (USHORT)nByteCountAsByte ) & 0x00ff;
- nDataSize += 1 + (ULONG)nByteCount;
- }
-
- while ( nByteCount )
- {
- *pPict >> nFlagCounterByte;
- if ( ( nFlagCounterByte & 0x80 ) == 0 )
- {
- nCount = ( (USHORT)nFlagCounterByte ) + 1;
- for ( i = 0; i < nCount; i++ )
- {
- *pPict >> nDat;
- if ( nx < nWidth )
- SETBYTE;
- }
- nByteCount -= 1 + nCount;
- }
- else
- {
- nCount = ( 1 - ( ( (USHORT)nFlagCounterByte ) | 0xff00 ) );
- *pPict >> nDat;
- for ( i = 0; i < nCount; i++ )
- {
- if ( nx < nWidth )
- SETBYTE;
- }
- nByteCount -= 2;
- }
- }
- }
- }
- }
- else if ( nPixelSize == 16 )
- {
- BYTE nByteCountAsByte, nFlagCounterByte;
- USHORT nByteCount, nCount, nDestBPL,nD;
- ULONG nSrcBitsPos;
-
- if ( nRowBytes < 2 * nWidth )
- BITMAPERROR;
-
- nDestBPL = ( ( 3 * nWidth ) + 0x0003 ) & 0xfffc;
-
- for ( ny = 0; ny < nHeight; ny++ )
- {
- nx = 0;
- if ( nRowBytes < 8 || nPackType == 1 )
- {
- for ( i = 0; i < nWidth; i++ )
- {
- *pPict >> nD;
- nRed = (BYTE)( nD >> 7 );
- nGreen = (BYTE)( nD >> 2 );
- nBlue = (BYTE)( nD << 3 );
- pAcc->SetPixel( ny, nx++, BitmapColor( nRed, nGreen, nBlue ) );
- }
- nDataSize += ( (ULONG)nWidth ) * 2;
- }
- else
- {
- nSrcBitsPos = pPict->Tell();
- if ( nRowBytes > 250 )
- {
- *pPict >> nByteCount;
- nByteCount += 2;
- }
- else
- {
- *pPict >> nByteCountAsByte;
- nByteCount = ( (USHORT)nByteCountAsByte ) & 0x00ff;
- nByteCount++;
- }
- while ( nx != nWidth )
- {
- *pPict >> nFlagCounterByte;
- if ( (nFlagCounterByte & 0x80) == 0)
- {
- nCount=((USHORT)nFlagCounterByte)+1;
- if ( nCount + nx > nWidth) // SJ: the RLE decoding seems not to be correct here,
- nCount = nWidth - nx; // I don't want to change this until I have a bugdoc for
- for (i=0; i<nCount; i++) // this case. Have a look at 32bit, there I changed the
- { // encoding, so that it is used a straight forward array
- *pPict >> nD;
- nRed = (BYTE)( nD >> 7 );
- nGreen = (BYTE)( nD >> 2 );
- nBlue = (BYTE)( nD << 3 );
- pAcc->SetPixel( ny, nx++, BitmapColor( nRed, nGreen, nBlue ) );
- }
- }
- else
- {
- nCount=(1-(((USHORT)nFlagCounterByte)|0xff00));
- if ( nCount + nx > nWidth )
- nCount = nWidth - nx;
- *pPict >> nD;
- nRed = (BYTE)( nD >> 7 );
- nGreen = (BYTE)( nD >> 2 );
- nBlue = (BYTE)( nD << 3 );
- for (i=0; i<nCount; i++)
- {
- pAcc->SetPixel( ny, nx++, BitmapColor( nRed, nGreen, nBlue ) );
- }
- }
- }
- nDataSize+=(ULONG)nByteCount;
- pPict->Seek(nSrcBitsPos+(ULONG)nByteCount);
- }
- }
- }
- else if (nPixelSize==32)
- {
- BYTE nByteCountAsByte, nFlagCounterByte;
- USHORT nByteCount, nCount;
- ULONG nSrcBitsPos;
- BitmapColor aBitmapColor;
- if ( ( pReadAcc = aBitmap.AcquireReadAccess() ) == NULL )
- BITMAPERROR;
- if ( nRowBytes != 4*nWidth )
- BITMAPERROR;
-
- if ( nRowBytes < 8 || nPackType == 1 )
- {
- for ( ny = 0; ny < nHeight; ny++ )
- {
- if ( nRowBytes < 8 || nPackType == 1 )
- {
- for ( nx = 0; nx < nWidth; nx++ )
- {
- *pPict >> nDummy >> nRed >> nGreen >> nBlue;
- pAcc->SetPixel( ny, nx, BitmapColor( nRed, nGreen, nBlue) );
- }
- nDataSize += ( (ULONG)nWidth ) * 4;
- }
- }
- }
- else if ( nPackType == 2 )
- {
- for ( ny = 0; ny < nHeight; ny++ )
- {
- for ( nx = 0; nx < nWidth; nx++ )
- {
- *pPict >> nRed >> nGreen >> nBlue;
- pAcc->SetPixel( ny, nx, BitmapColor( nRed, nGreen, nBlue ) );
- }
- nDataSize += ( (ULONG)nWidth ) * 3;
- }
- }
- else
- {
- if ( ( nCmpCount == 3 ) || ( nCmpCount == 4 ) )
- {
- sal_uInt8* pScanline = new sal_uInt8[ nWidth * nCmpCount ];
- for ( ny = 0; ny < nHeight; ny++ )
- {
- nSrcBitsPos = pPict->Tell();
- if ( nRowBytes > 250 )
- {
- *pPict >> nByteCount;
- nByteCount += 2;
- }
- else
- {
- *pPict >> nByteCountAsByte;
- nByteCount = (BYTE)nByteCountAsByte;
- nByteCount++;
- }
- i = 0;
- while( i < (sal_uInt32)( nWidth * nCmpCount ) )
- {
- *pPict >> nFlagCounterByte;
- if ( ( nFlagCounterByte & 0x80 ) == 0)
- {
- nCount = ( (USHORT)nFlagCounterByte ) + 1;
- if ( ( i + nCount ) > (sal_uInt32)( nWidth * nCmpCount ) )
- nCount = (sal_uInt16)( nWidth * nCmpCount - i );
- while( nCount-- )
- {
- *pPict >> nDat;
- pScanline[ i++ ] = nDat;
- }
- }
- else
- {
- nCount = ( 1 - ( ( (USHORT)nFlagCounterByte ) | 0xff00 ) );
- if ( ( i + nCount ) > (sal_uInt32)( nWidth * nCmpCount ) )
- nCount = (sal_uInt16)( nWidth * nCmpCount - i );
- *pPict >> nDat;
- while( nCount-- )
- pScanline[ i++ ] = nDat;
- }
- }
- sal_uInt8* pTmp = pScanline;
- if ( nCmpCount == 4 )
- pTmp += nWidth;
- for ( nx = 0; nx < nWidth; pTmp++ )
- pAcc->SetPixel( ny, nx++, BitmapColor( *pTmp, pTmp[ nWidth ], pTmp[ 2 * nWidth ] ) );
- nDataSize += (ULONG)nByteCount;
- pPict->Seek( nSrcBitsPos + (ULONG)nByteCount );
- }
- delete[] pScanline;
- }
- }
- }
- else
- BITMAPERROR;
- if ( pReadAcc )
- aBitmap.ReleaseAccess( pReadAcc );
- aBitmap.ReleaseAccess( pAcc );
- rBitmap = aBitmap;
- return nDataSize;
-}
-
-void PictReader::ReadHeader()
-{
- char nC;
- short y1,x1,y2,x2;
-
- sal_Char sBuf[ 3 ];
- pPict->SeekRel( 10 );
- pPict->Read( sBuf, 3 );
- if ( sBuf[ 0 ] == 0x00 && sBuf[ 1 ] == 0x11 && ( sBuf[ 2 ] == 0x01 || sBuf[ 2 ] == 0x02 ) )
- pPict->SeekRel( -13 ); // this maybe a pict from a ms document
- else
- pPict->SeekRel( 512 - 13 ); // 512 Bytes Muell am Anfang
-
- pPict->SeekRel(2); // Lo-16-bits von "picture size"
- *pPict >> y1 >> x1 >> y2 >> x2; // Rahmen-Rechteck des Bildes
- aBoundingRect=Rectangle( x1,y1, --x2, --y2 );
-
- // Jetzt kommen x-beliebig viele Nullen
- // (in manchen Dateien tatsaechlich mehr als eine):
- do { *pPict >> nC; } while (nC==0 && pPict->IsEof()==FALSE);
-
- // dann sollte der Versions-Opcode 0x11 folgen, dann die Versionsnummer:
- if (nC==0x11)
- {
- *pPict >> nC;
- if ( nC == 0x01 )
- IsVersion2 = FALSE; // Version 1
- else // Version 2 oder hoeher
- {
- short nExtVer;
- // 3 Bytes ueberspringen, um auf
- // ExtVersion2 oder Version2 zu kommen
- pPict->SeekRel( 3 );
- *pPict >> nExtVer;
-
- // nachsehen, ob wir einen Extended-Version2-Header (==-2) haben
- // oder einen einfachen Version2-Header (==-1);
- // dementsprechend Aufloesung einlesen oder nicht
- if ( nExtVer == -2 )
- {
- sal_Int16 nReserved;
- sal_Int32 nHResFixed, nVResFixed;
- *pPict >> nReserved >> nHResFixed >> nVResFixed;
- double fHRes = nHResFixed;
- fHRes /= 65536;
- double fVRes = nVResFixed;
- fVRes /= 65536;
- aHRes /= fHRes;
- aVRes /= fVRes;
- *pPict >> y1 >> x1 >> y2 >> x2; // reading the optimal bounding rect
- aBoundingRect=Rectangle( x1,y1, --x2, --y2 );
- pPict->SeekRel( -22 );
- }
- else
- {
- pPict->SeekRel( -4 );
- }
- IsVersion2=TRUE;
- }
- }
- else {
- // Eigentlich ist dies wohl kein Pict-File, aber es gibt tatsaechlich
- // Dateien, bei denen mehr als 512 Bytes "Muell" am Anfang stehen.
- // Somit koennte es theoretisch folgende Art von Header geben:
- // <beliebig viele Bytes Muell> <Picture-Size (Lo-Bytes)> <BoundingRect>
- // <beliebig viele Nullen> <0x11> ..
- // Da aber in so einem Fall die Position von <BoundingRect> kaum auszumachen ist,
- // gehen wir nun davon aus, dass in einer Datei immer entweder genau 512 Bytes Muell
- // am Anfang sind (wie oben versucht), oder (wie normalerweise ueblich) genau eine 0 zwischen
- // Bounding-Rectangle und 0x11. Des weiteren mag es hoechstens 1024 Bytes Muell geben,
- // und das Ganze nur fuer Version 1 oder 2.
- // Somit suchen wir nun nach der Folge 0x00,0x11,0x01 oder 0x00,0x11,0x02 innerhalb der
- // "zweiten" 512 Bytes, und nehmen an, dass davor das Bounding-Rect steht, und hoffen
- // dass das alles so seine Richtigkeit hat.
- BYTE n1,n2,n3;
- USHORT i,Found;
- pPict->Seek(522);
- Found=0;
- *pPict >> n1 >> n2 >> n3;
- for (i=0; i<512; i++) {
- if (n1==0x00 && n2==0x11 && (n3==0x01 || n3==0x02)) { Found=1; break; }
- n1=n2; n2=n3; *pPict >> n3;
- }
- if (Found!=0) {
- pPict->SeekRel(-11);
- *pPict >> y1 >> x1 >> y2 >> x2;
- // Lieber nochmal nachsehen, ob das Bounding-Rectangle gut zu sein scheint:
- if (x1+10<x2 && y1+10<y2 && y1>=-2048 && x1>=-2048 && x2<=2048 && y2<=2048) {
- aBoundingRect=Rectangle( x1, y1, --x2, --y2 );
- if (n3==0x01) {
- pPict->SeekRel(3);
- IsVersion2=FALSE;
- }
- else {
- pPict->SeekRel(4);
- IsVersion2=TRUE;
- }
- }
- else pPict->SetError(SVSTREAM_FILEFORMAT_ERROR);
- }
- else pPict->SetError(SVSTREAM_FILEFORMAT_ERROR);
- }
-}
-
-
-ULONG PictReader::ReadData(USHORT nOpcode)
-{
- USHORT nUSHORT;
- Point aPoint;
- ULONG nDataSize=0;
-
- switch(nOpcode) {
-
- case 0x0000: // NOP
- nDataSize=0;
- break;
-
- case 0x0001: { // Clip
- Rectangle aRect;
- *pPict >> nUSHORT;
- nDataSize=nUSHORT;
- ReadRectangle(aRect);
- pVirDev->SetClipRegion( Region( aRect ) );
- break;
- }
- case 0x0002: // BkPat
- nDataSize=ReadPattern(NULL,&eActBackStyle);
- eActMethod=PDM_UNDEFINED;
- break;
-
- case 0x0003: // TxFont
- *pPict >> nUSHORT;
- if (nUSHORT <= 1) aActFont.SetFamily(FAMILY_SWISS);
- else if (nUSHORT <= 12) aActFont.SetFamily(FAMILY_DECORATIVE);
- else if (nUSHORT <= 20) aActFont.SetFamily(FAMILY_ROMAN);
- else if (nUSHORT == 21) aActFont.SetFamily(FAMILY_SWISS);
- else if (nUSHORT == 22) aActFont.SetFamily(FAMILY_MODERN);
- else if (nUSHORT <= 1023) aActFont.SetFamily(FAMILY_SWISS);
- else aActFont.SetFamily(FAMILY_ROMAN);
- if ( nUSHORT == 23 ) aActFont.SetCharSet( RTL_TEXTENCODING_SYMBOL );
- else aActFont.SetCharSet( gsl_getSystemTextEncoding() );
- eActMethod=PDM_UNDEFINED;
- nDataSize=2;
- break;
-
- case 0x0004: { // TxFace
- char nFace;
- *pPict >> nFace;
- if ( (nFace & 0x01)!=0 ) aActFont.SetWeight(WEIGHT_BOLD);
- else aActFont.SetWeight(WEIGHT_NORMAL);
- if ( (nFace & 0x02)!=0 ) aActFont.SetItalic(ITALIC_NORMAL);
- else aActFont.SetItalic(ITALIC_NONE);
- if ( (nFace & 0x04)!=0 ) aActFont.SetUnderline(UNDERLINE_SINGLE);
- else aActFont.SetUnderline(UNDERLINE_NONE);
- if ( (nFace & 0x08)!=0 ) aActFont.SetOutline(TRUE);
- else aActFont.SetOutline(FALSE);
- if ( (nFace & 0x10)!=0 ) aActFont.SetShadow(TRUE);
- else aActFont.SetShadow(FALSE);
- eActMethod=PDM_UNDEFINED;
- nDataSize=1;
- break;
- }
- case 0x0005: // TxMode
- nDataSize=2;
- break;
-
- case 0x0006: // SpExtra
- nDataSize=4;
- break;
-
- case 0x0007: { // PnSize
- Size aSize;
- aSize=ReadSize();
- nActPenSize=(USHORT)((aSize.Width()+aSize.Height())/2);
- eActMethod=PDM_UNDEFINED;
- nDataSize=4;
- break;
- }
- case 0x0008: // PnMode
- *pPict >> nUSHORT;
- switch (nUSHORT & 0x0007) {
- case 0: eActROP=ROP_OVERPAINT; break; // Copy
- case 1: eActROP=ROP_OVERPAINT; break; // Or
- case 2: eActROP=ROP_XOR; break; // Xor
- case 3: eActROP=ROP_OVERPAINT; break; // Bic
- case 4: eActROP=ROP_INVERT; break; // notCopy
- case 5: eActROP=ROP_OVERPAINT; break; // notOr
- case 6: eActROP=ROP_XOR; break; // notXor
- case 7: eActROP=ROP_OVERPAINT; break; // notBic
- }
- eActMethod=PDM_UNDEFINED;
- nDataSize=2;
- break;
-
- case 0x0009: // PnPat
- nDataSize=ReadPattern(&eActPenPenStyle,&eActPenBrushStyle);
- eActMethod=PDM_UNDEFINED;
- break;
-
- case 0x000a: // FillPat
- nDataSize=ReadPattern(NULL,&eActFillStyle);
- eActMethod=PDM_UNDEFINED;
- break;
-
- case 0x000b: // OvSize
- aActOvalSize=ReadSize();
- nDataSize=4;
- break;
-
- case 0x000c: // Origin
- nDataSize=4;
- break;
-
- case 0x000d: // TxSize
- {
- *pPict >> nUSHORT;
- aActFont.SetSize( Size( 0, (long)nUSHORT ) );
- eActMethod=PDM_UNDEFINED;
- nDataSize=2;
- }
- break;
-
- case 0x000e: // FgColor
- aActForeColor=ReadColor();
- eActMethod=PDM_UNDEFINED;
- nDataSize=4;
- break;
-
- case 0x000f: // BkColor
- aActBackColor=ReadColor();
- nDataSize=4;
- break;
-
- case 0x0010: // TxRatio
- nDataSize=8;
- break;
-
- case 0x0011: // VersionOp
- nDataSize=1;
- break;
-
- case 0x0012: // BkPixPat
- nDataSize=ReadPixPattern(NULL,&eActBackStyle);
- eActMethod=PDM_UNDEFINED;
- break;
-
- case 0x0013: // PnPixPat
- nDataSize=ReadPixPattern(&eActPenPenStyle,&eActPenBrushStyle);
- eActMethod=PDM_UNDEFINED;
- break;
-
- case 0x0014: // FillPixPat
- nDataSize=ReadPixPattern(NULL,&eActFillStyle);
- eActMethod=PDM_UNDEFINED;
- break;
-
- case 0x0015: // PnLocHFrac
- nDataSize=2;
- break;
-
- case 0x0016: // ChExtra
- nDataSize=2;
- break;
-
- case 0x0017: // Reserved (0 Bytes)
- case 0x0018: // Reserved (0 Bytes)
- case 0x0019: // Reserved (0 Bytes)
- nDataSize=0;
- break;
-
- case 0x001a: // RGBFgCol
- aActForeColor=ReadRGBColor();
- eActMethod=PDM_UNDEFINED;
- nDataSize=6;
- break;
-
- case 0x001b: // RGBBkCol
- aActBackColor=ReadRGBColor();
- eActMethod=PDM_UNDEFINED;
- nDataSize=6;
- break;
-
- case 0x001c: // HiliteMode
- nDataSize=0;
- break;
-
- case 0x001d: // HiliteColor
- nDataSize=6;
- break;
-
- case 0x001e: // DefHilite
- nDataSize=0;
- break;
-
- case 0x001f: // OpColor
- nDataSize=6;
- break;
-
- case 0x0020: // Line
- aPoint=ReadPoint(); aPenPosition=ReadPoint();
- DrawingMethod(PDM_FRAME);
- pVirDev->DrawLine(aPoint,aPenPosition);
- nDataSize=8;
- break;
-
- case 0x0021: // LineFrom
- aPoint=aPenPosition; aPenPosition=ReadPoint();
- DrawingMethod(PDM_FRAME);
- pVirDev->DrawLine(aPoint,aPenPosition);
- nDataSize=4;
- break;
-
- case 0x0022: // ShortLine
- aPoint=ReadPoint();
- aPenPosition=ReadDeltaH(aPoint);
- aPenPosition=ReadDeltaV(aPenPosition);
- DrawingMethod(PDM_FRAME);
- pVirDev->DrawLine(aPoint,aPenPosition);
- nDataSize=6;
- break;
-
- case 0x0023: // ShortLineFrom
- aPoint=aPenPosition;
- aPenPosition=ReadDeltaH(aPoint);
- aPenPosition=ReadDeltaV(aPenPosition);
- DrawingMethod(PDM_FRAME);
- pVirDev->DrawLine(aPoint,aPenPosition);
- nDataSize=2;
- break;
-
- case 0x0024: // Reserved (n Bytes)
- case 0x0025: // Reserved (n Bytes)
- case 0x0026: // Reserved (n Bytes)
- case 0x0027: // Reserved (n Bytes)
- *pPict >> nUSHORT;
- nDataSize=2+nUSHORT;
- break;
-
- case 0x0028: // LongText
- aTextPosition=ReadPoint();
- nDataSize=4+ReadAndDrawText();
- break;
-
- case 0x0029: // DHText
- aTextPosition=ReadUnsignedDeltaH(aTextPosition);
- nDataSize=1+ReadAndDrawText();
- break;
-
- case 0x002a: // DVText
- aTextPosition=ReadUnsignedDeltaV(aTextPosition);
- nDataSize=1+ReadAndDrawText();
- break;
-
- case 0x002b: // DHDVText
- aTextPosition=ReadUnsignedDeltaH(aTextPosition);
- aTextPosition=ReadUnsignedDeltaV(aTextPosition);
- nDataSize=2+ReadAndDrawText();
- break;
-
- case 0x002c: { // fontName
- char sFName[ 256 ], nByteLen;
- sal_uInt16 nLen;
- *pPict >> nUSHORT; nDataSize=nUSHORT+2;
- *pPict >> nUSHORT;
- if (nUSHORT <= 1) aActFont.SetFamily(FAMILY_SWISS);
- else if (nUSHORT <= 12) aActFont.SetFamily(FAMILY_DECORATIVE);
- else if (nUSHORT <= 20) aActFont.SetFamily(FAMILY_ROMAN);
- else if (nUSHORT == 21) aActFont.SetFamily(FAMILY_SWISS);
- else if (nUSHORT == 22) aActFont.SetFamily(FAMILY_MODERN);
- else if (nUSHORT <= 1023) aActFont.SetFamily(FAMILY_SWISS);
- else aActFont.SetFamily(FAMILY_ROMAN);
- if (nUSHORT==23) aActFont.SetCharSet( RTL_TEXTENCODING_SYMBOL);
- else aActFont.SetCharSet( gsl_getSystemTextEncoding() );
- *pPict >> nByteLen; nLen=((USHORT)nByteLen)&0x00ff;
- pPict->Read( &sFName, nLen );
- sFName[ nLen ] = 0;
- String aString( (const sal_Char*)&sFName, gsl_getSystemTextEncoding() );
- aActFont.SetName( aString );
- eActMethod=PDM_UNDEFINED;
- break;
- }
- case 0x002d: // lineJustify
- nDataSize=10;
- break;
-
- case 0x002e: // glyphState
- *pPict >> nUSHORT;
- nDataSize=2+nUSHORT;
- break;
-
- case 0x002f: // Reserved (n Bytes)
- *pPict >> nUSHORT;
- nDataSize=2+nUSHORT;
- break;
-
- case 0x0030: // frameRect
- nDataSize=ReadAndDrawRect(PDM_FRAME);
- break;
-
- case 0x0031: // paintRect
- nDataSize=ReadAndDrawRect(PDM_PAINT);
- break;
-
- case 0x0032: // eraseRect
- nDataSize=ReadAndDrawRect(PDM_ERASE);
- break;
-
- case 0x0033: // invertRect
- nDataSize=ReadAndDrawRect(PDM_INVERT);
- break;
-
- case 0x0034: // fillRect
- nDataSize=ReadAndDrawRect(PDM_FILL);
- break;
-
- case 0x0035: // Reserved (8 Bytes)
- case 0x0036: // Reserved (8 Bytes)
- case 0x0037: // Reserved (8 Bytes)
- nDataSize=8;
- break;
-
- case 0x0038: // frameSameRect
- nDataSize=ReadAndDrawSameRect(PDM_FRAME);
- break;
-
- case 0x0039: // paintSameRect
- nDataSize=ReadAndDrawSameRect(PDM_PAINT);
- break;
-
- case 0x003a: // eraseSameRect
- nDataSize=ReadAndDrawSameRect(PDM_ERASE);
- break;
-
- case 0x003b: // invertSameRect
- nDataSize=ReadAndDrawSameRect(PDM_INVERT);
- break;
-
- case 0x003c: // fillSameRect
- nDataSize=ReadAndDrawSameRect(PDM_FILL);
- break;
-
- case 0x003d: // Reserved (0 Bytes)
- case 0x003e: // Reserved (0 Bytes)
- case 0x003f: // Reserved (0 Bytes)
- nDataSize=0;
- break;
-
- case 0x0040: // frameRRect
- nDataSize=ReadAndDrawRoundRect(PDM_FRAME);
- break;
-
- case 0x0041: // paintRRect
- nDataSize=ReadAndDrawRoundRect(PDM_PAINT);
- break;
-
- case 0x0042: // eraseRRect
- nDataSize=ReadAndDrawRoundRect(PDM_ERASE);
- break;
-
- case 0x0043: // invertRRect
- nDataSize=ReadAndDrawRoundRect(PDM_INVERT);
- break;
-
- case 0x0044: // fillRRect
- nDataSize=ReadAndDrawRoundRect(PDM_FILL);
- break;
-
- case 0x0045: // Reserved (8 Bytes)
- case 0x0046: // Reserved (8 Bytes)
- case 0x0047: // Reserved (8 Bytes)
- nDataSize=8;
- break;
-
- case 0x0048: // frameSameRRect
- nDataSize=ReadAndDrawSameRoundRect(PDM_FRAME);
- break;
-
- case 0x0049: // paintSameRRect
- nDataSize=ReadAndDrawSameRoundRect(PDM_PAINT);
- break;
-
- case 0x004a: // eraseSameRRect
- nDataSize=ReadAndDrawSameRoundRect(PDM_ERASE);
- break;
-
- case 0x004b: // invertSameRRect
- nDataSize=ReadAndDrawSameRoundRect(PDM_INVERT);
- break;
-
- case 0x004c: // fillSameRRect
- nDataSize=ReadAndDrawSameRoundRect(PDM_FILL);
- break;
-
- case 0x004d: // Reserved (0 Bytes)
- case 0x004e: // Reserved (0 Bytes)
- case 0x004f: // Reserved (0 Bytes)
- nDataSize=0;
- break;
-
- case 0x0050: // frameOval
- nDataSize=ReadAndDrawOval(PDM_FRAME);
- break;
-
- case 0x0051: // paintOval
- nDataSize=ReadAndDrawOval(PDM_PAINT);
- break;
-
- case 0x0052: // eraseOval
- nDataSize=ReadAndDrawOval(PDM_ERASE);
- break;
-
- case 0x0053: // invertOval
- nDataSize=ReadAndDrawOval(PDM_INVERT);
- break;
-
- case 0x0054: // fillOval
- nDataSize=ReadAndDrawOval(PDM_FILL);
- break;
-
- case 0x0055: // Reserved (8 Bytes)
- case 0x0056: // Reserved (8 Bytes)
- case 0x0057: // Reserved (8 Bytes)
- nDataSize=8;
- break;
-
- case 0x0058: // frameSameOval
- nDataSize=ReadAndDrawSameOval(PDM_FRAME);
- break;
-
- case 0x0059: // paintSameOval
- nDataSize=ReadAndDrawSameOval(PDM_PAINT);
- break;
-
- case 0x005a: // eraseSameOval
- nDataSize=ReadAndDrawSameOval(PDM_ERASE);
- break;
-
- case 0x005b: // invertSameOval
- nDataSize=ReadAndDrawSameOval(PDM_INVERT);
- break;
-
- case 0x005c: // fillSameOval
- nDataSize=ReadAndDrawSameOval(PDM_FILL);
- break;
-
- case 0x005d: // Reserved (0 Bytes)
- case 0x005e: // Reserved (0 Bytes)
- case 0x005f: // Reserved (0 Bytes)
- nDataSize=0;
- break;
-
- case 0x0060: // frameArc
- nDataSize=ReadAndDrawArc(PDM_FRAME);
- break;
-
- case 0x0061: // paintArc
- nDataSize=ReadAndDrawArc(PDM_PAINT);
- break;
-
- case 0x0062: // eraseArc
- nDataSize=ReadAndDrawArc(PDM_ERASE);
- break;
-
- case 0x0063: // invertArc
- nDataSize=ReadAndDrawArc(PDM_INVERT);
- break;
-
- case 0x0064: // fillArc
- nDataSize=ReadAndDrawArc(PDM_FILL);
- break;
-
- case 0x0065: // Reserved (12 Bytes)
- case 0x0066: // Reserved (12 Bytes)
- case 0x0067: // Reserved (12 Bytes)
- nDataSize=12;
- break;
-
- case 0x0068: // frameSameArc
- nDataSize=ReadAndDrawSameArc(PDM_FRAME);
- break;
-
- case 0x0069: // paintSameArc
- nDataSize=ReadAndDrawSameArc(PDM_PAINT);
- break;
-
- case 0x006a: // eraseSameArc
- nDataSize=ReadAndDrawSameArc(PDM_ERASE);
- break;
-
- case 0x006b: // invertSameArc
- nDataSize=ReadAndDrawSameArc(PDM_INVERT);
- break;
-
- case 0x006c: // fillSameArc
- nDataSize=ReadAndDrawSameArc(PDM_FILL);
- break;
-
- case 0x006d: // Reserved (4 Bytes)
- case 0x006e: // Reserved (4 Bytes)
- case 0x006f: // Reserved (4 Bytes)
- nDataSize=4;
- break;
-
- case 0x0070: // framePoly
- nDataSize=ReadAndDrawPolygon(PDM_FRAME);
- break;
-
- case 0x0071: // paintPoly
- nDataSize=ReadAndDrawPolygon(PDM_PAINT);
- break;
-
- case 0x0072: // erasePoly
- nDataSize=ReadAndDrawPolygon(PDM_ERASE);
- break;
-
- case 0x0073: // invertPoly
- nDataSize=ReadAndDrawPolygon(PDM_INVERT);
- break;
-
- case 0x0074: // fillPoly
- nDataSize=ReadAndDrawPolygon(PDM_FILL);
- break;
-
- case 0x0075: // Reserved (Polygon-Size)
- case 0x0076: // Reserved (Polygon-Size)
- case 0x0077: // Reserved (Polygon-Size)
- *pPict >> nUSHORT; nDataSize=nUSHORT;
- break;
-
- case 0x0078: // frameSamePoly
- nDataSize=ReadAndDrawSamePolygon(PDM_FRAME);
- break;
-
- case 0x0079: // paintSamePoly
- nDataSize=ReadAndDrawSamePolygon(PDM_PAINT);
- break;
-
- case 0x007a: // eraseSamePoly
- nDataSize=ReadAndDrawSamePolygon(PDM_ERASE);
- break;
-
- case 0x007b: // invertSamePoly
- nDataSize=ReadAndDrawSamePolygon(PDM_INVERT);
- break;
-
- case 0x007c: // fillSamePoly
- nDataSize=ReadAndDrawSamePolygon(PDM_FILL);
- break;
-
- case 0x007d: // Reserved (0 Bytes)
- case 0x007e: // Reserved (0 Bytes)
- case 0x007f: // Reserved (0 Bytes)
- nDataSize=0;
- break;
-
- case 0x0080: // frameRgn
- nDataSize=ReadAndDrawRgn(PDM_FILL);
- break;
-
- case 0x0081: // paintRgn
- nDataSize=ReadAndDrawRgn(PDM_PAINT);
- break;
-
- case 0x0082: // eraseRgn
- nDataSize=ReadAndDrawRgn(PDM_ERASE);
- break;
-
- case 0x0083: // invertRgn
- nDataSize=ReadAndDrawRgn(PDM_INVERT);
- break;
-
- case 0x0084: // fillRgn
- nDataSize=ReadAndDrawRgn(PDM_FILL);
- break;
-
- case 0x0085: // Reserved (Region-Size)
- case 0x0086: // Reserved (Region-Size)
- case 0x0087: // Reserved (Region-Size)
- *pPict >> nUSHORT; nDataSize=nUSHORT;
- break;
-
- case 0x0088: // frameSameRgn
- nDataSize=ReadAndDrawSameRgn(PDM_FRAME);
- break;
-
- case 0x0089: // paintSameRgn
- nDataSize=ReadAndDrawSameRgn(PDM_PAINT);
- break;
-
- case 0x008a: // eraseSameRgn
- nDataSize=ReadAndDrawSameRgn(PDM_ERASE);
- break;
-
- case 0x008b: // invertSameRgn
- nDataSize=ReadAndDrawSameRgn(PDM_INVERT);
- break;
-
- case 0x008c: // fillSameRgn
- nDataSize=ReadAndDrawSameRgn(PDM_FILL);
- break;
-
- case 0x008d: // Reserved (0 Bytes)
- case 0x008e: // Reserved (0 Bytes)
- case 0x008f: // Reserved (0 Bytes)
- nDataSize=0;
- break;
-
- case 0x0090: { // BitsRect
- Bitmap aBmp;
- Rectangle aSrcRect, aDestRect;
- nDataSize=ReadPixMapEtc(aBmp, FALSE, TRUE, &aSrcRect, &aDestRect, TRUE, FALSE);
- DrawingMethod(PDM_PAINT);
- pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
- break;
- }
- case 0x0091: { // BitsRgn
- Bitmap aBmp;
- Rectangle aSrcRect, aDestRect;
- nDataSize=ReadPixMapEtc(aBmp, FALSE, TRUE, &aSrcRect, &aDestRect, TRUE, TRUE);
- DrawingMethod(PDM_PAINT);
- pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
- break;
- }
- case 0x0092: // Reserved (n Bytes)
- case 0x0093: // Reserved (n Bytes)
- case 0x0094: // Reserved (n Bytes)
- case 0x0095: // Reserved (n Bytes)
- case 0x0096: // Reserved (n Bytes)
- case 0x0097: // Reserved (n Bytes)
- *pPict >> nUSHORT; nDataSize=2+nUSHORT;
- break;
-
- case 0x0098: { // PackBitsRect
- Bitmap aBmp;
- Rectangle aSrcRect, aDestRect;
- nDataSize=ReadPixMapEtc(aBmp, FALSE, TRUE, &aSrcRect, &aDestRect, TRUE, FALSE);
- DrawingMethod(PDM_PAINT);
- pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
- break;
- }
- case 0x0099: { // PackBitsRgn
- Bitmap aBmp;
- Rectangle aSrcRect, aDestRect;
- nDataSize=ReadPixMapEtc(aBmp, FALSE, TRUE, &aSrcRect, &aDestRect, TRUE, TRUE);
- DrawingMethod(PDM_PAINT);
- pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
- break;
- }
- case 0x009a: { // DirectBitsRect
- Bitmap aBmp;
- Rectangle aSrcRect, aDestRect;
- nDataSize=ReadPixMapEtc(aBmp, TRUE, FALSE, &aSrcRect, &aDestRect, TRUE, FALSE);
- DrawingMethod(PDM_PAINT);
- pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
- break;
- }
- case 0x009b: { // DirectBitsRgn
- Bitmap aBmp;
- Rectangle aSrcRect, aDestRect;
- nDataSize=ReadPixMapEtc(aBmp, TRUE, FALSE, &aSrcRect, &aDestRect, TRUE, TRUE);
- DrawingMethod(PDM_PAINT);
- pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
- break;
- }
- case 0x009c: // Reserved (n Bytes)
- case 0x009d: // Reserved (n Bytes)
- case 0x009e: // Reserved (n Bytes)
- case 0x009f: // Reserved (n Bytes)
- *pPict >> nUSHORT; nDataSize=2+nUSHORT;
- break;
-
- case 0x00a0: // ShortComment
- nDataSize=2;
- break;
-
- case 0x00a1: // LongComment
- pPict->SeekRel(2); *pPict >> nUSHORT; nDataSize=4+nUSHORT;
- break;
-
- default: // 0x00a2 bis 0xffff (zumeist Reserved)
- if (nOpcode<=0x00af) { *pPict >> nUSHORT; nDataSize=2+nUSHORT; }
- else if (nOpcode<=0x00cf) { nDataSize=0; }
- else if (nOpcode<=0x00fe) { sal_uInt32 nTemp; *pPict >> nTemp ; nDataSize = nTemp; nDataSize+=4; }
- else if (nOpcode==0x00ff) { nDataSize=2; } // OpEndPic
- else if (nOpcode<=0x01ff) { nDataSize=2; }
- else if (nOpcode<=0x0bfe) { nDataSize=4; }
- else if (nOpcode<=0x0bff) { nDataSize=22; }
- else if (nOpcode==0x0c00) { nDataSize=24; } // HeaderOp
- else if (nOpcode<=0x7eff) { nDataSize=24; }
- else if (nOpcode<=0x7fff) { nDataSize=254; }
- else if (nOpcode<=0x80ff) { nDataSize=0; }
- else { sal_uInt32 nTemp; *pPict >> nTemp ; nDataSize = nTemp; nDataSize+=4; }
- }
-
- if (nDataSize==0xffffffff) {
- pPict->SetError(SVSTREAM_FILEFORMAT_ERROR);
- return 0;
- }
- return nDataSize;
-}
-
-void PictReader::ReadPict( SvStream & rStreamPict, GDIMetaFile & rGDIMetaFile )
-{
- USHORT nOpcode;
- BYTE nOneByteOpcode;
- ULONG nSize, nPos, nStartPos, nEndPos, nPercent, nLastPercent;
-
- pPict = &rStreamPict;
- nOrigPos = pPict->Tell();
- nOrigNumberFormat = pPict->GetNumberFormatInt();
-
- aActForeColor = Color(COL_BLACK);
- aActBackColor = Color(COL_WHITE);
- eActPenPenStyle = PEN_SOLID;
- eActPenBrushStyle = BRUSH_SOLID;
- eActFillStyle = BRUSH_SOLID;
- eActBackStyle = BRUSH_SOLID;
- nActPenSize = 1;
- eActROP = ROP_OVERPAINT;
- eActMethod = PDM_UNDEFINED;
- aActOvalSize = Size(1,1);
-
- aActFont.SetCharSet( gsl_getSystemTextEncoding() );
- aActFont.SetFamily(FAMILY_SWISS);
- aActFont.SetSize(Size(0,12));
- aActFont.SetAlign(ALIGN_BASELINE);
-
- aHRes = aVRes = Fraction( 1, 1 );
-
- pVirDev = new VirtualDevice();
- pVirDev->EnableOutput(FALSE);
- rGDIMetaFile.Record(pVirDev);
-
- pPict->SetNumberFormatInt(NUMBERFORMAT_INT_BIGENDIAN);
-
- nStartPos=pPict->Tell();
- nEndPos=pPict->Seek(STREAM_SEEK_TO_END); pPict->Seek(nStartPos);
- Callback(0); nLastPercent=0;
-
- ReadHeader();
-
- aPenPosition=Point(-aBoundingRect.Left(),-aBoundingRect.Top());
- aTextPosition=aPenPosition;
-
- nPos=pPict->Tell();
-
- for (;;) {
-
- nPercent=(nPos-nStartPos)*100/(nEndPos-nStartPos);
- if (nLastPercent+4<=nPercent) {
- if (Callback((USHORT)nPercent)==TRUE) break;
- nLastPercent=nPercent;
- }
-
- if (IsVersion2 )
- *pPict >> nOpcode;
- else
- {
- *pPict >> nOneByteOpcode;
- nOpcode=(USHORT)nOneByteOpcode;
- }
-
- if (pPict->GetError())
- break;
-
- if (pPict->IsEof())
- {
- pPict->SetError(SVSTREAM_FILEFORMAT_ERROR);
- break;
- }
-
- if (nOpcode==0x00ff)
- break;
-
- nSize=ReadData(nOpcode);
-
- if ( IsVersion2 )
- {
- if ( nSize & 1 )
- nSize++;
-
- nPos+=2+nSize;
- }
- else
- nPos+=1+nSize;
-
- pPict->Seek(nPos);
- }
-
- rGDIMetaFile.Stop();
- delete pVirDev;
-
- rGDIMetaFile.SetPrefMapMode( MapMode( MAP_INCH, Point(), aHRes, aVRes ) );
- rGDIMetaFile.SetPrefSize( aBoundingRect.GetSize() );
-
- pPict->SetNumberFormatInt(nOrigNumberFormat);
-
- if (pPict->GetError()) pPict->Seek(nOrigPos);
-}
-
-//================== GraphicImport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicImport( SvStream& rIStm, Graphic & rGraphic, FilterConfigItem*, BOOL )
-{
- GDIMetaFile aMTF;
- PictReader aPictReader;
- BOOL bRet = FALSE;
-
- aPictReader.ReadPict( rIStm, aMTF );
-
- if ( !rIStm.GetError() )
- {
- rGraphic = Graphic( aMTF );
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-//================== ein bischen Muell fuer Windows ==========================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
diff --git a/goodies/source/filter.vcl/ipict/makefile.mk b/goodies/source/filter.vcl/ipict/makefile.mk
deleted file mode 100644
index 2d84bffe3c36..000000000000
--- a/goodies/source/filter.vcl/ipict/makefile.mk
+++ /dev/null
@@ -1,72 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=ipict
-DEPTARGET=vipict
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/ipict.obj
-
-# ==========================================================================
-
-SHL1TARGET= ipt$(DLLPOSTFIX)
-SHL1IMPLIB= ipict
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
-SHL1LIBS= $(SLB)$/ipict.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/ipict.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
-
diff --git a/goodies/source/filter.vcl/ipsd/exports.map b/goodies/source/filter.vcl/ipsd/exports.map
deleted file mode 100644
index b2cda91bec78..000000000000
--- a/goodies/source/filter.vcl/ipsd/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-PSDIMPORTER_1_0 {
- global:
- GraphicImport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/ipsd/ipsd.cxx b/goodies/source/filter.vcl/ipsd/ipsd.cxx
deleted file mode 100644
index 9b690d1a0592..000000000000
--- a/goodies/source/filter.vcl/ipsd/ipsd.cxx
+++ /dev/null
@@ -1,766 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: ipsd.cxx,v $
- * $Revision: 1.14 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <svtools/fltcall.hxx>
-
-//============================ PSDReader ==================================
-
-#define PSD_BITMAP 0
-#define PSD_GRAYSCALE 1
-#define PSD_INDEXED 2
-#define PSD_RGB 3
-#define PSD_CMYK 4
-#define PSD_MULTICHANNEL 7
-#define PSD_DUOTONE 8
-#define PSD_LAB 9
-
-typedef struct
-{
- UINT32 nSignature;
- UINT16 nVersion;
- UINT32 nPad1;
- UINT16 nPad2;
- UINT16 nChannels;
- UINT32 nRows;
- UINT32 nColumns;
- UINT16 nDepth;
- UINT16 nMode;
-
-} PSDFileHeader;
-
-class PSDReader {
-
-private:
-
- SvStream* mpPSD; // Die einzulesende PSD-Datei
- PSDFileHeader* mpFileHeader;
-
- sal_uInt32 mnXResFixed;
- sal_uInt32 mnYResFixed;
-
- sal_Bool mbStatus;
- sal_Bool mbTransparent;
-
- Bitmap maBmp;
- Bitmap maMaskBmp;
- BitmapReadAccess* mpReadAcc;
- BitmapWriteAccess* mpWriteAcc;
- BitmapWriteAccess* mpMaskWriteAcc;
- USHORT mnDestBitDepth;
- BOOL mbCompression; // RLE decoding
- BYTE* mpPalette;
-
- BOOL ImplReadBody();
- BOOL ImplReadHeader();
-
-public:
- PSDReader();
- ~PSDReader();
- BOOL ReadPSD( SvStream & rPSD, Graphic & rGraphic );
-};
-
-//=================== Methoden von PSDReader ==============================
-
-PSDReader::PSDReader() :
- mpFileHeader ( NULL ),
- mnXResFixed ( 0 ),
- mnYResFixed ( 0 ),
- mbStatus ( TRUE ),
- mbTransparent ( FALSE ),
- mpReadAcc ( NULL ),
- mpWriteAcc ( NULL ),
- mpMaskWriteAcc ( NULL ),
- mpPalette ( NULL )
-{
-}
-
-PSDReader::~PSDReader()
-{
- delete[] mpPalette;
- delete mpFileHeader;
-}
-
-// ------------------------------------------------------------------------
-
-BOOL PSDReader::ReadPSD( SvStream & rPSD, Graphic & rGraphic )
-{
- if ( rPSD.GetError() )
- return FALSE;
-
- mpPSD = &rPSD;
- mpPSD->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
-
- // Kopf einlesen:
-
- if ( ImplReadHeader() == FALSE )
- return FALSE;
-
- Size aBitmapSize( mpFileHeader->nColumns, mpFileHeader->nRows );
- maBmp = Bitmap( aBitmapSize, mnDestBitDepth );
- if ( ( mpWriteAcc = maBmp.AcquireWriteAccess() ) == NULL )
- mbStatus = FALSE;
- if ( ( mpReadAcc = maBmp.AcquireReadAccess() ) == NULL )
- mbStatus = FALSE;
- if ( mbTransparent && mbStatus )
- {
- maMaskBmp = Bitmap( aBitmapSize, 1 );
- if ( ( mpMaskWriteAcc = maMaskBmp.AcquireWriteAccess() ) == NULL )
- mbStatus = FALSE;
- }
- if ( mpPalette && mbStatus )
- {
- mpWriteAcc->SetPaletteEntryCount( 256 );
- for ( USHORT i = 0; i < 256; i++ )
- {
- mpWriteAcc->SetPaletteColor( i, Color( mpPalette[ i ], mpPalette[ i + 256 ], mpPalette[ i + 512 ] ) );
- }
- }
- // Bitmap-Daten einlesen
- if ( mbStatus && ImplReadBody() )
- {
- if ( mbTransparent )
- rGraphic = Graphic( BitmapEx( maBmp, maMaskBmp ) );
- else
- rGraphic = maBmp;
-
- if ( mnXResFixed && mnYResFixed )
- {
- Point aEmptyPoint;
- Fraction aFractX( 1, mnXResFixed >> 16 );
- Fraction aFractY( 1, mnYResFixed >> 16 );
- MapMode aMapMode( MAP_INCH, aEmptyPoint, aFractX, aFractY );
- Size aPrefSize = OutputDevice::LogicToLogic( aBitmapSize, aMapMode, MAP_100TH_MM );
- rGraphic.SetPrefSize( aPrefSize );
- rGraphic.SetPrefMapMode( MapMode( MAP_100TH_MM ) );
- }
- }
- else
- mbStatus = FALSE;
- if ( mpWriteAcc )
- maBmp.ReleaseAccess( mpWriteAcc );
- if ( mpReadAcc )
- maBmp.ReleaseAccess( mpReadAcc );
- if ( mpMaskWriteAcc )
- maMaskBmp.ReleaseAccess( mpMaskWriteAcc );
- return mbStatus;
-}
-
-// ------------------------------------------------------------------------
-
-BOOL PSDReader::ImplReadHeader()
-{
- UINT16 nCompression;
- UINT32 nColorLength, nResourceLength, nLayerMaskLength;
-
- mpFileHeader = new PSDFileHeader;
-
- if ( !mpFileHeader )
- return FALSE;
-
- *mpPSD >> mpFileHeader->nSignature >> mpFileHeader->nVersion >> mpFileHeader->nPad1 >>
- mpFileHeader->nPad2 >> mpFileHeader->nChannels >> mpFileHeader->nRows >>
- mpFileHeader->nColumns >> mpFileHeader->nDepth >> mpFileHeader->nMode;
-
- if ( ( mpFileHeader->nSignature != 0x38425053 ) || ( mpFileHeader->nVersion != 1 ) )
- return FALSE;
-
- if ( mpFileHeader->nRows == 0 || mpFileHeader->nColumns == 0 )
- return FALSE;
-
- if ( ( mpFileHeader->nRows > 30000 ) || ( mpFileHeader->nColumns > 30000 ) )
- return FALSE;
-
- UINT16 nDepth = mpFileHeader->nDepth;
- if (!( ( nDepth == 1 ) || ( nDepth == 8 ) || ( nDepth == 16 ) ) )
- return FALSE;
-
- mnDestBitDepth = ( nDepth == 16 ) ? 8 : nDepth;
-
- *mpPSD >> nColorLength;
- if ( mpFileHeader->nMode == PSD_CMYK )
- {
- switch ( mpFileHeader->nChannels )
- {
- case 5 :
- mbTransparent = TRUE;
- case 4 :
- mnDestBitDepth = 24;
- break;
- default :
- return FALSE;
- }
- }
- else switch ( mpFileHeader->nChannels )
- {
- case 2 :
- mbTransparent = TRUE;
- case 1 :
- break;
- case 4 :
- mbTransparent = TRUE;
- case 3 :
- mnDestBitDepth = 24;
- break;
- default:
- return FALSE;
- }
-
- switch ( mpFileHeader->nMode )
- {
- case PSD_BITMAP :
- {
- if ( nColorLength || ( nDepth != 1 ) )
- return FALSE;
- }
- break;
-
- case PSD_INDEXED :
- {
- if ( nColorLength != 768 ) // we need the color map
- return FALSE;
- mpPalette = new BYTE[ 768 ];
- if ( mpPalette == NULL )
- return FALSE;
- mpPSD->Read( mpPalette, 768 );
- }
- break;
-
- case PSD_DUOTONE : // we'll handle the doutone color like a normal grayscale picture
- mpPSD->SeekRel( nColorLength );
- nColorLength = 0;
- case PSD_GRAYSCALE :
- {
- if ( nColorLength )
- return FALSE;
- mpPalette = new BYTE[ 768 ];
- if ( mpPalette == NULL )
- return FALSE;
- for ( USHORT i = 0; i < 256; i++ )
- {
- mpPalette[ i ] = mpPalette[ i + 256 ] = mpPalette[ i + 512 ] = (BYTE)i;
- }
- }
- break;
-
- case PSD_CMYK :
- case PSD_RGB :
- case PSD_MULTICHANNEL :
- case PSD_LAB :
- {
- if ( nColorLength ) // color table is not supported by the other graphic modes
- return FALSE;
- }
- break;
-
- default:
- return FALSE;
- }
- *mpPSD >> nResourceLength;
- sal_uInt32 nLayerPos = mpPSD->Tell() + nResourceLength;
-
- // this is a loop over the resource entries to get the resolution info
- while( mpPSD->Tell() < nLayerPos )
- {
- sal_uInt8 n8;
- sal_uInt32 nType, nPStringLen, nResEntryLen;
- sal_uInt16 nUniqueID;
-
- *mpPSD >> nType >> nUniqueID >> n8;
- nPStringLen = n8;
- if ( nType != 0x3842494d )
- break;
- if ( ! ( nPStringLen & 1 ) )
- nPStringLen++;
- mpPSD->SeekRel( nPStringLen ); // skipping the pstring
- *mpPSD >> nResEntryLen;
- if ( nResEntryLen & 1 )
- nResEntryLen++; // the resource entries are padded
- sal_uInt32 nCurrentPos = mpPSD->Tell();
- if ( ( nResEntryLen + nCurrentPos ) > nLayerPos ) // check if size
- break; // is possible
- switch( nUniqueID )
- {
- case 0x3ed : // UID for the resolution info
- {
- sal_Int16 nUnit;
-
- *mpPSD >> mnXResFixed >> nUnit >> nUnit
- >> mnYResFixed >> nUnit >> nUnit;
- }
- break;
- }
- mpPSD->Seek( nCurrentPos + nResEntryLen ); // set the stream to the next
- } // resource entry
- mpPSD->Seek( nLayerPos );
- *mpPSD >> nLayerMaskLength;
- mpPSD->SeekRel( nLayerMaskLength );
-
- *mpPSD >> nCompression;
- if ( nCompression == 0 )
- {
- mbCompression = FALSE;
- }
- else if ( nCompression == 1 )
- {
- mpPSD->SeekRel( ( mpFileHeader->nRows * mpFileHeader->nChannels ) << 1 );
- mbCompression = TRUE;
- }
- else
- return FALSE;
-
- return TRUE;
-}
-
-// ------------------------------------------------------------------------
-
-BOOL PSDReader::ImplReadBody()
-{
- ULONG nX, nY;
- char nRunCount = 0;
- signed char nBitCount = -1;
- BYTE nDat = 0, nDummy, nRed, nGreen, nBlue;
- BitmapColor aBitmapColor;
- nX = nY = 0;
-
- switch ( mnDestBitDepth )
- {
- case 1 :
- {
- while ( nY < mpFileHeader->nRows )
- {
- if ( nBitCount == -1 )
- {
- if ( mbCompression ) // else nRunCount = 0 -> so we use only single raw packets
- *mpPSD >> nRunCount;
- }
- if ( nRunCount & 0x80 ) // a run length packet
- {
- if ( nBitCount == -1 ) // bits left in nDat ?
- {
- *mpPSD >> nDat;
- nDat ^= 0xff;
- nBitCount = 7;
- }
- for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
- {
- mpWriteAcc->SetPixel( nY, nX, (BYTE)nDat >> nBitCount-- );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- nBitCount = -1;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- if ( nBitCount == -1 ) // bits left in nDat ?
- {
- *mpPSD >> nDat;
- nDat ^= 0xff;
- nBitCount = 7;
- }
- mpWriteAcc->SetPixel( nY, nX, (BYTE)nDat >> nBitCount-- );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- nBitCount = -1;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- }
- }
- break;
-
- case 8 :
- {
- while ( nY < mpFileHeader->nRows )
- {
- if ( mbCompression ) // else nRunCount = 0 -> so we use only single raw packets
- *mpPSD >> nRunCount;
-
- if ( nRunCount & 0x80 ) // a run length packet
- {
- *mpPSD >> nDat;
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
- for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
- {
- mpWriteAcc->SetPixel( nY, nX, (BYTE)nDat );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- *mpPSD >> nDat;
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
- mpWriteAcc->SetPixel( nY, nX, (BYTE)nDat );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- }
- }
- break;
-
- case 24 :
- {
-
- // the psd format is in plain order (RRRR GGGG BBBB) so we have to set each pixel three times
- // maybe the format is CCCC MMMM YYYY KKKK
-
- while ( nY < mpFileHeader->nRows )
- {
- if ( mbCompression ) // else nRunCount = 0 -> so we use only single raw packets
- *mpPSD >> nRunCount;
-
- if ( nRunCount & 0x80 ) // a run length packet
- {
- *mpPSD >> nRed;
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
- for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
- {
- mpWriteAcc->SetPixel( nY, nX, BitmapColor( nRed, (BYTE)0, (BYTE)0 ) );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- *mpPSD >> nRed;
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
- mpWriteAcc->SetPixel( nY, nX, BitmapColor( nRed, (BYTE)0, (BYTE)0 ) );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- }
- nY = 0;
- while ( nY < mpFileHeader->nRows )
- {
- if ( mbCompression )
- *mpPSD >> nRunCount;
- if ( nRunCount & 0x80 ) // a run length packet
- {
- *mpPSD >> nGreen;
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
- for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
- {
- aBitmapColor = mpReadAcc->GetPixel( nY, nX );
- mpWriteAcc->SetPixel( nY, nX, BitmapColor( aBitmapColor.GetRed(), nGreen, aBitmapColor.GetBlue() ) );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- *mpPSD >> nGreen;
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
- aBitmapColor = mpReadAcc->GetPixel( nY, nX );
- mpWriteAcc->SetPixel( nY, nX, BitmapColor( aBitmapColor.GetRed(), nGreen, aBitmapColor.GetBlue() ) );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- }
- nY = 0;
- while ( nY < mpFileHeader->nRows )
- {
- if ( mbCompression )
- *mpPSD >> nRunCount;
- if ( nRunCount & 0x80 ) // a run length packet
- {
- *mpPSD >> nBlue;
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
- for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
- {
- aBitmapColor = mpReadAcc->GetPixel( nY, nX );
- mpWriteAcc->SetPixel( nY, nX, BitmapColor( aBitmapColor.GetRed(), aBitmapColor.GetGreen(), nBlue ) );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- *mpPSD >> nBlue;
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
- aBitmapColor = mpReadAcc->GetPixel( nY, nX );
- mpWriteAcc->SetPixel( nY, nX, BitmapColor( aBitmapColor.GetRed(), aBitmapColor.GetGreen(), nBlue ) );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- }
- if ( mpFileHeader->nMode == PSD_CMYK )
- {
- UINT32 nBlack, nBlackMax = 0;
- BYTE* pBlack = new BYTE[ mpFileHeader->nRows * mpFileHeader->nColumns ];
- nY = 0;
- while ( nY < mpFileHeader->nRows )
- {
- if ( mbCompression ) // else nRunCount = 0 -> so we use only single raw packets
- *mpPSD >> nRunCount;
-
- if ( nRunCount & 0x80 ) // a run length packet
- {
- *mpPSD >> nDat;
-
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
-
- for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
- {
- nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetRed() + nDat;
- if ( nBlack > nBlackMax )
- nBlackMax = nBlack;
- nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetGreen() + nDat;
- if ( nBlack > nBlackMax )
- nBlackMax = nBlack;
- nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetBlue() + nDat;
- if ( nBlack > nBlackMax )
- nBlackMax = nBlack;
- pBlack[ nX + nY * mpFileHeader->nColumns ] = nDat ^ 0xff;
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- *mpPSD >> nDat;
-
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
- nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetRed() + nDat;
- if ( nBlack > nBlackMax )
- nBlackMax = nBlack;
- nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetGreen() + nDat;
- if ( nBlack > nBlackMax )
- nBlackMax = nBlack;
- nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetBlue() + nDat;
- if ( nBlack > nBlackMax )
- nBlackMax = nBlack;
- pBlack[ nX + nY * mpFileHeader->nColumns ] = nDat ^ 0xff;
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- }
-
- for ( nY = 0; nY < mpFileHeader->nRows; nY++ )
- {
- for ( nX = 0; nX < mpFileHeader->nColumns; nX++ )
- {
- INT32 nDAT = pBlack[ nX + nY * mpFileHeader->nColumns ] * ( nBlackMax - 256 ) / 0x1ff;
-
- aBitmapColor = mpReadAcc->GetPixel( nY, nX );
- BYTE cR = (BYTE) MinMax( aBitmapColor.GetRed() - nDAT, 0L, 255L );
- BYTE cG = (BYTE) MinMax( aBitmapColor.GetGreen() - nDAT, 0L, 255L );
- BYTE cB = (BYTE) MinMax( aBitmapColor.GetBlue() - nDAT, 0L, 255L );
- mpWriteAcc->SetPixel( nY, nX, BitmapColor( cR, cG, cB ) );
- }
- }
- delete[] pBlack;
- }
- }
- break;
- }
-
- if ( mbTransparent )
- {
- // the psd is 24 or 8 bit grafix + alphachannel
-
- nY = nX = 0;
- while ( nY < mpFileHeader->nRows )
- {
- if ( mbCompression ) // else nRunCount = 0 -> so we use only single raw packets
- *mpPSD >> nRunCount;
-
- if ( nRunCount & 0x80 ) // a run length packet
- {
- *mpPSD >> nDat;
- if ( nDat )
- nDat = 0;
- else
- nDat = 1;
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
- for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
- {
- mpMaskWriteAcc->SetPixel( nY, nX, (BYTE)nDat );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- *mpPSD >> nDat;
- if ( nDat )
- nDat = 0;
- else
- nDat = 1;
- if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
- *mpPSD >> nDummy;
- mpMaskWriteAcc->SetPixel( nY, nX, (BYTE)nDat );
- if ( ++nX == mpFileHeader->nColumns )
- {
- nX = 0;
- nY++;
- if ( nY == mpFileHeader->nRows )
- break;
- }
- }
- }
- }
- }
- return TRUE;
-}
-
-//================== GraphicImport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
-{
- PSDReader aPSDReader;
-
- return aPSDReader.ReadPSD( rStream, rGraphic );
-}
-
-//================== ein bischen Muell fuer Windows ==========================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
diff --git a/goodies/source/filter.vcl/ipsd/makefile.mk b/goodies/source/filter.vcl/ipsd/makefile.mk
deleted file mode 100644
index cd29c94f8074..000000000000
--- a/goodies/source/filter.vcl/ipsd/makefile.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.12 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=ipsd
-DEPTARGET=vipsd
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/ipsd.obj
-
-# ==========================================================================
-
-SHL1TARGET= ipd$(DLLPOSTFIX)
-SHL1IMPLIB= ipsd
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
-SHL1LIBS= $(SLB)$/ipsd.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/ipsd.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/iras/exports.map b/goodies/source/filter.vcl/iras/exports.map
deleted file mode 100644
index ebd8464837fa..000000000000
--- a/goodies/source/filter.vcl/iras/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-RASIMPORTER_1_0 {
- global:
- GraphicImport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/iras/iras.cxx b/goodies/source/filter.vcl/iras/iras.cxx
deleted file mode 100644
index 841562b33298..000000000000
--- a/goodies/source/filter.vcl/iras/iras.cxx
+++ /dev/null
@@ -1,386 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: iras.cxx,v $
- * $Revision: 1.10 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <svtools/fltcall.hxx>
-
-#define RAS_TYPE_OLD 0x00000000 // supported formats by this filter
-#define RAS_TYPE_STANDARD 0x00000001
-#define RAS_TYPE_BYTE_ENCODED 0x00000002
-#define RAS_TYPE_RGB_FORMAT 0x00000003
-
-#define RAS_COLOR_NO_MAP 0x00000000
-#define RAS_COLOR_RGB_MAP 0x00000001
-#define RAS_COLOR_RAW_MAP 0x00000002
-
-#define SUNRASTER_MAGICNUMBER 0x59a66a95
-
-//============================ RASReader ==================================
-
-class RASReader {
-
-private:
-
- SvStream* mpRAS; // Die einzulesende RAS-Datei
-
- BOOL mbStatus;
- Bitmap maBmp;
- BitmapWriteAccess* mpAcc;
- sal_uInt32 mnWidth, mnHeight; // Bildausmass in Pixeln
- USHORT mnDstBitsPerPix;
- USHORT mnDstColors;
- sal_uInt32 mnDepth, mnImageDatSize, mnType;
- sal_uInt32 mnColorMapType, mnColorMapSize;
- BYTE mnRepCount, mnRepVal; // RLE Decoding
- BOOL mbPalette;
-
- BOOL ImplReadBody();
- BOOL ImplReadHeader();
- BYTE ImplGetByte();
-
-public:
- RASReader();
- ~RASReader();
- BOOL ReadRAS( SvStream & rRAS, Graphic & rGraphic );
-};
-
-//=================== Methoden von RASReader ==============================
-
-RASReader::RASReader() :
- mbStatus ( TRUE ),
- mpAcc ( NULL ),
- mnRepCount ( 0 ),
- mbPalette ( FALSE )
-{
-}
-
-RASReader::~RASReader()
-{
-}
-
-//----------------------------------------------------------------------------
-
-BOOL RASReader::ReadRAS( SvStream & rRAS, Graphic & rGraphic )
-{
- UINT32 nMagicNumber;
-
- if ( rRAS.GetError() )
- return FALSE;
-
- mpRAS = &rRAS;
- mpRAS->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
- *mpRAS >> nMagicNumber;
- if ( nMagicNumber != SUNRASTER_MAGICNUMBER )
- return FALSE;
-
- // Kopf einlesen:
-
- if ( ( mbStatus = ImplReadHeader() ) == FALSE )
- return FALSE;
-
- maBmp = Bitmap( Size( mnWidth, mnHeight ), mnDstBitsPerPix );
- if ( ( mpAcc = maBmp.AcquireWriteAccess() ) == FALSE )
- return FALSE;
-
- if ( mnDstBitsPerPix <= 8 ) // paletten bildchen
- {
- if ( mnColorMapType == RAS_COLOR_RAW_MAP ) // RAW Colormap wird geskipped
- {
- ULONG nCurPos = mpRAS->Tell();
- mpRAS->Seek( nCurPos + mnColorMapSize );
- }
- else if ( mnColorMapType == RAS_COLOR_RGB_MAP ) // RGB koennen wir auslesen
- {
- mnDstColors = (USHORT)( mnColorMapSize / 3 );
-
- if ( ( 1 << mnDstBitsPerPix ) < mnDstColors )
- return FALSE;
-
- if ( ( mnDstColors >= 2 ) && ( ( mnColorMapSize % 3 ) == 0 ) )
- {
- mpAcc->SetPaletteEntryCount( mnDstColors );
- USHORT i;
- BYTE nRed[256], nGreen[256], nBlue[256];
- for ( i = 0; i < mnDstColors; i++ ) *mpRAS >> nRed[ i ];
- for ( i = 0; i < mnDstColors; i++ ) *mpRAS >> nGreen[ i ];
- for ( i = 0; i < mnDstColors; i++ ) *mpRAS >> nBlue[ i ];
- for ( i = 0; i < mnDstColors; i++ )
- {
- mpAcc->SetPaletteColor( i, BitmapColor( nRed[ i ], nGreen[ i ], nBlue[ i ] ) );
- }
- mbPalette = TRUE;
- }
- else
- return FALSE;
-
- }
- else if ( mnColorMapType != RAS_COLOR_NO_MAP ) // alles andere ist kein standard
- return FALSE;
-
- if ( !mbPalette )
- {
- mnDstColors = 1 << mnDstBitsPerPix;
- mpAcc->SetPaletteEntryCount( mnDstColors );
- for ( USHORT i = 0; i < mnDstColors; i++ )
- {
- ULONG nCount = 255 - ( 255 * i / ( mnDstColors - 1 ) );
- mpAcc->SetPaletteColor( i, BitmapColor( (BYTE)nCount, (BYTE)nCount, (BYTE)nCount ) );
- }
- }
- }
- else
- {
- if ( mnColorMapType != RAS_COLOR_NO_MAP ) // when graphic has more then 256 colors and a color map we skip
- { // the colormap
- ULONG nCurPos = mpRAS->Tell();
- mpRAS->Seek( nCurPos + mnColorMapSize );
- }
- }
-
- // Bitmap-Daten einlesen
- mbStatus = ImplReadBody();
-
- if ( mpAcc )
- {
- maBmp.ReleaseAccess( mpAcc ), mpAcc = NULL;
- }
- if ( mbStatus )
- rGraphic = maBmp;
-
- return mbStatus;
-}
-
-//----------------------------------------------------------------------------
-
-BOOL RASReader::ImplReadHeader()
-{
- *mpRAS >> mnWidth >> mnHeight >> mnDepth >> mnImageDatSize >>
- mnType >> mnColorMapType >> mnColorMapSize;
-
- if ( mnWidth == 0 || mnHeight == 0 )
- mbStatus = FALSE;
-
- switch ( mnDepth )
- {
- case 24 :
- case 8 :
- case 1 :
- mnDstBitsPerPix = (USHORT)mnDepth;
- break;
- case 32 :
- mnDstBitsPerPix = 24;
- break;
-
- default :
- mbStatus = FALSE;
- }
-
- switch ( mnType )
- {
- case RAS_TYPE_OLD :
- case RAS_TYPE_STANDARD :
- case RAS_TYPE_RGB_FORMAT :
- case RAS_TYPE_BYTE_ENCODED : // this type will be supported later
- break;
-
- default:
- mbStatus = FALSE;
- }
- return mbStatus;
-}
-
-//----------------------------------------------------------------------------
-
-BOOL RASReader::ImplReadBody()
-{
- ULONG x, y;
- BYTE nDat = 0;
- BYTE nRed, nGreen, nBlue;
- switch ( mnDstBitsPerPix )
- {
- case 1 :
- for ( y = 0; y < mnHeight; y++ )
- {
- for ( x = 0; x < mnWidth; x++ )
- {
- if (!(x & 7))
- nDat = ImplGetByte();
- mpAcc->SetPixel (
- y, x,
- sal::static_int_cast< BYTE >(
- nDat >> ( ( x & 7 ) ^ 7 )) );
- }
- if (!( ( x - 1 ) & 0x8 ) ) ImplGetByte(); // WORD ALIGNMENT ???
- }
- break;
-
- case 8 :
- for ( y = 0; y < mnHeight; y++ )
- {
- for ( x = 0; x < mnWidth; x++ )
- {
- nDat = ImplGetByte();
- mpAcc->SetPixel ( y, x, nDat );
- }
- if ( x & 1 ) ImplGetByte(); // WORD ALIGNMENT ???
- }
- break;
-
- case 24 :
- switch ( mnDepth )
- {
-
- case 24 :
- for ( y = 0; y < mnHeight; y++ )
- {
- for ( x = 0; x < mnWidth; x++ )
- {
- if ( mnType == RAS_TYPE_RGB_FORMAT )
- {
- nRed = ImplGetByte();
- nGreen = ImplGetByte();
- nBlue = ImplGetByte();
- }
- else
- {
- nBlue = ImplGetByte();
- nGreen = ImplGetByte();
- nRed = ImplGetByte();
- }
- mpAcc->SetPixel ( y, x, BitmapColor( nRed, nGreen, nBlue ) );
- }
- if ( x & 1 ) ImplGetByte(); // WORD ALIGNMENT ???
- }
- break;
-
- case 32 :
- for ( y = 0; y < mnHeight; y++ )
- {
- for ( x = 0; x < mnWidth; x++ )
- {
- nDat = ImplGetByte(); // pad byte > nil
- if ( mnType == RAS_TYPE_RGB_FORMAT )
- {
- nRed = ImplGetByte();
- nGreen = ImplGetByte();
- nBlue = ImplGetByte();
- }
- else
- {
- nBlue = ImplGetByte();
- nGreen = ImplGetByte();
- nRed = ImplGetByte();
- }
- mpAcc->SetPixel ( y, x, BitmapColor( nRed, nGreen, nBlue ) );
- }
- }
- break;
- }
- break;
-
- default:
- mbStatus = FALSE;
- break;
- }
- return mbStatus;
-}
-
-//----------------------------------------------------------------------------
-
-BYTE RASReader::ImplGetByte()
-{
- BYTE nRetVal;
- if ( mnType != RAS_TYPE_BYTE_ENCODED )
- {
- *mpRAS >> nRetVal;
- return nRetVal;
- }
- else
- {
- if ( mnRepCount )
- {
- mnRepCount--;
- return mnRepVal;
- }
- else
- {
- *mpRAS >> nRetVal;
- if ( nRetVal != 0x80 )
- return nRetVal;
- *mpRAS >> nRetVal;
- if ( nRetVal == 0 )
- return 0x80;
- mnRepCount = nRetVal ;
- *mpRAS >> mnRepVal;
- return mnRepVal;
- }
- }
-}
-
-//================== GraphicImport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
-{
- RASReader aRASReader;
-
- return aRASReader.ReadRAS( rStream, rGraphic );
-}
-
-//================== ein bischen Muell fuer Windows ==========================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
-
diff --git a/goodies/source/filter.vcl/iras/makefile.mk b/goodies/source/filter.vcl/iras/makefile.mk
deleted file mode 100644
index 28b84c8401ef..000000000000
--- a/goodies/source/filter.vcl/iras/makefile.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.12 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=iras
-DEPTARGET=viras
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/iras.obj
-
-# ==========================================================================
-
-SHL1TARGET= ira$(DLLPOSTFIX)
-SHL1IMPLIB= iras
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
-SHL1LIBS= $(SLB)$/iras.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/iras.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/itga/exports.map b/goodies/source/filter.vcl/itga/exports.map
deleted file mode 100644
index cb127f330e5d..000000000000
--- a/goodies/source/filter.vcl/itga/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-TGAIMPORTER_1_0 {
- global:
- GraphicImport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/itga/itga.cxx b/goodies/source/filter.vcl/itga/itga.cxx
deleted file mode 100644
index 4fcf701b5202..000000000000
--- a/goodies/source/filter.vcl/itga/itga.cxx
+++ /dev/null
@@ -1,761 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: itga.cxx,v $
- * $Revision: 1.11 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <svtools/fltcall.hxx>
-
-//============================ TGAReader ==================================
-
-struct TGAFileHeader
-{
- BYTE nImageIDLength;
- BYTE nColorMapType;
- BYTE nImageType;
- UINT16 nColorMapFirstEntryIndex;
- UINT16 nColorMapLength;
- BYTE nColorMapEntrySize;
- UINT16 nColorMapXOrigin;
- UINT16 nColorMapYOrigin;
- UINT16 nImageWidth;
- UINT16 nImageHeight;
- BYTE nPixelDepth;
- BYTE nImageDescriptor;
-};
-
-#define SizeOfTGAFileFooter 26
-
-struct TGAFileFooter
-{
- UINT32 nExtensionFileOffset;
- UINT32 nDeveloperDirectoryOffset;
- UINT32 nSignature[4];
- BYTE nPadByte;
- BYTE nStringTerminator;
-};
-
-#define SizeOfTGAExtension 495
-
-struct TGAExtension
-{
- UINT16 nExtensionSize;
- char sAuthorName[41];
- char sAuthorComment[324];
- char sDateTimeStamp[12];
- char sJobNameID[41];
- UINT16 nJobTime[3];
- char sSoftwareID[41];
- UINT16 nSoftwareVersionNumber;
- BYTE nSoftwareVersionLetter;
- UINT32 nKeyColor;
- UINT16 nPixelAspectRatioNumerator;
- UINT16 nPixelAspectRatioDeNumerator;
- UINT16 nGammaValueNumerator;
- UINT16 nGammaValueDeNumerator;
- UINT32 nColorCorrectionOffset;
- UINT32 nPostageStampOffset;
- UINT32 nScanLineOffset;
- BYTE nAttributesType;
-};
-
-class TGAReader {
-
-private:
-
- SvStream* mpTGA;
-
- BitmapWriteAccess* mpAcc;
- TGAFileHeader* mpFileHeader;
- TGAFileFooter* mpFileFooter;
- TGAExtension* mpExtension;
- UINT32* mpColorMap;
-
- BOOL mbStatus;
-
- ULONG mnTGAVersion; // Enhanced TGA is defined as Version 2.0
- UINT16 mnDestBitDepth;
- BOOL mbIndexing; // TRUE if source contains indexing color values
- BOOL mbEncoding; // TRUE if source is compressed
-
- BOOL ImplReadHeader();
- BOOL ImplReadPalette();
- BOOL ImplReadBody();
-
-public:
- TGAReader();
- ~TGAReader();
- BOOL ReadTGA( SvStream & rTGA, Graphic & rGraphic );
-};
-
-//=================== Methoden von TGAReader ==============================
-
-TGAReader::TGAReader() :
- mpAcc ( NULL ),
- mpFileHeader ( NULL ),
- mpFileFooter ( NULL ),
- mpExtension ( NULL ),
- mpColorMap ( NULL ),
- mbStatus ( TRUE ),
- mnTGAVersion ( 1 ),
- mbIndexing ( FALSE ),
- mbEncoding ( FALSE )
-{
-}
-
-TGAReader::~TGAReader()
-{
- delete[] mpColorMap;
- delete mpFileHeader;
- delete mpExtension;
- delete mpFileFooter;
-}
-
-// -------------------------------------------------------------------------------------------
-
-BOOL TGAReader::ReadTGA( SvStream & rTGA, Graphic & rGraphic )
-{
- if ( rTGA.GetError() )
- return FALSE;
-
- mpTGA = &rTGA;
- mpTGA->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
-
- // Kopf einlesen:
-
- if ( !mpTGA->GetError() )
- {
- mbStatus = ImplReadHeader();
- if ( mbStatus )
- {
- Bitmap aBitmap;
-
- aBitmap = Bitmap( Size( mpFileHeader->nImageWidth, mpFileHeader->nImageHeight ), mnDestBitDepth );
- mpAcc = aBitmap.AcquireWriteAccess();
- if ( mpAcc )
- {
- if ( mbIndexing )
- mbStatus = ImplReadPalette();
- if ( mbStatus )
- mbStatus = ImplReadBody();
- }
- else
- mbStatus = FALSE;
-
- if ( mpAcc )
- aBitmap.ReleaseAccess ( mpAcc), mpAcc = NULL;
-
- if ( mbStatus )
- rGraphic = aBitmap;
- }
- }
- return mbStatus;
-}
-
-// -------------------------------------------------------------------------------------------
-
-BOOL TGAReader::ImplReadHeader()
-{
- mpFileHeader = new TGAFileHeader;
- if ( mpFileHeader == NULL )
- return FALSE;
-
- *mpTGA >> mpFileHeader->nImageIDLength >> mpFileHeader->nColorMapType >> mpFileHeader->nImageType >>
- mpFileHeader->nColorMapFirstEntryIndex >> mpFileHeader->nColorMapLength >> mpFileHeader->nColorMapEntrySize >>
- mpFileHeader->nColorMapXOrigin >> mpFileHeader->nColorMapYOrigin >> mpFileHeader->nImageWidth >>
- mpFileHeader->nImageHeight >> mpFileHeader->nPixelDepth >> mpFileHeader->nImageDescriptor;
-
- if ( mpFileHeader->nColorMapType > 1 )
- return FALSE;
- if ( mpFileHeader->nColorMapType == 1 )
- mbIndexing = TRUE;
-
- // first we want to get the version
- mpFileFooter = new TGAFileFooter; // read the TGA-File-Footer to determine whether
- if ( mpFileFooter ) // we got an old TGA format or the new one
- {
- ULONG nCurStreamPos = mpTGA->Tell();
- mpTGA->Seek( STREAM_SEEK_TO_END );
- ULONG nTemp = mpTGA->Tell();
- mpTGA->Seek( nTemp - SizeOfTGAFileFooter );
-
- *mpTGA >> mpFileFooter->nExtensionFileOffset >> mpFileFooter->nDeveloperDirectoryOffset >>
- mpFileFooter->nSignature[0] >> mpFileFooter->nSignature[1] >> mpFileFooter->nSignature[2] >>
- mpFileFooter->nSignature[3] >> mpFileFooter->nPadByte >> mpFileFooter->nStringTerminator;
-
- // check for TRUE, VISI, ON-X, FILE in the signatures
- if ( mpFileFooter->nSignature[ 0 ] == (('T'<<24)|('R'<<16)|('U'<<8)|'E') &&
- mpFileFooter->nSignature[ 1 ] == (('V'<<24)|('I'<<16)|('S'<<8)|'I') &&
- mpFileFooter->nSignature[ 2 ] == (('O'<<24)|('N'<<16)|('-'<<8)|'X') &&
- mpFileFooter->nSignature[ 3 ] == (('F'<<24)|('I'<<16)|('L'<<8)|'E') )
- {
- mpExtension = new TGAExtension;
- if ( mpExtension )
- {
- mpTGA->Seek( mpFileFooter->nExtensionFileOffset );
- *mpTGA >> mpExtension->nExtensionSize;
- if ( mpExtension->nExtensionSize >= SizeOfTGAExtension )
- {
- mnTGAVersion = 2;
-
- mpTGA->Read( mpExtension->sAuthorName, 41 );
- mpTGA->Read( mpExtension->sAuthorComment, 324 );
- mpTGA->Read( mpExtension->sDateTimeStamp, 12 );
- mpTGA->Read( mpExtension->sJobNameID, 12 );
- *mpTGA >> mpExtension->sJobNameID[ 0 ] >> mpExtension->sJobNameID[ 1 ] >> mpExtension->sJobNameID[ 2 ];
- mpTGA->Read( mpExtension->sSoftwareID, 41 );
- *mpTGA >> mpExtension->nSoftwareVersionNumber >> mpExtension->nSoftwareVersionLetter
- >> mpExtension->nKeyColor >> mpExtension->nPixelAspectRatioNumerator
- >> mpExtension->nPixelAspectRatioDeNumerator >> mpExtension->nGammaValueNumerator
- >> mpExtension->nGammaValueDeNumerator >> mpExtension->nColorCorrectionOffset
- >> mpExtension->nPostageStampOffset >> mpExtension->nScanLineOffset
- >> mpExtension->nAttributesType;
-
- }
- }
- }
- mpTGA->Seek( nCurStreamPos );
- }
-
- // using the TGA file specification this was the correct form but adobe photoshop sets nImageDescriptor
- // equal to nPixelDepth
- // mnDestBitDepth = mpFileHeader->nPixelDepth - ( mpFileHeader->nImageDescriptor & 0xf );
- mnDestBitDepth = mpFileHeader->nPixelDepth;
-
- if ( mnDestBitDepth == 8 ) // this is a patch for grayscale pictures not including a palette
- mbIndexing = TRUE;
-
- if ( mnDestBitDepth > 32 ) // maybe the pixeldepth is invalid
- return FALSE;
- else if ( mnDestBitDepth > 8 )
- mnDestBitDepth = 24;
- else if ( mnDestBitDepth > 4 )
- mnDestBitDepth = 8;
- else if ( mnDestBitDepth > 2 )
- mnDestBitDepth = 4;
-
- if ( !mbIndexing && ( mnDestBitDepth < 15 ) )
- return FALSE;
-
- switch ( mpFileHeader->nImageType )
- {
- case 9 : // encoding for colortype 9, 10, 11
- case 10 :
- case 11 :
- mbEncoding = TRUE;
- break;
- };
-
- if ( mpFileHeader->nImageIDLength ) // skip the Image ID
- mpTGA->SeekRel( mpFileHeader->nImageIDLength );
-
- return mbStatus;
-}
-
-// -------------------------------------------------------------------------------------------
-
-BOOL TGAReader::ImplReadBody()
-{
-
- USHORT nXCount, nYCount, nRGB16;
- BYTE nRed, nGreen, nBlue, nRunCount, nDummy, nDepth;
-
- // this four variables match the image direction
- long nY, nYAdd, nX, nXAdd, nXStart;
-
- nX = nXStart = nY = 0;
- nXCount = nYCount = 0;
- nYAdd = nXAdd = 1;
-
- if ( mpFileHeader->nImageDescriptor & 0x10 )
- {
- nX = nXStart = mpFileHeader->nImageWidth - 1;
- nXAdd -= 2;
- }
-
- if ( !(mpFileHeader->nImageDescriptor & 0x20 ) )
- {
- nY = mpFileHeader->nImageHeight - 1;
- nYAdd -=2;
- }
-
-// nDepth = mpFileHeader->nPixelDepth - ( mpFileHeader->nImageDescriptor & 0xf );
- nDepth = mpFileHeader->nPixelDepth;
-
- if ( mbEncoding )
- {
- if ( mbIndexing )
- {
- switch( nDepth )
- {
- // 16 bit encoding + indexing
- case 16 :
- while ( nYCount < mpFileHeader->nImageHeight )
- {
- *mpTGA >> nRunCount;
- if ( nRunCount & 0x80 ) // a run length packet
- {
- *mpTGA >> nRGB16;
- if ( nRGB16 >= mpFileHeader->nColorMapLength )
- return FALSE;
- nRed = (BYTE)( mpColorMap[ nRGB16 ] >> 16 );
- nGreen = (BYTE)( mpColorMap[ nRGB16 ] >> 8 );
- nBlue = (BYTE)( mpColorMap[ nRGB16 ] );
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- nX += nXAdd;
- nXCount++;
- if ( nXCount == mpFileHeader->nImageWidth )
- {
- nX = nXStart;
- nXCount = 0;
- nY += nYAdd;
- nYCount++;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- *mpTGA >> nRGB16;
- if ( nRGB16 >= mpFileHeader->nColorMapLength )
- return FALSE;
- nRed = (BYTE)( mpColorMap[ nRGB16 ] >> 16 );
- nGreen = (BYTE)( mpColorMap[ nRGB16 ] >> 8 );
- nBlue = (BYTE)( mpColorMap[ nRGB16 ] );
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- nX += nXAdd;
- nXCount++;
- if ( nXCount == mpFileHeader->nImageWidth )
- {
- nX = nXStart;
- nXCount = 0;
- nY += nYAdd;
- nYCount++;
- }
- }
- }
- }
- break;
-
- // 8 bit encoding + indexing
- case 8 :
- while ( nYCount < mpFileHeader->nImageHeight )
- {
- *mpTGA >> nRunCount;
- if ( nRunCount & 0x80 ) // a run length packet
- {
- *mpTGA >> nDummy;
- if ( nDummy >= mpFileHeader->nColorMapLength )
- return FALSE;
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- mpAcc->SetPixel( nY, nX, (BYTE)nDummy );
- nX += nXAdd;
- nXCount++;
- if ( nXCount == mpFileHeader->nImageWidth )
- {
- nX = nXStart;
- nXCount = 0;
- nY += nYAdd;
- nYCount++;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
-
- *mpTGA >> nDummy;
- if ( nDummy >= mpFileHeader->nColorMapLength )
- return FALSE;
- mpAcc->SetPixel( nY, nX, (BYTE)nDummy );
- nX += nXAdd;
- nXCount++;
- if ( nXCount == mpFileHeader->nImageWidth )
- {
- nX = nXStart;
- nXCount = 0;
- nY += nYAdd;
- nYCount++;
- }
- }
- }
- }
- break;
- default:
- return FALSE;
- }
- }
- else
- {
- switch( nDepth )
- {
- // 32 bit transparent true color encoding
- case 32 :
- {
- while ( nYCount < mpFileHeader->nImageHeight )
- {
- *mpTGA >> nRunCount;
- if ( nRunCount & 0x80 ) // a run length packet
- {
- *mpTGA >> nBlue >> nGreen >> nRed >> nDummy;
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- nX += nXAdd;
- nXCount++;
- if ( nXCount == mpFileHeader->nImageWidth )
- {
- nX = nXStart;
- nXCount = 0;
- nY += nYAdd;
- nYCount++;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- *mpTGA >> nBlue >> nGreen >> nRed >> nDummy;
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- nX += nXAdd;
- nXCount++;
- if ( nXCount == mpFileHeader->nImageWidth )
- {
- nX = nXStart;
- nXCount = 0;
- nY += nYAdd;
- nYCount++;
- }
- }
- }
- }
- }
- break;
-
- // 24 bit true color encoding
- case 24 :
- while ( nYCount < mpFileHeader->nImageHeight )
- {
- *mpTGA >> nRunCount;
- if ( nRunCount & 0x80 ) // a run length packet
- {
- *mpTGA >> nBlue >> nGreen >> nRed;
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- nX += nXAdd;
- nXCount++;
- if ( nXCount == mpFileHeader->nImageWidth )
- {
- nX = nXStart;
- nXCount = 0;
- nY += nYAdd;
- nYCount++;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- *mpTGA >> nBlue >> nGreen >> nRed;
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- nX += nXAdd;
- nXCount++;
- if ( nXCount == mpFileHeader->nImageWidth )
- {
- nX = nXStart;
- nXCount = 0;
- nY += nYAdd;
- nYCount++;
- }
- }
- }
- }
- break;
-
- // 16 bit true color encoding
- case 16 :
- while ( nYCount < mpFileHeader->nImageHeight )
- {
- *mpTGA >> nRunCount;
- if ( nRunCount & 0x80 ) // a run length packet
- {
- *mpTGA >> nRGB16;
- nRed = (BYTE)( nRGB16 >> 7 ) & 0xf8;
- nGreen = (BYTE)( nRGB16 >> 2 ) & 0xf8;
- nBlue = (BYTE)( nRGB16 << 3 ) & 0xf8;
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- nX += nXAdd;
- nXCount++;
- if ( nXCount == mpFileHeader->nImageWidth )
- {
- nX = nXStart;
- nXCount = 0;
- nY += nYAdd;
- nYCount++;
- }
- }
- }
- else // a raw packet
- {
- for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
- {
- *mpTGA >> nRGB16;
- nRed = (BYTE)( nRGB16 >> 7 ) & 0xf8;
- nGreen = (BYTE)( nRGB16 >> 2 ) & 0xf8;
- nBlue = (BYTE)( nRGB16 << 3 ) & 0xf8;
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- nX += nXAdd;
- nXCount++;
- if ( nXCount == mpFileHeader->nImageWidth )
- {
- nX = nXStart;
- nXCount = 0;
- nY += nYAdd;
- nYCount++;
- }
- }
- }
- }
- break;
-
- default:
- return FALSE;
- }
- }
- }
- else
- {
- for ( nYCount = 0; nYCount < mpFileHeader->nImageHeight; nYCount++, nY += nYAdd )
- {
- nX = nXStart;
- nXCount = 0;
-
- if ( mbIndexing )
- {
- switch( nDepth )
- {
- // 16 bit indexing
- case 16 :
- for (;nXCount < mpFileHeader->nImageWidth; nXCount++, nX += nXAdd )
- {
- *mpTGA >> nRGB16;
- if ( nRGB16 >= mpFileHeader->nColorMapLength )
- return FALSE;
- nRed = (BYTE)( mpColorMap[ nRGB16 ] >> 16 );
- nGreen = (BYTE)( mpColorMap[ nRGB16 ] >> 8 );
- nBlue = (BYTE)( mpColorMap[ nRGB16 ] );
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- }
- break;
-
- // 8 bit indexing
- case 8 :
- for (;nXCount < mpFileHeader->nImageWidth; nXCount++, nX += nXAdd )
- {
- *mpTGA >> nDummy;
- if ( nDummy >= mpFileHeader->nColorMapLength )
- return FALSE;
- mpAcc->SetPixel( nY, nX, (BYTE)nDummy );
- }
- break;
- default:
- return FALSE;
- }
- }
- else
- {
- switch( nDepth )
- {
- // 32 bit true color
- case 32 :
- {
- for (;nXCount < mpFileHeader->nImageWidth; nXCount++, nX += nXAdd )
- {
- *mpTGA >> nBlue >> nGreen >> nRed >> nDummy;
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- }
- }
- break;
-
- // 24 bit true color
- case 24 :
- for (;nXCount < mpFileHeader->nImageWidth; nXCount++, nX += nXAdd )
- {
- *mpTGA >> nBlue >> nGreen >> nRed;
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- }
- break;
-
- // 16 bit true color
- case 16 :
- for (;nXCount < mpFileHeader->nImageWidth; nXCount++, nX += nXAdd )
- {
- *mpTGA >> nRGB16;
- nRed = (BYTE)( nRGB16 >> 7 ) & 0xf8;
- nGreen = (BYTE)( nRGB16 >> 2 ) & 0xf8;
- nBlue = (BYTE)( nRGB16 << 3 ) & 0xf8;
- mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
- }
- break;
- default:
- return FALSE;
- }
- }
- }
- }
- return mbStatus;
-}
-
-// -------------------------------------------------------------------------------------------
-
-BOOL TGAReader::ImplReadPalette()
-{
- if ( mbIndexing ) // read the colormap
- {
- USHORT nColors = mpFileHeader->nColorMapLength;
-
- if ( !nColors ) // colors == 0 ? -> we will build a grayscale palette
- {
- if ( mpFileHeader->nPixelDepth != 8 )
- return FALSE;
- nColors = 256;
- mpFileHeader->nColorMapLength = 256;
- mpFileHeader->nColorMapEntrySize = 0x3f; // patch for the following switch routine
- }
- mpColorMap = new UINT32[ nColors ]; // we will always index dwords
- if ( mpColorMap == FALSE )
- return FALSE; // out of memory %&!$&/!"�$
-
- switch( mpFileHeader->nColorMapEntrySize )
- {
- case 0x3f :
- {
- for ( ULONG i = 0; i < nColors; i++ )
- {
- mpColorMap[ i ] = ( i << 16 ) + ( i << 8 ) + i;
- }
- }
- break;
-
- case 32 :
- mpTGA->Read( mpColorMap, 4 * nColors );
- break;
-
- case 24 :
- {
- for ( ULONG i = 0; i < nColors; i++ )
- {
- mpTGA->Read( &mpColorMap[ i ], 3 );
- }
- }
- break;
-
- case 15 :
- case 16 :
- {
- for ( ULONG i = 0; i < nColors; i++ )
- {
- UINT16 nTemp;
- *mpTGA >> nTemp;
- mpColorMap[ i ] = ( ( nTemp & 0x7c00 ) << 9 ) + ( ( nTemp & 0x01e0 ) << 6 ) +
- ( ( nTemp & 0x1f ) << 3 );
- }
- }
- break;
-
- default :
- return FALSE;
- }
- if ( mnDestBitDepth <= 8 )
- {
- USHORT nDestColors = ( 1 << mnDestBitDepth );
- if ( nColors > nDestColors )
- return FALSE;
-
- mpAcc->SetPaletteEntryCount( nColors );
- for ( USHORT i = 0; i < nColors; i++ )
- {
- mpAcc->SetPaletteColor( i, Color( (BYTE)( mpColorMap[ i ] >> 16 ),
- (BYTE)( mpColorMap[ i ] >> 8 ), (BYTE)(mpColorMap[ i ] ) ) );
- }
- }
- }
-
- return mbStatus;
-}
-
-//================== GraphicImport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
-{
- TGAReader aTGAReader;
-
- return aTGAReader.ReadTGA( rStream, rGraphic );
-}
-
-//================== ein bischen Muell fuer Windows ==========================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
-
diff --git a/goodies/source/filter.vcl/itga/makefile.mk b/goodies/source/filter.vcl/itga/makefile.mk
deleted file mode 100644
index a9dfe2e77643..000000000000
--- a/goodies/source/filter.vcl/itga/makefile.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.12 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=itga
-DEPTARGET=vitga
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/itga.obj
-
-# ==========================================================================
-
-SHL1TARGET= itg$(DLLPOSTFIX)
-SHL1IMPLIB= itga
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
-SHL1LIBS= $(SLB)$/itga.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/itga.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/itiff/ccidecom.cxx b/goodies/source/filter.vcl/itiff/ccidecom.cxx
deleted file mode 100644
index 5330ab26838e..000000000000
--- a/goodies/source/filter.vcl/itiff/ccidecom.cxx
+++ /dev/null
@@ -1,1115 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: ccidecom.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include "ccidecom.hxx"
-
-//=============================== Huffman-Tabellen ========================
-
-//---------------------------- White-Run ------------------------------
-
-#define CCIWhiteTableSize 105
-
-const CCIHuffmanTableEntry CCIWhiteTable[CCIWhiteTableSize]={
- { 0, 0x0035, 8 },
- { 1, 0x0007, 6 },
- { 2, 0x0007, 4 },
- { 3, 0x0008, 4 },
- { 4, 0x000b, 4 },
- { 5, 0x000c, 4 },
- { 6, 0x000e, 4 },
- { 7, 0x000f, 4 },
- { 8, 0x0013, 5 },
- { 9, 0x0014, 5 },
- { 10, 0x0007, 5 },
- { 11, 0x0008, 5 },
- { 12, 0x0008, 6 },
- { 13, 0x0003, 6 },
- { 14, 0x0034, 6 },
- { 15, 0x0035, 6 },
- { 16, 0x002a, 6 },
- { 17, 0x002b, 6 },
- { 18, 0x0027, 7 },
- { 19, 0x000c, 7 },
- { 20, 0x0008, 7 },
- { 21, 0x0017, 7 },
- { 22, 0x0003, 7 },
- { 23, 0x0004, 7 },
- { 24, 0x0028, 7 },
- { 25, 0x002b, 7 },
- { 26, 0x0013, 7 },
- { 27, 0x0024, 7 },
- { 28, 0x0018, 7 },
- { 29, 0x0002, 8 },
- { 30, 0x0003, 8 },
- { 31, 0x001a, 8 },
- { 32, 0x001b, 8 },
- { 33, 0x0012, 8 },
- { 34, 0x0013, 8 },
- { 35, 0x0014, 8 },
- { 36, 0x0015, 8 },
- { 37, 0x0016, 8 },
- { 38, 0x0017, 8 },
- { 39, 0x0028, 8 },
- { 40, 0x0029, 8 },
- { 41, 0x002a, 8 },
- { 42, 0x002b, 8 },
- { 43, 0x002c, 8 },
- { 44, 0x002d, 8 },
- { 45, 0x0004, 8 },
- { 46, 0x0005, 8 },
- { 47, 0x000a, 8 },
- { 48, 0x000b, 8 },
- { 49, 0x0052, 8 },
- { 50, 0x0053, 8 },
- { 51, 0x0054, 8 },
- { 52, 0x0055, 8 },
- { 53, 0x0024, 8 },
- { 54, 0x0025, 8 },
- { 55, 0x0058, 8 },
- { 56, 0x0059, 8 },
- { 57, 0x005a, 8 },
- { 58, 0x005b, 8 },
- { 59, 0x004a, 8 },
- { 60, 0x004b, 8 },
- { 61, 0x0032, 8 },
- { 62, 0x0033, 8 },
- { 63, 0x0034, 8 },
- { 64, 0x001b, 5 },
- { 128, 0x0012, 5 },
- { 192, 0x0017, 6 },
- { 256, 0x0037, 7 },
- { 320, 0x0036, 8 },
- { 384, 0x0037, 8 },
- { 448, 0x0064, 8 },
- { 512, 0x0065, 8 },
- { 576, 0x0068, 8 },
- { 640, 0x0067, 8 },
- { 704, 0x00cc, 9 },
- { 768, 0x00cd, 9 },
- { 832, 0x00d2, 9 },
- { 896, 0x00d3, 9 },
- { 960, 0x00d4, 9 },
- { 1024, 0x00d5, 9 },
- { 1088, 0x00d6, 9 },
- { 1152, 0x00d7, 9 },
- { 1216, 0x00d8, 9 },
- { 1280, 0x00d9, 9 },
- { 1344, 0x00da, 9 },
- { 1408, 0x00db, 9 },
- { 1472, 0x0098, 9 },
- { 1536, 0x0099, 9 },
- { 1600, 0x009a, 9 },
- { 1664, 0x0018, 6 },
- { 1728, 0x009b, 9 },
- { 1792, 0x0008, 11 },
- { 1856, 0x000c, 11 },
- { 1920, 0x000d, 11 },
- { 1984, 0x0012, 12 },
- { 2048, 0x0013, 12 },
- { 2112, 0x0014, 12 },
- { 2176, 0x0015, 12 },
- { 2240, 0x0016, 12 },
- { 2304, 0x0017, 12 },
- { 2368, 0x001c, 12 },
- { 2432, 0x001d, 12 },
- { 2496, 0x001e, 12 },
- { 2560, 0x001f, 12 },
- { 9999, 0x0001, 12 } // EOL
-};
-
-//---------------------------- Black-Run ------------------------------
-
-#define CCIBlackTableSize 105
-
-const CCIHuffmanTableEntry CCIBlackTable[CCIBlackTableSize]={
- { 0, 0x0037, 10 },
- { 1, 0x0002, 3 },
- { 2, 0x0003, 2 },
- { 3, 0x0002, 2 },
- { 4, 0x0003, 3 },
- { 5, 0x0003, 4 },
- { 6, 0x0002, 4 },
- { 7, 0x0003, 5 },
- { 8, 0x0005, 6 },
- { 9, 0x0004, 6 },
- { 10, 0x0004, 7 },
- { 11, 0x0005, 7 },
- { 12, 0x0007, 7 },
- { 13, 0x0004, 8 },
- { 14, 0x0007, 8 },
- { 15, 0x0018, 9 },
- { 16, 0x0017, 10 },
- { 17, 0x0018, 10 },
- { 18, 0x0008, 10 },
- { 19, 0x0067, 11 },
- { 20, 0x0068, 11 },
- { 21, 0x006c, 11 },
- { 22, 0x0037, 11 },
- { 23, 0x0028, 11 },
- { 24, 0x0017, 11 },
- { 25, 0x0018, 11 },
- { 26, 0x00ca, 12 },
- { 27, 0x00cb, 12 },
- { 28, 0x00cc, 12 },
- { 29, 0x00cd, 12 },
- { 30, 0x0068, 12 },
- { 31, 0x0069, 12 },
- { 32, 0x006a, 12 },
- { 33, 0x006b, 12 },
- { 34, 0x00d2, 12 },
- { 35, 0x00d3, 12 },
- { 36, 0x00d4, 12 },
- { 37, 0x00d5, 12 },
- { 38, 0x00d6, 12 },
- { 39, 0x00d7, 12 },
- { 40, 0x006c, 12 },
- { 41, 0x006d, 12 },
- { 42, 0x00da, 12 },
- { 43, 0x00db, 12 },
- { 44, 0x0054, 12 },
- { 45, 0x0055, 12 },
- { 46, 0x0056, 12 },
- { 47, 0x0057, 12 },
- { 48, 0x0064, 12 },
- { 49, 0x0065, 12 },
- { 50, 0x0052, 12 },
- { 51, 0x0053, 12 },
- { 52, 0x0024, 12 },
- { 53, 0x0037, 12 },
- { 54, 0x0038, 12 },
- { 55, 0x0027, 12 },
- { 56, 0x0028, 12 },
- { 57, 0x0058, 12 },
- { 58, 0x0059, 12 },
- { 59, 0x002b, 12 },
- { 60, 0x002c, 12 },
- { 61, 0x005a, 12 },
- { 62, 0x0066, 12 },
- { 63, 0x0067, 12 },
- { 64, 0x000f, 10 },
- { 128, 0x00c8, 12 },
- { 192, 0x00c9, 12 },
- { 256, 0x005b, 12 },
- { 320, 0x0033, 12 },
- { 384, 0x0034, 12 },
- { 448, 0x0035, 12 },
- { 512, 0x006c, 13 },
- { 576, 0x006d, 13 },
- { 640, 0x004a, 13 },
- { 704, 0x004b, 13 },
- { 768, 0x004c, 13 },
- { 832, 0x004d, 13 },
- { 896, 0x0072, 13 },
- { 960, 0x0073, 13 },
- { 1024, 0x0074, 13 },
- { 1088, 0x0075, 13 },
- { 1152, 0x0076, 13 },
- { 1216, 0x0077, 13 },
- { 1280, 0x0052, 13 },
- { 1344, 0x0053, 13 },
- { 1408, 0x0054, 13 },
- { 1472, 0x0055, 13 },
- { 1536, 0x005a, 13 },
- { 1600, 0x005b, 13 },
- { 1664, 0x0064, 13 },
- { 1728, 0x0065, 13 },
- { 1792, 0x0008, 11 },
- { 1856, 0x000c, 11 },
- { 1920, 0x000d, 11 },
- { 1984, 0x0012, 12 },
- { 2048, 0x0013, 12 },
- { 2112, 0x0014, 12 },
- { 2176, 0x0015, 12 },
- { 2240, 0x0016, 12 },
- { 2304, 0x0017, 12 },
- { 2368, 0x001c, 12 },
- { 2432, 0x001d, 12 },
- { 2496, 0x001e, 12 },
- { 2560, 0x001f, 12 },
- { 9999, 0x0001, 12 } // EOL
-};
-
-
-//---------------------------- 2D-Mode --------------------------------
-
-#define CCI2DMODE_UNCOMP 0
-#define CCI2DMODE_PASS 1
-#define CCI2DMODE_HORZ 2
-#define CCI2DMODE_VERT_L3 3
-#define CCI2DMODE_VERT_L2 4
-#define CCI2DMODE_VERT_L1 5
-#define CCI2DMODE_VERT_0 6
-#define CCI2DMODE_VERT_R1 7
-#define CCI2DMODE_VERT_R2 8
-#define CCI2DMODE_VERT_R3 9
-
-#define CCI2DModeTableSize 10
-
-const CCIHuffmanTableEntry CCI2DModeTable[CCI2DModeTableSize]={
- { CCI2DMODE_UNCOMP , 0x000f, 10 },
- { CCI2DMODE_PASS , 0x0001, 4 },
- { CCI2DMODE_HORZ , 0x0001, 3 },
- { CCI2DMODE_VERT_L3, 0x0002, 7 },
- { CCI2DMODE_VERT_L2, 0x0002, 6 },
- { CCI2DMODE_VERT_L1, 0x0002, 3 },
- { CCI2DMODE_VERT_0 , 0x0001, 1 },
- { CCI2DMODE_VERT_R1, 0x0003, 3 },
- { CCI2DMODE_VERT_R2, 0x0003, 6 },
- { CCI2DMODE_VERT_R3, 0x0003, 7 }
-};
-
-
-//-------------------------- 2D-Uncompressed-Mode ----------------------
-
-#define CCIUNCOMP_0White_1Black 0
-#define CCIUNCOMP_1White_1Black 1
-#define CCIUNCOMP_2White_1Black 2
-#define CCIUNCOMP_3White_1Black 3
-#define CCIUNCOMP_4White_1Black 4
-#define CCIUNCOMP_5White 5
-#define CCIUNCOMP_0White_End 6
-#define CCIUNCOMP_1White_End 7
-#define CCIUNCOMP_2White_End 8
-#define CCIUNCOMP_3White_End 9
-#define CCIUNCOMP_4White_End 10
-
-#define CCIUncompTableSize 11
-
-const CCIHuffmanTableEntry CCIUncompTable[CCIUncompTableSize]={
- { CCIUNCOMP_0White_1Black, 0x0001, 1 },
- { CCIUNCOMP_1White_1Black, 0x0001, 2 },
- { CCIUNCOMP_2White_1Black, 0x0001, 3 },
- { CCIUNCOMP_3White_1Black, 0x0001, 4 },
- { CCIUNCOMP_4White_1Black, 0x0001, 5 },
- { CCIUNCOMP_5White , 0x0001, 6 },
- { CCIUNCOMP_0White_End , 0x0001, 7 },
- { CCIUNCOMP_1White_End , 0x0001, 8 },
- { CCIUNCOMP_2White_End , 0x0001, 9 },
- { CCIUNCOMP_3White_End , 0x0001, 10 },
- { CCIUNCOMP_4White_End , 0x0001, 11 }
-};
-
-
-//================== Sicherheitskopie der Huffman-Tabellen ================
-// Um sicher zugehen, dass die Huffman-Tabellen keine Fehler enthalten,
-// wurden sie zweimal von unterschiedlichen Quellen eingegeben (Uff) und
-// verglichen.
-// Da sich aber im Laufe der Pflege des Source-Codes mal ein Fehler
-// einschleichen koennte (z.B. versehentlicher druck einer Taste im Editor)
-// werden die Tablellen hier weiterhin zweimal aufgefuehrt und zur Laufzeit
-// verglichen. (Wenn der Vergleich fehlschlaegt, liefert CCIDecompressor
-// immer einen Fehler). Das Ganze mag etwas wahnsinnig erscheinen, aber ein Fehler
-// in den Tabellen waere sonst sehr sehr schwer zu erkennen, zumal es
-// unwahrscheinlich ist, dass eine oder mehere Beispieldateien alle Codes
-// durchlaufen.
-
-const CCIHuffmanTableEntry CCIWhiteTableSave[CCIWhiteTableSize]={
- { 0, 0x0035, 8 },
- { 1, 0x0007, 6 },
- { 2, 0x0007, 4 },
- { 3, 0x0008, 4 },
- { 4, 0x000b, 4 },
- { 5, 0x000c, 4 },
- { 6, 0x000e, 4 },
- { 7, 0x000f, 4 },
- { 8, 0x0013, 5 },
- { 9, 0x0014, 5 },
- { 10, 0x0007, 5 },
- { 11, 0x0008, 5 },
- { 12, 0x0008, 6 },
- { 13, 0x0003, 6 },
- { 14, 0x0034, 6 },
- { 15, 0x0035, 6 },
- { 16, 0x002a, 6 },
- { 17, 0x002b, 6 },
- { 18, 0x0027, 7 },
- { 19, 0x000c, 7 },
- { 20, 0x0008, 7 },
- { 21, 0x0017, 7 },
- { 22, 0x0003, 7 },
- { 23, 0x0004, 7 },
- { 24, 0x0028, 7 },
- { 25, 0x002b, 7 },
- { 26, 0x0013, 7 },
- { 27, 0x0024, 7 },
- { 28, 0x0018, 7 },
- { 29, 0x0002, 8 },
- { 30, 0x0003, 8 },
- { 31, 0x001a, 8 },
- { 32, 0x001b, 8 },
- { 33, 0x0012, 8 },
- { 34, 0x0013, 8 },
- { 35, 0x0014, 8 },
- { 36, 0x0015, 8 },
- { 37, 0x0016, 8 },
- { 38, 0x0017, 8 },
- { 39, 0x0028, 8 },
- { 40, 0x0029, 8 },
- { 41, 0x002a, 8 },
- { 42, 0x002b, 8 },
- { 43, 0x002c, 8 },
- { 44, 0x002d, 8 },
- { 45, 0x0004, 8 },
- { 46, 0x0005, 8 },
- { 47, 0x000a, 8 },
- { 48, 0x000b, 8 },
- { 49, 0x0052, 8 },
- { 50, 0x0053, 8 },
- { 51, 0x0054, 8 },
- { 52, 0x0055, 8 },
- { 53, 0x0024, 8 },
- { 54, 0x0025, 8 },
- { 55, 0x0058, 8 },
- { 56, 0x0059, 8 },
- { 57, 0x005a, 8 },
- { 58, 0x005b, 8 },
- { 59, 0x004a, 8 },
- { 60, 0x004b, 8 },
- { 61, 0x0032, 8 },
- { 62, 0x0033, 8 },
- { 63, 0x0034, 8 },
- { 64, 0x001b, 5 },
- { 128, 0x0012, 5 },
- { 192, 0x0017, 6 },
- { 256, 0x0037, 7 },
- { 320, 0x0036, 8 },
- { 384, 0x0037, 8 },
- { 448, 0x0064, 8 },
- { 512, 0x0065, 8 },
- { 576, 0x0068, 8 },
- { 640, 0x0067, 8 },
- { 704, 0x00cc, 9 },
- { 768, 0x00cd, 9 },
- { 832, 0x00d2, 9 },
- { 896, 0x00d3, 9 },
- { 960, 0x00d4, 9 },
- { 1024, 0x00d5, 9 },
- { 1088, 0x00d6, 9 },
- { 1152, 0x00d7, 9 },
- { 1216, 0x00d8, 9 },
- { 1280, 0x00d9, 9 },
- { 1344, 0x00da, 9 },
- { 1408, 0x00db, 9 },
- { 1472, 0x0098, 9 },
- { 1536, 0x0099, 9 },
- { 1600, 0x009a, 9 },
- { 1664, 0x0018, 6 },
- { 1728, 0x009b, 9 },
- { 1792, 0x0008, 11 },
- { 1856, 0x000c, 11 },
- { 1920, 0x000d, 11 },
- { 1984, 0x0012, 12 },
- { 2048, 0x0013, 12 },
- { 2112, 0x0014, 12 },
- { 2176, 0x0015, 12 },
- { 2240, 0x0016, 12 },
- { 2304, 0x0017, 12 },
- { 2368, 0x001c, 12 },
- { 2432, 0x001d, 12 },
- { 2496, 0x001e, 12 },
- { 2560, 0x001f, 12 },
- { 9999, 0x0001, 12 } // EOL
-};
-
-const CCIHuffmanTableEntry CCIBlackTableSave[CCIBlackTableSize]={
- { 0, 0x0037, 10 },
- { 1, 0x0002, 3 },
- { 2, 0x0003, 2 },
- { 3, 0x0002, 2 },
- { 4, 0x0003, 3 },
- { 5, 0x0003, 4 },
- { 6, 0x0002, 4 },
- { 7, 0x0003, 5 },
- { 8, 0x0005, 6 },
- { 9, 0x0004, 6 },
- { 10, 0x0004, 7 },
- { 11, 0x0005, 7 },
- { 12, 0x0007, 7 },
- { 13, 0x0004, 8 },
- { 14, 0x0007, 8 },
- { 15, 0x0018, 9 },
- { 16, 0x0017, 10 },
- { 17, 0x0018, 10 },
- { 18, 0x0008, 10 },
- { 19, 0x0067, 11 },
- { 20, 0x0068, 11 },
- { 21, 0x006c, 11 },
- { 22, 0x0037, 11 },
- { 23, 0x0028, 11 },
- { 24, 0x0017, 11 },
- { 25, 0x0018, 11 },
- { 26, 0x00ca, 12 },
- { 27, 0x00cb, 12 },
- { 28, 0x00cc, 12 },
- { 29, 0x00cd, 12 },
- { 30, 0x0068, 12 },
- { 31, 0x0069, 12 },
- { 32, 0x006a, 12 },
- { 33, 0x006b, 12 },
- { 34, 0x00d2, 12 },
- { 35, 0x00d3, 12 },
- { 36, 0x00d4, 12 },
- { 37, 0x00d5, 12 },
- { 38, 0x00d6, 12 },
- { 39, 0x00d7, 12 },
- { 40, 0x006c, 12 },
- { 41, 0x006d, 12 },
- { 42, 0x00da, 12 },
- { 43, 0x00db, 12 },
- { 44, 0x0054, 12 },
- { 45, 0x0055, 12 },
- { 46, 0x0056, 12 },
- { 47, 0x0057, 12 },
- { 48, 0x0064, 12 },
- { 49, 0x0065, 12 },
- { 50, 0x0052, 12 },
- { 51, 0x0053, 12 },
- { 52, 0x0024, 12 },
- { 53, 0x0037, 12 },
- { 54, 0x0038, 12 },
- { 55, 0x0027, 12 },
- { 56, 0x0028, 12 },
- { 57, 0x0058, 12 },
- { 58, 0x0059, 12 },
- { 59, 0x002b, 12 },
- { 60, 0x002c, 12 },
- { 61, 0x005a, 12 },
- { 62, 0x0066, 12 },
- { 63, 0x0067, 12 },
- { 64, 0x000f, 10 },
- { 128, 0x00c8, 12 },
- { 192, 0x00c9, 12 },
- { 256, 0x005b, 12 },
- { 320, 0x0033, 12 },
- { 384, 0x0034, 12 },
- { 448, 0x0035, 12 },
- { 512, 0x006c, 13 },
- { 576, 0x006d, 13 },
- { 640, 0x004a, 13 },
- { 704, 0x004b, 13 },
- { 768, 0x004c, 13 },
- { 832, 0x004d, 13 },
- { 896, 0x0072, 13 },
- { 960, 0x0073, 13 },
- { 1024, 0x0074, 13 },
- { 1088, 0x0075, 13 },
- { 1152, 0x0076, 13 },
- { 1216, 0x0077, 13 },
- { 1280, 0x0052, 13 },
- { 1344, 0x0053, 13 },
- { 1408, 0x0054, 13 },
- { 1472, 0x0055, 13 },
- { 1536, 0x005a, 13 },
- { 1600, 0x005b, 13 },
- { 1664, 0x0064, 13 },
- { 1728, 0x0065, 13 },
- { 1792, 0x0008, 11 },
- { 1856, 0x000c, 11 },
- { 1920, 0x000d, 11 },
- { 1984, 0x0012, 12 },
- { 2048, 0x0013, 12 },
- { 2112, 0x0014, 12 },
- { 2176, 0x0015, 12 },
- { 2240, 0x0016, 12 },
- { 2304, 0x0017, 12 },
- { 2368, 0x001c, 12 },
- { 2432, 0x001d, 12 },
- { 2496, 0x001e, 12 },
- { 2560, 0x001f, 12 },
- { 9999, 0x0001, 12 } // EOL
-};
-
-
-const CCIHuffmanTableEntry CCI2DModeTableSave[CCI2DModeTableSize]={
- { CCI2DMODE_UNCOMP , 0x000f, 10 },
- { CCI2DMODE_PASS , 0x0001, 4 },
- { CCI2DMODE_HORZ , 0x0001, 3 },
- { CCI2DMODE_VERT_L3, 0x0002, 7 },
- { CCI2DMODE_VERT_L2, 0x0002, 6 },
- { CCI2DMODE_VERT_L1, 0x0002, 3 },
- { CCI2DMODE_VERT_0 , 0x0001, 1 },
- { CCI2DMODE_VERT_R1, 0x0003, 3 },
- { CCI2DMODE_VERT_R2, 0x0003, 6 },
- { CCI2DMODE_VERT_R3, 0x0003, 7 }
-};
-
-
-const CCIHuffmanTableEntry CCIUncompTableSave[CCIUncompTableSize]={
- { CCIUNCOMP_0White_1Black, 0x0001, 1 },
- { CCIUNCOMP_1White_1Black, 0x0001, 2 },
- { CCIUNCOMP_2White_1Black, 0x0001, 3 },
- { CCIUNCOMP_3White_1Black, 0x0001, 4 },
- { CCIUNCOMP_4White_1Black, 0x0001, 5 },
- { CCIUNCOMP_5White , 0x0001, 6 },
- { CCIUNCOMP_0White_End , 0x0001, 7 },
- { CCIUNCOMP_1White_End , 0x0001, 8 },
- { CCIUNCOMP_2White_End , 0x0001, 9 },
- { CCIUNCOMP_3White_End , 0x0001, 10 },
- { CCIUNCOMP_4White_End , 0x0001, 11 }
-};
-
-//=========================================================================
-
-
-CCIDecompressor::CCIDecompressor( ULONG nOpts, UINT32 nImageWidth ) :
- bTableBad ( FALSE ),
- bStatus ( FALSE ),
- pByteSwap ( NULL ),
- nWidth ( nImageWidth ),
- nOptions ( nOpts ),
- pLastLine ( NULL )
-{
- if ( nOpts & CCI_OPTION_INVERSEBITORDER )
- {
- pByteSwap = new BYTE[ 256 ];
- for ( int i = 0; i < 256; i++ )
- {
- pByteSwap[ i ] = sal::static_int_cast< BYTE >(
- ( i << 7 ) | ( ( i & 2 ) << 5 ) | ( ( i & 4 ) << 3 ) | ( ( i & 8 ) << 1 ) |
- ( ( i & 16 ) >> 1 ) | ( ( i & 32 ) >> 3 ) | ( ( i & 64 ) >> 5 ) | ( ( i & 128 ) >> 7 ));
- }
- }
-
- pWhiteLookUp =new CCILookUpTableEntry[1<<13];
- pBlackLookUp =new CCILookUpTableEntry[1<<13];
- p2DModeLookUp=new CCILookUpTableEntry[1<<10];
- pUncompLookUp=new CCILookUpTableEntry[1<<11];
-
- MakeLookUp(CCIWhiteTable,CCIWhiteTableSave,pWhiteLookUp,CCIWhiteTableSize,13);
- MakeLookUp(CCIBlackTable,CCIBlackTableSave,pBlackLookUp,CCIBlackTableSize,13);
- MakeLookUp(CCI2DModeTable,CCI2DModeTableSave,p2DModeLookUp,CCI2DModeTableSize,10);
- MakeLookUp(CCIUncompTable,CCIUncompTableSave,pUncompLookUp,CCIUncompTableSize,11);
-}
-
-
-CCIDecompressor::~CCIDecompressor()
-{
- delete[] pByteSwap;
- delete[] pLastLine;
- delete[] pWhiteLookUp;
- delete[] pBlackLookUp;
- delete[] p2DModeLookUp;
- delete[] pUncompLookUp;
-}
-
-
-void CCIDecompressor::StartDecompression( SvStream & rIStream )
-{
- pIStream = &rIStream;
- nInputBitsBufSize = 0;
- bFirstEOL = TRUE;
- bStatus = TRUE;
- nEOLCount = 0;
-
- if ( bTableBad == TRUE )
- return;
-}
-
-
-BOOL CCIDecompressor::DecompressScanline( BYTE * pTarget, ULONG nTargetBits )
-{
- USHORT i;
- BYTE * pSrc,* pDst;
- BOOL b2D;
-
- if ( nEOLCount >= 5 ) // RTC( Return To Controller )
- return TRUE;
-
- if ( bStatus == FALSE )
- return FALSE;
-
- // Wenn EOL-Codes vorhanden sind, steht der EOL-Code auch vor der ersten Zeile.
- // (und ich dachte EOL heisst 'End Of Line'...)
- // Daher lesen wir den EOL-Code immer vor jeder Zeile als erstes ein:
- if ( nOptions & CCI_OPTION_EOL )
- {
- if ( bFirstEOL )
- {
- UINT32 nCurPos = pIStream->Tell();
- UINT16 nOldInputBitsBufSize = nInputBitsBufSize;
- UINT32 nOldInputBitsBuf = nInputBitsBuf;
- if ( ReadEOL( 32 ) == FALSE )
- {
- nInputBitsBufSize = nOldInputBitsBufSize;
- nInputBitsBuf = nOldInputBitsBuf;
- pIStream->Seek( nCurPos );
- nOptions &=~ CCI_OPTION_EOL; // CCITT Group 3 - Compression Type 2
- }
- bFirstEOL = FALSE;
- }
- else
- {
- if ( ReadEOL( nTargetBits ) == FALSE )
- {
- return bStatus;
- }
- }
- }
-
- if ( nEOLCount >= 5 ) // RTC( Return To Controller )
- return TRUE;
-
- // ggf. eine weisse vorherige Zeile herstellen fuer 2D:
- if ( nOptions & CCI_OPTION_2D )
- {
- if ( pLastLine == NULL || nLastLineSize != ( ( nTargetBits + 7 ) >> 3 ) )
- {
- if ( pLastLine == NULL )
- delete[] pLastLine;
- nLastLineSize = ( nTargetBits + 7 ) >> 3;
- pLastLine = new BYTE[ nLastLineSize ];
- pDst = pLastLine;
- for ( i = 0; i < nLastLineSize; i++ ) *( pDst++ ) = 0x00;
- }
- }
- // ggf. Zeilen-Anfang auf naechste Byte-Grenze runden:
- if ( nOptions & CCI_OPTION_BYTEALIGNROW )
- nInputBitsBufSize &= 0xfff8;
-
- // Ist es eine 2D-Zeile ?:
- if ( nOptions & CCI_OPTION_2D )
- {
- if ( nOptions & CCI_OPTION_EOL )
- b2D = Read2DTag();
- else
- b2D = TRUE;
- }
- else
- b2D = FALSE;
-
- // Zeile einlesen:
- if ( b2D )
- Read2DScanlineData( pTarget, (USHORT)nTargetBits );
- else
- Read1DScanlineData( pTarget, (USHORT)nTargetBits );
-
- // Wenn wir im 2D-Modus sind, muessen wir uns die Zeile merken:
- if ( nOptions & CCI_OPTION_2D && bStatus == TRUE )
- {
- pSrc = pTarget;
- pDst = pLastLine;
- for ( i = 0; i < nLastLineSize; i++ ) *(pDst++)=*(pSrc++);
- }
-
- if ( pIStream->GetError() )
- bStatus = FALSE;
-
- return bStatus;
-}
-
-
-void CCIDecompressor::MakeLookUp(const CCIHuffmanTableEntry * pHufTab,
- const CCIHuffmanTableEntry * pHufTabSave,
- CCILookUpTableEntry * pLookUp,
- USHORT nHuffmanTableSize,
- USHORT nMaxCodeBits)
-{
- USHORT i,j,nMinCode,nMaxCode,nLookUpSize,nMask;
-
- if (bTableBad==TRUE) return;
-
- nLookUpSize=1<<nMaxCodeBits;
-
- nMask=0xffff>>(16-nMaxCodeBits);
-
- for (i=0; i<nLookUpSize; i++) pLookUp[i].nCodeBits=0;
- for (i=0; i<nHuffmanTableSize; i++) {
- if ( pHufTab[i].nValue!=pHufTabSave[i].nValue ||
- pHufTab[i].nCode!=pHufTabSave[i].nCode ||
- pHufTab[i].nCodeBits!=pHufTabSave[i].nCodeBits ||
- pHufTab[i].nCodeBits==0 ||
- pHufTab[i].nCodeBits>nMaxCodeBits )
- {
- bTableBad=TRUE;
- return;
- }
- nMinCode = nMask & (pHufTab[i].nCode << (nMaxCodeBits-pHufTab[i].nCodeBits));
- nMaxCode = nMinCode | (nMask >> pHufTab[i].nCodeBits);
- for (j=nMinCode; j<=nMaxCode; j++) {
- if (pLookUp[j].nCodeBits!=0) {
- bTableBad=TRUE;
- return;
- }
- pLookUp[j].nValue=pHufTab[i].nValue;
- pLookUp[j].nCodeBits=pHufTab[i].nCodeBits;
- }
- }
-}
-
-
-BOOL CCIDecompressor::ReadEOL( UINT32 /*nMaxFillBits*/ )
-{
- USHORT nCode;
- BYTE nByte;
-
- // if (nOptions&CCI_OPTION_BYTEALIGNEOL) nMaxFillBits=7; else nMaxFillBits=0;
- // Buuuh: Entweder wird die Option in itiff.cxx nicht richtig gesetzt (-> Fehler in Doku)
- // oder es gibt tatsaechlich gemeine Export-Filter, die immer ein Align machen.
- // Ausserdem wurden Dateien gefunden, in denen mehr als die maximal 7 noetigen
- // Fuellbits vor dem EOL-Code stehen. Daher akzeptieren wir nun grundsaetzlich
- // bis zu 32-Bloedsinn-Bits vor dem EOL-Code:
- // und ich habe eine Datei gefunden in der bis zu ??? Bloedsinn Bits stehen, zudem ist dort die Bit Reihenfolge verdreht (SJ);
-
- UINT32 nMaxPos = pIStream->Tell();
- nMaxPos += nWidth >> 3;
-
- for ( ;; )
- {
- while ( nInputBitsBufSize < 12 )
- {
- *pIStream >> nByte;
- if ( pIStream->IsEof() )
- return FALSE;
- if ( pIStream->Tell() > nMaxPos )
- return FALSE;
-
- if ( nOptions & CCI_OPTION_INVERSEBITORDER )
- nByte = pByteSwap[ nByte ];
- nInputBitsBuf=(nInputBitsBuf<<8) | (ULONG)nByte;
- nInputBitsBufSize += 8;
- }
- nCode = (USHORT)( ( nInputBitsBuf >> ( nInputBitsBufSize - 12 ) ) & 0x0fff );
- if ( nCode == 0x0001 )
- {
- nEOLCount++;
- nInputBitsBufSize -= 12;
- break;
- }
- else
- nInputBitsBufSize--;
- }
- return TRUE;
-}
-
-
-BOOL CCIDecompressor::Read2DTag()
-{
- BYTE nByte;
-
- // Ein Bit einlesen und TRUE liefern, wenn es 0 ist, sonst FALSE
- if (nInputBitsBufSize==0) {
- *pIStream >> nByte;
- if ( nOptions & CCI_OPTION_INVERSEBITORDER )
- nByte = pByteSwap[ nByte ];
- nInputBitsBuf=(ULONG)nByte;
- nInputBitsBufSize=8;
- }
- nInputBitsBufSize--;
- if ( ((nInputBitsBuf>>nInputBitsBufSize)&0x0001) ) return FALSE;
- else return TRUE;
-}
-
-
-BYTE CCIDecompressor::ReadBlackOrWhite()
-{
- BYTE nByte;
-
- // Ein Bit einlesen und 0x00 liefern, wenn es 0 ist, sonst 0xff
- if (nInputBitsBufSize==0) {
- *pIStream >> nByte;
- if ( nOptions & CCI_OPTION_INVERSEBITORDER )
- nByte = pByteSwap[ nByte ];
- nInputBitsBuf=(ULONG)nByte;
- nInputBitsBufSize=8;
- }
- nInputBitsBufSize--;
- if ( ((nInputBitsBuf>>nInputBitsBufSize)&0x0001) ) return 0xff;
- else return 0x00;
-}
-
-
-USHORT CCIDecompressor::ReadCodeAndDecode(const CCILookUpTableEntry * pLookUp,
- USHORT nMaxCodeBits)
-{
- USHORT nCode,nCodeBits;
- BYTE nByte;
-
- // Einen Huffman-Code einlesen und dekodieren:
- while (nInputBitsBufSize<nMaxCodeBits) {
- *pIStream >> nByte;
- if ( nOptions & CCI_OPTION_INVERSEBITORDER )
- nByte = pByteSwap[ nByte ];
- nInputBitsBuf=(nInputBitsBuf<<8) | (ULONG)nByte;
- nInputBitsBufSize+=8;
- }
- nCode=(USHORT)((nInputBitsBuf>>(nInputBitsBufSize-nMaxCodeBits))
- &(0xffff>>(16-nMaxCodeBits)));
- nCodeBits=pLookUp[nCode].nCodeBits;
- if (nCodeBits==0) bStatus=FALSE;
- nInputBitsBufSize = nInputBitsBufSize - nCodeBits;
- return pLookUp[nCode].nValue;
-}
-
-
-void CCIDecompressor::FillBits(BYTE * pTarget, USHORT nTargetBits,
- USHORT nBitPos, USHORT nNumBits,
- BYTE nBlackOrWhite)
-{
- if ( nBitPos >= nTargetBits )
- return;
- if ( nBitPos + nNumBits > nTargetBits )
- nNumBits = nTargetBits - nBitPos;
-
- pTarget+=nBitPos>>3;
- nBitPos&=7;
-
- if (nBlackOrWhite==0x00) *pTarget &= 0xff << (8-nBitPos);
- else *pTarget |= 0xff >> nBitPos;
- if (nNumBits>8-nBitPos) {
- nNumBits-=8-nBitPos;
- while (nNumBits>=8) {
- *(++pTarget)=nBlackOrWhite;
- nNumBits-=8;
- }
- if (nNumBits>0) *(++pTarget)=nBlackOrWhite;
- }
-}
-
-
-USHORT CCIDecompressor::CountBits(const BYTE * pData, USHORT nDataSizeBits,
- USHORT nBitPos, BYTE nBlackOrWhite)
-{
- USHORT nPos,nLo;
- BYTE nData;
-
- // Hier wird die Anzahl der zusammenhaengenden Bits gezaehlt, die
- // ab Position nBitPos in pTarget alle die Farbe nBlackOrWhite
- // (0xff oder 0x00) haben.
-
- nPos=nBitPos;
- for (;;) {
- if (nPos>=nDataSizeBits) {
- nPos=nDataSizeBits;
- break;
- }
- nData=pData[nPos>>3];
- nLo=nPos & 7;
- if ( nLo==0 && nData==nBlackOrWhite) nPos+=8;
- else {
- if ( ((nData^nBlackOrWhite) & (0x80 >> nLo))!=0) break;
- nPos++;
- }
- }
- if (nPos<=nBitPos) return 0;
- else return nPos-nBitPos;
-}
-
-
-void CCIDecompressor::Read1DScanlineData(BYTE * pTarget, USHORT nTargetBits)
-{
- USHORT nCode,nCodeBits,nDataBits,nTgtFreeByteBits;
- BYTE nByte;
- BYTE nBlackOrWhite; // ist 0xff fuer Black oder 0x00 fuer White
- BOOL bTerminatingCode;
-
- // Der erste Code ist immer eine "White-Code":
- nBlackOrWhite=0x00;
-
- // Anzahl der Bits, die im Byte *pTarget noch nicht geschrieben sind:
- nTgtFreeByteBits=8;
-
- // Schleife ueber Codes aus dem Eingabe-Stream:
- do {
-
- // die naechsten 13 Bits nach nCode holen, aber noch nicht
- // aus dem Eingabe-Buffer loeschen:
- while (nInputBitsBufSize<13) {
- *pIStream >> nByte;
- if ( nOptions & CCI_OPTION_INVERSEBITORDER )
- nByte = pByteSwap[ nByte ];
- nInputBitsBuf=(nInputBitsBuf<<8) | (ULONG)nByte;
- nInputBitsBufSize+=8;
- }
- nCode=(USHORT)((nInputBitsBuf>>(nInputBitsBufSize-13))&0x1fff);
-
- // Anzahl der DatenBits und Anzahl der CodeBits ermitteln:
- if (nBlackOrWhite) {
- nCodeBits=pBlackLookUp[nCode].nCodeBits;
- nDataBits=pBlackLookUp[nCode].nValue;
- }
- else {
- nCodeBits=pWhiteLookUp[nCode].nCodeBits;
- nDataBits=pWhiteLookUp[nCode].nValue;
- }
- // Ist es ein Ungueltiger Code ?
- if ( nDataBits == 9999 )
- {
- return;
- }
- if ( nCodeBits == 0 )
- {
- return; // das koennen sich jetzt um FuellBits handeln
- }
- nEOLCount = 0;
- // Zuviele Daten ?
- if (nDataBits>nTargetBits) {
- // Ja, koennte ein Folge-Fehler durch ungueltigen Code sein,
- // daher irdenwie weitermachen:
- nDataBits=nTargetBits;
- }
-
- // Ist es ein 'Terminating-Code' ?
- if (nDataBits<64) bTerminatingCode=TRUE; else bTerminatingCode=FALSE;
-
- // Die gelesenen Bits aus dem Eingabe-Buffer entfernen:
- nInputBitsBufSize = nInputBitsBufSize - nCodeBits;
-
- // Die Anzahl Daten-Bits in die Scanline schreiben:
- if (nDataBits>0) {
- nTargetBits = nTargetBits - nDataBits;
- if (nBlackOrWhite==0x00) *pTarget &= 0xff << nTgtFreeByteBits;
- else *pTarget |= 0xff >> (8-nTgtFreeByteBits);
- if (nDataBits<=nTgtFreeByteBits) {
- if (nDataBits==nTgtFreeByteBits) {
- pTarget++;
- nTgtFreeByteBits=8;
- }
- else nTgtFreeByteBits = nTgtFreeByteBits - nDataBits;
- }
- else {
- nDataBits = nDataBits - nTgtFreeByteBits;
- pTarget++;
- nTgtFreeByteBits=8;
- while (nDataBits>=8) {
- *(pTarget++)=nBlackOrWhite;
- nDataBits-=8;
- }
- if (nDataBits>0) {
- *pTarget=nBlackOrWhite;
- nTgtFreeByteBits = nTgtFreeByteBits - nDataBits;
- }
- }
- }
-
- // ggf. Umschaltung Black <-> White:
- if (bTerminatingCode==TRUE) nBlackOrWhite=~nBlackOrWhite;
-
- } while (nTargetBits>0 || bTerminatingCode==FALSE);
-}
-
-
-
-void CCIDecompressor::Read2DScanlineData(BYTE * pTarget, USHORT nTargetBits)
-{
- USHORT n2DMode,nBitPos,nUncomp,nRun,nRun2,nt;
- BYTE nBlackOrWhite;
-
- nBlackOrWhite=0x00;
- nBitPos=0;
-
- while (nBitPos<nTargetBits && bStatus==TRUE) {
-
- n2DMode=ReadCodeAndDecode(p2DModeLookUp,10);
- if (bStatus==FALSE) return;
-
- if (n2DMode==CCI2DMODE_UNCOMP) {
- for (;;) {
- nUncomp=ReadCodeAndDecode(pUncompLookUp,11);
- if ( nUncomp <= CCIUNCOMP_4White_1Black ) {
- nRun=nUncomp-CCIUNCOMP_0White_1Black;
- FillBits(pTarget,nTargetBits,nBitPos,nRun,0x00);
- nBitPos = nBitPos + nRun;
- FillBits(pTarget,nTargetBits,nBitPos,1,0xff);
- nBitPos++;
- }
- else if ( nUncomp == CCIUNCOMP_5White ) {
- FillBits(pTarget,nTargetBits,nBitPos,5,0x00);
- nBitPos = nBitPos + 5;
- }
- else {
- nRun=nUncomp-CCIUNCOMP_0White_End;
- FillBits(pTarget,nTargetBits,nBitPos,nRun,0x00);
- nBitPos = nBitPos + nRun;
- nBlackOrWhite=ReadBlackOrWhite();
- break;
- }
- }
- }
-
- else if (n2DMode==CCI2DMODE_PASS) {
- if (nBitPos==0 && nBlackOrWhite==0x00 && CountBits(pLastLine,nTargetBits,0,0xff)!=0) nRun=0;
- else {
- nRun=CountBits(pLastLine,nTargetBits,nBitPos,~nBlackOrWhite);
- nRun = nRun + CountBits(pLastLine,nTargetBits,nBitPos+nRun,nBlackOrWhite);
- }
- nRun = nRun + CountBits(pLastLine,nTargetBits,nBitPos+nRun,~nBlackOrWhite);
- FillBits(pTarget,nTargetBits,nBitPos,nRun,nBlackOrWhite);
- nBitPos = nBitPos + nRun;
- }
-
- else if (n2DMode==CCI2DMODE_HORZ) {
- if (nBlackOrWhite==0x00) {
- nRun=0;
- do {
- nt=ReadCodeAndDecode(pWhiteLookUp,13);
- nRun = nRun + nt;
- } while (nt>=64);
- nRun2=0;
- do {
- nt=ReadCodeAndDecode(pBlackLookUp,13);
- nRun2 = nRun2 + nt;
- } while (nt>=64);
- }
- else {
- nRun=0;
- do {
- nt=ReadCodeAndDecode(pBlackLookUp,13);
- nRun = nRun + nt;
- } while (nt>=64);
- nRun2=0;
- do {
- nt=ReadCodeAndDecode(pWhiteLookUp,13);
- nRun2 = nRun2 + nt;
- } while (nt>=64);
- }
- FillBits(pTarget,nTargetBits,nBitPos,nRun,nBlackOrWhite);
- nBitPos = nBitPos + nRun;
- FillBits(pTarget,nTargetBits,nBitPos,nRun2,~nBlackOrWhite);
- nBitPos = nBitPos + nRun2;
- }
-
- else { // Es ist einer der Modi CCI2DMODE_VERT_...
- if (nBitPos==0 && nBlackOrWhite==0x00 && CountBits(pLastLine,nTargetBits,0,0xff)!=0) nRun=0;
- else {
- nRun=CountBits(pLastLine,nTargetBits,nBitPos,~nBlackOrWhite);
- nRun = nRun + CountBits(pLastLine,nTargetBits,nBitPos+nRun,nBlackOrWhite);
- }
- nRun+=n2DMode-CCI2DMODE_VERT_0;
- FillBits(pTarget,nTargetBits,nBitPos,nRun,nBlackOrWhite);
- nBitPos = nBitPos + nRun;
- nBlackOrWhite=~nBlackOrWhite;
- }
- }
-}
-
-
diff --git a/goodies/source/filter.vcl/itiff/ccidecom.hxx b/goodies/source/filter.vcl/itiff/ccidecom.hxx
deleted file mode 100644
index a6a5512f0ddb..000000000000
--- a/goodies/source/filter.vcl/itiff/ccidecom.hxx
+++ /dev/null
@@ -1,128 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: ccidecom.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CCIDECOM_HXX
-#define _CCIDECOM_HXX
-
-#include <tools/stream.hxx>
-
-
-#define CCI_OPTION_2D 1 // 2D-Komprimierung (statt 1D)
-#define CCI_OPTION_EOL 2 // EOL-Codes am Ende jeder Zeile vorhanden
-#define CCI_OPTION_BYTEALIGNEOL 4 // Fuellbits vor jedem EOL-Code, so dass
- // Ende von EOL auf Bytes aligend
-#define CCI_OPTION_BYTEALIGNROW 8 // Rows beginnen immer auf Byte-Grenze
-#define CCI_OPTION_INVERSEBITORDER 16
-
-// Eintrag in eine Huffman-Tabelle:
-struct CCIHuffmanTableEntry {
- USHORT nValue; // Der Daten-Wert.
- USHORT nCode; // Der Code durch den der Daten-Wert repraesentiert wird.
- USHORT nCodeBits; // Laenge des Codes in Bits.
-};
-
-
-// Eintrag in eine Hash-Tabelle zur schnellen Dekodierung
-struct CCILookUpTableEntry {
- USHORT nValue;
- USHORT nCodeBits;
-};
-
-
-class CCIDecompressor {
-
-public:
-
- CCIDecompressor( ULONG nOptions, UINT32 nImageWidth );
- ~CCIDecompressor();
-
- void StartDecompression( SvStream & rIStream );
-
- BOOL DecompressScanline(BYTE * pTarget, ULONG nTargetBits );
-
-private:
-
- void MakeLookUp(const CCIHuffmanTableEntry * pHufTab,
- const CCIHuffmanTableEntry * pHufTabSave,
- CCILookUpTableEntry * pLookUp,
- USHORT nHuffmanTableSize,
- USHORT nMaxCodeBits);
-
- BOOL ReadEOL( UINT32 nMaxFillBits );
-
- BOOL Read2DTag();
-
- BYTE ReadBlackOrWhite();
-
- USHORT ReadCodeAndDecode(const CCILookUpTableEntry * pLookUp,
- USHORT nMaxCodeBits);
-
- void FillBits(BYTE * pTarget, USHORT nTargetBits,
- USHORT nBitPos, USHORT nNumBits,
- BYTE nBlackOrWhite);
-
- USHORT CountBits(const BYTE * pData, USHORT nDataSizeBits,
- USHORT nBitPos, BYTE nBlackOrWhite);
-
- void Read1DScanlineData(BYTE * pTarget, USHORT nTargetBits);
-
- void Read2DScanlineData(BYTE * pTarget, USHORT nTargetBits);
-
- BOOL bTableBad;
-
- BOOL bStatus;
-
- BYTE* pByteSwap;
-
- SvStream * pIStream;
-
- UINT32 nEOLCount;
-
- UINT32 nWidth;
-
- ULONG nOptions;
-
- BOOL bFirstEOL;
-
- CCILookUpTableEntry * pWhiteLookUp;
- CCILookUpTableEntry * pBlackLookUp;
- CCILookUpTableEntry * p2DModeLookUp;
- CCILookUpTableEntry * pUncompLookUp;
-
- ULONG nInputBitsBuf;
- USHORT nInputBitsBufSize;
-
- BYTE * pLastLine;
- ULONG nLastLineSize;
-};
-
-
-#endif
-
diff --git a/goodies/source/filter.vcl/itiff/exports.map b/goodies/source/filter.vcl/itiff/exports.map
deleted file mode 100644
index 983df223406e..000000000000
--- a/goodies/source/filter.vcl/itiff/exports.map
+++ /dev/null
@@ -1,7 +0,0 @@
-TIFIMPORTER_1_0 {
- global:
- GraphicImport;
-
- local:
- *;
-};
diff --git a/goodies/source/filter.vcl/itiff/itiff.cxx b/goodies/source/filter.vcl/itiff/itiff.cxx
deleted file mode 100644
index 0db2ace9373c..000000000000
--- a/goodies/source/filter.vcl/itiff/itiff.cxx
+++ /dev/null
@@ -1,1345 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: itiff.cxx,v $
- * $Revision: 1.16 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#ifndef _SV_FLTCALL_HXX
-#include <svtools/fltcall.hxx>
-#endif
-#include <vcl/animate.hxx>
-#include "lzwdecom.hxx"
-#include "ccidecom.hxx"
-
-#define OOODEBUG(str,Num) //(InfoBox(NULL,String(str)+String(" ")+String(Num)).Execute();
-
-namespace {
-
-template< typename T > T BYTESWAP(T nByte) {
- return ( nByte << 7 ) | ( ( nByte & 2 ) << 5 ) | ( ( nByte & 4 ) << 3 ) |
- ( ( nByte & 8 ) << 1 ) | ( ( nByte & 16 ) >> 1 ) |
- ( ( nByte & 32 ) >> 3 ) | ( ( nByte & 64 ) >> 5 ) |
- ( ( nByte & 128 ) >> 7 );
-}
-
-}
-
-//============================ TIFFReader ==================================
-
-class TIFFReader
-{
-
-private:
-
- BOOL bStatus; // Ob bisher kein Fehler auftrat
- Animation aAnimation;
- ULONG nLastPercent;
-
- SvStream* pTIFF; // Die einzulesende TIFF-Datei
- Bitmap aBitmap;
- BitmapWriteAccess* pAcc;
- USHORT nDstBitsPerPixel;
-
- ULONG nOrigPos; // Anfaengliche Position in pTIFF
- UINT16 nOrigNumberFormat; // Anfaengliches Nummern-Format von pTIFF
-
-
- UINT16 nDataType;
- // Daten, die aus dem TIFF-Tags entnommen werden:
- BOOL bByteSwap; // TRUE wenn bits 0..7 -> 7..0 invertiert werden sollen ( FILLORDER = 2 );
- BYTE nByte1; // 'I', wenn Format LittleEndian
-
- ULONG nNewSubFile; //
- ULONG nSubFile; //
- ULONG nImageWidth; // Bildbreite in Pixel
- ULONG nImageLength; // Bildhoehe in Pixel
- ULONG nBitsPerSample; // Bits pro Pixel pro Ebene
- ULONG nCompression; // Art der Kompriemierung
- ULONG nPhotometricInterpretation; //
- ULONG nThresholding; //
- ULONG nCellWidth; //
- ULONG nCellLength; //
- ULONG nFillOrder; //
- ULONG* pStripOffsets; // Feld von Offsets zu den Bitmap-Daten-"Strips"
- ULONG nNumStripOffsets; // Groesse obigen Feldes
- ULONG nOrientation; //
- ULONG nSamplesPerPixel; // Anzahl der Ebenen
- ULONG nRowsPerStrip; // Wenn nicht komprimiert: Zahl der Zeilen pro Strip
- ULONG* pStripByteCounts; // Wenn komprimiert (bestimmte Art): Groesse der Strips
- ULONG nNumStripByteCounts; // Anzahl der Eintraege in obiges Feld
- ULONG nMinSampleValue; //
- ULONG nMaxSampleValue; //
- double fXResolution; // X-Aufloesung oder 0.0
- double fYResolution; // Y-Aufloesung oder 0.0
- ULONG nPlanarConfiguration; //
- ULONG nGroup3Options; //
- ULONG nGroup4Options; //
- ULONG nResolutionUnit; // Einheit von fX/YResolution: 1=unbekannt, 2(default)=Zoll, 3=cm
- ULONG nPredictor; //
- ULONG* pColorMap; // Farb-Palette
- ULONG nNumColors; // Anzahl Farben in der Farbpalette
-
- ULONG nPlanes; // Anzahl der Ebenen in der Tiff-Datei
- ULONG nStripsPerPlane; // Anzahl der Strips pro Ebene
- ULONG nBytesPerRow; // Bytes pro Zeile pro Ebene in der Tiff-Datei ( unkomprimiert )
- BYTE* pMap[ 4 ]; // Temporaere Scanline
-
-
- void MayCallback( ULONG nPercent );
-
- ULONG DataTypeSize();
- ULONG ReadIntData();
- double ReadDoubleData();
-
- void ReadHeader();
- void ReadTagData( USHORT nTagType, sal_uInt32 nDataLen );
-
- BOOL ReadMap( ULONG nMinPercent, ULONG nMaxPercent );
- // Liesst/dekomprimert die Bitmap-Daten, und fuellt pMap
-
- ULONG GetBits( const BYTE * pSrc, ULONG nBitsPos, ULONG nBitsCount );
- // Holt nBitsCount Bits aus pSrc[..] an der Bit-Position nBitsPos
-
- void MakePalCol( void );
- // Erzeugt die Bitmap aus der temporaeren Bitmap pMap
- // und loescht dabei pMap teilweise
- BOOL ConvertScanline( ULONG nY );
- // Konvertiert eine Scanline in das Windows-BMP-Format
-
-public:
-
- TIFFReader() {}
- ~TIFFReader() {}
-
- BOOL ReadTIFF( SvStream & rTIFF, Graphic & rGraphic );
-};
-
-//=================== Methoden von TIFFReader ==============================
-
-void TIFFReader::MayCallback( ULONG /*nPercent*/ )
-{
-/*
- if ( nPercent >= nLastPercent + 3 )
- {
- nLastPercent=nPercent;
- if ( pCallback != NULL && nPercent <= 100 && bStatus == TRUE )
- {
- if (((*pCallback)(pCallerData,(USHORT)nPercent)) == TRUE )
- bStatus = FALSE;
- }
- }
-*/
-}
-
-// ---------------------------------------------------------------------------------
-
-ULONG TIFFReader::DataTypeSize()
-{
- ULONG nSize;
- switch ( nDataType )
- {
- case 1 : // BYTE
- case 2 : // ACSII
- case 6 : // SIGNED Byte
- case 7 : // UNDEFINED
- nSize = 1;
- break;
- case 3 : // UINT16
- case 8 : // INT16
- nSize = 2;
- break;
- case 4 : // UINT32
- case 9 : // INT32
- case 11 : // FLOAT
- nSize = 4;
- break;
- case 5 : // RATIONAL
- case 10 : // SIGNED RATINAL
- case 12 : // DOUBLE
- nSize = 8;
- break;
- default:
- pTIFF->SetError(SVSTREAM_FILEFORMAT_ERROR);
- nSize=1;
- }
- return nSize;
-}
-
-// ---------------------------------------------------------------------------------
-
-ULONG TIFFReader::ReadIntData()
-{
- double nDOUBLE;
- float nFLOAT;
- UINT32 nUINT32a, nUINT32b;
- INT32 nINT32;
- UINT16 nUINT16;
- INT16 nINT16;
- BYTE nBYTE;
- char nCHAR;
-
- switch( nDataType )
- {
- case 0 : //??
- case 1 :
- case 2 :
- case 7 :
- *pTIFF >> nBYTE;
- nUINT32a = (ULONG)nBYTE;
- break;
- case 3 :
- *pTIFF >> nUINT16;
- nUINT32a = (ULONG)nUINT16;
- break;
- case 9 :
- case 4 :
- *pTIFF >> nUINT32a;
- break;
- case 5 :
- *pTIFF >> nUINT32a >> nUINT32b;
- if ( nUINT32b != 0 )
- nUINT32a /= nUINT32b;
- break;
- case 6 :
- *pTIFF >> nCHAR;
- nUINT32a = (INT32)nCHAR;
- break;
- case 8 :
- *pTIFF >> nINT16;
- nUINT32a = (INT32)nINT16;
- break;
- case 10 :
- *pTIFF >> nUINT32a >> nINT32;
- if ( nINT32 != 0 )
- nUINT32a /= nINT32;
- break;
- case 11 :
- *pTIFF >> nFLOAT;
- nUINT32a = (INT32)nFLOAT;
- break;
- case 12 :
- *pTIFF >> nDOUBLE;
- nUINT32a = (INT32)nDOUBLE;
- break;
- default:
- *pTIFF >> nUINT32a;
- break;
- }
- return nUINT32a;
-}
-
-// ---------------------------------------------------------------------------------
-
-double TIFFReader::ReadDoubleData()
-{
- sal_uInt32 nulong;
- double nd;
-
- if ( nDataType == 5 )
- {
- *pTIFF >> nulong;
- nd = (double)nulong;
- *pTIFF >> nulong;
- if ( nulong != 0 )
- nd /= (double)nulong;
- }
- else
- nd = (double)ReadIntData();
- return nd;
-}
-
-// ---------------------------------------------------------------------------------
-
-void TIFFReader::ReadTagData( USHORT nTagType, sal_uInt32 nDataLen)
-{
- if ( bStatus == FALSE )
- return;
-
- switch ( nTagType )
- {
- case 0x00fe: // New Sub File
- nNewSubFile = ReadIntData();
- OOODEBUG("NewSubFile",nNewSubFile);
- break;
-
- case 0x00ff: // Sub File
- nSubFile = ReadIntData();
- OOODEBUG("SubFile",nSubFile);
- break;
-
- case 0x0100: // Image Width
- nImageWidth = ReadIntData();
- OOODEBUG("ImageWidth",nImageWidth);
- break;
-
- case 0x0101: // Image Length
- nImageLength = ReadIntData();
- OOODEBUG("ImageLength",nImageLength);
- break;
-
- case 0x0102: // Bits Per Sample
- nBitsPerSample = ReadIntData();
- OOODEBUG("BitsPerSample",nBitsPerSample);
- break;
-
- case 0x0103: // Compression
- nCompression = ReadIntData();
- OOODEBUG("Compression",nCompression);
- break;
-
- case 0x0106: // Photometric Interpreation
- nPhotometricInterpretation = ReadIntData();
- OOODEBUG("PhotometricInterpretation",nPhotometricInterpretation);
- break;
-
- case 0x0107: // Thresholding
- nThresholding = ReadIntData();
- OOODEBUG("Thresholding",nThresholding);
- break;
-
- case 0x0108: // Cell Width
- nCellWidth = ReadIntData();
- break;
-
- case 0x0109: // Cell Length
- nCellLength = ReadIntData();
- break;
-
- case 0x010a: // Fill Order
- nFillOrder = ReadIntData();
- OOODEBUG("FillOrder",nFillOrder);
- break;
-
- case 0x0111: { // Strip Offset(s)
- ULONG nOldNumSO, i, * pOldSO;
- pOldSO = pStripOffsets;
- if ( pOldSO == NULL )
- nNumStripOffsets = 0;
- nOldNumSO = nNumStripOffsets;
- nDataLen += nOldNumSO;
- if ( ( nDataLen > nOldNumSO ) && ( nDataLen < SAL_MAX_UINT32 / sizeof( sal_uInt32 ) ) )
- {
- nNumStripOffsets = nDataLen;
- try
- {
- pStripOffsets = new ULONG[ nNumStripOffsets ];
- }
- catch (std::bad_alloc)
- {
- pStripOffsets = NULL;
- nNumStripOffsets = 0;
- }
- if ( pStripOffsets )
- {
- for ( i = 0; i < nOldNumSO; i++ )
- pStripOffsets[ i ] = pOldSO[ i ] + nOrigPos;
- for ( i = nOldNumSO; i < nNumStripOffsets; i++ )
- pStripOffsets[ i ] = ReadIntData() + nOrigPos;
- }
- delete[] pOldSO;
- }
- OOODEBUG("StripOffsets (Anzahl:)",nDataLen);
- break;
- }
- case 0x0112: // Orientation
- nOrientation = ReadIntData();
- OOODEBUG("Orientation",nOrientation);
- break;
-
- case 0x0115: // Samples Per Pixel
- nSamplesPerPixel = ReadIntData();
- OOODEBUG("SamplesPerPixel",nSamplesPerPixel);
- break;
-
- case 0x0116: // Rows Per Strip
- nRowsPerStrip = ReadIntData();
- OOODEBUG("RowsPerStrip",nRowsPerStrip);
- break;
-
- case 0x0117: { // Strip Byte Counts
- ULONG nOldNumSBC, i, * pOldSBC;
- pOldSBC = pStripByteCounts;
- if ( pOldSBC == NULL )
- nNumStripByteCounts = 0; // Sicherheitshalber
- nOldNumSBC = nNumStripByteCounts;
- nDataLen += nOldNumSBC;
- if ( ( nDataLen > nOldNumSBC ) && ( nDataLen < SAL_MAX_UINT32 / sizeof( sal_uInt32 ) ) )
- {
- nNumStripByteCounts = nDataLen;
- try
- {
- pStripByteCounts = new ULONG[ nNumStripByteCounts ];
- }
- catch (std::bad_alloc)
- {
- pStripByteCounts = NULL;
- nNumStripByteCounts = 0;
- }
- if ( pStripByteCounts )
- {
- for ( i = 0; i < nOldNumSBC; i++ )
- pStripByteCounts[ i ] = pOldSBC[ i ];
- for ( i = nOldNumSBC; i < nNumStripByteCounts; i++)
- pStripByteCounts[ i ] = ReadIntData();
- }
- delete[] pOldSBC;
- }
- OOODEBUG("StripByteCounts (Anzahl:)",nDataLen);
- break;
- }
- case 0x0118: // Min Sample Value
- nMinSampleValue = ReadIntData();
- OOODEBUG("MinSampleValue",nMinSampleValue);
- break;
-
- case 0x0119: // Max Sample Value
- nMaxSampleValue = ReadIntData();
- OOODEBUG("MaxSampleValue",nMaxSampleValue);
- break;
-
- case 0x011a: // X Resolution
- fXResolution = ReadDoubleData();
- break;
-
- case 0x011b: // Y Resolution
- fYResolution = ReadDoubleData();
- break;
-
- case 0x011c: // Planar Configuration
- nPlanarConfiguration = ReadIntData();
- OOODEBUG("PlanarConfiguration",nPlanarConfiguration);
- break;
-
- case 0x0124: // Group 3 Options
- nGroup3Options = ReadIntData();
- OOODEBUG("Group3Options",nGroup3Options);
- break;
-
- case 0x0125: // Group 4 Options
- nGroup4Options = ReadIntData();
- OOODEBUG("Group4Options",nGroup4Options);
- break;
-
- case 0x0128: // Resolution Unit
- nResolutionUnit = ReadIntData();
- break;
-
- case 0x013d: // Predictor
- nPredictor = ReadIntData();
- OOODEBUG("Predictor",nPredictor);
- break;
-
- case 0x0140: { // Color Map
- USHORT nVal;
- ULONG i;
- nNumColors= ( 1 << nBitsPerSample );
- if ( nDataType == 3 && nNumColors <= 256)
- {
- pColorMap = new ULONG[ 256 ];
- for ( i = 0; i < nNumColors; i++ )
- pColorMap[ i ] = 0;
- for ( i = 0; i < nNumColors; i++ )
- {
- *pTIFF >> nVal;
- pColorMap[ i ] |= ( ( (ULONG)nVal ) << 8 ) & 0x00ff0000;
- }
- for ( i = 0; i < nNumColors; i++ )
- {
- *pTIFF >> nVal;
- pColorMap[ i ] |= ( (ULONG)nVal ) & 0x0000ff00;
- }
- for ( i = 0; i < nNumColors; i++ )
- {
- *pTIFF >> nVal;
- pColorMap[ i ] |= ( ( (ULONG)nVal ) >> 8 ) & 0x000000ff;
- }
- }
- else
- bStatus = FALSE;
- OOODEBUG("ColorMap (Anzahl Farben:)", nNumColors);
- break;
- }
- }
-
- if ( pTIFF->GetError() )
- bStatus = FALSE;
-}
-
-// ---------------------------------------------------------------------------------
-
-BOOL TIFFReader::ReadMap( ULONG nMinPercent, ULONG nMaxPercent )
-{
- if ( nCompression == 1 || nCompression == 32771 )
- {
- ULONG ny, np, nStrip, nStripBytesPerRow;
-
- if ( nCompression == 1 )
- nStripBytesPerRow = nBytesPerRow;
- else
- nStripBytesPerRow = ( nBytesPerRow + 1 ) & 0xfffffffe;
- for ( ny = 0; ny < nImageLength; ny++ )
- {
- for ( np = 0; np < nPlanes; np++ )
- {
- nStrip = ny / nRowsPerStrip + np * nStripsPerPlane;
- if ( nStrip >= nNumStripOffsets )
- return FALSE;
- pTIFF->Seek( pStripOffsets[ nStrip ] + ( ny % nRowsPerStrip ) * nStripBytesPerRow );
- pTIFF->Read( pMap[ np ], nBytesPerRow );
- if ( pTIFF->GetError() )
- return FALSE;
- MayCallback( nMinPercent + ( nMaxPercent - nMinPercent ) * ( np * nImageLength + ny) / ( nImageLength * nPlanes ) );
- }
- if ( !ConvertScanline( ny ) )
- return FALSE;
- }
- }
- else if ( nCompression == 2 || nCompression == 3 || nCompression == 4 )
- {
- ULONG ny, np, nStrip, nOptions;
- if ( nCompression == 2 )
- {
- nOptions = CCI_OPTION_BYTEALIGNROW;
- }
- else if ( nCompression == 3 )
- {
- nOptions = CCI_OPTION_EOL;
- if ( nGroup3Options & 0x00000001 )
- nOptions |= CCI_OPTION_2D;
- if ( nGroup3Options & 0x00000004 )
- nOptions |= CCI_OPTION_BYTEALIGNEOL;
- if ( nGroup3Options & 0xfffffffa )
- return FALSE;
- }
- else
- { // nCompression==4
- nOptions = CCI_OPTION_2D;
- if ( nGroup4Options & 0xffffffff )
- return FALSE;
- }
- if ( nFillOrder == 2 )
- {
- nOptions |= CCI_OPTION_INVERSEBITORDER;
- bByteSwap = FALSE;
- }
- nStrip = 0;
- if ( nStrip >= nNumStripOffsets )
- return FALSE;
- pTIFF->Seek(pStripOffsets[nStrip]);
-
- CCIDecompressor aCCIDecom( nOptions, nImageWidth );
-
- aCCIDecom.StartDecompression( *pTIFF );
-
- for ( ny = 0; ny < nImageLength; ny++ )
- {
- for ( np = 0; np < nPlanes; np++ )
- {
- if ( ny / nRowsPerStrip + np * nStripsPerPlane > nStrip )
- {
- nStrip=ny/nRowsPerStrip+np*nStripsPerPlane;
- if ( nStrip >= nNumStripOffsets )
- return FALSE;
- pTIFF->Seek( pStripOffsets[ nStrip ] );
- aCCIDecom.StartDecompression( *pTIFF );
- }
- if ( aCCIDecom.DecompressScanline( pMap[ np ], nImageWidth * nBitsPerSample * nSamplesPerPixel / nPlanes ) == FALSE )
- return FALSE;
- if ( pTIFF->GetError() )
- return FALSE;
- MayCallback(nMinPercent+(nMaxPercent-nMinPercent)*(np*nImageLength+ny)/(nImageLength*nPlanes));
- }
- if ( !ConvertScanline( ny ) )
- return FALSE;
- }
- }
- else if ( nCompression == 5 )
- {
- LZWDecompressor aLZWDecom;
- ULONG ny, np, nStrip;
- nStrip=0;
- if ( nStrip >= nNumStripOffsets )
- return FALSE;
- pTIFF->Seek(pStripOffsets[nStrip]);
- aLZWDecom.StartDecompression(*pTIFF);
- for ( ny = 0; ny < nImageLength; ny++ )
- {
- for ( np = 0; np < nPlanes; np++ )
- {
- if ( ny / nRowsPerStrip + np * nStripsPerPlane > nStrip )
- {
- nStrip = ny / nRowsPerStrip + np * nStripsPerPlane;
- if ( nStrip >= nNumStripOffsets )
- return FALSE;
- pTIFF->Seek(pStripOffsets[nStrip]);
- aLZWDecom.StartDecompression(*pTIFF);
- }
- if ( ( aLZWDecom.Decompress( pMap[ np ], nBytesPerRow ) != nBytesPerRow ) || pTIFF->GetError() )
- return FALSE;
- MayCallback(nMinPercent+(nMaxPercent-nMinPercent)*(np*nImageLength+ny)/(nImageLength*nPlanes));
- }
- if ( !ConvertScanline( ny ) )
- return FALSE;
- }
- }
- else if ( nCompression == 32773 )
- {
- ULONG nStrip,nRecCount,nRowBytesLeft,ny,np,i;
- BYTE * pdst, nRecHeader, nRecData;
- nStrip = 0;
- if ( nStrip >= nNumStripOffsets )
- return FALSE;
- pTIFF->Seek(pStripOffsets[nStrip]);
- for ( ny = 0; ny < nImageLength; ny++ )
- {
- for ( np = 0; np < nPlanes; np++ )
- {
- if ( ny / nRowsPerStrip + np * nStripsPerPlane > nStrip )
- {
- nStrip=ny/nRowsPerStrip+np*nStripsPerPlane;
- if ( nStrip >= nNumStripOffsets )
- return FALSE;
- pTIFF->Seek(pStripOffsets[nStrip]);
- }
- nRowBytesLeft = nBytesPerRow;
- pdst=pMap[ np ];
- do
- {
- *pTIFF >> nRecHeader;
- if ((nRecHeader&0x80)==0)
- {
- nRecCount=0x00000001+((ULONG)nRecHeader);
- if ( nRecCount > nRowBytesLeft )
- return FALSE;
- pTIFF->Read(pdst,nRecCount);
- pdst+=nRecCount;
- nRowBytesLeft-=nRecCount;
- }
- else if ( nRecHeader != 0x80 )
- {
- nRecCount = 0x000000101 - ( (ULONG)nRecHeader );
- if ( nRecCount > nRowBytesLeft )
- {
- nRecCount = nRowBytesLeft;
-
-// bStatus = FALSE;
-// return;
-
- }
- *pTIFF >> nRecData;
- for ( i = 0; i < nRecCount; i++ )
- *(pdst++) = nRecData;
- nRowBytesLeft -= nRecCount;
- }
- } while ( nRowBytesLeft != 0 );
- if ( pTIFF->GetError() )
- return FALSE;
- MayCallback(nMinPercent+(nMaxPercent-nMinPercent)*(np*nImageLength+ny)/(nImageLength*nPlanes));
- }
- if ( !ConvertScanline( ny ) )
- return FALSE;
- }
- }
- else
- return FALSE;
- return TRUE;
-}
-
-ULONG TIFFReader::GetBits( const BYTE * pSrc, ULONG nBitsPos, ULONG nBitsCount )
-{
- ULONG nRes;
- if ( bByteSwap )
- {
- pSrc += ( nBitsPos >> 3 );
- nBitsPos &= 7;
- BYTE nDat = *pSrc;
- nRes = (ULONG)( BYTESWAP( nDat ) & ( 0xff >> nBitsPos ) );
-
- if ( nBitsCount <= 8 - nBitsPos )
- {
- nRes >>= ( 8 - nBitsPos - nBitsCount );
- }
- else
- {
- pSrc++;
- nBitsCount -= 8 - nBitsPos;
- while ( nBitsCount >= 8 )
- {
- nDat = *(pSrc++);
- nRes = ( nRes << 8 ) | ((ULONG)BYTESWAP( nDat ) );
- nBitsCount -= 8;
- }
- if ( nBitsCount > 0 )
- {
- nDat = *pSrc;
- nRes = ( nRes << nBitsCount ) | (((ULONG)BYTESWAP(nDat))>>(8-nBitsCount));
- }
- }
- }
- else
- {
- pSrc += ( nBitsPos >> 3 );
- nBitsPos &= 7;
- nRes = (ULONG)((*pSrc)&(0xff>>nBitsPos));
- if ( nBitsCount <= 8 - nBitsPos )
- {
- nRes >>= ( 8 - nBitsPos - nBitsCount );
- }
- else
- {
- pSrc++;
- nBitsCount -= 8 - nBitsPos;
- while ( nBitsCount >= 8 )
- {
- nRes = ( nRes << 8 ) | ((ULONG)*(pSrc++));
- nBitsCount -= 8;
- }
- if ( nBitsCount > 0 )
- nRes = ( nRes << nBitsCount ) | (((ULONG)*pSrc)>>(8-nBitsCount));
- }
- }
- return nRes;
-}
-
-// ---------------------------------------------------------------------------------
-
-BOOL TIFFReader::ConvertScanline( ULONG nY )
-{
- UINT32 nRed, nGreen, nBlue, ns, nx, nVal, nByteCount;
- BYTE nByteVal;
-
- if ( nDstBitsPerPixel == 24 )
- {
- if ( nBitsPerSample == 8 && nSamplesPerPixel >= 3 &&
- nPlanes == 1 && nPhotometricInterpretation == 2 )
- {
- BYTE* pt = pMap[ 0 ];
-
- // sind die Werte als Differenz abgelegt?
- if ( 2 == nPredictor )
- {
- BYTE nLRed = 0;
- BYTE nLGreen = 0;
- BYTE nLBlue = 0;
- for ( nx = 0; nx < nImageWidth; nx++, pt += nSamplesPerPixel )
- {
- nLRed = nLRed + pt[ 0 ];
- nLGreen = nLGreen + pt[ 1 ];
- nLBlue = nLBlue + pt[ 2 ];
- pAcc->SetPixel( nY, nx, Color( nLRed, nLGreen, nLBlue ) );
- }
- }
- else
- {
- for ( nx = 0; nx < nImageWidth; nx++, pt += nSamplesPerPixel )
- {
- pAcc->SetPixel( nY, nx, Color( pt[0], pt[1], pt[2] ) );
- }
- }
- }
- else if ( nPhotometricInterpretation == 2 && nSamplesPerPixel >= 3 )
- {
- ULONG nMinMax = nMinSampleValue * 255 / ( nMaxSampleValue - nMinSampleValue );
- for ( nx = 0; nx < nImageWidth; nx++ )
- {
- if ( nPlanes < 3 )
- {
- nRed = GetBits( pMap[ 0 ], ( nx * nSamplesPerPixel + 0 ) * nBitsPerSample, nBitsPerSample );
- nGreen = GetBits( pMap[ 1 ], ( nx * nSamplesPerPixel + 1 ) * nBitsPerSample, nBitsPerSample );
- nBlue = GetBits( pMap[ 2 ], ( nx * nSamplesPerPixel + 2 ) * nBitsPerSample, nBitsPerSample );
- }
- else
- {
- nRed = GetBits( pMap[ 0 ], nx * nBitsPerSample, nBitsPerSample );
- nGreen = GetBits( pMap[ 1 ], nx * nBitsPerSample, nBitsPerSample );
- nBlue = GetBits( pMap[ 2 ], nx * nBitsPerSample, nBitsPerSample );
- }
- pAcc->SetPixel( nY, nx, Color( (BYTE)( nRed - nMinMax ), (BYTE)( nGreen - nMinMax ), (BYTE)(nBlue - nMinMax) ) );
- }
- }
- else if ( nPhotometricInterpretation == 5 && nSamplesPerPixel == 3 )
- {
- ULONG nMinMax = nMinSampleValue * 255 / ( nMaxSampleValue - nMinSampleValue );
- for ( nx = 0; nx < nImageWidth; nx++ )
- {
- if ( nPlanes < 3 )
- {
- nRed = GetBits( pMap[ 0 ],( nx * nSamplesPerPixel + 0 ) * nBitsPerSample, nBitsPerSample );
- nGreen = GetBits( pMap[ 0 ],( nx * nSamplesPerPixel + 1 ) * nBitsPerSample, nBitsPerSample );
- nBlue = GetBits( pMap[ 0 ],( nx * nSamplesPerPixel + 2 ) * nBitsPerSample, nBitsPerSample );
- }
- else
- {
- nRed = GetBits( pMap[ 0 ], nx * nBitsPerSample, nBitsPerSample );
- nGreen = GetBits( pMap[ 1 ], nx * nBitsPerSample, nBitsPerSample );
- nBlue = GetBits( pMap[ 2 ], nx * nBitsPerSample, nBitsPerSample );
- }
- nRed = 255 - (BYTE)( nRed - nMinMax );
- nGreen = 255 - (BYTE)( nGreen - nMinMax );
- nBlue = 255 - (BYTE)( nBlue - nMinMax );
- pAcc->SetPixel( nY, nx, Color( (BYTE) nRed, (BYTE) nGreen, (BYTE) nBlue ) );
- }
- }
- else if( nPhotometricInterpretation == 5 && nSamplesPerPixel == 4 )
- {
- BYTE nSamp[ 4 ];
- BYTE nSampLast[ 4 ] = { 0, 0, 0, 0 };
- long nBlack;
-
- for( nx = 0; nx < nImageWidth; nx++ )
- {
- // sind die Werte als Differenz abgelegt?
- if( 2 == nPredictor )
- {
- for( ns = 0; ns < 4; ns++ )
- {
- if( nPlanes < 3 )
- nSampLast[ ns ] = nSampLast[ ns ] + (BYTE) GetBits( pMap[ 0 ], ( nx * nSamplesPerPixel + ns ) * nBitsPerSample, nBitsPerSample );
- else
- nSampLast[ ns ] = nSampLast[ ns ] + (BYTE) GetBits( pMap[ ns ], nx * nBitsPerSample, nBitsPerSample );
- nSamp[ ns ] = nSampLast[ ns ];
- }
- }
- else
- {
- for( ns = 0; ns < 4; ns++ )
- {
- if( nPlanes < 3 )
- nSamp[ ns ] = (BYTE) GetBits( pMap[ 0 ], ( nx * nSamplesPerPixel + ns ) * nBitsPerSample, nBitsPerSample );
- else
- nSamp[ ns ]= (BYTE) GetBits( pMap[ ns ], nx * nBitsPerSample, nBitsPerSample );
- }
- }
- nBlack = nSamp[ 3 ];
- nRed = (BYTE) Max( 0L, 255L - ( ( (long) nSamp[ 0 ] + nBlack - ( ( (long) nMinSampleValue ) << 1 ) ) *
- 255L/(long)(nMaxSampleValue-nMinSampleValue) ) );
- nGreen = (BYTE) Max( 0L, 255L - ( ( (long) nSamp[ 1 ] + nBlack - ( ( (long) nMinSampleValue ) << 1 ) ) *
- 255L/(long)(nMaxSampleValue-nMinSampleValue) ) );
- nBlue = (BYTE) Max( 0L, 255L - ( ( (long) nSamp[ 2 ] + nBlack - ( ( (long) nMinSampleValue ) << 1 ) ) *
- 255L/(long)(nMaxSampleValue-nMinSampleValue) ) );
- pAcc->SetPixel( nY, nx, Color ( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
-
- }
- }
- }
- else if ( nSamplesPerPixel == 1 && ( nPhotometricInterpretation <= 1 || nPhotometricInterpretation == 3 ) )
- {
- ULONG nMinMax = ( ( 1 << nDstBitsPerPixel ) - 1 ) / ( nMaxSampleValue - nMinSampleValue );
- BYTE* pt = pMap[ 0 ];
- BYTE nShift;
-
- switch ( nDstBitsPerPixel )
- {
- case 8 :
- {
- BYTE nLast;
- if ( bByteSwap )
- {
- if ( nPredictor == 2 )
- {
- nLast = BYTESWAP( (BYTE)*pt++ );
- for ( nx = 0; nx < nImageWidth; nx++ )
- {
- pAcc->SetPixel( nY, nx, nLast );
- nLast = nLast + *pt++;
- }
- }
- else
- {
- for ( nx = 0; nx < nImageWidth; nx++ )
- {
- nLast = *pt++;
- pAcc->SetPixel( nY, nx, (BYTE)( ( (BYTESWAP((ULONG)nLast ) - nMinSampleValue ) * nMinMax ) ) );
- }
- }
- }
- else
- {
- if ( nPredictor == 2 )
- {
- nLast = *pt++;
- for ( nx = 0; nx < nImageWidth; nx++ )
- {
- pAcc->SetPixel( nY, nx, nLast );
- nLast = nLast + *pt++;
- }
- }
- else
- {
- for ( nx = 0; nx < nImageWidth; nx++ )
- {
- pAcc->SetPixel( nY, nx, (BYTE)( ( (ULONG)*pt++ - nMinSampleValue ) * nMinMax ) );
-
- }
- }
- }
- }
- break;
-
- case 7 :
- case 6 :
- case 5 :
- case 4 :
- case 3 :
- case 2 :
- {
- for ( nx = 0; nx < nImageWidth; nx++ )
- {
- nVal = ( GetBits( pt, nx * nBitsPerSample, nBitsPerSample ) - nMinSampleValue ) * nMinMax;
- pAcc->SetPixel( nY, nx, (BYTE)nVal );
- }
- }
- break;
-
- case 1 :
- {
- if ( bByteSwap )
- {
- nx = 0;
- nByteCount = ( nImageWidth >> 3 ) + 1;
- while ( --nByteCount )
- {
- nByteVal = *pt++;
- pAcc->SetPixel( nY, nx++, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, nx++, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, nx++, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, nx++, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, nx++, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, nx++, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, nx++, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, nx++, nByteVal );
- }
- if ( nImageWidth & 7 )
- {
- nByteVal = *pt++;
- while ( nx < nImageWidth )
- {
- pAcc->SetPixel( nY, nx++, nByteVal & 1 );
- nByteVal >>= 1;
- }
- }
- }
- else
- {
- nx = 7;
- nByteCount = ( nImageWidth >> 3 ) + 1;
- while ( --nByteCount )
- {
- nByteVal = *pt++;
- pAcc->SetPixel( nY, nx, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, --nx, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, --nx, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, --nx, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, --nx, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, --nx, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, --nx, nByteVal & 1 );
- nByteVal >>= 1;
- pAcc->SetPixel( nY, --nx, nByteVal );
- nx += 15;
- }
- if ( nImageWidth & 7 )
- {
- nx -= 7;
- nByteVal = *pt++;
- nShift = 7;
- while ( nx < nImageWidth )
- {
- pAcc->SetPixel( nY, nx++, ( nByteVal >> nShift ) & 1);
- }
- }
- }
- }
- break;
-
- default :
- return FALSE;
- }
- }
- else if ( ( nSamplesPerPixel == 2 ) && ( nBitsPerSample == 8 ) &&
- ( nPlanarConfiguration == 1 ) && ( pColorMap == 0 ) ) // grayscale
- {
- ULONG nMinMax = ( ( 1 << 8 /*nDstBitsPerPixel*/ ) - 1 ) / ( nMaxSampleValue - nMinSampleValue );
- BYTE* pt = pMap[ 0 ];
- if ( nByte1 == 'I' )
- pt++;
- for ( nx = 0; nx < nImageWidth; nx++, pt += 2 )
- {
- pAcc->SetPixel( nY, nx, (BYTE)( ( (ULONG)*pt - nMinSampleValue ) * nMinMax ) );
- }
- }
- else
- return FALSE;
- return TRUE;
-}
-
-// ---------------------------------------------------------------------------------
-
-void TIFFReader::MakePalCol( void )
-{
- if ( nDstBitsPerPixel <= 8 )
- {
- ULONG i, nVal, n0RGB;
- if ( pColorMap == NULL )
- pColorMap = new ULONG[ 256 ];
- if ( nPhotometricInterpretation <= 1 )
- {
- nNumColors = 1 << nBitsPerSample;
- if ( nNumColors > 256 )
- nNumColors = 256;
- pAcc->SetPaletteEntryCount( (USHORT)nNumColors );
- for ( i = 0; i < nNumColors; i++ )
- {
- nVal = ( i * 255 / ( nNumColors - 1 ) ) & 0xff;
- n0RGB = nVal | ( nVal << 8 ) | ( nVal << 16 );
- if ( nPhotometricInterpretation == 1 )
- pColorMap[ i ] = n0RGB;
- else
- pColorMap[ nNumColors - i - 1 ] = n0RGB;
- }
- }
- for ( i = 0; i < nNumColors; i++ )
- {
- pAcc->SetPaletteColor( (USHORT)i, BitmapColor( (BYTE)( pColorMap[ i ] >> 16 ),
- (BYTE)( pColorMap[ i ] >> 8 ), (BYTE)pColorMap[ i ] ) );
- }
- }
-
- if ( fXResolution > 1.0 && fYResolution > 1.0 && ( nResolutionUnit == 2 || nResolutionUnit == 3 ) )
- {
- ULONG nRX,nRY;
- if (nResolutionUnit==2)
- {
- nRX=(ULONG)(fXResolution+0.5);
- nRY=(ULONG)(fYResolution+0.5);
- }
- else
- {
- nRX=(ULONG)(fXResolution*2.54+0.5);
- nRY=(ULONG)(fYResolution*2.54+0.5);
- }
- MapMode aMapMode(MAP_INCH,Point(0,0),Fraction(1,nRX),Fraction(1,nRY));
- aBitmap.SetPrefMapMode(aMapMode);
- aBitmap.SetPrefSize(Size(nImageWidth,nImageLength));
- }
-}
-
-// ---------------------------------------------------------------------------------
-
-void TIFFReader::ReadHeader()
-{
- BYTE nbyte1, nbyte2;
- USHORT nushort;
-
- *pTIFF >> nbyte1;
- if ( nbyte1 == 'I' )
- pTIFF->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
- else
- pTIFF->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
-
- *pTIFF >> nbyte2 >> nushort;
- if ( nbyte1 != nbyte2 || ( nbyte1 != 'I' && nbyte1 != 'M' ) || nushort != 0x002a )
- bStatus = FALSE;
-}
-
-// ---------------------------------------------------------------------------------
-
-BOOL TIFFReader::ReadTIFF(SvStream & rTIFF, Graphic & rGraphic )
-{
- USHORT i, nNumTags, nTagType;
- ULONG nMaxPos;
- ULONG nPos;
- sal_uInt32 nFirstIfd, nDataLen;
-
- bStatus = TRUE;
- nLastPercent = 0;
-
- pTIFF = &rTIFF;
- nMaxPos = nOrigPos = pTIFF->Tell();
- nOrigNumberFormat = pTIFF->GetNumberFormatInt();
-
- MayCallback( 0 );
-
- // Kopf einlesen:
- ReadHeader();
-
- // Ersten IFD einlesen:
- *pTIFF >> nFirstIfd;
-
- if( !nFirstIfd || pTIFF->GetError() )
- bStatus = FALSE;
-
- if ( bStatus )
- {
- sal_uInt32 nOffset = nFirstIfd;
-
- // calculate length of TIFF file
- do
- {
- pTIFF->Seek( nOrigPos + nOffset );
-
- if( pTIFF->GetError() )
- {
- pTIFF->ResetError();
- break;
- };
- nMaxPos = Max( pTIFF->Tell(), nMaxPos );
-
- *pTIFF >> nNumTags;
-
- // Schleife ueber Tags:
- for( i = 0; i < nNumTags; i++ )
- {
- *pTIFF >> nTagType >> nDataType >> nDataLen >> nOffset;
-
- if( DataTypeSize() * nDataLen > 4 )
- nMaxPos = Max( nOrigPos + nOffset + DataTypeSize() * nDataLen, nMaxPos );
- }
- *pTIFF >> nOffset;
- if ( pTIFF->IsEof() )
- nOffset = 0;
-
- nMaxPos = Max( pTIFF->Tell(), nMaxPos );
- if ( !nOffset )
- nMaxPos = Max( pTIFF->Tell(), nMaxPos );
- }
- while( nOffset );
-
- for ( UINT32 nNextIfd = nFirstIfd; nNextIfd && bStatus; )
- {
- pTIFF->Seek( nOrigPos + nNextIfd );
- {
- bByteSwap = FALSE;
-
- nNewSubFile = 0;
- nSubFile = 0;
- nImageWidth = 0;
- nImageLength = 0;
- nBitsPerSample = 1; // Defaultwert laut Doku
- nCompression = 1;
- nPhotometricInterpretation = 0;
- nThresholding = 1; // Defaultwert laut Doku
- nCellWidth = 1;
- nCellLength = 1;
- nFillOrder = 1; // Defaultwert laut Doku
- nNumStripOffsets = 0;
- nOrientation = 1;
- nSamplesPerPixel = 1; // Defaultwert laut Doku
- nRowsPerStrip = 0xffffffff; // Defaultwert laut Doku
- nNumStripByteCounts = 0;
- nMinSampleValue = 0; // Defaultwert laut Doku
- nMaxSampleValue = 0;
- fXResolution = 0.0;
- fYResolution = 0.0;
- nPlanarConfiguration = 1;
- nGroup3Options = 0; // Defaultwert laut Doku
- nGroup4Options = 0; // Defaultwert laut Doku
- nResolutionUnit = 2; // Defaultwert laut Doku
- nPredictor = 1;
- nNumColors = 0;
-
- pAcc = NULL;
- pColorMap = NULL;
- pStripOffsets = NULL;
- pStripByteCounts = NULL;
- pMap[ 0 ] = pMap[ 1 ] = pMap[ 2 ] = pMap[ 3 ] = NULL;
-
- *pTIFF >> nNumTags;
- nPos = pTIFF->Tell();
-
- // Schleife ueber Tags:
- for( i = 0; i < nNumTags; i++ )
- {
- *pTIFF >> nTagType >> nDataType >> nDataLen;
-
- if( DataTypeSize() * nDataLen > 4 )
- {
- *pTIFF >> nOffset;
- pTIFF->Seek( nOrigPos + nOffset );
- }
- ReadTagData( nTagType, nDataLen );
- nPos += 12; pTIFF->Seek( nPos );
-
- if ( pTIFF->GetError() )
- bStatus = FALSE;
-
- if ( bStatus == FALSE )
- break;
- }
- *pTIFF >> nNextIfd;
- if ( pTIFF->IsEof() )
- nNextIfd = 0;
- }
- if ( bStatus )
- {
- if ( nMaxSampleValue == 0 )
- nMaxSampleValue = ( 1 << nBitsPerSample ) - 1;
-
- if ( nPhotometricInterpretation == 2 || nPhotometricInterpretation == 5 || nPhotometricInterpretation == 6 )
- nDstBitsPerPixel = 24;
- else if ( nBitsPerSample*nSamplesPerPixel <= 1 )
- nDstBitsPerPixel = 1;
- else if ( nBitsPerSample*nSamplesPerPixel <= 4 )
- nDstBitsPerPixel = 4;
- else
- nDstBitsPerPixel = 8;
-
- aBitmap = Bitmap( Size( nImageWidth, nImageLength ), nDstBitsPerPixel );
- pAcc = aBitmap.AcquireWriteAccess();
- if ( pAcc )
- {
- if ( nPlanarConfiguration == 1 )
- nPlanes = 1;
- else
- nPlanes = nSamplesPerPixel;
-
- if ( ( nFillOrder == 2 ) && ( nCompression != 5 ) ) // im LZW Mode werden die bits schon invertiert
- bByteSwap = TRUE;
-
- nStripsPerPlane = ( nImageLength - 1 ) / nRowsPerStrip + 1;
- nBytesPerRow = ( nImageWidth * nSamplesPerPixel / nPlanes * nBitsPerSample + 7 ) >> 3;
-
- for ( ULONG j = 0; j < 4; j++ )
- {
- try
- {
- pMap[ j ] = new BYTE[ nBytesPerRow ];
- }
- catch (std::bad_alloc)
- {
- pMap[ j ] = NULL;
- bStatus = FALSE;
- break;
- }
- }
-
- if ( bStatus && ReadMap( 10, 60 ) )
- {
- nMaxPos = Max( pTIFF->Tell(), nMaxPos );
- MakePalCol();
- nMaxPos = Max( pTIFF->Tell(), nMaxPos );
- }
- else
- bStatus = FALSE;
-
- if( pAcc )
- {
- aBitmap.ReleaseAccess( pAcc );
- if ( bStatus )
- {
- AnimationBitmap aAnimationBitmap( aBitmap, Point( 0, 0 ), aBitmap.GetSizePixel(),
- ANIMATION_TIMEOUT_ON_CLICK, DISPOSE_BACK );
-
- aAnimation.Insert( aAnimationBitmap );
- }
- }
- // Aufraeumen:
- for ( i = 0; i < 4; i++ )
- delete[] pMap[ i ];
-
- delete[] pColorMap;
- delete[] pStripOffsets;
- delete[] pStripByteCounts;
- }
- }
- }
- }
-
- // seek to end of TIFF if succeeded
- pTIFF->SetNumberFormatInt( nOrigNumberFormat );
- pTIFF->Seek( bStatus ? nMaxPos : nOrigPos );
-
- if ( aAnimation.Count() )
- {
- if ( aAnimation.Count() == 1 )
- rGraphic = aAnimation.GetBitmapEx();
- else
- rGraphic = aAnimation; //aBitmap;
-
- return TRUE;
- }
- else
- return FALSE;
-}
-
-
-//================== GraphicImport - die exportierte Funktion ================
-
-extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
-{
- TIFFReader aTIFFReader;
-
- if ( aTIFFReader.ReadTIFF( rStream, rGraphic ) == FALSE )
- return FALSE;
-
- return TRUE;
-}
-
-//============================= fuer Windows ==================================
-#ifndef GCC
-#endif
-
-#ifdef WIN
-
-static HINSTANCE hDLLInst = 0; // HANDLE der DLL
-
-extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
-{
-#ifndef WNT
- if ( nHeap )
- UnlockData( 0 );
-#endif
-
- hDLLInst = hDLL;
-
- return TRUE;
-}
-
-extern "C" int CALLBACK WEP( int )
-{
- return 1;
-}
-
-#endif
-
-
diff --git a/goodies/source/filter.vcl/itiff/lzwdecom.cxx b/goodies/source/filter.vcl/itiff/lzwdecom.cxx
deleted file mode 100644
index 673b634ae4e7..000000000000
--- a/goodies/source/filter.vcl/itiff/lzwdecom.cxx
+++ /dev/null
@@ -1,195 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: lzwdecom.cxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include "lzwdecom.hxx"
-
-LZWDecompressor::LZWDecompressor()
-{
- USHORT i;
-
- pTable=new LZWTableEntry[4096];
- pOutBuf=new BYTE[4096];
- for (i=0; i<4096; i++)
- {
- pTable[i].nPrevCode=0;
- pTable[i].nDataCount=1;
- pTable[i].nData=(BYTE)i;
- }
- pIStream=NULL;
- bFirst = TRUE;
- nOldCode = 0;
-}
-
-
-LZWDecompressor::~LZWDecompressor()
-{
- delete[] pOutBuf;
- delete[] pTable;
-}
-
-
-void LZWDecompressor::StartDecompression(SvStream & rIStream)
-{
- pIStream=&rIStream;
-
- nTableSize=258;
-
- bEOIFound=FALSE;
-
- nOutBufDataLen=0;
-
- *pIStream >> nInputBitsBuf;
-
- nInputBitsBufSize=8;
-
- if ( bFirst )
- {
- bInvert = nInputBitsBuf == 1;
- bFirst = FALSE;
- }
-
- if ( bInvert )
- nInputBitsBuf = ( ( nInputBitsBuf & 1 ) << 7 ) | ( ( nInputBitsBuf & 2 ) << 5 ) | ( ( nInputBitsBuf & 4 ) << 3 ) | ( ( nInputBitsBuf & 8 ) << 1 ) | ( ( nInputBitsBuf & 16 ) >> 1 ) | ( ( nInputBitsBuf & 32 ) >> 3 ) | ( ( nInputBitsBuf & 64 ) >> 5 ) | ( (nInputBitsBuf & 128 ) >> 7 );
-}
-
-
-ULONG LZWDecompressor::Decompress(BYTE * pTarget, ULONG nMaxCount)
-{
- ULONG nCount;
-
- if (pIStream==NULL) return 0;
-
- nCount=0;
- for (;;) {
-
- if (pIStream->GetError()) break;
-
- if (((ULONG)nOutBufDataLen)>=nMaxCount) {
- nOutBufDataLen = nOutBufDataLen - (USHORT)nMaxCount;
- nCount+=nMaxCount;
- while (nMaxCount>0) {
- *(pTarget++)=*(pOutBufData++);
- nMaxCount--;
- }
- break;
- }
-
- nMaxCount-=(ULONG)nOutBufDataLen;
- nCount+=nOutBufDataLen;
- while (nOutBufDataLen>0) {
- *(pTarget++)=*(pOutBufData++);
- nOutBufDataLen--;
- }
-
- if (bEOIFound==TRUE) break;
-
- DecompressSome();
-
- }
-
- return nCount;
-}
-
-
-USHORT LZWDecompressor::GetNextCode()
-{
- USHORT nBits,nCode;
-
- if (nTableSize<511) nBits=9;
- else if (nTableSize<1023) nBits=10;
- else if (nTableSize<2047) nBits=11;
- else nBits=12;
-
- nCode=0;
- do {
- if (nInputBitsBufSize<=nBits)
- {
- nCode=(nCode<<nInputBitsBufSize) | nInputBitsBuf;
- nBits = nBits - nInputBitsBufSize;
- *pIStream >> nInputBitsBuf;
- if ( bInvert )
- nInputBitsBuf = ( ( nInputBitsBuf & 1 ) << 7 ) | ( ( nInputBitsBuf & 2 ) << 5 ) | ( ( nInputBitsBuf & 4 ) << 3 ) | ( ( nInputBitsBuf & 8 ) << 1 ) | ( ( nInputBitsBuf & 16 ) >> 1 ) | ( ( nInputBitsBuf & 32 ) >> 3 ) | ( ( nInputBitsBuf & 64 ) >> 5 ) | ( (nInputBitsBuf & 128 ) >> 7 );
- nInputBitsBufSize=8;
- }
- else
- {
- nCode=(nCode<<nBits) | (nInputBitsBuf>>(nInputBitsBufSize-nBits));
- nInputBitsBufSize = nInputBitsBufSize - nBits;
- nInputBitsBuf&=0x00ff>>(8-nInputBitsBufSize);
- nBits=0;
- }
- } while (nBits>0);
-
- return nCode;
-}
-
-
-void LZWDecompressor::AddToTable(USHORT nPrevCode, USHORT nCodeFirstData)
-{
- while (pTable[nCodeFirstData].nDataCount>1)
- nCodeFirstData=pTable[nCodeFirstData].nPrevCode;
-
- pTable[nTableSize].nPrevCode=nPrevCode;
- pTable[nTableSize].nDataCount=pTable[nPrevCode].nDataCount+1;
- pTable[nTableSize].nData=pTable[nCodeFirstData].nData;
-
- nTableSize++;
-}
-
-
-void LZWDecompressor::DecompressSome()
-{
- USHORT i,nCode;
-
- nCode=GetNextCode();
- if (nCode==256) {
- nTableSize=258;
- nCode=GetNextCode();
- if (nCode==257) { bEOIFound=TRUE; return; }
- }
- else if (nCode<nTableSize) AddToTable(nOldCode,nCode);
- else if (nCode==nTableSize) AddToTable(nOldCode,nOldCode);
- else { bEOIFound=TRUE; return; }
-
- nOldCode=nCode;
-
- nOutBufDataLen=pTable[nCode].nDataCount;
- pOutBufData=pOutBuf+nOutBufDataLen;
- for (i=0; i<nOutBufDataLen; i++) {
- *(--pOutBufData)=pTable[nCode].nData;
- nCode=pTable[nCode].nPrevCode;
- }
-}
-
-
-
diff --git a/goodies/source/filter.vcl/itiff/lzwdecom.hxx b/goodies/source/filter.vcl/itiff/lzwdecom.hxx
deleted file mode 100644
index 0c5c6e6e7d63..000000000000
--- a/goodies/source/filter.vcl/itiff/lzwdecom.hxx
+++ /dev/null
@@ -1,82 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: lzwdecom.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _LZWDECOM_HXX
-#define _LZWDECOM_HXX
-
-#include <tools/stream.hxx>
-
-struct LZWTableEntry {
- USHORT nPrevCode;
- USHORT nDataCount;
- BYTE nData;
-};
-
-class LZWDecompressor {
-
-public:
-
- LZWDecompressor();
- ~LZWDecompressor();
-
- void StartDecompression(SvStream & rIStream);
-
- ULONG Decompress(BYTE * pTarget, ULONG nMaxCount);
- // Liefert die Anzahl der geschriebenen Bytes, wenn < nMaxCount,
- // sind keine weiteren Daten zu entpacken, oder es ist ein
- // Fehler aufgetreten.
-
-private:
-
- USHORT GetNextCode();
- void AddToTable(USHORT nPrevCode, USHORT nCodeFirstData);
- void DecompressSome();
-
- SvStream * pIStream;
-
- LZWTableEntry * pTable;
- USHORT nTableSize;
-
- BOOL bEOIFound, bInvert, bFirst;
-
- USHORT nOldCode;
-
- BYTE * pOutBuf;
- BYTE * pOutBufData;
- USHORT nOutBufDataLen;
-
- BYTE nInputBitsBuf;
- USHORT nInputBitsBufSize;
-};
-
-
-#endif
-
-
diff --git a/goodies/source/filter.vcl/itiff/makefile.mk b/goodies/source/filter.vcl/itiff/makefile.mk
deleted file mode 100644
index 78405a563659..000000000000
--- a/goodies/source/filter.vcl/itiff/makefile.mk
+++ /dev/null
@@ -1,75 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=goodies
-TARGET=itiff
-DEPTARGET=vitiff
-
-# --- Settings -----------------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ----------------------------------------------------------
-
-.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
-CDEFS+= -DEDITDEBUG
-.ENDIF
-.IF "$(L10N_framework)"==""
-SLOFILES = $(SLO)$/itiff.obj \
- $(SLO)$/lzwdecom.obj \
- $(SLO)$/ccidecom.obj
-
-EXCEPTIONSNOOPTFILES= $(SLO)$/itiff.obj
-
-# ==========================================================================
-
-SHL1TARGET= iti$(DLLPOSTFIX)
-SHL1IMPLIB= itiff
-SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
-SHL1LIBS= $(SLB)$/itiff.lib # $(LB)$/rtftoken.lib
-
-.IF "$(GUI)" != "UNX"
-.IF "$(COM)" != "GCC"
-SHL1OBJS= $(SLO)$/itiff.obj
-.ENDIF
-.ENDIF
-
-SHL1VERSIONMAP=exports.map
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME=$(SHL1TARGET)
-.ENDIF
-
-# ==========================================================================
-
-.INCLUDE : target.mk
diff --git a/goodies/source/graphic/grfattr.cxx b/goodies/source/graphic/grfattr.cxx
deleted file mode 100644
index f04011d9e6b0..000000000000
--- a/goodies/source/graphic/grfattr.cxx
+++ /dev/null
@@ -1,121 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: grfattr.cxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <tools/vcompat.hxx>
-#include "grfmgr.hxx"
-
-// ---------------
-// - GraphicAttr -
-// ---------------
-
-GraphicAttr::GraphicAttr() :
- mfGamma ( 1.0 ),
- mnMirrFlags ( 0 ),
- mnLeftCrop ( 0 ),
- mnTopCrop ( 0 ),
- mnRightCrop ( 0 ),
- mnBottomCrop ( 0 ),
- mnRotate10 ( 0 ),
- mnContPercent ( 0 ),
- mnLumPercent ( 0 ),
- mnRPercent ( 0 ),
- mnGPercent ( 0 ),
- mnBPercent ( 0 ),
- mbInvert ( FALSE ),
- mcTransparency ( 0 ),
- meDrawMode ( GRAPHICDRAWMODE_STANDARD )
-{
-}
-
-// ------------------------------------------------------------------------
-
-GraphicAttr::~GraphicAttr()
-{
-}
-
-// ------------------------------------------------------------------------
-
-BOOL GraphicAttr::operator==( const GraphicAttr& rAttr ) const
-{
- return( ( mfGamma == rAttr.mfGamma ) &&
- ( mnMirrFlags == rAttr.mnMirrFlags ) &&
- ( mnLeftCrop == rAttr.mnLeftCrop ) &&
- ( mnTopCrop == rAttr.mnTopCrop ) &&
- ( mnRightCrop == rAttr.mnRightCrop ) &&
- ( mnBottomCrop == rAttr.mnBottomCrop ) &&
- ( mnRotate10 == rAttr.mnRotate10 ) &&
- ( mnContPercent == rAttr.mnContPercent ) &&
- ( mnLumPercent == rAttr.mnLumPercent ) &&
- ( mnRPercent == rAttr.mnRPercent ) &&
- ( mnGPercent == rAttr.mnGPercent ) &&
- ( mnBPercent == rAttr.mnBPercent ) &&
- ( mbInvert == rAttr.mbInvert ) &&
- ( mcTransparency == rAttr.mcTransparency ) &&
- ( meDrawMode == rAttr.meDrawMode ) );
-}
-
-// ------------------------------------------------------------------------
-
-SvStream& operator>>( SvStream& rIStm, GraphicAttr& rAttr )
-{
- VersionCompat aCompat( rIStm, STREAM_READ );
- sal_uInt32 nTmp32;
- UINT16 nTmp16;
-
- rIStm >> nTmp32 >> nTmp32 >> rAttr.mfGamma >> rAttr.mnMirrFlags >> rAttr.mnRotate10;
- rIStm >> rAttr.mnContPercent >> rAttr.mnLumPercent >> rAttr.mnRPercent >> rAttr.mnGPercent >> rAttr.mnBPercent;
- rIStm >> rAttr.mbInvert >> rAttr.mcTransparency >> nTmp16;
- rAttr.meDrawMode = (GraphicDrawMode) nTmp16;
-
- if( aCompat.GetVersion() >= 2 )
- {
- rIStm >> rAttr.mnLeftCrop >> rAttr.mnTopCrop >> rAttr.mnRightCrop >> rAttr.mnBottomCrop;
- }
-
- return rIStm;
-}
-
-// ------------------------------------------------------------------------
-
-SvStream& operator<<( SvStream& rOStm, const GraphicAttr& rAttr )
-{
- VersionCompat aCompat( rOStm, STREAM_WRITE, 2 );
- const sal_uInt32 nTmp32 = 0;
-
- rOStm << nTmp32 << nTmp32 << rAttr.mfGamma << rAttr.mnMirrFlags << rAttr.mnRotate10;
- rOStm << rAttr.mnContPercent << rAttr.mnLumPercent << rAttr.mnRPercent << rAttr.mnGPercent << rAttr.mnBPercent;
- rOStm << rAttr.mbInvert << rAttr.mcTransparency << (UINT16) rAttr.meDrawMode;
- rOStm << rAttr.mnLeftCrop << rAttr.mnTopCrop << rAttr.mnRightCrop << rAttr.mnBottomCrop;
-
- return rOStm;
-}
diff --git a/goodies/source/graphic/grfcache.cxx b/goodies/source/graphic/grfcache.cxx
deleted file mode 100644
index 1a2af16ed741..000000000000
--- a/goodies/source/graphic/grfcache.cxx
+++ /dev/null
@@ -1,1055 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: grfcache.cxx,v $
- * $Revision: 1.23.38.1 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vos/timer.hxx>
-#include <tools/debug.hxx>
-#include <vcl/outdev.hxx>
-#include <tools/poly.hxx>
-#include "grfcache.hxx"
-
-// -----------
-// - Defines -
-// -----------
-
-#define RELEASE_TIMEOUT 10000
-#define MAX_BMP_EXTENT 4096
-
-// -----------
-// - statics -
-// -----------
-
-static const char aHexData[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
-
-// -------------
-// - GraphicID -
-// -------------
-
-class GraphicID
-{
-private:
-
- sal_uInt32 mnID1;
- sal_uInt32 mnID2;
- sal_uInt32 mnID3;
- sal_uInt32 mnID4;
-
- GraphicID();
-
-public:
-
-
- GraphicID( const GraphicObject& rObj );
- ~GraphicID() {}
-
- BOOL operator==( const GraphicID& rID ) const
- {
- return( rID.mnID1 == mnID1 && rID.mnID2 == mnID2 &&
- rID.mnID3 == mnID3 && rID.mnID4 == mnID4 );
- }
-
- ByteString GetIDString() const;
- BOOL IsEmpty() const { return( 0 == mnID4 ); }
-};
-
-// -----------------------------------------------------------------------------
-
-GraphicID::GraphicID( const GraphicObject& rObj )
-{
- const Graphic& rGraphic = rObj.GetGraphic();
-
- mnID1 = ( (ULONG) rGraphic.GetType() ) << 28;
-
- switch( rGraphic.GetType() )
- {
- case( GRAPHIC_BITMAP ):
- {
- if( rGraphic.IsAnimated() )
- {
- const Animation aAnimation( rGraphic.GetAnimation() );
-
- mnID1 |= ( aAnimation.Count() & 0x0fffffff );
- mnID2 = aAnimation.GetDisplaySizePixel().Width();
- mnID3 = aAnimation.GetDisplaySizePixel().Height();
- mnID4 = rGraphic.GetChecksum();
- }
- else
- {
- const BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
-
- mnID1 |= ( ( ( (ULONG) aBmpEx.GetTransparentType() << 8 ) | ( aBmpEx.IsAlpha() ? 1 : 0 ) ) & 0x0fffffff );
- mnID2 = aBmpEx.GetSizePixel().Width();
- mnID3 = aBmpEx.GetSizePixel().Height();
- mnID4 = rGraphic.GetChecksum();
- }
- }
- break;
-
- case( GRAPHIC_GDIMETAFILE ):
- {
- const GDIMetaFile aMtf( rGraphic.GetGDIMetaFile() );
-
- mnID1 |= ( aMtf.GetActionCount() & 0x0fffffff );
- mnID2 = aMtf.GetPrefSize().Width();
- mnID3 = aMtf.GetPrefSize().Height();
- mnID4 = rGraphic.GetChecksum();
- }
- break;
-
- default:
- mnID2 = mnID3 = mnID4 = 0;
- break;
- }
-}
-
-// -----------------------------------------------------------------------------
-
-ByteString GraphicID::GetIDString() const
-{
- ByteString aHexStr;
- sal_Char* pStr = aHexStr.AllocBuffer( 32 );
- sal_Int32 nShift;
-
- for( nShift = 28; nShift >= 0; nShift -= 4 )
- *pStr++ = aHexData[ ( mnID1 >> (sal_uInt32) nShift ) & 0xf ];
-
- for( nShift = 28; nShift >= 0; nShift -= 4 )
- *pStr++ = aHexData[ ( mnID2 >> (sal_uInt32) nShift ) & 0xf ];
-
- for( nShift = 28; nShift >= 0; nShift -= 4 )
- *pStr++ = aHexData[ ( mnID3 >> (sal_uInt32) nShift ) & 0xf ];
-
- for( nShift = 28; nShift >= 0; nShift -= 4 )
- *pStr++ = aHexData[ ( mnID4 >> (sal_uInt32) nShift ) & 0xf ];
-
- return aHexStr;
-}
-
-// ---------------------
-// - GraphicCacheEntry -
-// ---------------------
-
-class GraphicCacheEntry
-{
-private:
-
- List maGraphicObjectList;
- GraphicID maID;
- GfxLink maGfxLink;
- BitmapEx* mpBmpEx;
- GDIMetaFile* mpMtf;
- Animation* mpAnimation;
- BOOL mbSwappedAll;
-
- BOOL ImplInit( const GraphicObject& rObj );
- BOOL ImplMatches( const GraphicObject& rObj ) const { return( GraphicID( rObj ) == maID ); }
- void ImplFillSubstitute( Graphic& rSubstitute );
-
-public:
-
- GraphicCacheEntry( const GraphicObject& rObj );
- ~GraphicCacheEntry();
-
- const GraphicID& GetID() const { return maID; }
-
- void AddGraphicObjectReference( const GraphicObject& rObj, Graphic& rSubstitute );
- BOOL ReleaseGraphicObjectReference( const GraphicObject& rObj );
- ULONG GetGraphicObjectReferenceCount() { return maGraphicObjectList.Count(); }
- BOOL HasGraphicObjectReference( const GraphicObject& rObj );
-
- void TryToSwapIn();
- void GraphicObjectWasSwappedOut( const GraphicObject& rObj );
- BOOL FillSwappedGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute );
- void GraphicObjectWasSwappedIn( const GraphicObject& rObj );
-};
-
-// -----------------------------------------------------------------------------
-
-GraphicCacheEntry::GraphicCacheEntry( const GraphicObject& rObj ) :
- maID ( rObj ),
- mpBmpEx ( NULL ),
- mpMtf ( NULL ),
- mpAnimation ( NULL ),
- mbSwappedAll ( !ImplInit( rObj ) )
-{
- maGraphicObjectList.Insert( (void*) &rObj, LIST_APPEND );
-}
-
-// -----------------------------------------------------------------------------
-
-GraphicCacheEntry::~GraphicCacheEntry()
-{
- DBG_ASSERT( !maGraphicObjectList.Count(), "GraphicCacheEntry::~GraphicCacheEntry(): Not all GraphicObjects are removed from this entry" );
-
- delete mpBmpEx;
- delete mpMtf;
- delete mpAnimation;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicCacheEntry::ImplInit( const GraphicObject& rObj )
-{
- BOOL bRet;
-
- if( !rObj.IsSwappedOut() )
- {
- const Graphic& rGraphic = rObj.GetGraphic();
-
- if( mpBmpEx )
- delete mpBmpEx, mpBmpEx = NULL;
-
- if( mpMtf )
- delete mpMtf, mpMtf = NULL;
-
- if( mpAnimation )
- delete mpAnimation, mpAnimation = NULL;
-
- switch( rGraphic.GetType() )
- {
- case( GRAPHIC_BITMAP ):
- {
- if( rGraphic.IsAnimated() )
- mpAnimation = new Animation( rGraphic.GetAnimation() );
- else
- mpBmpEx = new BitmapEx( rGraphic.GetBitmapEx() );
- }
- break;
-
- case( GRAPHIC_GDIMETAFILE ):
- {
- mpMtf = new GDIMetaFile( rGraphic.GetGDIMetaFile() );
- }
- break;
-
- default:
- DBG_ASSERT( GetID().IsEmpty(), "GraphicCacheEntry::ImplInit: Could not initialize graphic! (=>KA)" );
- break;
- }
-
- if( rGraphic.IsLink() )
- maGfxLink = ( (Graphic&) rGraphic ).GetLink();
- else
- maGfxLink = GfxLink();
-
- bRet = TRUE;
- }
- else
- bRet = FALSE;
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCacheEntry::ImplFillSubstitute( Graphic& rSubstitute )
-{
- // create substitute for graphic;
- const Size aPrefSize( rSubstitute.GetPrefSize() );
- const MapMode aPrefMapMode( rSubstitute.GetPrefMapMode() );
- const Link aAnimationNotifyHdl( rSubstitute.GetAnimationNotifyHdl() );
- const String aDocFileName( rSubstitute.GetDocFileName() );
- const ULONG nDocFilePos = rSubstitute.GetDocFilePos();
- const GraphicType eOldType = rSubstitute.GetType();
- const BOOL bDefaultType = ( rSubstitute.GetType() == GRAPHIC_DEFAULT );
-
- if( rSubstitute.IsLink() && ( GFX_LINK_TYPE_NONE == maGfxLink.GetType() ) )
- maGfxLink = rSubstitute.GetLink();
-
- if( mpBmpEx )
- rSubstitute = *mpBmpEx;
- else if( mpAnimation )
- rSubstitute = *mpAnimation;
- else if( mpMtf )
- rSubstitute = *mpMtf;
- else
- rSubstitute.Clear();
-
- if( eOldType != GRAPHIC_NONE )
- {
- rSubstitute.SetPrefSize( aPrefSize );
- rSubstitute.SetPrefMapMode( aPrefMapMode );
- rSubstitute.SetAnimationNotifyHdl( aAnimationNotifyHdl );
- rSubstitute.SetDocFileName( aDocFileName, nDocFilePos );
- }
-
- if( GFX_LINK_TYPE_NONE != maGfxLink.GetType() )
- rSubstitute.SetLink( maGfxLink );
-
- if( bDefaultType )
- rSubstitute.SetDefaultType();
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCacheEntry::AddGraphicObjectReference( const GraphicObject& rObj, Graphic& rSubstitute )
-{
- if( mbSwappedAll )
- mbSwappedAll = !ImplInit( rObj );
-
- ImplFillSubstitute( rSubstitute );
- maGraphicObjectList.Insert( (void*) &rObj, LIST_APPEND );
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicCacheEntry::ReleaseGraphicObjectReference( const GraphicObject& rObj )
-{
- BOOL bRet = FALSE;
-
- for( void* pObj = maGraphicObjectList.First(); !bRet && pObj; pObj = maGraphicObjectList.Next() )
- {
- if( &rObj == (GraphicObject*) pObj )
- {
- maGraphicObjectList.Remove( pObj );
- bRet = TRUE;
- }
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicCacheEntry::HasGraphicObjectReference( const GraphicObject& rObj )
-{
- BOOL bRet = FALSE;
-
- for( void* pObj = maGraphicObjectList.First(); !bRet && pObj; pObj = maGraphicObjectList.Next() )
- if( &rObj == (GraphicObject*) pObj )
- bRet = TRUE;
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCacheEntry::TryToSwapIn()
-{
- if( mbSwappedAll && maGraphicObjectList.Count() )
- ( (GraphicObject*) maGraphicObjectList.First() )->FireSwapInRequest();
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCacheEntry::GraphicObjectWasSwappedOut( const GraphicObject& /*rObj*/ )
-{
- mbSwappedAll = TRUE;
-
- for( void* pObj = maGraphicObjectList.First(); mbSwappedAll && pObj; pObj = maGraphicObjectList.Next() )
- if( !( (GraphicObject*) pObj )->IsSwappedOut() )
- mbSwappedAll = FALSE;
-
- if( mbSwappedAll )
- {
- delete mpBmpEx, mpBmpEx = NULL;
- delete mpMtf, mpMtf = NULL;
- delete mpAnimation, mpAnimation = NULL;
- }
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicCacheEntry::FillSwappedGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute )
-{
- BOOL bRet;
-
- if( !mbSwappedAll && rObj.IsSwappedOut() )
- {
- ImplFillSubstitute( rSubstitute );
- bRet = TRUE;
- }
- else
- bRet = FALSE;
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCacheEntry::GraphicObjectWasSwappedIn( const GraphicObject& rObj )
-{
- if( mbSwappedAll )
- mbSwappedAll = !ImplInit( rObj );
-}
-
-// ----------------------------
-// - GraphicDisplayCacheEntry -
-// ----------------------------
-
-class GraphicDisplayCacheEntry
-{
-private:
-
- ::vos::TTimeValue maReleaseTime;
- const GraphicCacheEntry* mpRefCacheEntry;
- GDIMetaFile* mpMtf;
- BitmapEx* mpBmpEx;
- GraphicAttr maAttr;
- Size maOutSizePix;
- ULONG mnCacheSize;
- ULONG mnOutDevDrawMode;
- USHORT mnOutDevBitCount;
-
-public:
-
- static ULONG GetNeededSize( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr );
-
-public:
-
- GraphicDisplayCacheEntry( const GraphicCacheEntry* pRefCacheEntry,
- OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr,
- const BitmapEx& rBmpEx ) :
- mpRefCacheEntry( pRefCacheEntry ),
- mpMtf( NULL ), mpBmpEx( new BitmapEx( rBmpEx ) ),
- maAttr( rAttr ), maOutSizePix( pOut->LogicToPixel( rSz ) ),
- mnCacheSize( GetNeededSize( pOut, rPt, rSz, rObj, rAttr ) ),
- mnOutDevDrawMode( pOut->GetDrawMode() ),
- mnOutDevBitCount( pOut->GetBitCount() )
- {
- }
-
- GraphicDisplayCacheEntry( const GraphicCacheEntry* pRefCacheEntry,
- OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr,
- const GDIMetaFile& rMtf ) :
- mpRefCacheEntry( pRefCacheEntry ),
- mpMtf( new GDIMetaFile( rMtf ) ), mpBmpEx( NULL ),
- maAttr( rAttr ), maOutSizePix( pOut->LogicToPixel( rSz ) ),
- mnCacheSize( GetNeededSize( pOut, rPt, rSz, rObj, rAttr ) ),
- mnOutDevDrawMode( pOut->GetDrawMode() ),
- mnOutDevBitCount( pOut->GetBitCount() )
- {
- }
-
-
- ~GraphicDisplayCacheEntry();
-
- const GraphicAttr& GetAttr() const { return maAttr; }
- const Size& GetOutputSizePixel() const { return maOutSizePix; }
- ULONG GetCacheSize() const { return mnCacheSize; }
- const GraphicCacheEntry* GetReferencedCacheEntry() const { return mpRefCacheEntry; }
- ULONG GetOutDevDrawMode() const { return mnOutDevDrawMode; }
- USHORT GetOutDevBitCount() const { return mnOutDevBitCount; }
-
- void SetReleaseTime( const ::vos::TTimeValue& rReleaseTime ) { maReleaseTime = rReleaseTime; }
- const ::vos::TTimeValue& GetReleaseTime() const { return maReleaseTime; }
-
- BOOL Matches( OutputDevice* pOut, const Point& /*rPtPixel*/, const Size& rSzPixel,
- const GraphicCacheEntry* pCacheEntry, const GraphicAttr& rAttr ) const
- {
- // #i46805# Additional match
- // criteria: outdev draw mode and
- // bit count. One cannot reuse
- // this cache object, if it's
- // e.g. generated for
- // DRAWMODE_GRAYBITMAP.
- return( ( pCacheEntry == mpRefCacheEntry ) &&
- ( maAttr == rAttr ) &&
- ( ( maOutSizePix == rSzPixel ) || ( !maOutSizePix.Width() && !maOutSizePix.Height() ) ) &&
- ( pOut->GetBitCount() == mnOutDevBitCount ) &&
- ( pOut->GetDrawMode() == mnOutDevDrawMode ) );
- }
-
- void Draw( OutputDevice* pOut, const Point& rPt, const Size& rSz ) const;
-};
-
-// -----------------------------------------------------------------------------
-
-ULONG GraphicDisplayCacheEntry::GetNeededSize( OutputDevice* pOut, const Point& /*rPt*/, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr )
-{
- const Graphic& rGraphic = rObj.GetGraphic();
- const GraphicType eType = rGraphic.GetType();
- ULONG nNeededSize;
-
- if( GRAPHIC_BITMAP == eType )
- {
- const Size aOutSizePix( pOut->LogicToPixel( rSz ) );
- const long nBitCount = pOut->GetBitCount();
-
- if( ( aOutSizePix.Width() > MAX_BMP_EXTENT ) ||
- ( aOutSizePix.Height() > MAX_BMP_EXTENT ) )
- {
- nNeededSize = ULONG_MAX;
- }
- else if( nBitCount )
- {
- nNeededSize = aOutSizePix.Width() * aOutSizePix.Height() * nBitCount / 8;
-
- if( rObj.IsTransparent() || ( rAttr.GetRotation() % 3600 ) )
- nNeededSize += nNeededSize / nBitCount;
- }
- else
- {
- DBG_ERROR( "GraphicDisplayCacheEntry::GetNeededSize(): pOut->GetBitCount() == 0" );
- nNeededSize = 256000;
- }
- }
- else if( GRAPHIC_GDIMETAFILE == eType )
- nNeededSize = rGraphic.GetSizeBytes();
- else
- nNeededSize = 0;
-
- return nNeededSize;
-}
-
-// -----------------------------------------------------------------------------
-
-GraphicDisplayCacheEntry::~GraphicDisplayCacheEntry()
-{
- if( mpMtf )
- delete mpMtf;
-
- if( mpBmpEx )
- delete mpBmpEx;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicDisplayCacheEntry::Draw( OutputDevice* pOut, const Point& rPt, const Size& rSz ) const
-{
- if( mpMtf )
- GraphicManager::ImplDraw( pOut, rPt, rSz, *mpMtf, maAttr );
- else if( mpBmpEx )
- {
- if( maAttr.IsRotated() )
- {
- Polygon aPoly( Rectangle( rPt, rSz ) );
-
- aPoly.Rotate( rPt, maAttr.GetRotation() % 3600 );
- const Rectangle aRotBoundRect( aPoly.GetBoundRect() );
- pOut->DrawBitmapEx( aRotBoundRect.TopLeft(), aRotBoundRect.GetSize(), *mpBmpEx );
- }
- else
- pOut->DrawBitmapEx( rPt, rSz, *mpBmpEx );
- }
-}
-
-// -----------------------
-// - GraphicCache -
-// -----------------------
-
-GraphicCache::GraphicCache( GraphicManager& rMgr, ULONG nDisplayCacheSize, ULONG nMaxObjDisplayCacheSize ) :
- mrMgr ( rMgr ),
- mnReleaseTimeoutSeconds ( 0UL ),
- mnMaxDisplaySize ( nDisplayCacheSize ),
- mnMaxObjDisplaySize ( nMaxObjDisplayCacheSize ),
- mnUsedDisplaySize ( 0UL )
-{
- maReleaseTimer.SetTimeoutHdl( LINK( this, GraphicCache, ReleaseTimeoutHdl ) );
- maReleaseTimer.SetTimeout( RELEASE_TIMEOUT );
- maReleaseTimer.Start();
-}
-
-// -----------------------------------------------------------------------------
-
-GraphicCache::~GraphicCache()
-{
- DBG_ASSERT( !maGraphicCache.Count(), "GraphicCache::~GraphicCache(): there are some GraphicObjects in cache" );
- DBG_ASSERT( !maDisplayCache.Count(), "GraphicCache::~GraphicCache(): there are some GraphicObjects in display cache" );
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCache::AddGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute,
- const ByteString* pID, const GraphicObject* pCopyObj )
-{
- BOOL bInserted = FALSE;
-
- if( !rObj.IsSwappedOut() &&
- ( pID || ( pCopyObj && ( pCopyObj->GetType() != GRAPHIC_NONE ) ) || ( rObj.GetType() != GRAPHIC_NONE ) ) )
- {
- if( pCopyObj )
- {
- GraphicCacheEntry* pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.First() );
-
- while( !bInserted && pEntry )
- {
- if( pEntry->HasGraphicObjectReference( *pCopyObj ) )
- {
- pEntry->AddGraphicObjectReference( rObj, rSubstitute );
- bInserted = TRUE;
- }
- else
- {
- pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.Next() );
- }
- }
- }
-
- if( !bInserted )
- {
- GraphicCacheEntry* pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.First() );
- const GraphicID aID( rObj );
-
- while( !bInserted && pEntry )
- {
- const GraphicID& rEntryID = pEntry->GetID();
-
- if( pID )
- {
- if( rEntryID.GetIDString() == *pID )
- {
- pEntry->TryToSwapIn();
-
- // since pEntry->TryToSwapIn can modify our current list, we have to
- // iterate from beginning to add a reference to the appropriate
- // CacheEntry object; after this, quickly jump out of the outer iteration
- for( pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.First() );
- !bInserted && pEntry;
- pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.Next() ) )
- {
- const GraphicID& rID = pEntry->GetID();
-
- if( rID.GetIDString() == *pID )
- {
- pEntry->AddGraphicObjectReference( rObj, rSubstitute );
- bInserted = TRUE;
- }
- }
-
- if( !bInserted )
- {
- maGraphicCache.Insert( new GraphicCacheEntry( rObj ), LIST_APPEND );
- bInserted = TRUE;
- }
- }
- }
- else if( rEntryID == aID )
- {
- pEntry->AddGraphicObjectReference( rObj, rSubstitute );
- bInserted = TRUE;
- }
-
- if( !bInserted )
- pEntry = static_cast< GraphicCacheEntry* >( maGraphicCache.Next() );
- }
- }
- }
-
- if( !bInserted )
- maGraphicCache.Insert( new GraphicCacheEntry( rObj ), LIST_APPEND );
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCache::ReleaseGraphicObject( const GraphicObject& rObj )
-{
- // Release cached object
- GraphicCacheEntry* pEntry = (GraphicCacheEntry*) maGraphicCache.First();
- BOOL bRemoved = FALSE;
-
- while( !bRemoved && pEntry )
- {
- bRemoved = pEntry->ReleaseGraphicObjectReference( rObj );
-
- if( bRemoved )
- {
- if( 0 == pEntry->GetGraphicObjectReferenceCount() )
- {
- // if graphic cache entry has no more references,
- // the corresponding display cache object can be removed
- GraphicDisplayCacheEntry* pDisplayEntry = (GraphicDisplayCacheEntry*) maDisplayCache.First();
-
- while( pDisplayEntry )
- {
- if( pDisplayEntry->GetReferencedCacheEntry() == pEntry )
- {
- mnUsedDisplaySize -= pDisplayEntry->GetCacheSize();
- maDisplayCache.Remove( pDisplayEntry );
- delete pDisplayEntry;
- pDisplayEntry = (GraphicDisplayCacheEntry*) maDisplayCache.GetCurObject();
- }
- else
- pDisplayEntry = (GraphicDisplayCacheEntry*) maDisplayCache.Next();
- }
-
- // delete graphic cache entry
- maGraphicCache.Remove( (void*) pEntry );
- delete pEntry;
- }
- }
- else
- pEntry = (GraphicCacheEntry*) maGraphicCache.Next();
- }
-
- DBG_ASSERT( bRemoved, "GraphicCache::ReleaseGraphicObject(...): GraphicObject not found in cache" );
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCache::GraphicObjectWasSwappedOut( const GraphicObject& rObj )
-{
- // notify cache that rObj is swapped out (and can thus be pruned
- // from the cache)
- GraphicCacheEntry* pEntry = ImplGetCacheEntry( rObj );
-
- if( pEntry )
- pEntry->GraphicObjectWasSwappedOut( rObj );
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicCache::FillSwappedGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute )
-{
- GraphicCacheEntry* pEntry = ImplGetCacheEntry( rObj );
-
- if( !pEntry )
- return FALSE;
-
- return pEntry->FillSwappedGraphicObject( rObj, rSubstitute );
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCache::GraphicObjectWasSwappedIn( const GraphicObject& rObj )
-{
- GraphicCacheEntry* pEntry = ImplGetCacheEntry( rObj );
-
- if( pEntry )
- {
- if( pEntry->GetID().IsEmpty() )
- {
- ReleaseGraphicObject( rObj );
- AddGraphicObject( rObj, (Graphic&) rObj.GetGraphic(), NULL, NULL );
- }
- else
- pEntry->GraphicObjectWasSwappedIn( rObj );
- }
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCache::SetMaxDisplayCacheSize( ULONG nNewCacheSize )
-{
- mnMaxDisplaySize = nNewCacheSize;
-
- if( GetMaxDisplayCacheSize() < GetUsedDisplayCacheSize() )
- ImplFreeDisplayCacheSpace( GetUsedDisplayCacheSize() - GetMaxDisplayCacheSize() );
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCache::SetMaxObjDisplayCacheSize( ULONG nNewMaxObjSize, BOOL bDestroyGreaterCached )
-{
- const BOOL bDestroy = ( bDestroyGreaterCached && ( nNewMaxObjSize < mnMaxObjDisplaySize ) );
-
- mnMaxObjDisplaySize = Min( nNewMaxObjSize, mnMaxDisplaySize );
-
- if( bDestroy )
- {
- GraphicDisplayCacheEntry* pCacheObj = (GraphicDisplayCacheEntry*) maDisplayCache.First();
-
- while( pCacheObj )
- {
- if( pCacheObj->GetCacheSize() > mnMaxObjDisplaySize )
- {
- mnUsedDisplaySize -= pCacheObj->GetCacheSize();
- maDisplayCache.Remove( pCacheObj );
- delete pCacheObj;
- pCacheObj = (GraphicDisplayCacheEntry*) maDisplayCache.GetCurObject();
- }
- else
- pCacheObj = (GraphicDisplayCacheEntry*) maDisplayCache.Next();
- }
- }
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCache::SetCacheTimeout( ULONG nTimeoutSeconds )
-{
- if( mnReleaseTimeoutSeconds != nTimeoutSeconds )
- {
- GraphicDisplayCacheEntry* pDisplayEntry = (GraphicDisplayCacheEntry*) maDisplayCache.First();
- ::vos::TTimeValue aReleaseTime;
-
- if( ( mnReleaseTimeoutSeconds = nTimeoutSeconds ) != 0 )
- {
- osl_getSystemTime( &aReleaseTime );
- aReleaseTime.addTime( ::vos::TTimeValue( nTimeoutSeconds, 0 ) );
- }
-
- while( pDisplayEntry )
- {
- pDisplayEntry->SetReleaseTime( aReleaseTime );
- pDisplayEntry = (GraphicDisplayCacheEntry*) maDisplayCache.Next();
- }
- }
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicCache::ClearDisplayCache()
-{
- for( void* pObj = maDisplayCache.First(); pObj; pObj = maDisplayCache.Next() )
- delete (GraphicDisplayCacheEntry*) pObj;
-
- maDisplayCache.Clear();
- mnUsedDisplaySize = 0UL;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicCache::IsDisplayCacheable( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr ) const
-{
- return( GraphicDisplayCacheEntry::GetNeededSize( pOut, rPt, rSz, rObj, rAttr ) <=
- GetMaxObjDisplayCacheSize() );
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicCache::IsInDisplayCache( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr ) const
-{
- const Point aPtPixel( pOut->LogicToPixel( rPt ) );
- const Size aSzPixel( pOut->LogicToPixel( rSz ) );
- const GraphicCacheEntry* pCacheEntry = ( (GraphicCache*) this )->ImplGetCacheEntry( rObj );
- //GraphicDisplayCacheEntry* pDisplayEntry = (GraphicDisplayCacheEntry*) ( (GraphicCache*) this )->maDisplayCache.First(); // -Wall removed ....
- BOOL bFound = FALSE;
-
- if( pCacheEntry )
- {
- for( long i = 0, nCount = maDisplayCache.Count(); !bFound && ( i < nCount ); i++ )
- if( ( (GraphicDisplayCacheEntry*) maDisplayCache.GetObject( i ) )->Matches( pOut, aPtPixel, aSzPixel, pCacheEntry, rAttr ) )
- bFound = TRUE;
- }
-
- return bFound;
-}
-
-// -----------------------------------------------------------------------------
-
-ByteString GraphicCache::GetUniqueID( const GraphicObject& rObj ) const
-{
- ByteString aRet;
- GraphicCacheEntry* pEntry = ( (GraphicCache*) this )->ImplGetCacheEntry( rObj );
-
- // ensure that the entry is correctly initialized (it has to be read at least once)
- if( pEntry && pEntry->GetID().IsEmpty() )
- pEntry->TryToSwapIn();
-
- // do another call to ImplGetCacheEntry in case of modified entry list
- pEntry = ( (GraphicCache*) this )->ImplGetCacheEntry( rObj );
-
- if( pEntry )
- aRet = pEntry->GetID().GetIDString();
-
- return aRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicCache::CreateDisplayCacheObj( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr,
- const BitmapEx& rBmpEx )
-{
- const ULONG nNeededSize = GraphicDisplayCacheEntry::GetNeededSize( pOut, rPt, rSz, rObj, rAttr );
- BOOL bRet = FALSE;
-
- if( nNeededSize <= GetMaxObjDisplayCacheSize() )
- {
- if( nNeededSize > GetFreeDisplayCacheSize() )
- ImplFreeDisplayCacheSpace( nNeededSize - GetFreeDisplayCacheSize() );
-
- GraphicDisplayCacheEntry* pNewEntry = new GraphicDisplayCacheEntry( ImplGetCacheEntry( rObj ),
- pOut, rPt, rSz, rObj, rAttr, rBmpEx );
-
- if( GetCacheTimeout() )
- {
- ::vos::TTimeValue aReleaseTime;
-
- osl_getSystemTime( &aReleaseTime );
- aReleaseTime.addTime( ::vos::TTimeValue( GetCacheTimeout(), 0 ) );
- pNewEntry->SetReleaseTime( aReleaseTime );
- }
-
- maDisplayCache.Insert( pNewEntry, LIST_APPEND );
- mnUsedDisplaySize += pNewEntry->GetCacheSize();
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicCache::CreateDisplayCacheObj( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr,
- const GDIMetaFile& rMtf )
-{
- const ULONG nNeededSize = GraphicDisplayCacheEntry::GetNeededSize( pOut, rPt, rSz, rObj, rAttr );
- BOOL bRet = FALSE;
-
- if( nNeededSize <= GetMaxObjDisplayCacheSize() )
- {
- if( nNeededSize > GetFreeDisplayCacheSize() )
- ImplFreeDisplayCacheSpace( nNeededSize - GetFreeDisplayCacheSize() );
-
- GraphicDisplayCacheEntry* pNewEntry = new GraphicDisplayCacheEntry( ImplGetCacheEntry( rObj ),
- pOut, rPt, rSz, rObj, rAttr, rMtf );
-
- if( GetCacheTimeout() )
- {
- ::vos::TTimeValue aReleaseTime;
-
- osl_getSystemTime( &aReleaseTime );
- aReleaseTime.addTime( ::vos::TTimeValue( GetCacheTimeout(), 0 ) );
- pNewEntry->SetReleaseTime( aReleaseTime );
- }
-
- maDisplayCache.Insert( pNewEntry, LIST_APPEND );
- mnUsedDisplaySize += pNewEntry->GetCacheSize();
- bRet = TRUE;
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicCache::DrawDisplayCacheObj( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr )
-{
- const Point aPtPixel( pOut->LogicToPixel( rPt ) );
- const Size aSzPixel( pOut->LogicToPixel( rSz ) );
- const GraphicCacheEntry* pCacheEntry = ImplGetCacheEntry( rObj );
- GraphicDisplayCacheEntry* pDisplayCacheEntry = (GraphicDisplayCacheEntry*) maDisplayCache.First();
- BOOL bRet = FALSE;
-
- while( !bRet && pDisplayCacheEntry )
- {
- if( pDisplayCacheEntry->Matches( pOut, aPtPixel, aSzPixel, pCacheEntry, rAttr ) )
- {
- ::vos::TTimeValue aReleaseTime;
-
- // put found object at last used position
- maDisplayCache.Insert( maDisplayCache.Remove( pDisplayCacheEntry ), LIST_APPEND );
-
- if( GetCacheTimeout() )
- {
- osl_getSystemTime( &aReleaseTime );
- aReleaseTime.addTime( ::vos::TTimeValue( GetCacheTimeout(), 0 ) );
- }
-
- pDisplayCacheEntry->SetReleaseTime( aReleaseTime );
- bRet = TRUE;
- }
- else
- pDisplayCacheEntry = (GraphicDisplayCacheEntry*) maDisplayCache.Next();
- }
-
- if( bRet )
- pDisplayCacheEntry->Draw( pOut, rPt, rSz );
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicCache::ImplFreeDisplayCacheSpace( ULONG nSizeToFree )
-{
- ULONG nFreedSize = 0UL;
-
- if( nSizeToFree )
- {
- void* pObj = maDisplayCache.First();
-
- if( nSizeToFree > mnUsedDisplaySize )
- nSizeToFree = mnUsedDisplaySize;
-
- while( pObj )
- {
- GraphicDisplayCacheEntry* pCacheObj = (GraphicDisplayCacheEntry*) pObj;
-
- nFreedSize += pCacheObj->GetCacheSize();
- mnUsedDisplaySize -= pCacheObj->GetCacheSize();
- maDisplayCache.Remove( pObj );
- delete pCacheObj;
-
- if( nFreedSize >= nSizeToFree )
- break;
- else
- pObj = maDisplayCache.GetCurObject();
- }
- }
-
- return( nFreedSize >= nSizeToFree );
-}
-
-// -----------------------------------------------------------------------------
-
-GraphicCacheEntry* GraphicCache::ImplGetCacheEntry( const GraphicObject& rObj )
-{
- GraphicCacheEntry* pRet = NULL;
-
- for( void* pObj = maGraphicCache.First(); !pRet && pObj; pObj = maGraphicCache.Next() )
- if( ( (GraphicCacheEntry*) pObj )->HasGraphicObjectReference( rObj ) )
- pRet = (GraphicCacheEntry*) pObj;
-
- return pRet;
-}
-
-// -----------------------------------------------------------------------------
-
-IMPL_LINK( GraphicCache, ReleaseTimeoutHdl, Timer*, pTimer )
-{
- pTimer->Stop();
-
- ::vos::TTimeValue aCurTime;
- GraphicDisplayCacheEntry* pDisplayEntry = (GraphicDisplayCacheEntry*) maDisplayCache.First();
-
- osl_getSystemTime( &aCurTime );
-
- while( pDisplayEntry )
- {
- const ::vos::TTimeValue& rReleaseTime = pDisplayEntry->GetReleaseTime();
-
- if( !rReleaseTime.isEmpty() && ( rReleaseTime < aCurTime ) )
- {
- mnUsedDisplaySize -= pDisplayEntry->GetCacheSize();
- maDisplayCache.Remove( pDisplayEntry );
- delete pDisplayEntry;
- pDisplayEntry = (GraphicDisplayCacheEntry*) maDisplayCache.GetCurObject();
- }
- else
- pDisplayEntry = (GraphicDisplayCacheEntry*) maDisplayCache.Next();
- }
-
- pTimer->Start();
-
- return 0;
-}
diff --git a/goodies/source/graphic/grfcache.hxx b/goodies/source/graphic/grfcache.hxx
deleted file mode 100644
index 86b982b01498..000000000000
--- a/goodies/source/graphic/grfcache.hxx
+++ /dev/null
@@ -1,112 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: grfcache.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _GRFCACHE_HXX
-#define _GRFCACHE_HXX
-
-#include <tools/list.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/timer.hxx>
-#include "grfmgr.hxx"
-
-// -----------------------
-// - GraphicManagerCache -
-// -----------------------
-
-class GraphicCacheEntry;
-
-class GraphicCache
-{
-private:
-
- GraphicManager& mrMgr;
- Timer maReleaseTimer;
- List maGraphicCache;
- List maDisplayCache;
- ULONG mnReleaseTimeoutSeconds;
- ULONG mnMaxDisplaySize;
- ULONG mnMaxObjDisplaySize;
- ULONG mnUsedDisplaySize;
-
- BOOL ImplFreeDisplayCacheSpace( ULONG nSizeToFree );
- GraphicCacheEntry* ImplGetCacheEntry( const GraphicObject& rObj );
-
-
- DECL_LINK( ReleaseTimeoutHdl, Timer* pTimer );
-
-public:
-
- GraphicCache( GraphicManager& rMgr,
- ULONG nDisplayCacheSize = 10000000UL,
- ULONG nMaxObjDisplayCacheSize = 2400000UL );
- ~GraphicCache();
-
-public:
-
- void AddGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute,
- const ByteString* pID, const GraphicObject* pCopyObj );
- void ReleaseGraphicObject( const GraphicObject& rObj );
-
- void GraphicObjectWasSwappedOut( const GraphicObject& rObj );
- BOOL FillSwappedGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute );
- void GraphicObjectWasSwappedIn( const GraphicObject& rObj );
-
- ByteString GetUniqueID( const GraphicObject& rObj ) const;
-
-public:
-
- void SetMaxDisplayCacheSize( ULONG nNewCacheSize );
- ULONG GetMaxDisplayCacheSize() const { return mnMaxDisplaySize; };
-
- void SetMaxObjDisplayCacheSize( ULONG nNewMaxObjSize, BOOL bDestroyGreaterCached = FALSE );
- ULONG GetMaxObjDisplayCacheSize() const { return mnMaxObjDisplaySize; }
-
- ULONG GetUsedDisplayCacheSize() const { return mnUsedDisplaySize; }
- ULONG GetFreeDisplayCacheSize() const { return( mnMaxDisplaySize - mnUsedDisplaySize ); }
-
- void SetCacheTimeout( ULONG nTimeoutSeconds );
- ULONG GetCacheTimeout() const { return mnReleaseTimeoutSeconds; }
-
- void ClearDisplayCache();
- BOOL IsDisplayCacheable( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr ) const;
- BOOL IsInDisplayCache( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr ) const;
- BOOL CreateDisplayCacheObj( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr,
- const BitmapEx& rBmpEx );
- BOOL CreateDisplayCacheObj( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr,
- const GDIMetaFile& rMtf );
- BOOL DrawDisplayCacheObj( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicObject& rObj, const GraphicAttr& rAttr );
-};
-
-#endif // _GRFCACHE_HXX
diff --git a/goodies/source/graphic/grfmgr.cxx b/goodies/source/graphic/grfmgr.cxx
deleted file mode 100644
index c92d24d62815..000000000000
--- a/goodies/source/graphic/grfmgr.cxx
+++ /dev/null
@@ -1,1319 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: grfmgr.cxx,v $
- * $Revision: 1.36 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#define ENABLE_BYTESTRING_STREAM_OPERATORS
-
-#include <algorithm>
-
-#include <tools/vcompat.hxx>
-#include <unotools/ucbstreamhelper.hxx>
-#include <unotools/localfilehelper.hxx>
-#include <unotools/tempfile.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/cvtgrf.hxx>
-#include <vcl/metaact.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/salbtype.hxx>
-#include <unotools/cacheoptions.hxx>
-#include "grfmgr.hxx"
-
-// -----------
-// - Defines -
-// -----------
-
-#define WATERMARK_LUM_OFFSET 50
-#define WATERMARK_CON_OFFSET -70
-
-// -----------
-// - statics -
-// -----------
-
-GraphicManager* GraphicObject::mpGlobalMgr = NULL;
-
-// ---------------------
-// - GrfDirectCacheObj -
-// ---------------------
-
-struct GrfSimpleCacheObj
-{
- Graphic maGraphic;
- GraphicAttr maAttr;
-
- GrfSimpleCacheObj( const Graphic& rGraphic, const GraphicAttr& rAttr ) :
- maGraphic( rGraphic ), maAttr( rAttr ) {}
-};
-
-// -----------------
-// - GraphicObject -
-// -----------------
-
-TYPEINIT1_AUTOFACTORY( GraphicObject, SvDataCopyStream );
-
-// -----------------------------------------------------------------------------
-
-GraphicObject::GraphicObject( const GraphicManager* pMgr ) :
- mpLink ( NULL ),
- mpUserData ( NULL )
-{
- ImplConstruct();
- ImplAssignGraphicData();
- ImplSetGraphicManager( pMgr );
-}
-
-// -----------------------------------------------------------------------------
-
-GraphicObject::GraphicObject( const Graphic& rGraphic, const GraphicManager* pMgr ) :
- maGraphic ( rGraphic ),
- mpLink ( NULL ),
- mpUserData ( NULL )
-{
- ImplConstruct();
- ImplAssignGraphicData();
- ImplSetGraphicManager( pMgr );
-}
-
-// -----------------------------------------------------------------------------
-
-GraphicObject::GraphicObject( const Graphic& rGraphic, const String& rLink, const GraphicManager* pMgr ) :
- maGraphic ( rGraphic ),
- mpLink ( rLink.Len() ? ( new String( rLink ) ) : NULL ),
- mpUserData ( NULL )
-{
- ImplConstruct();
- ImplAssignGraphicData();
- ImplSetGraphicManager( pMgr );
-}
-
-// -----------------------------------------------------------------------------
-
-GraphicObject::GraphicObject( const GraphicObject& rGraphicObj, const GraphicManager* pMgr ) :
- SvDataCopyStream(),
- maGraphic ( rGraphicObj.GetGraphic() ),
- maAttr ( rGraphicObj.maAttr ),
- mpLink ( rGraphicObj.mpLink ? ( new String( *rGraphicObj.mpLink ) ) : NULL ),
- mpUserData ( rGraphicObj.mpUserData ? ( new String( *rGraphicObj.mpUserData ) ) : NULL )
-{
- ImplConstruct();
- ImplAssignGraphicData();
- ImplSetGraphicManager( pMgr, NULL, &rGraphicObj );
-}
-
-// -----------------------------------------------------------------------------
-
-GraphicObject::GraphicObject( const ByteString& rUniqueID, const GraphicManager* pMgr ) :
- mpLink ( NULL ),
- mpUserData ( NULL )
-{
- ImplConstruct();
-
- // assign default properties
- ImplAssignGraphicData();
-
- ImplSetGraphicManager( pMgr, &rUniqueID );
-
- // update properties
- ImplAssignGraphicData();
-}
-
-// -----------------------------------------------------------------------------
-
-GraphicObject::~GraphicObject()
-{
- if( mpMgr )
- {
- mpMgr->ImplUnregisterObj( *this );
-
- if( ( mpMgr == mpGlobalMgr ) && !mpGlobalMgr->ImplHasObjects() )
- delete mpGlobalMgr, mpGlobalMgr = NULL;
- }
-
- delete mpSwapOutTimer;
- delete mpSwapStreamHdl;
- delete mpLink;
- delete mpUserData;
- delete mpSimpleCache;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::ImplConstruct()
-{
- mpMgr = NULL;
- mpSwapStreamHdl = NULL;
- mpSwapOutTimer = NULL;
- mpSimpleCache = NULL;
- mnAnimationLoopCount = 0;
- mbAutoSwapped = FALSE;
- mbIsInSwapIn = FALSE;
- mbIsInSwapOut = FALSE;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::ImplAssignGraphicData()
-{
- maPrefSize = maGraphic.GetPrefSize();
- maPrefMapMode = maGraphic.GetPrefMapMode();
- mnSizeBytes = maGraphic.GetSizeBytes();
- meType = maGraphic.GetType();
- mbTransparent = maGraphic.IsTransparent();
- mbAlpha = maGraphic.IsAlpha();
- mbAnimated = maGraphic.IsAnimated();
- mnAnimationLoopCount = ( mbAnimated ? maGraphic.GetAnimationLoopCount() : 0 );
-
- if( maGraphic.GetType() == GRAPHIC_GDIMETAFILE )
- {
- const GDIMetaFile& rMtf = GetGraphic().GetGDIMetaFile();
- mbEPS = ( rMtf.GetActionCount() >= 1 ) && ( META_EPS_ACTION == rMtf.GetAction( 0 )->GetType() );
- }
- else
- mbEPS = FALSE;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::ImplSetGraphicManager( const GraphicManager* pMgr, const ByteString* pID, const GraphicObject* pCopyObj )
-{
- if( !mpMgr || ( pMgr != mpMgr ) )
- {
- if( !pMgr && mpMgr && ( mpMgr == mpGlobalMgr ) )
- return;
- else
- {
- if( mpMgr )
- {
- mpMgr->ImplUnregisterObj( *this );
-
- if( ( mpMgr == mpGlobalMgr ) && !mpGlobalMgr->ImplHasObjects() )
- delete mpGlobalMgr, mpGlobalMgr = NULL;
- }
-
- if( !pMgr )
- {
- if( !mpGlobalMgr )
- {
- SvtCacheOptions aCacheOptions;
-
- mpGlobalMgr = new GraphicManager( aCacheOptions.GetGraphicManagerTotalCacheSize(),
- aCacheOptions.GetGraphicManagerObjectCacheSize() );
- mpGlobalMgr->SetCacheTimeout( aCacheOptions.GetGraphicManagerObjectReleaseTime() );
- }
-
- mpMgr = mpGlobalMgr;
- }
- else
- mpMgr = (GraphicManager*) pMgr;
-
- mpMgr->ImplRegisterObj( *this, maGraphic, pID, pCopyObj );
- }
- }
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::ImplAutoSwapIn()
-{
- if( IsSwappedOut() )
- {
- if( mpMgr && mpMgr->ImplFillSwappedGraphicObject( *this, maGraphic ) )
- mbAutoSwapped = FALSE;
- else
- {
- mbIsInSwapIn = TRUE;
-
- if( maGraphic.SwapIn() )
- mbAutoSwapped = FALSE;
- else
- {
- SvStream* pStream = GetSwapStream();
-
- if( GRFMGR_AUTOSWAPSTREAM_NONE != pStream )
- {
- if( GRFMGR_AUTOSWAPSTREAM_LINK == pStream )
- {
- if( HasLink() )
- {
- String aURLStr;
-
- if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( GetLink(), aURLStr ) )
- {
- SvStream* pIStm = ::utl::UcbStreamHelper::CreateStream( aURLStr, STREAM_READ );
-
- if( pIStm )
- {
- (*pIStm) >> maGraphic;
- mbAutoSwapped = ( maGraphic.GetType() != GRAPHIC_NONE );
- delete pIStm;
- }
- }
- }
- }
- else if( GRFMGR_AUTOSWAPSTREAM_TEMP == pStream )
- mbAutoSwapped = !maGraphic.SwapIn();
- else if( GRFMGR_AUTOSWAPSTREAM_LOADED == pStream )
- mbAutoSwapped = maGraphic.IsSwapOut();
- else
- {
- mbAutoSwapped = !maGraphic.SwapIn( pStream );
- delete pStream;
- }
- }
- else
- {
- DBG_ASSERT( ( GRAPHIC_NONE == meType ) || ( GRAPHIC_DEFAULT == meType ),
- "GraphicObject::ImplAutoSwapIn: could not get stream to swap in graphic! (=>KA)" );
- }
- }
-
- mbIsInSwapIn = FALSE;
-
- if( !mbAutoSwapped && mpMgr )
- mpMgr->ImplGraphicObjectWasSwappedIn( *this );
- }
- }
-}
-
-// -----------------------------------------------------------------------------
-BOOL GraphicObject::ImplGetCropParams( OutputDevice* pOut, Point& rPt, Size& rSz, const GraphicAttr* pAttr,
- PolyPolygon& rClipPolyPoly, BOOL& bRectClipRegion ) const
-{
- BOOL bRet = FALSE;
-
- if( GetType() != GRAPHIC_NONE )
- {
- Polygon aClipPoly( Rectangle( rPt, rSz ) );
- const USHORT nRot10 = pAttr->GetRotation() % 3600;
- const Point aOldOrigin( rPt );
- // --> OD 2005-09-30 #i54875# - It's not needed to get the graphic again.
-// const Graphic& rGraphic = GetGraphic();
- // <--
- const MapMode aMap100( MAP_100TH_MM );
- Size aSize100;
- long nTotalWidth, nTotalHeight;
- long nNewLeft, nNewTop, nNewRight, nNewBottom;
- double fScale;
-
- if( nRot10 )
- {
- aClipPoly.Rotate( rPt, nRot10 );
- bRectClipRegion = FALSE;
- }
- else
- bRectClipRegion = TRUE;
-
- rClipPolyPoly = aClipPoly;
-
- // --> OD 2005-09-30 #i54875# - directly access member <maGraphic> to
- // get <PrefSize> and <PrefMapMode>.
-// if( rGraphic.GetPrefMapMode() == MAP_PIXEL )
-// aSize100 = Application::GetDefaultDevice()->PixelToLogic( rGraphic.GetPrefSize(), aMap100 );
-// else
-// aSize100 = pOut->LogicToLogic( rGraphic.GetPrefSize(), rGraphic.GetPrefMapMode(), aMap100 );
- if( maGraphic.GetPrefMapMode() == MAP_PIXEL )
- aSize100 = Application::GetDefaultDevice()->PixelToLogic( maGraphic.GetPrefSize(), aMap100 );
- else
- {
- MapMode m(maGraphic.GetPrefMapMode());
- aSize100 = pOut->LogicToLogic( maGraphic.GetPrefSize(), &m, &aMap100 );
- }
- // <--
-
- nTotalWidth = aSize100.Width() - pAttr->GetLeftCrop() - pAttr->GetRightCrop();
- nTotalHeight = aSize100.Height() - pAttr->GetTopCrop() - pAttr->GetBottomCrop();
-
- if( aSize100.Width() > 0 && aSize100.Height() > 0 && nTotalWidth > 0 && nTotalHeight > 0 )
- {
- fScale = (double) aSize100.Width() / nTotalWidth;
- nNewLeft = -FRound( ( ( pAttr->GetMirrorFlags() & BMP_MIRROR_HORZ ) ? pAttr->GetRightCrop() : pAttr->GetLeftCrop() ) * fScale );
- nNewRight = nNewLeft + FRound( aSize100.Width() * fScale ) - 1;
-
- fScale = (double) rSz.Width() / aSize100.Width();
- rPt.X() += FRound( nNewLeft * fScale );
- rSz.Width() = FRound( ( nNewRight - nNewLeft + 1 ) * fScale );
-
- fScale = (double) aSize100.Height() / nTotalHeight;
- nNewTop = -FRound( ( ( pAttr->GetMirrorFlags() & BMP_MIRROR_VERT ) ? pAttr->GetBottomCrop() : pAttr->GetTopCrop() ) * fScale );
- nNewBottom = nNewTop + FRound( aSize100.Height() * fScale ) - 1;
-
- fScale = (double) rSz.Height() / aSize100.Height();
- rPt.Y() += FRound( nNewTop * fScale );
- rSz.Height() = FRound( ( nNewBottom - nNewTop + 1 ) * fScale );
-
- if( nRot10 )
- {
- Polygon aOriginPoly( 1 );
-
- aOriginPoly[ 0 ] = rPt;
- aOriginPoly.Rotate( aOldOrigin, nRot10 );
- rPt = aOriginPoly[ 0 ];
- }
-
- bRet = TRUE;
- }
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-GraphicObject& GraphicObject::operator=( const GraphicObject& rGraphicObj )
-{
- if( &rGraphicObj != this )
- {
- mpMgr->ImplUnregisterObj( *this );
-
- delete mpSwapStreamHdl, mpSwapStreamHdl = NULL;
- delete mpSimpleCache, mpSimpleCache = NULL;
- delete mpLink;
- delete mpUserData;
-
- maGraphic = rGraphicObj.GetGraphic();
- maAttr = rGraphicObj.maAttr;
- mpLink = rGraphicObj.mpLink ? new String( *rGraphicObj.mpLink ) : NULL;
- mpUserData = rGraphicObj.mpUserData ? new String( *rGraphicObj.mpUserData ) : NULL;
- ImplAssignGraphicData();
- mbAutoSwapped = FALSE;
- mpMgr = rGraphicObj.mpMgr;
-
- mpMgr->ImplRegisterObj( *this, maGraphic, NULL, &rGraphicObj );
- }
-
- return *this;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicObject::operator==( const GraphicObject& rGraphicObj ) const
-{
- return( ( rGraphicObj.maGraphic == maGraphic ) &&
- ( rGraphicObj.maAttr == maAttr ) &&
- ( rGraphicObj.GetLink() == GetLink() ) );
-}
-
-// ------------------------------------------------------------------------
-
-void GraphicObject::Load( SvStream& rIStm )
-{
- rIStm >> *this;
-}
-
-// ------------------------------------------------------------------------
-
-void GraphicObject::Save( SvStream& rOStm )
-{
- rOStm << *this;
-}
-
-// ------------------------------------------------------------------------
-
-void GraphicObject::Assign( const SvDataCopyStream& rCopyStream )
-{
- *this = (const GraphicObject& ) rCopyStream;
-}
-
-// -----------------------------------------------------------------------------
-
-ByteString GraphicObject::GetUniqueID() const
-{
- if ( !IsInSwapIn() && IsEPS() )
- const_cast<GraphicObject*>(this)->FireSwapInRequest();
-
- ByteString aRet;
-
- if( mpMgr )
- aRet = mpMgr->ImplGetUniqueID( *this );
-
- return aRet;
-}
-
-// -----------------------------------------------------------------------------
-
-ULONG GraphicObject::GetChecksum() const
-{
- return( ( maGraphic.IsSupportedGraphic() && !maGraphic.IsSwapOut() ) ? maGraphic.GetChecksum() : 0 );
-}
-
-// -----------------------------------------------------------------------------
-
-SvStream* GraphicObject::GetSwapStream() const
-{
- return( HasSwapStreamHdl() ? (SvStream*) mpSwapStreamHdl->Call( (void*) this ) : GRFMGR_AUTOSWAPSTREAM_NONE );
-}
-
-// -----------------------------------------------------------------------------
-
-// !!! to be removed
-ULONG GraphicObject::GetReleaseFromCache() const
-{
- return 0;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetAttr( const GraphicAttr& rAttr )
-{
- maAttr = rAttr;
-
- if( mpSimpleCache && ( mpSimpleCache->maAttr != rAttr ) )
- delete mpSimpleCache, mpSimpleCache = NULL;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetLink()
-{
- if( mpLink )
- delete mpLink, mpLink = NULL;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetLink( const String& rLink )
-{
- delete mpLink, mpLink = new String( rLink );
-}
-
-// -----------------------------------------------------------------------------
-
-String GraphicObject::GetLink() const
-{
- if( mpLink )
- return *mpLink;
- else
- return String();
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetUserData()
-{
- if( mpUserData )
- delete mpUserData, mpUserData = NULL;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetUserData( const String& rUserData )
-{
- delete mpUserData, mpUserData = new String( rUserData );
-}
-
-// -----------------------------------------------------------------------------
-
-String GraphicObject::GetUserData() const
-{
- if( mpUserData )
- return *mpUserData;
- else
- return String();
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetSwapStreamHdl()
-{
- if( mpSwapStreamHdl )
- {
- delete mpSwapOutTimer, mpSwapOutTimer = NULL;
- delete mpSwapStreamHdl, mpSwapStreamHdl = NULL;
- }
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetSwapStreamHdl( const Link& rHdl, const ULONG nSwapOutTimeout )
-{
- delete mpSwapStreamHdl, mpSwapStreamHdl = new Link( rHdl );
-
- if( nSwapOutTimeout )
- {
- if( !mpSwapOutTimer )
- {
- mpSwapOutTimer = new Timer;
- mpSwapOutTimer->SetTimeoutHdl( LINK( this, GraphicObject, ImplAutoSwapOutHdl ) );
- }
-
- mpSwapOutTimer->SetTimeout( nSwapOutTimeout );
- mpSwapOutTimer->Start();
- }
- else
- delete mpSwapOutTimer, mpSwapOutTimer = NULL;
-}
-
-// -----------------------------------------------------------------------------
-
-Link GraphicObject::GetSwapStreamHdl() const
-{
- if( mpSwapStreamHdl )
- return *mpSwapStreamHdl;
- else
- return Link();
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::FireSwapInRequest()
-{
- ImplAutoSwapIn();
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::FireSwapOutRequest()
-{
- ImplAutoSwapOutHdl( NULL );
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::GraphicManagerDestroyed()
-{
- // we're alive, but our manager doesn't live anymore ==> connect to default manager
- mpMgr = NULL;
- ImplSetGraphicManager( NULL );
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetGraphicManager( const GraphicManager& rMgr )
-{
- ImplSetGraphicManager( &rMgr );
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicObject::IsCached( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicAttr* pAttr, ULONG nFlags ) const
-{
- BOOL bRet;
-
- if( nFlags & GRFMGR_DRAW_CACHED )
- {
- // --> OD 2005-10-11 #i54875# - Consider cropped graphics.
- // Note: The graphic manager caches a cropped graphic with its
- // uncropped position and size.
-// bRet = mpMgr->IsInCache( pOut, rPt, rSz, *this, ( pAttr ? *pAttr : GetAttr() ) );
- Point aPt( rPt );
- Size aSz( rSz );
- if ( pAttr->IsCropped() )
- {
- PolyPolygon aClipPolyPoly;
- BOOL bRectClip;
- ImplGetCropParams( pOut, aPt, aSz, pAttr, aClipPolyPoly, bRectClip );
- }
- bRet = mpMgr->IsInCache( pOut, aPt, aSz, *this, ( pAttr ? *pAttr : GetAttr() ) );
- }
- else
- bRet = FALSE;
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::ReleaseFromCache()
-{
-
- mpMgr->ReleaseFromCache( *this );
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetAnimationNotifyHdl( const Link& rLink )
-{
- maGraphic.SetAnimationNotifyHdl( rLink );
-}
-
-// -----------------------------------------------------------------------------
-
-List* GraphicObject::GetAnimationInfoList() const
-{
- return maGraphic.GetAnimationInfoList();
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicObject::Draw( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GraphicAttr* pAttr, ULONG nFlags )
-{
- GraphicAttr aAttr( pAttr ? *pAttr : GetAttr() );
- Point aPt( rPt );
- Size aSz( rSz );
- const sal_uInt32 nOldDrawMode = pOut->GetDrawMode();
- BOOL bCropped = aAttr.IsCropped();
- BOOL bCached = FALSE;
- BOOL bRet;
-
- // #i29534# Provide output rects for PDF writer
- Rectangle aCropRect;
-
- if( !( GRFMGR_DRAW_USE_DRAWMODE_SETTINGS & nFlags ) )
- pOut->SetDrawMode( nOldDrawMode & ( ~( DRAWMODE_SETTINGSLINE | DRAWMODE_SETTINGSFILL | DRAWMODE_SETTINGSTEXT | DRAWMODE_SETTINGSGRADIENT ) ) );
-
- // mirrored horizontically
- if( aSz.Width() < 0L )
- {
- aPt.X() += aSz.Width() + 1;
- aSz.Width() = -aSz.Width();
- aAttr.SetMirrorFlags( aAttr.GetMirrorFlags() ^ BMP_MIRROR_HORZ );
- }
-
- // mirrored vertically
- if( aSz.Height() < 0L )
- {
- aPt.Y() += aSz.Height() + 1;
- aSz.Height() = -aSz.Height();
- aAttr.SetMirrorFlags( aAttr.GetMirrorFlags() ^ BMP_MIRROR_VERT );
- }
-
- if( bCropped )
- {
- PolyPolygon aClipPolyPoly;
- BOOL bRectClip;
- const BOOL bCrop = ImplGetCropParams( pOut, aPt, aSz, &aAttr, aClipPolyPoly, bRectClip );
-
- pOut->Push( PUSH_CLIPREGION );
-
- if( bCrop )
- {
- if( bRectClip )
- {
- // #i29534# Store crop rect for later forwarding to
- // PDF writer
- aCropRect = aClipPolyPoly.GetBoundRect();
- pOut->IntersectClipRegion( aCropRect );
- }
- else
- {
- pOut->IntersectClipRegion( aClipPolyPoly );
- }
- }
- }
-
- bRet = mpMgr->DrawObj( pOut, aPt, aSz, *this, aAttr, nFlags, bCached );
-
- if( bCropped )
- pOut->Pop();
-
- pOut->SetDrawMode( nOldDrawMode );
-
- // #i29534# Moved below OutDev restoration, to avoid multiple swap-ins
- // (code above needs to call GetGraphic twice)
- if( bCached )
- {
- if( mpSwapOutTimer )
- mpSwapOutTimer->Start();
- else
- FireSwapOutRequest();
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicObject::DrawTiled( OutputDevice* pOut, const Rectangle& rArea, const Size& rSize,
- const Size& rOffset, const GraphicAttr* pAttr, ULONG nFlags, int nTileCacheSize1D )
-{
- if( pOut == NULL || rSize.Width() == 0 || rSize.Height() == 0 )
- return FALSE;
-
- const MapMode aOutMapMode( pOut->GetMapMode() );
- const MapMode aMapMode( aOutMapMode.GetMapUnit(), Point(), aOutMapMode.GetScaleX(), aOutMapMode.GetScaleY() );
- // #106258# Clamp size to 1 for zero values. This is okay, since
- // logical size of zero is handled above already
- const Size aOutTileSize( ::std::max( 1L, pOut->LogicToPixel( rSize, aOutMapMode ).Width() ),
- ::std::max( 1L, pOut->LogicToPixel( rSize, aOutMapMode ).Height() ) );
-
- //#i69780 clip final tile size to a sane max size
- while (((sal_Int64)rSize.Width() * nTileCacheSize1D) > SAL_MAX_UINT16)
- nTileCacheSize1D /= 2;
- while (((sal_Int64)rSize.Height() * nTileCacheSize1D) > SAL_MAX_UINT16)
- nTileCacheSize1D /= 2;
-
- return ImplDrawTiled( pOut, rArea, aOutTileSize, rOffset, pAttr, nFlags, nTileCacheSize1D );
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicObject::StartAnimation( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- long nExtraData, const GraphicAttr* pAttr, ULONG /*nFlags*/,
- OutputDevice* pFirstFrameOutDev )
-{
- BOOL bRet = FALSE;
-
- GetGraphic();
-
- if( !IsSwappedOut() )
- {
- const GraphicAttr aAttr( pAttr ? *pAttr : GetAttr() );
-
- if( mbAnimated )
- {
- Point aPt( rPt );
- Size aSz( rSz );
- BOOL bCropped = aAttr.IsCropped();
-
- if( bCropped )
- {
- PolyPolygon aClipPolyPoly;
- BOOL bRectClip;
- const BOOL bCrop = ImplGetCropParams( pOut, aPt, aSz, &aAttr, aClipPolyPoly, bRectClip );
-
- pOut->Push( PUSH_CLIPREGION );
-
- if( bCrop )
- {
- if( bRectClip )
- pOut->IntersectClipRegion( aClipPolyPoly.GetBoundRect() );
- else
- pOut->IntersectClipRegion( aClipPolyPoly );
- }
- }
-
- if( !mpSimpleCache || ( mpSimpleCache->maAttr != aAttr ) || pFirstFrameOutDev )
- {
- if( mpSimpleCache )
- delete mpSimpleCache;
-
- mpSimpleCache = new GrfSimpleCacheObj( GetTransformedGraphic( &aAttr ), aAttr );
- mpSimpleCache->maGraphic.SetAnimationNotifyHdl( GetAnimationNotifyHdl() );
- }
-
- mpSimpleCache->maGraphic.StartAnimation( pOut, aPt, aSz, nExtraData, pFirstFrameOutDev );
-
- if( bCropped )
- pOut->Pop();
-
- bRet = TRUE;
- }
- else
- bRet = Draw( pOut, rPt, rSz, &aAttr, GRFMGR_DRAW_STANDARD );
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::StopAnimation( OutputDevice* pOut, long nExtraData )
-{
- if( mpSimpleCache )
- mpSimpleCache->maGraphic.StopAnimation( pOut, nExtraData );
-}
-
-// -----------------------------------------------------------------------------
-
-const Graphic& GraphicObject::GetGraphic() const
-{
- if( mbAutoSwapped )
- ( (GraphicObject*) this )->ImplAutoSwapIn();
-
- return maGraphic;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetGraphic( const Graphic& rGraphic )
-{
- mpMgr->ImplUnregisterObj( *this );
-
- if( mpSwapOutTimer )
- mpSwapOutTimer->Stop();
-
- maGraphic = rGraphic;
- mbAutoSwapped = FALSE;
- ImplAssignGraphicData();
- delete mpLink, mpLink = NULL;
- delete mpSimpleCache, mpSimpleCache = NULL;
-
- mpMgr->ImplRegisterObj( *this, maGraphic );
-
- if( mpSwapOutTimer )
- mpSwapOutTimer->Start();
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetGraphic( const Graphic& rGraphic, const String& rLink )
-{
- SetGraphic( rGraphic );
- mpLink = new String( rLink );
-}
-
-// -----------------------------------------------------------------------------
-
-Graphic GraphicObject::GetTransformedGraphic( const Size& rDestSize, const MapMode& rDestMap, const GraphicAttr& rAttr ) const
-{
- // #104550# Extracted from svx/source/svdraw/svdograf.cxx
- Graphic aTransGraphic( maGraphic );
- const GraphicType eType = GetType();
- const Size aSrcSize( aTransGraphic.GetPrefSize() );
-
- // #104115# Convert the crop margins to graphic object mapmode
- const MapMode aMapGraph( aTransGraphic.GetPrefMapMode() );
- const MapMode aMap100( MAP_100TH_MM );
-
- Size aCropLeftTop;
- Size aCropRightBottom;
-
- if( GRAPHIC_GDIMETAFILE == eType )
- {
- GDIMetaFile aMtf( aTransGraphic.GetGDIMetaFile() );
-
- if( aMapGraph == MAP_PIXEL )
- {
- aCropLeftTop = Application::GetDefaultDevice()->LogicToPixel( Size( rAttr.GetLeftCrop(),
- rAttr.GetTopCrop() ),
- aMap100 );
- aCropRightBottom = Application::GetDefaultDevice()->LogicToPixel( Size( rAttr.GetRightCrop(),
- rAttr.GetBottomCrop() ),
- aMap100 );
- }
- else
- {
- aCropLeftTop = OutputDevice::LogicToLogic( Size( rAttr.GetLeftCrop(),
- rAttr.GetTopCrop() ),
- aMap100,
- aMapGraph );
- aCropRightBottom = OutputDevice::LogicToLogic( Size( rAttr.GetRightCrop(),
- rAttr.GetBottomCrop() ),
- aMap100,
- aMapGraph );
- }
-
- // #104115# If the metafile is cropped, give it a special
- // treatment: clip against the remaining area, scale up such
- // that this area later fills the desired size, and move the
- // origin to the upper left edge of that area.
- if( rAttr.IsCropped() )
- {
- const MapMode aMtfMapMode( aMtf.GetPrefMapMode() );
-
- Rectangle aClipRect( aMtfMapMode.GetOrigin().X() + aCropLeftTop.Width(),
- aMtfMapMode.GetOrigin().Y() + aCropLeftTop.Height(),
- aMtfMapMode.GetOrigin().X() + aSrcSize.Width() - aCropRightBottom.Width(),
- aMtfMapMode.GetOrigin().Y() + aSrcSize.Height() - aCropRightBottom.Height() );
-
- // #104115# To correctly crop rotated metafiles, clip by view rectangle
- aMtf.AddAction( new MetaISectRectClipRegionAction( aClipRect ), 0 );
-
- // #104115# To crop the metafile, scale larger than the output rectangle
- aMtf.Scale( (double)rDestSize.Width() / (aSrcSize.Width() - aCropLeftTop.Width() - aCropRightBottom.Width()),
- (double)rDestSize.Height() / (aSrcSize.Height() - aCropLeftTop.Height() - aCropRightBottom.Height()) );
-
- // #104115# Adapt the pref size by hand (scale changes it
- // proportionally, but we want it to be smaller than the
- // former size, to crop the excess out)
- aMtf.SetPrefSize( Size( (long)((double)rDestSize.Width() * (1.0 + (aCropLeftTop.Width() + aCropRightBottom.Width()) / aSrcSize.Width()) + .5),
- (long)((double)rDestSize.Height() * (1.0 + (aCropLeftTop.Height() + aCropRightBottom.Height()) / aSrcSize.Height()) + .5) ) );
-
- // #104115# Adapt the origin of the new mapmode, such that it
- // is shifted to the place where the cropped output starts
- Point aNewOrigin( (long)((double)aMtfMapMode.GetOrigin().X() + rDestSize.Width() * aCropLeftTop.Width() / (aSrcSize.Width() - aCropLeftTop.Width() - aCropRightBottom.Width()) + .5),
- (long)((double)aMtfMapMode.GetOrigin().Y() + rDestSize.Height() * aCropLeftTop.Height() / (aSrcSize.Height() - aCropLeftTop.Height() - aCropRightBottom.Height()) + .5) );
- MapMode aNewMap( rDestMap );
- aNewMap.SetOrigin( OutputDevice::LogicToLogic(aNewOrigin, aMtfMapMode, rDestMap) );
- aMtf.SetPrefMapMode( aNewMap );
- }
- else
- {
- aMtf.Scale( Fraction( rDestSize.Width(), aSrcSize.Width() ), Fraction( rDestSize.Height(), aSrcSize.Height() ) );
- aMtf.SetPrefMapMode( rDestMap );
- }
-
- aTransGraphic = aMtf;
- }
- else if( GRAPHIC_BITMAP == eType )
- {
- BitmapEx aBitmapEx( aTransGraphic.GetBitmapEx() );
-
- // convert crops to pixel
- aCropLeftTop = Application::GetDefaultDevice()->LogicToPixel( Size( rAttr.GetLeftCrop(),
- rAttr.GetTopCrop() ),
- aMap100 );
- aCropRightBottom = Application::GetDefaultDevice()->LogicToPixel( Size( rAttr.GetRightCrop(),
- rAttr.GetBottomCrop() ),
- aMap100 );
-
- // convert from prefmapmode to pixel
- const Size aSrcSizePixel( Application::GetDefaultDevice()->LogicToPixel( aSrcSize,
- aMapGraph ) );
-
- // setup crop rectangle in pixel
- Rectangle aCropRect( aCropLeftTop.Width(), aCropLeftTop.Height(),
- aSrcSizePixel.Width() - aCropRightBottom.Width(),
- aSrcSizePixel.Height() - aCropRightBottom.Height() );
-
- // #105641# Also crop animations
- if( aTransGraphic.IsAnimated() )
- {
- USHORT nFrame;
- Animation aAnim( aTransGraphic.GetAnimation() );
-
- for( nFrame=0; nFrame<aAnim.Count(); ++nFrame )
- {
- AnimationBitmap aAnimBmp( aAnim.Get( nFrame ) );
-
- if( !aCropRect.IsInside( Rectangle(aAnimBmp.aPosPix, aAnimBmp.aSizePix) ) )
- {
- // setup actual cropping (relative to frame position)
- Rectangle aCropRectRel( aCropRect );
- aCropRectRel.Move( -aAnimBmp.aPosPix.X(),
- -aAnimBmp.aPosPix.Y() );
-
- // cropping affects this frame, apply it then
- // do _not_ apply enlargement, this is done below
- ImplTransformBitmap( aAnimBmp.aBmpEx, rAttr, Size(), Size(),
- aCropRectRel, rDestSize, FALSE );
-
- aAnim.Replace( aAnimBmp, nFrame );
- }
- // else: bitmap completely within crop area,
- // i.e. nothing is cropped away
- }
-
- // now, apply enlargement (if any) through global animation size
- if( aCropLeftTop.Width() < 0 ||
- aCropLeftTop.Height() < 0 ||
- aCropRightBottom.Width() < 0 ||
- aCropRightBottom.Height() < 0 )
- {
- Size aNewSize( aAnim.GetDisplaySizePixel() );
- aNewSize.Width() += aCropRightBottom.Width() < 0 ? -aCropRightBottom.Width() : 0;
- aNewSize.Width() += aCropLeftTop.Width() < 0 ? -aCropLeftTop.Width() : 0;
- aNewSize.Height() += aCropRightBottom.Height() < 0 ? -aCropRightBottom.Height() : 0;
- aNewSize.Height() += aCropLeftTop.Height() < 0 ? -aCropLeftTop.Height() : 0;
- aAnim.SetDisplaySizePixel( aNewSize );
- }
-
- // if topleft has changed, we must move all frames to the
- // right and bottom, resp.
- if( aCropLeftTop.Width() < 0 ||
- aCropLeftTop.Height() < 0 )
- {
- Point aPosOffset( aCropLeftTop.Width() < 0 ? -aCropLeftTop.Width() : 0,
- aCropLeftTop.Height() < 0 ? -aCropLeftTop.Height() : 0 );
-
- for( nFrame=0; nFrame<aAnim.Count(); ++nFrame )
- {
- AnimationBitmap aAnimBmp( aAnim.Get( nFrame ) );
-
- aAnimBmp.aPosPix += aPosOffset;
-
- aAnim.Replace( aAnimBmp, nFrame );
- }
- }
-
- aTransGraphic = aAnim;
- }
- else
- {
- BitmapEx aBmpEx( aTransGraphic.GetBitmapEx() );
-
- ImplTransformBitmap( aBmpEx, rAttr, aCropLeftTop, aCropRightBottom,
- aCropRect, rDestSize, TRUE );
-
- aTransGraphic = aBmpEx;
- }
-
- aTransGraphic.SetPrefSize( rDestSize );
- aTransGraphic.SetPrefMapMode( rDestMap );
- }
-
- GraphicObject aGrfObj( aTransGraphic );
- aTransGraphic = aGrfObj.GetTransformedGraphic( &rAttr );
-
- return aTransGraphic;
-}
-
-// -----------------------------------------------------------------------------
-
-Graphic GraphicObject::GetTransformedGraphic( const GraphicAttr* pAttr ) const // TODO: Change to Impl
-{
- GetGraphic();
-
- Graphic aGraphic;
- GraphicAttr aAttr( pAttr ? *pAttr : GetAttr() );
-
- if( maGraphic.IsSupportedGraphic() && !maGraphic.IsSwapOut() )
- {
- if( aAttr.IsSpecialDrawMode() || aAttr.IsAdjusted() || aAttr.IsMirrored() || aAttr.IsRotated() || aAttr.IsTransparent() )
- {
- if( GetType() == GRAPHIC_BITMAP )
- {
- if( IsAnimated() )
- {
- Animation aAnimation( maGraphic.GetAnimation() );
- GraphicManager::ImplAdjust( aAnimation, aAttr, ADJUSTMENT_ALL );
- aAnimation.SetLoopCount( mnAnimationLoopCount );
- aGraphic = aAnimation;
- }
- else
- {
- BitmapEx aBmpEx( maGraphic.GetBitmapEx() );
- GraphicManager::ImplAdjust( aBmpEx, aAttr, ADJUSTMENT_ALL );
- aGraphic = aBmpEx;
- }
- }
- else
- {
- GDIMetaFile aMtf( maGraphic.GetGDIMetaFile() );
- GraphicManager::ImplAdjust( aMtf, aAttr, ADJUSTMENT_ALL );
- aGraphic = aMtf;
- }
- }
- else
- {
- if( ( GetType() == GRAPHIC_BITMAP ) && IsAnimated() )
- {
- Animation aAnimation( maGraphic.GetAnimation() );
- aAnimation.SetLoopCount( mnAnimationLoopCount );
- aGraphic = aAnimation;
- }
- else
- aGraphic = maGraphic;
- }
- }
-
- return aGraphic;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::ResetAnimationLoopCount()
-{
- if( IsAnimated() && !IsSwappedOut() )
- {
- maGraphic.ResetAnimationLoopCount();
-
- if( mpSimpleCache )
- mpSimpleCache->maGraphic.ResetAnimationLoopCount();
- }
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicObject::SwapOut()
-{
- BOOL bRet = ( !mbAutoSwapped ? maGraphic.SwapOut() : FALSE );
-
- if( bRet && mpMgr )
- mpMgr->ImplGraphicObjectWasSwappedOut( *this );
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicObject::SwapOut( SvStream* pOStm )
-{
- BOOL bRet = ( !mbAutoSwapped ? maGraphic.SwapOut( pOStm ) : FALSE );
-
- if( bRet && mpMgr )
- mpMgr->ImplGraphicObjectWasSwappedOut( *this );
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicObject::SwapIn()
-{
- BOOL bRet;
-
- if( mbAutoSwapped )
- {
- ImplAutoSwapIn();
- bRet = TRUE;
- }
- else if( mpMgr && mpMgr->ImplFillSwappedGraphicObject( *this, maGraphic ) )
- bRet = TRUE;
- else
- {
- bRet = maGraphic.SwapIn();
-
- if( bRet && mpMgr )
- mpMgr->ImplGraphicObjectWasSwappedIn( *this );
- }
-
- if( bRet )
- ImplAssignGraphicData();
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicObject::SwapIn( SvStream* pIStm )
-{
- BOOL bRet;
-
- if( mbAutoSwapped )
- {
- ImplAutoSwapIn();
- bRet = TRUE;
- }
- else if( mpMgr && mpMgr->ImplFillSwappedGraphicObject( *this, maGraphic ) )
- bRet = TRUE;
- else
- {
- bRet = maGraphic.SwapIn( pIStm );
-
- if( bRet && mpMgr )
- mpMgr->ImplGraphicObjectWasSwappedIn( *this );
- }
-
- if( bRet )
- ImplAssignGraphicData();
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::SetSwapState()
-{
- if( !IsSwappedOut() )
- {
- mbAutoSwapped = TRUE;
-
- if( mpMgr )
- mpMgr->ImplGraphicObjectWasSwappedOut( *this );
- }
-}
-
-// -----------------------------------------------------------------------------
-
-IMPL_LINK( GraphicObject, ImplAutoSwapOutHdl, void*, EMPTYARG )
-{
- if( !IsSwappedOut() )
- {
- mbIsInSwapOut = TRUE;
-
- SvStream* pStream = GetSwapStream();
-
- if( GRFMGR_AUTOSWAPSTREAM_NONE != pStream )
- {
- if( GRFMGR_AUTOSWAPSTREAM_LINK == pStream )
- mbAutoSwapped = SwapOut( NULL );
- else
- {
- if( GRFMGR_AUTOSWAPSTREAM_TEMP == pStream )
- mbAutoSwapped = SwapOut();
- else
- {
- mbAutoSwapped = SwapOut( pStream );
- delete pStream;
- }
- }
- }
-
- mbIsInSwapOut = FALSE;
- }
-
- if( mpSwapOutTimer )
- mpSwapOutTimer->Start();
-
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-SvStream& operator>>( SvStream& rIStm, GraphicObject& rGraphicObj )
-{
- VersionCompat aCompat( rIStm, STREAM_READ );
- Graphic aGraphic;
- GraphicAttr aAttr;
- ByteString aLink;
- BOOL bLink;
-
- rIStm >> aGraphic >> aAttr >> bLink;
-
- rGraphicObj.SetGraphic( aGraphic );
- rGraphicObj.SetAttr( aAttr );
-
- if( bLink )
- {
- rIStm >> aLink;
- rGraphicObj.SetLink( UniString( aLink, RTL_TEXTENCODING_UTF8 ) );
- }
- else
- rGraphicObj.SetLink();
-
- rGraphicObj.SetSwapStreamHdl();
-
- return rIStm;
-}
-
-// ------------------------------------------------------------------------
-
-SvStream& operator<<( SvStream& rOStm, const GraphicObject& rGraphicObj )
-{
- VersionCompat aCompat( rOStm, STREAM_WRITE, 1 );
- const BOOL bLink = rGraphicObj.HasLink();
-
- rOStm << rGraphicObj.GetGraphic() << rGraphicObj.GetAttr() << bLink;
-
- if( bLink )
- rOStm << ByteString( rGraphicObj.GetLink(), RTL_TEXTENCODING_UTF8 );
-
- return rOStm;
-}
-
-#define UNO_NAME_GRAPHOBJ_URLPREFIX "vnd.sun.star.GraphicObject:"
-
-GraphicObject GraphicObject::CreateGraphicObjectFromURL( const ::rtl::OUString &rURL )
-{
- const String aURL( rURL ), aPrefix( RTL_CONSTASCII_STRINGPARAM(UNO_NAME_GRAPHOBJ_URLPREFIX) );
- if( aURL.Search( aPrefix ) == 0 )
- {
- // graphic manager url
- ByteString aUniqueID( String(rURL.copy( sizeof( UNO_NAME_GRAPHOBJ_URLPREFIX ) - 1 )), RTL_TEXTENCODING_UTF8 );
- return GraphicObject( aUniqueID );
- }
- else
- {
- Graphic aGraphic;
- if ( aURL.Len() )
- {
- SvStream* pStream = utl::UcbStreamHelper::CreateStream( aURL, STREAM_READ );
- if( pStream )
- GraphicConverter::Import( *pStream, aGraphic );
- }
-
- return GraphicObject( aGraphic );
- }
-}
-
diff --git a/goodies/source/graphic/grfmgr2.cxx b/goodies/source/graphic/grfmgr2.cxx
deleted file mode 100644
index 2b7dc86f7149..000000000000
--- a/goodies/source/graphic/grfmgr2.cxx
+++ /dev/null
@@ -1,2385 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: grfmgr2.cxx,v $
- * $Revision: 1.26 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include <vos/macros.hxx>
-#include <vcl/bmpacc.hxx>
-#include <tools/poly.hxx>
-#include <vcl/outdev.hxx>
-#include <vcl/window.hxx>
-#include <vcl/gdimtf.hxx>
-#include <vcl/metaact.hxx>
-#include <vcl/metric.hxx>
-#include <vcl/animate.hxx>
-#include <vcl/alpha.hxx>
-#include <vcl/virdev.hxx>
-#include "grfcache.hxx"
-#include "grfmgr.hxx"
-
-// -----------
-// - defines -
-// -----------
-
-#define MAX_PRINTER_EXT 1024
-#define MAP( cVal0, cVal1, nFrac ) ((BYTE)((((long)(cVal0)<<20L)+nFrac*((long)(cVal1)-(cVal0)))>>20L))
-#define WATERMARK_LUM_OFFSET 50
-#define WATERMARK_CON_OFFSET -70
-
-// -----------
-// - helpers -
-// -----------
-
-namespace {
-
-void muckWithBitmap( const Point& rDestPoint,
- const Size& rDestSize,
- const Size& rRefSize,
- bool& o_rbNonBitmapActionEncountered )
-{
- const Point aEmptyPoint;
-
- if( aEmptyPoint != rDestPoint ||
- rDestSize != rRefSize )
- {
- // non-fullscale, or offsetted bmp -> fallback to mtf
- // rendering
- o_rbNonBitmapActionEncountered = true;
- }
-}
-
-BitmapEx muckWithBitmap( const BitmapEx& rBmpEx,
- const Point& rSrcPoint,
- const Size& rSrcSize,
- const Point& rDestPoint,
- const Size& rDestSize,
- const Size& rRefSize,
- bool& o_rbNonBitmapActionEncountered )
-{
- BitmapEx aBmpEx;
-
- muckWithBitmap(rDestPoint,
- rDestSize,
- rRefSize,
- o_rbNonBitmapActionEncountered);
-
- if( o_rbNonBitmapActionEncountered )
- return aBmpEx;
-
- aBmpEx = rBmpEx;
-
- if( (rSrcPoint.X() != 0 && rSrcPoint.Y() != 0) ||
- rSrcSize != rBmpEx.GetSizePixel() )
- {
- // crop bitmap to given source rectangle (no
- // need to copy and convert the whole bitmap)
- const Rectangle aCropRect( rSrcPoint,
- rSrcSize );
- aBmpEx.Crop( aCropRect );
- }
-
- return aBmpEx;
-}
-
-} // namespace {
-
-
-// ------------------
-// - GraphicManager -
-// ------------------
-
-GraphicManager::GraphicManager( ULONG nCacheSize, ULONG nMaxObjCacheSize ) :
- mpCache( new GraphicCache( *this, nCacheSize, nMaxObjCacheSize ) )
-{
-}
-
-// -----------------------------------------------------------------------------
-
-GraphicManager::~GraphicManager()
-{
- for( void* pObj = maObjList.First(); pObj; pObj = maObjList.Next() )
- ( (GraphicObject*) pObj )->GraphicManagerDestroyed();
-
- delete mpCache;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::SetMaxCacheSize( ULONG nNewCacheSize )
-{
- mpCache->SetMaxDisplayCacheSize( nNewCacheSize );
-}
-
-// -----------------------------------------------------------------------------
-
-ULONG GraphicManager::GetMaxCacheSize() const
-{
- return mpCache->GetMaxDisplayCacheSize();
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::SetMaxObjCacheSize( ULONG nNewMaxObjSize, BOOL bDestroyGreaterCached )
-{
- mpCache->SetMaxObjDisplayCacheSize( nNewMaxObjSize, bDestroyGreaterCached );
-}
-
-// -----------------------------------------------------------------------------
-
-ULONG GraphicManager::GetMaxObjCacheSize() const
-{
- return mpCache->GetMaxObjDisplayCacheSize();
-}
-
-// -----------------------------------------------------------------------------
-
-ULONG GraphicManager::GetUsedCacheSize() const
-{
- return mpCache->GetUsedDisplayCacheSize();
-}
-
-// -----------------------------------------------------------------------------
-
-ULONG GraphicManager::GetFreeCacheSize() const
-{
- return mpCache->GetFreeDisplayCacheSize();
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::SetCacheTimeout( ULONG nTimeoutSeconds )
-{
- mpCache->SetCacheTimeout( nTimeoutSeconds );
-}
-
-// -----------------------------------------------------------------------------
-
-ULONG GraphicManager::GetCacheTimeout() const
-{
- return mpCache->GetCacheTimeout();
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::ClearCache()
-{
- mpCache->ClearDisplayCache();
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::ReleaseFromCache( const GraphicObject& /*rObj*/ )
-{
- // !!!
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicManager::IsInCache( OutputDevice* pOut, const Point& rPt,
- const Size& rSz, const GraphicObject& rObj,
- const GraphicAttr& rAttr ) const
-{
- return mpCache->IsInDisplayCache( pOut, rPt, rSz, rObj, rAttr );
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicManager::DrawObj( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- GraphicObject& rObj, const GraphicAttr& rAttr,
- const ULONG nFlags, BOOL& rCached )
-{
- Point aPt( rPt );
- Size aSz( rSz );
- BOOL bRet = FALSE;
-
- rCached = FALSE;
-
- if( ( rObj.GetType() == GRAPHIC_BITMAP ) || ( rObj.GetType() == GRAPHIC_GDIMETAFILE ) )
- {
- // create output and fill cache
- const Size aOutSize( pOut->GetOutputSizePixel() );
-
- if( rObj.IsAnimated() || ( pOut->GetOutDevType() == OUTDEV_PRINTER ) ||
- ( !( nFlags & GRFMGR_DRAW_NO_SUBSTITUTE ) &&
- ( ( nFlags & GRFMGR_DRAW_SUBSTITUTE ) ||
- !( nFlags & GRFMGR_DRAW_CACHED ) ||
- ( pOut->GetConnectMetaFile() && !pOut->IsOutputEnabled() ) ) ) )
- {
- // simple output of transformed graphic
- const Graphic aGraphic( rObj.GetTransformedGraphic( &rAttr ) );
-
- if( aGraphic.IsSupportedGraphic() )
- {
- const USHORT nRot10 = rAttr.GetRotation() % 3600;
-
- if( nRot10 )
- {
- Polygon aPoly( Rectangle( aPt, aSz ) );
-
- aPoly.Rotate( aPt, nRot10 );
- const Rectangle aRotBoundRect( aPoly.GetBoundRect() );
- aPt = aRotBoundRect.TopLeft();
- aSz = aRotBoundRect.GetSize();
- }
-
- aGraphic.Draw( pOut, aPt, aSz );
- }
-
- bRet = TRUE;
- }
-
- if( !bRet )
- {
- // cached/direct drawing
- if( !mpCache->DrawDisplayCacheObj( pOut, aPt, aSz, rObj, rAttr ) )
- bRet = ImplDraw( pOut, aPt, aSz, rObj, rAttr, nFlags, rCached );
- else
- bRet = rCached = TRUE;
- }
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::ImplRegisterObj( const GraphicObject& rObj, Graphic& rSubstitute,
- const ByteString* pID, const GraphicObject* pCopyObj )
-{
- maObjList.Insert( (void*) &rObj, LIST_APPEND );
- mpCache->AddGraphicObject( rObj, rSubstitute, pID, pCopyObj );
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::ImplUnregisterObj( const GraphicObject& rObj )
-{
- mpCache->ReleaseGraphicObject( rObj );
- maObjList.Remove( (void*) &rObj );
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::ImplGraphicObjectWasSwappedOut( const GraphicObject& rObj )
-{
- mpCache->GraphicObjectWasSwappedOut( rObj );
-}
-
-// -----------------------------------------------------------------------------
-
-ByteString GraphicManager::ImplGetUniqueID( const GraphicObject& rObj ) const
-{
- return mpCache->GetUniqueID( rObj );
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicManager::ImplFillSwappedGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute )
-{
- return( mpCache->FillSwappedGraphicObject( rObj, rSubstitute ) );
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::ImplGraphicObjectWasSwappedIn( const GraphicObject& rObj )
-{
- mpCache->GraphicObjectWasSwappedIn( rObj );
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicManager::ImplDraw( OutputDevice* pOut, const Point& rPt,
- const Size& rSz, GraphicObject& rObj,
- const GraphicAttr& rAttr,
- const ULONG nFlags, BOOL& rCached )
-{
- const Graphic& rGraphic = rObj.GetGraphic();
- BOOL bRet = FALSE;
-
- if( rGraphic.IsSupportedGraphic() && !rGraphic.IsSwapOut() )
- {
- if( GRAPHIC_BITMAP == rGraphic.GetType() )
- {
- const BitmapEx aSrcBmpEx( rGraphic.GetBitmapEx() );
-
- // #i46805# No point in caching a bitmap that is rendered
- // via RectFill on the OutDev
- if( !(pOut->GetDrawMode() & ( DRAWMODE_BLACKBITMAP | DRAWMODE_WHITEBITMAP )) &&
- mpCache->IsDisplayCacheable( pOut, rPt, rSz, rObj, rAttr ) )
- {
- BitmapEx aDstBmpEx;
-
- if( ImplCreateOutput( pOut, rPt, rSz, aSrcBmpEx, rAttr, nFlags, &aDstBmpEx ) )
- {
- rCached = mpCache->CreateDisplayCacheObj( pOut, rPt, rSz, rObj, rAttr, aDstBmpEx );
- bRet = TRUE;
- }
- }
-
- if( !bRet )
- bRet = ImplCreateOutput( pOut, rPt, rSz, aSrcBmpEx, rAttr, nFlags );
- }
- else
- {
- const GDIMetaFile& rSrcMtf = rGraphic.GetGDIMetaFile();
-
- if( mpCache->IsDisplayCacheable( pOut, rPt, rSz, rObj, rAttr ) )
- {
- GDIMetaFile aDstMtf;
- BitmapEx aContainedBmpEx;
-
- if( ImplCreateOutput( pOut, rPt, rSz, rSrcMtf, rAttr, nFlags, aDstMtf, aContainedBmpEx ) )
- {
- if( !!aContainedBmpEx )
- {
- // #117889# Use bitmap output method, if
- // metafile basically contains only a single
- // bitmap
- BitmapEx aDstBmpEx;
-
- if( ImplCreateOutput( pOut, rPt, rSz, aContainedBmpEx, rAttr, nFlags, &aDstBmpEx ) )
- {
- rCached = mpCache->CreateDisplayCacheObj( pOut, rPt, rSz, rObj, rAttr, aDstBmpEx );
- bRet = TRUE;
- }
- }
- else
- {
- rCached = mpCache->CreateDisplayCacheObj( pOut, rPt, rSz, rObj, rAttr, aDstMtf );
- bRet = TRUE;
- }
- }
- }
-
- if( !bRet )
- {
- const Graphic aGraphic( rObj.GetTransformedGraphic( &rAttr ) );
-
- if( aGraphic.IsSupportedGraphic() )
- {
- aGraphic.Draw( pOut, rPt, rSz );
- bRet = TRUE;
- }
- }
- }
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicManager::ImplCreateOutput( OutputDevice* pOut,
- const Point& rPt, const Size& rSz,
- const BitmapEx& rBmpEx, const GraphicAttr& rAttr,
- const ULONG nFlags, BitmapEx* pBmpEx )
-{
- USHORT nRot10 = rAttr.GetRotation() % 3600;
- Point aOutPtPix;
- Size aOutSzPix;
- Size aUnrotatedSzPix( pOut->LogicToPixel( rSz ) );
- BOOL bRet = FALSE;
-
- if( nRot10 )
- {
- Polygon aPoly( Rectangle( rPt, rSz ) );
-
- aPoly.Rotate( rPt, nRot10 );
- const Rectangle aRotBoundRect( aPoly.GetBoundRect() );
- aOutPtPix = pOut->LogicToPixel( aRotBoundRect.TopLeft() );
- aOutSzPix = pOut->LogicToPixel( aRotBoundRect.GetSize() );
- }
- else
- {
- aOutPtPix = pOut->LogicToPixel( rPt );
- aOutSzPix = aUnrotatedSzPix;
- }
-
- if( aUnrotatedSzPix.Width() && aUnrotatedSzPix.Height() )
- {
- BitmapEx aBmpEx( rBmpEx );
- BitmapEx aOutBmpEx;
- Point aOutPt;
- Size aOutSz;
- const Size& rBmpSzPix = rBmpEx.GetSizePixel();
- const long nW = rBmpSzPix.Width();
- const long nH = rBmpSzPix.Height();
- const long nNewW = aUnrotatedSzPix.Width();
- const long nNewH = aUnrotatedSzPix.Height();
- double fTmp;
- long* pMapIX = new long[ nNewW ];
- long* pMapFX = new long[ nNewW ];
- long* pMapIY = new long[ nNewH ];
- long* pMapFY = new long[ nNewH ];
- long nStartX = -1, nStartY = -1, nEndX = -1, nEndY = -1;
- long nX, nY, nTmp, nTmpX, nTmpY;
- BOOL bHMirr = ( rAttr.GetMirrorFlags() & BMP_MIRROR_HORZ ) != 0;
- BOOL bVMirr = ( rAttr.GetMirrorFlags() & BMP_MIRROR_VERT ) != 0;
-
- if( nFlags & GRFMGR_DRAW_BILINEAR )
- {
- const double fRevScaleX = ( nNewW > 1L ) ? ( (double) ( nW - 1L ) / ( nNewW - 1L ) ) : 0.0;
- const double fRevScaleY = ( nNewH > 1L ) ? ( (double) ( nH - 1L ) / ( nNewH - 1L ) ) : 0.0;
-
- // create horizontal mapping table
- for( nX = 0L, nTmpX = nW - 1L, nTmp = nW - 2L; nX < nNewW; nX++ )
- {
- fTmp = nX * fRevScaleX;
-
- if( bHMirr )
- fTmp = nTmpX - fTmp;
-
- pMapFX[ nX ] = (long) ( ( fTmp - ( pMapIX[ nX ] = MinMax( (long) fTmp, 0, nTmp ) ) ) * 1048576. );
- }
-
- // create vertical mapping table
- for( nY = 0L, nTmpY = nH - 1L, nTmp = nH - 2L; nY < nNewH; nY++ )
- {
- fTmp = nY * fRevScaleY;
-
- if( bVMirr )
- fTmp = nTmpY - fTmp;
-
- pMapFY[ nY ] = (long) ( ( fTmp - ( pMapIY[ nY ] = MinMax( (long) fTmp, 0, nTmp ) ) ) * 1048576. );
- }
- }
- else
- {
- // #98290# Use a different mapping for non-interpolating mode, to avoid missing rows/columns
- const double fRevScaleX = ( nNewW > 1L ) ? ( (double) nW / nNewW ) : 0.0;
- const double fRevScaleY = ( nNewH > 1L ) ? ( (double) nH / nNewH ) : 0.0;
-
- // create horizontal mapping table
- for( nX = 0L, nTmpX = nW - 1L, nTmp = nW - 2L; nX < nNewW; nX++ )
- {
- fTmp = nX * fRevScaleX;
-
- if( bHMirr )
- fTmp = nTmpX - fTmp;
-
- // #98290# Do not use round to zero, otherwise last column will be missing
- pMapIX[ nX ] = MinMax( (long) fTmp, 0, nTmp );
- pMapFX[ nX ] = fTmp >= nTmp+1 ? 1048576 : 0;
- }
-
- // create vertical mapping table
- for( nY = 0L, nTmpY = nH - 1L, nTmp = nH - 2L; nY < nNewH; nY++ )
- {
- fTmp = nY * fRevScaleY;
-
- if( bVMirr )
- fTmp = nTmpY - fTmp;
-
- // #98290# Do not use round to zero, otherwise last row will be missing
- pMapIY[ nY ] = MinMax( (long) fTmp, 0, nTmp );
- pMapFY[ nY ] = fTmp >= nTmp+1 ? 1048576 : 0;
- }
- }
-
- // calculate output sizes
- if( !pBmpEx )
- {
- Point aPt;
- Rectangle aOutRect( aPt, pOut->GetOutputSizePixel() );
- Rectangle aBmpRect( aOutPtPix, aOutSzPix );
-
- if( pOut->GetOutDevType() == OUTDEV_WINDOW )
- {
- const Region aPaintRgn( ( (Window*) pOut )->GetPaintRegion() );
- if( !aPaintRgn.IsNull() )
- aOutRect.Intersection( pOut->LogicToPixel( aPaintRgn.GetBoundRect() ) );
- }
-
- aOutRect.Intersection( aBmpRect );
-
- if( !aOutRect.IsEmpty() )
- {
- aOutPt = pOut->PixelToLogic( aOutRect.TopLeft() );
- aOutSz = pOut->PixelToLogic( aOutRect.GetSize() );
- nStartX = aOutRect.Left() - aBmpRect.Left();
- nStartY = aOutRect.Top() - aBmpRect.Top();
- nEndX = aOutRect.Right() - aBmpRect.Left();
- nEndY = aOutRect.Bottom() - aBmpRect.Top();
- }
- else
- nStartX = -1L; // invalid
- }
- else
- {
- aOutPt = pOut->PixelToLogic( aOutPtPix );
- aOutSz = pOut->PixelToLogic( aOutSzPix );
- nStartX = nStartY = 0;
- nEndX = aOutSzPix.Width() - 1L;
- nEndY = aOutSzPix.Height() - 1L;
- }
-
- // do transformation
- if( nStartX >= 0L )
- {
- const BOOL bSimple = ( 1 == nW || 1 == nH );
-
- if( nRot10 )
- {
- if( bSimple )
- {
- bRet = ( aOutBmpEx = aBmpEx ).Scale( aUnrotatedSzPix );
-
- if( bRet )
- aOutBmpEx.Rotate( nRot10, COL_TRANSPARENT );
- }
- else
- {
- bRet = ImplCreateRotatedScaled( aBmpEx,
- nRot10, aOutSzPix, aUnrotatedSzPix,
- pMapIX, pMapFX, pMapIY, pMapFY, nStartX, nEndX, nStartY, nEndY,
- aOutBmpEx );
- }
- }
- else
- {
- // #105229# Don't scale if output size equals bitmap size
- // #107226# Copy through only if we're not mirroring
- if( !bHMirr && !bVMirr && aOutSzPix == rBmpSzPix )
- {
- // #107226# Use original dimensions when just copying through
- aOutPt = pOut->PixelToLogic( aOutPtPix );
- aOutSz = pOut->PixelToLogic( aOutSzPix );
- aOutBmpEx = aBmpEx;
- bRet = TRUE;
- }
- else
- {
- if( bSimple )
- bRet = ( aOutBmpEx = aBmpEx ).Scale( Size( nEndX - nStartX + 1, nEndY - nStartY + 1 ) );
- else
- {
- bRet = ImplCreateScaled( aBmpEx,
- pMapIX, pMapFX, pMapIY, pMapFY,
- nStartX, nEndX, nStartY, nEndY,
- aOutBmpEx );
- }
- }
- }
-
- if( bRet )
- {
- // attribute adjustment if neccessary
- if( rAttr.IsSpecialDrawMode() || rAttr.IsAdjusted() || rAttr.IsTransparent() )
- ImplAdjust( aOutBmpEx, rAttr, ADJUSTMENT_DRAWMODE | ADJUSTMENT_COLORS | ADJUSTMENT_TRANSPARENCY );
-
- // OutDev adjustment if neccessary
- if( pOut->GetOutDevType() != OUTDEV_PRINTER && pOut->GetBitCount() <= 8 && aOutBmpEx.GetBitCount() >= 8 )
- aOutBmpEx.Dither( BMP_DITHER_MATRIX );
- }
- }
-
- // delete lookup tables
- delete[] pMapIX;
- delete[] pMapFX;
- delete[] pMapIY;
- delete[] pMapFY;
-
- // create output
- if( bRet )
- {
- if( !pBmpEx )
- pOut->DrawBitmapEx( aOutPt, aOutSz, aOutBmpEx );
- else
- {
- if( !rAttr.IsTransparent() && !aOutBmpEx.IsAlpha() )
- aOutBmpEx = BitmapEx( aOutBmpEx.GetBitmap().CreateDisplayBitmap( pOut ), aOutBmpEx.GetMask() );
-
- pOut->DrawBitmapEx( aOutPt, aOutSz, *pBmpEx = aOutBmpEx );
- }
- }
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicManager::ImplCreateOutput( OutputDevice* pOut,
- const Point& rPt, const Size& rSz,
- const GDIMetaFile& rMtf, const GraphicAttr& rAttr,
- const ULONG /*nFlags*/, GDIMetaFile& rOutMtf, BitmapEx& rOutBmpEx )
-{
- const Size aNewSize( rMtf.GetPrefSize() );
-
- rOutMtf = rMtf;
-
- // #117889# count bitmap actions, and flag actions that paint, but
- // are no bitmaps.
- sal_Int32 nNumBitmaps(0);
- bool bNonBitmapActionEncountered(false);
- if( aNewSize.Width() && aNewSize.Height() && rSz.Width() && rSz.Height() )
- {
- const double fGrfWH = (double) aNewSize.Width() / aNewSize.Height();
- const double fOutWH = (double) rSz.Width() / rSz.Height();
-
- const double fScaleX = fOutWH / fGrfWH;
- const double fScaleY = 1.0;
-
- const MapMode& rPrefMapMode( rMtf.GetPrefMapMode() );
- const Size& rSizePix( pOut->LogicToPixel( aNewSize,
- rPrefMapMode ) );
-
- // taking care of font width default if scaling metafile.
- // #117889# use existing metafile scan, to determine whether
- // the metafile basically displays a single bitmap. Note that
- // the solution, as implemented here, is quite suboptimal (the
- // cases where a mtf consisting basically of a single bitmap,
- // that fail to pass the test below, are probably frequent). A
- // better solution would involve FSAA, but that's currently
- // expensive, and might trigger bugs on display drivers, if
- // VDevs get bigger than the actual screen.
- sal_uInt32 nCurPos;
- MetaAction* pAct;
- for( nCurPos = 0, pAct = (MetaAction*)rOutMtf.FirstAction(); pAct;
- pAct = (MetaAction*)rOutMtf.NextAction(), nCurPos++ )
- {
- MetaAction* pModAct = NULL;
- switch( pAct->GetType() )
- {
- case META_FONT_ACTION:
- {
- MetaFontAction* pA = (MetaFontAction*)pAct;
- Font aFont( pA->GetFont() );
- if ( !aFont.GetWidth() )
- {
- FontMetric aFontMetric( pOut->GetFontMetric( aFont ) );
- aFont.SetWidth( aFontMetric.GetWidth() );
- pModAct = new MetaFontAction( aFont );
- }
- }
- // FALLTHROUGH intended
- case META_NULL_ACTION:
- // FALLTHROUGH intended
-
- // OutDev state changes (which don't affect bitmap
- // output)
- case META_LINECOLOR_ACTION:
- // FALLTHROUGH intended
- case META_FILLCOLOR_ACTION:
- // FALLTHROUGH intended
- case META_TEXTCOLOR_ACTION:
- // FALLTHROUGH intended
- case META_TEXTFILLCOLOR_ACTION:
- // FALLTHROUGH intended
- case META_TEXTALIGN_ACTION:
- // FALLTHROUGH intended
- case META_TEXTLINECOLOR_ACTION:
- // FALLTHROUGH intended
- case META_TEXTLINE_ACTION:
- // FALLTHROUGH intended
- case META_PUSH_ACTION:
- // FALLTHROUGH intended
- case META_POP_ACTION:
- // FALLTHROUGH intended
- case META_LAYOUTMODE_ACTION:
- // FALLTHROUGH intended
- case META_TEXTLANGUAGE_ACTION:
- // FALLTHROUGH intended
- case META_COMMENT_ACTION:
- break;
-
- // bitmap output methods
- case META_BMP_ACTION:
- if( !nNumBitmaps && !bNonBitmapActionEncountered )
- {
- MetaBmpAction* pAction = (MetaBmpAction*)pAct;
-
- rOutBmpEx = BitmapEx( pAction->GetBitmap() );
- muckWithBitmap( pOut->LogicToPixel( pAction->GetPoint(),
- rPrefMapMode ),
- pAction->GetBitmap().GetSizePixel(),
- rSizePix,
- bNonBitmapActionEncountered );
- ++nNumBitmaps;
- }
- break;
-
- case META_BMPSCALE_ACTION:
- if( !nNumBitmaps && !bNonBitmapActionEncountered )
- {
- MetaBmpScaleAction* pAction = (MetaBmpScaleAction*)pAct;
-
- rOutBmpEx = BitmapEx( pAction->GetBitmap() );
- muckWithBitmap( pOut->LogicToPixel( pAction->GetPoint(),
- rPrefMapMode ),
- pOut->LogicToPixel( pAction->GetSize(),
- rPrefMapMode ),
- rSizePix,
- bNonBitmapActionEncountered );
- ++nNumBitmaps;
- }
- break;
-
- case META_BMPSCALEPART_ACTION:
- if( !nNumBitmaps && !bNonBitmapActionEncountered )
- {
- MetaBmpScalePartAction* pAction = (MetaBmpScalePartAction*)pAct;
-
- rOutBmpEx = muckWithBitmap( BitmapEx( pAction->GetBitmap() ),
- pAction->GetSrcPoint(),
- pAction->GetSrcSize(),
- pOut->LogicToPixel( pAction->GetDestPoint(),
- rPrefMapMode ),
- pOut->LogicToPixel( pAction->GetDestSize(),
- rPrefMapMode ),
- rSizePix,
- bNonBitmapActionEncountered );
- ++nNumBitmaps;
- }
- break;
-
- case META_BMPEX_ACTION:
- if( !nNumBitmaps && !bNonBitmapActionEncountered )
- {
- MetaBmpExAction* pAction = (MetaBmpExAction*)pAct;
-
- rOutBmpEx = pAction->GetBitmapEx();
- muckWithBitmap( pOut->LogicToPixel( pAction->GetPoint(),
- rPrefMapMode ),
- pAction->GetBitmapEx().GetSizePixel(),
- rSizePix,
- bNonBitmapActionEncountered );
- ++nNumBitmaps;
- }
- break;
-
- case META_BMPEXSCALE_ACTION:
- if( !nNumBitmaps && !bNonBitmapActionEncountered )
- {
- MetaBmpExScaleAction* pAction = (MetaBmpExScaleAction*)pAct;
-
- rOutBmpEx = pAction->GetBitmapEx();
- muckWithBitmap( pOut->LogicToPixel( pAction->GetPoint(),
- rPrefMapMode ),
- pOut->LogicToPixel( pAction->GetSize(),
- rPrefMapMode ),
- rSizePix,
- bNonBitmapActionEncountered );
- ++nNumBitmaps;
- }
- break;
-
- case META_BMPEXSCALEPART_ACTION:
- if( !nNumBitmaps && !bNonBitmapActionEncountered )
- {
- MetaBmpExScalePartAction* pAction = (MetaBmpExScalePartAction*)pAct;
-
- rOutBmpEx = muckWithBitmap( pAction->GetBitmapEx(),
- pAction->GetSrcPoint(),
- pAction->GetSrcSize(),
- pOut->LogicToPixel( pAction->GetDestPoint(),
- rPrefMapMode ),
- pOut->LogicToPixel( pAction->GetDestSize(),
- rPrefMapMode ),
- rSizePix,
- bNonBitmapActionEncountered );
- ++nNumBitmaps;
- }
- break;
-
- // these actions actually output something (that's
- // different from a bitmap)
- case META_RASTEROP_ACTION:
- if( ((MetaRasterOpAction*)pAct)->GetRasterOp() == ROP_OVERPAINT )
- break;
- // FALLTHROUGH intended
- case META_PIXEL_ACTION:
- // FALLTHROUGH intended
- case META_POINT_ACTION:
- // FALLTHROUGH intended
- case META_LINE_ACTION:
- // FALLTHROUGH intended
- case META_RECT_ACTION:
- // FALLTHROUGH intended
- case META_ROUNDRECT_ACTION:
- // FALLTHROUGH intended
- case META_ELLIPSE_ACTION:
- // FALLTHROUGH intended
- case META_ARC_ACTION:
- // FALLTHROUGH intended
- case META_PIE_ACTION:
- // FALLTHROUGH intended
- case META_CHORD_ACTION:
- // FALLTHROUGH intended
- case META_POLYLINE_ACTION:
- // FALLTHROUGH intended
- case META_POLYGON_ACTION:
- // FALLTHROUGH intended
- case META_POLYPOLYGON_ACTION:
- // FALLTHROUGH intended
-
- case META_TEXT_ACTION:
- // FALLTHROUGH intended
- case META_TEXTARRAY_ACTION:
- // FALLTHROUGH intended
- case META_STRETCHTEXT_ACTION:
- // FALLTHROUGH intended
- case META_TEXTRECT_ACTION:
- // FALLTHROUGH intended
-
- case META_MASK_ACTION:
- // FALLTHROUGH intended
- case META_MASKSCALE_ACTION:
- // FALLTHROUGH intended
- case META_MASKSCALEPART_ACTION:
- // FALLTHROUGH intended
-
- case META_GRADIENT_ACTION:
- // FALLTHROUGH intended
- case META_HATCH_ACTION:
- // FALLTHROUGH intended
- case META_WALLPAPER_ACTION:
- // FALLTHROUGH intended
-
- case META_TRANSPARENT_ACTION:
- // FALLTHROUGH intended
- case META_EPS_ACTION:
- // FALLTHROUGH intended
- case META_FLOATTRANSPARENT_ACTION:
- // FALLTHROUGH intended
- case META_GRADIENTEX_ACTION:
- // FALLTHROUGH intended
-
- // OutDev state changes that _do_ affect bitmap
- // output
- case META_CLIPREGION_ACTION:
- // FALLTHROUGH intended
- case META_ISECTRECTCLIPREGION_ACTION:
- // FALLTHROUGH intended
- case META_ISECTREGIONCLIPREGION_ACTION:
- // FALLTHROUGH intended
- case META_MOVECLIPREGION_ACTION:
- // FALLTHROUGH intended
-
- case META_MAPMODE_ACTION:
- // FALLTHROUGH intended
- case META_REFPOINT_ACTION:
- // FALLTHROUGH intended
- default:
- bNonBitmapActionEncountered = true;
- break;
- }
- if ( pModAct )
- {
- rOutMtf.ReplaceAction( pModAct, nCurPos );
- pAct->Delete();
- }
- else
- {
- if( pAct->GetRefCount() > 1 )
- {
- rOutMtf.ReplaceAction( pModAct = pAct->Clone(), nCurPos );
- pAct->Delete();
- }
- else
- pModAct = pAct;
- }
- pModAct->Scale( fScaleX, fScaleY );
- }
- rOutMtf.SetPrefSize( Size( FRound( aNewSize.Width() * fScaleX ),
- FRound( aNewSize.Height() * fScaleY ) ) );
- }
-
- if( nNumBitmaps != 1 || bNonBitmapActionEncountered )
- {
- if( rAttr.IsSpecialDrawMode() || rAttr.IsAdjusted() || rAttr.IsMirrored() || rAttr.IsRotated() || rAttr.IsTransparent() )
- ImplAdjust( rOutMtf, rAttr, ADJUSTMENT_ALL );
-
- ImplDraw( pOut, rPt, rSz, rOutMtf, rAttr );
- rOutBmpEx = BitmapEx();
- }
-
- return TRUE;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicManager::ImplCreateScaled( const BitmapEx& rBmpEx,
- long* pMapIX, long* pMapFX, long* pMapIY, long* pMapFY,
- long nStartX, long nEndX, long nStartY, long nEndY,
- BitmapEx& rOutBmpEx )
-{
- Bitmap aBmp( rBmpEx.GetBitmap() );
- Bitmap aOutBmp;
- BitmapReadAccess* pAcc = aBmp.AcquireReadAccess();
- BitmapWriteAccess* pWAcc;
- BitmapColor aCol0, aCol1, aColRes;
- const long nDstW = nEndX - nStartX + 1L;
- const long nDstH = nEndY - nStartY + 1L;
- long nX, nY, nTmpX, nTmpY, nTmpFX, nTmpFY;
- long nXDst, nYDst;
- BYTE cR0, cG0, cB0, cR1, cG1, cB1;
- BOOL bRet = FALSE;
-
- DBG_ASSERT( aBmp.GetSizePixel() == rBmpEx.GetSizePixel(),
- "GraphicManager::ImplCreateScaled(): bmp size inconsistent" );
-
- if( pAcc )
- {
- aOutBmp = Bitmap( Size( nDstW, nDstH ), 24 );
- pWAcc = aOutBmp.AcquireWriteAccess();
-
- if( pWAcc )
- {
- if( pAcc->HasPalette() )
- {
- if( pAcc->GetScanlineFormat() == BMP_FORMAT_8BIT_PAL )
- {
- Scanline pLine0, pLine1;
-
- for( nY = nStartY, nYDst = 0L; nY <= nEndY; nY++, nYDst++ )
- {
- nTmpY = pMapIY[ nY ]; nTmpFY = pMapFY[ nY ];
- pLine0 = pAcc->GetScanline( nTmpY );
- pLine1 = pAcc->GetScanline( ++nTmpY );
-
- for( nX = nStartX, nXDst = 0L; nX <= nEndX; nX++ )
- {
- nTmpX = pMapIX[ nX ]; nTmpFX = pMapFX[ nX ];
-
- const BitmapColor& rCol0 = pAcc->GetPaletteColor( pLine0[ nTmpX ] );
- const BitmapColor& rCol2 = pAcc->GetPaletteColor( pLine1[ nTmpX ] );
- const BitmapColor& rCol1 = pAcc->GetPaletteColor( pLine0[ ++nTmpX ] );
- const BitmapColor& rCol3 = pAcc->GetPaletteColor( pLine1[ nTmpX ] );
-
- cR0 = MAP( rCol0.GetRed(), rCol1.GetRed(), nTmpFX );
- cG0 = MAP( rCol0.GetGreen(), rCol1.GetGreen(), nTmpFX );
- cB0 = MAP( rCol0.GetBlue(), rCol1.GetBlue(), nTmpFX );
-
- cR1 = MAP( rCol2.GetRed(), rCol3.GetRed(), nTmpFX );
- cG1 = MAP( rCol2.GetGreen(), rCol3.GetGreen(), nTmpFX );
- cB1 = MAP( rCol2.GetBlue(), rCol3.GetBlue(), nTmpFX );
-
- aColRes.SetRed( MAP( cR0, cR1, nTmpFY ) );
- aColRes.SetGreen( MAP( cG0, cG1, nTmpFY ) );
- aColRes.SetBlue( MAP( cB0, cB1, nTmpFY ) );
- pWAcc->SetPixel( nYDst, nXDst++, aColRes );
- }
- }
- }
- else
- {
- for( nY = nStartY, nYDst = 0L; nY <= nEndY; nY++, nYDst++ )
- {
- nTmpY = pMapIY[ nY ], nTmpFY = pMapFY[ nY ];
-
- for( nX = nStartX, nXDst = 0L; nX <= nEndX; nX++ )
- {
- nTmpX = pMapIX[ nX ]; nTmpFX = pMapFX[ nX ];
-
- aCol0 = pAcc->GetPaletteColor( pAcc->GetPixel( nTmpY, nTmpX ) );
- aCol1 = pAcc->GetPaletteColor( pAcc->GetPixel( nTmpY, ++nTmpX ) );
- cR0 = MAP( aCol0.GetRed(), aCol1.GetRed(), nTmpFX );
- cG0 = MAP( aCol0.GetGreen(), aCol1.GetGreen(), nTmpFX );
- cB0 = MAP( aCol0.GetBlue(), aCol1.GetBlue(), nTmpFX );
-
- aCol1 = pAcc->GetPaletteColor( pAcc->GetPixel( ++nTmpY, nTmpX ) );
- aCol0 = pAcc->GetPaletteColor( pAcc->GetPixel( nTmpY--, --nTmpX ) );
- cR1 = MAP( aCol0.GetRed(), aCol1.GetRed(), nTmpFX );
- cG1 = MAP( aCol0.GetGreen(), aCol1.GetGreen(), nTmpFX );
- cB1 = MAP( aCol0.GetBlue(), aCol1.GetBlue(), nTmpFX );
-
- aColRes.SetRed( MAP( cR0, cR1, nTmpFY ) );
- aColRes.SetGreen( MAP( cG0, cG1, nTmpFY ) );
- aColRes.SetBlue( MAP( cB0, cB1, nTmpFY ) );
- pWAcc->SetPixel( nYDst, nXDst++, aColRes );
- }
- }
- }
- }
- else
- {
- if( pAcc->GetScanlineFormat() == BMP_FORMAT_24BIT_TC_BGR )
- {
- Scanline pLine0, pLine1, pTmp0, pTmp1;
- long nOff;
-
- for( nY = nStartY, nYDst = 0L; nY <= nEndY; nY++, nYDst++ )
- {
- nTmpY = pMapIY[ nY ]; nTmpFY = pMapFY[ nY ];
- pLine0 = pAcc->GetScanline( nTmpY );
- pLine1 = pAcc->GetScanline( ++nTmpY );
-
- for( nX = nStartX, nXDst = 0L; nX <= nEndX; nX++ )
- {
- nOff = 3L * ( nTmpX = pMapIX[ nX ] );
- nTmpFX = pMapFX[ nX ];
-
- pTmp1 = ( pTmp0 = pLine0 + nOff ) + 3L;
- cB0 = MAP( *pTmp0, *pTmp1, nTmpFX ); pTmp0++; pTmp1++;
- cG0 = MAP( *pTmp0, *pTmp1, nTmpFX ); pTmp0++; pTmp1++;
- cR0 = MAP( *pTmp0, *pTmp1, nTmpFX );
-
- pTmp1 = ( pTmp0 = pLine1 + nOff ) + 3L;
- cB1 = MAP( *pTmp0, *pTmp1, nTmpFX ); pTmp0++; pTmp1++;
- cG1 = MAP( *pTmp0, *pTmp1, nTmpFX ); pTmp0++; pTmp1++;
- cR1 = MAP( *pTmp0, *pTmp1, nTmpFX );
-
- aColRes.SetRed( MAP( cR0, cR1, nTmpFY ) );
- aColRes.SetGreen( MAP( cG0, cG1, nTmpFY ) );
- aColRes.SetBlue( MAP( cB0, cB1, nTmpFY ) );
- pWAcc->SetPixel( nYDst, nXDst++, aColRes );
- }
- }
- }
- else if( pAcc->GetScanlineFormat() == BMP_FORMAT_24BIT_TC_RGB )
- {
- Scanline pLine0, pLine1, pTmp0, pTmp1;
- long nOff;
-
- for( nY = nStartY, nYDst = 0L; nY <= nEndY; nY++, nYDst++ )
- {
- nTmpY = pMapIY[ nY ]; nTmpFY = pMapFY[ nY ];
- pLine0 = pAcc->GetScanline( nTmpY );
- pLine1 = pAcc->GetScanline( ++nTmpY );
-
- for( nX = nStartX, nXDst = 0L; nX <= nEndX; nX++ )
- {
- nOff = 3L * ( nTmpX = pMapIX[ nX ] );
- nTmpFX = pMapFX[ nX ];
-
- pTmp1 = ( pTmp0 = pLine0 + nOff ) + 3L;
- cR0 = MAP( *pTmp0, *pTmp1, nTmpFX ); pTmp0++; pTmp1++;
- cG0 = MAP( *pTmp0, *pTmp1, nTmpFX ); pTmp0++; pTmp1++;
- cB0 = MAP( *pTmp0, *pTmp1, nTmpFX );
-
- pTmp1 = ( pTmp0 = pLine1 + nOff ) + 3L;
- cR1 = MAP( *pTmp0, *pTmp1, nTmpFX ); pTmp0++; pTmp1++;
- cG1 = MAP( *pTmp0, *pTmp1, nTmpFX ); pTmp0++; pTmp1++;
- cB1 = MAP( *pTmp0, *pTmp1, nTmpFX );
-
- aColRes.SetRed( MAP( cR0, cR1, nTmpFY ) );
- aColRes.SetGreen( MAP( cG0, cG1, nTmpFY ) );
- aColRes.SetBlue( MAP( cB0, cB1, nTmpFY ) );
- pWAcc->SetPixel( nYDst, nXDst++, aColRes );
- }
- }
- }
- else
- {
- for( nY = nStartY, nYDst = 0L; nY <= nEndY; nY++, nYDst++ )
- {
- nTmpY = pMapIY[ nY ]; nTmpFY = pMapFY[ nY ];
-
- for( nX = nStartX, nXDst = 0L; nX <= nEndX; nX++ )
- {
- nTmpX = pMapIX[ nX ]; nTmpFX = pMapFX[ nX ];
-
- aCol0 = pAcc->GetPixel( nTmpY, nTmpX );
- aCol1 = pAcc->GetPixel( nTmpY, ++nTmpX );
- cR0 = MAP( aCol0.GetRed(), aCol1.GetRed(), nTmpFX );
- cG0 = MAP( aCol0.GetGreen(), aCol1.GetGreen(), nTmpFX );
- cB0 = MAP( aCol0.GetBlue(), aCol1.GetBlue(), nTmpFX );
-
- aCol1 = pAcc->GetPixel( ++nTmpY, nTmpX );
- aCol0 = pAcc->GetPixel( nTmpY--, --nTmpX );
- cR1 = MAP( aCol0.GetRed(), aCol1.GetRed(), nTmpFX );
- cG1 = MAP( aCol0.GetGreen(), aCol1.GetGreen(), nTmpFX );
- cB1 = MAP( aCol0.GetBlue(), aCol1.GetBlue(), nTmpFX );
-
- aColRes.SetRed( MAP( cR0, cR1, nTmpFY ) );
- aColRes.SetGreen( MAP( cG0, cG1, nTmpFY ) );
- aColRes.SetBlue( MAP( cB0, cB1, nTmpFY ) );
- pWAcc->SetPixel( nYDst, nXDst++, aColRes );
- }
- }
- }
- }
-
- aOutBmp.ReleaseAccess( pWAcc );
- bRet = TRUE;
- }
-
- aBmp.ReleaseAccess( pAcc );
- }
-
- if( bRet && rBmpEx.IsTransparent() )
- {
- bRet = FALSE;
-
- if( rBmpEx.IsAlpha() )
- {
- DBG_ASSERT( rBmpEx.GetAlpha().GetSizePixel() == rBmpEx.GetSizePixel(),
- "GraphicManager::ImplCreateScaled(): alpha mask size inconsistent" );
-
- AlphaMask aAlpha( rBmpEx.GetAlpha() );
- AlphaMask aOutAlpha;
-
- pAcc = aAlpha.AcquireReadAccess();
-
- if( pAcc )
- {
- aOutAlpha = AlphaMask( Size( nDstW, nDstH ) );
- pWAcc = aOutAlpha.AcquireWriteAccess();
-
- if( pWAcc )
- {
- if( pAcc->GetScanlineFormat() == BMP_FORMAT_8BIT_PAL &&
- pWAcc->GetScanlineFormat() == BMP_FORMAT_8BIT_PAL )
- {
- Scanline pLine0, pLine1, pLineW;
-
- for( nY = nStartY, nYDst = 0L; nY <= nEndY; nY++, nYDst++ )
- {
- nTmpY = pMapIY[ nY ]; nTmpFY = pMapFY[ nY ];
- pLine0 = pAcc->GetScanline( nTmpY );
- pLine1 = pAcc->GetScanline( ++nTmpY );
- pLineW = pWAcc->GetScanline( nYDst );
-
- for( nX = nStartX, nXDst = 0L; nX <= nEndX; nX++, nXDst++ )
- {
- nTmpX = pMapIX[ nX ]; nTmpFX = pMapFX[ nX ];
-
- const long nAlpha0 = pLine0[ nTmpX ];
- const long nAlpha2 = pLine1[ nTmpX ];
- const long nAlpha1 = pLine0[ ++nTmpX ];
- const long nAlpha3 = pLine1[ nTmpX ];
- const long n0 = MAP( nAlpha0, nAlpha1, nTmpFX );
- const long n1 = MAP( nAlpha2, nAlpha3, nTmpFX );
-
- *pLineW++ = MAP( n0, n1, nTmpFY );
- }
- }
- }
- else
- {
- BitmapColor aAlphaValue( 0 );
-
- for( nY = nStartY, nYDst = 0L; nY <= nEndY; nY++, nYDst++ )
- {
- nTmpY = pMapIY[ nY ], nTmpFY = pMapFY[ nY ];
-
- for( nX = nStartX, nXDst = 0L; nX <= nEndX; nX++ )
- {
- nTmpX = pMapIX[ nX ]; nTmpFX = pMapFX[ nX ];
-
- long nAlpha0 = pAcc->GetPixel( nTmpY, nTmpX ).GetIndex();
- long nAlpha1 = pAcc->GetPixel( nTmpY, ++nTmpX ).GetIndex();
- const long n0 = MAP( nAlpha0, nAlpha1, nTmpFX );
-
- nAlpha1 = pAcc->GetPixel( ++nTmpY, nTmpX ).GetIndex();
- nAlpha0 = pAcc->GetPixel( nTmpY--, --nTmpX ).GetIndex();
- const long n1 = MAP( nAlpha0, nAlpha1, nTmpFX );
-
- aAlphaValue.SetIndex( MAP( n0, n1, nTmpFY ) );
- pWAcc->SetPixel( nYDst, nXDst++, aAlphaValue );
- }
- }
- }
-
- aOutAlpha.ReleaseAccess( pWAcc );
- bRet = TRUE;
- }
-
- aAlpha.ReleaseAccess( pAcc );
-
- if( bRet )
- rOutBmpEx = BitmapEx( aOutBmp, aOutAlpha );
- }
- }
- else
- {
- DBG_ASSERT( rBmpEx.GetMask().GetSizePixel() == rBmpEx.GetSizePixel(),
- "GraphicManager::ImplCreateScaled(): mask size inconsistent" );
-
- Bitmap aMsk( rBmpEx.GetMask() );
- Bitmap aOutMsk;
-
- pAcc = aMsk.AcquireReadAccess();
-
- if( pAcc )
- {
- // #i40115# Use the same palette for destination
- // bitmap. Otherwise, we'd have to color-map even the
- // case below, when both masks are one bit deep.
- if( pAcc->HasPalette() )
- aOutMsk = Bitmap( Size( nDstW, nDstH ),
- 1,
- &pAcc->GetPalette() );
- else
- aOutMsk = Bitmap( Size( nDstW, nDstH ), 1 );
-
- pWAcc = aOutMsk.AcquireWriteAccess();
-
- if( pWAcc )
- {
- long* pMapLX = new long[ nDstW ];
- long* pMapLY = new long[ nDstH ];
-
- // create new horizontal mapping table
- for( nX = 0UL, nTmpX = nStartX; nX < nDstW; nTmpX++ )
- pMapLX[ nX++ ] = FRound( (double) pMapIX[ nTmpX ] + pMapFX[ nTmpX ] / 1048576. );
-
- // create new vertical mapping table
- for( nY = 0UL, nTmpY = nStartY; nY < nDstH; nTmpY++ )
- pMapLY[ nY++ ] = FRound( (double) pMapIY[ nTmpY ] + pMapFY[ nTmpY ] / 1048576. );
-
- // do normal scaling
- if( pAcc->GetScanlineFormat() == BMP_FORMAT_1BIT_MSB_PAL &&
- pWAcc->GetScanlineFormat() == BMP_FORMAT_1BIT_MSB_PAL )
- {
- // optimized
- for( nY = 0; nY < nDstH; nY++ )
- {
- Scanline pSrc = pAcc->GetScanline( pMapLY[ nY ] );
- Scanline pDst = pWAcc->GetScanline( nY );
-
- for( nX = 0L; nX < nDstW; nX++ )
- {
- const long nSrcX = pMapLX[ nX ];
-
- if( pSrc[ nSrcX >> 3 ] & ( 1 << ( 7 - ( nSrcX & 7 ) ) ) )
- pDst[ nX >> 3 ] |= 1 << ( 7 - ( nX & 7 ) );
- else
- pDst[ nX >> 3 ] &= ~( 1 << ( 7 - ( nX & 7 ) ) );
- }
- }
- }
- else
- {
- const BitmapColor aB( pAcc->GetBestMatchingColor( Color( COL_BLACK ) ) );
- const BitmapColor aWB( pWAcc->GetBestMatchingColor( Color( COL_BLACK ) ) );
- const BitmapColor aWW( pWAcc->GetBestMatchingColor( Color( COL_WHITE ) ) );
-
- if( pAcc->HasPalette() )
- {
- for( nY = 0L; nY < nDstH; nY++ )
- {
- for( nX = 0L; nX < nDstW; nX++ )
- {
- if( pAcc->GetPaletteColor( (BYTE) pAcc->GetPixel( pMapLY[ nY ], pMapLX[ nX ] ) ) == aB )
- pWAcc->SetPixel( nY, nX, aWB );
- else
- pWAcc->SetPixel( nY, nX, aWW );
- }
- }
- }
- else
- {
- for( nY = 0L; nY < nDstH; nY++ )
- {
- for( nX = 0L; nX < nDstW; nX++ )
- {
- if( pAcc->GetPixel( pMapLY[ nY ], pMapLX[ nX ] ) == aB )
- pWAcc->SetPixel( nY, nX, aWB );
- else
- pWAcc->SetPixel( nY, nX, aWW );
- }
- }
- }
- }
-
- delete[] pMapLX;
- delete[] pMapLY;
- aOutMsk.ReleaseAccess( pWAcc );
- bRet = TRUE;
- }
-
- aMsk.ReleaseAccess( pAcc );
-
- if( bRet )
- rOutBmpEx = BitmapEx( aOutBmp, aOutMsk );
- }
- }
-
- if( !bRet )
- rOutBmpEx = aOutBmp;
- }
- else
- rOutBmpEx = aOutBmp;
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-BOOL GraphicManager::ImplCreateRotatedScaled( const BitmapEx& rBmpEx,
- USHORT nRot10, const Size& /*rOutSzPix*/, const Size& rUnrotatedSzPix,
- long* pMapIX, long* pMapFX, long* pMapIY, long* pMapFY,
- long nStartX, long nEndX, long nStartY, long nEndY,
- BitmapEx& rOutBmpEx )
-{
- Point aPt;
- Bitmap aBmp( rBmpEx.GetBitmap() );
- Bitmap aOutBmp;
- BitmapReadAccess* pAcc = aBmp.AcquireReadAccess();
- BitmapWriteAccess* pWAcc;
- Polygon aPoly( Rectangle( aPt, rUnrotatedSzPix ) ); aPoly.Rotate( Point(), nRot10 );
- Rectangle aNewBound( aPoly.GetBoundRect() );
- const double fCosAngle = cos( nRot10 * F_PI1800 ), fSinAngle = sin( nRot10 * F_PI1800 );
- double fTmp;
- const long nDstW = nEndX - nStartX + 1L;
- const long nDstH = nEndY - nStartY + 1L;
- const long nUnRotW = rUnrotatedSzPix.Width();
- const long nUnRotH = rUnrotatedSzPix.Height();
- long* pCosX = new long[ nDstW ];
- long* pSinX = new long[ nDstW ];
- long* pCosY = new long[ nDstH ];
- long* pSinY = new long[ nDstH ];
- long nX, nY, nTmpX, nTmpY, nTmpFX, nTmpFY, nUnRotX, nUnRotY, nSinY, nCosY;
- BYTE cR0, cG0, cB0, cR1, cG1, cB1;
- BOOL bRet = FALSE;
-
- // create horizontal mapping table
- for( nX = 0L, nTmpX = aNewBound.Left() + nStartX; nX < nDstW; nX++ )
- {
- pCosX[ nX ] = FRound( fCosAngle * ( fTmp = nTmpX++ << 8 ) );
- pSinX[ nX ] = FRound( fSinAngle * fTmp );
- }
-
- // create vertical mapping table
- for( nY = 0L, nTmpY = aNewBound.Top() + nStartY; nY < nDstH; nY++ )
- {
- pCosY[ nY ] = FRound( fCosAngle * ( fTmp = nTmpY++ << 8 ) );
- pSinY[ nY ] = FRound( fSinAngle * fTmp );
- }
-
- if( pAcc )
- {
- aOutBmp = Bitmap( Size( nDstW, nDstH ), 24 );
- pWAcc = aOutBmp.AcquireWriteAccess();
-
- if( pWAcc )
- {
- BitmapColor aColRes;
-
- if( pAcc->HasPalette() )
- {
- for( nY = 0; nY < nDstH; nY++ )
- {
- nSinY = pSinY[ nY ];
- nCosY = pCosY[ nY ];
-
- for( nX = 0; nX < nDstW; nX++ )
- {
- nUnRotX = ( pCosX[ nX ] - nSinY ) >> 8;
- nUnRotY = ( pSinX[ nX ] + nCosY ) >> 8;
-
- if( ( nUnRotX >= 0L ) && ( nUnRotX < nUnRotW ) &&
- ( nUnRotY >= 0L ) && ( nUnRotY < nUnRotH ) )
- {
- nTmpX = pMapIX[ nUnRotX ]; nTmpFX = pMapFX[ nUnRotX ];
- nTmpY = pMapIY[ nUnRotY ], nTmpFY = pMapFY[ nUnRotY ];
-
- const BitmapColor& rCol0 = pAcc->GetPaletteColor( pAcc->GetPixel( nTmpY, nTmpX ) );
- const BitmapColor& rCol1 = pAcc->GetPaletteColor( pAcc->GetPixel( nTmpY, ++nTmpX ) );
- cR0 = MAP( rCol0.GetRed(), rCol1.GetRed(), nTmpFX );
- cG0 = MAP( rCol0.GetGreen(), rCol1.GetGreen(), nTmpFX );
- cB0 = MAP( rCol0.GetBlue(), rCol1.GetBlue(), nTmpFX );
-
- const BitmapColor& rCol3 = pAcc->GetPaletteColor( pAcc->GetPixel( ++nTmpY, nTmpX ) );
- const BitmapColor& rCol2 = pAcc->GetPaletteColor( pAcc->GetPixel( nTmpY, --nTmpX ) );
- cR1 = MAP( rCol2.GetRed(), rCol3.GetRed(), nTmpFX );
- cG1 = MAP( rCol2.GetGreen(), rCol3.GetGreen(), nTmpFX );
- cB1 = MAP( rCol2.GetBlue(), rCol3.GetBlue(), nTmpFX );
-
- aColRes.SetRed( MAP( cR0, cR1, nTmpFY ) );
- aColRes.SetGreen( MAP( cG0, cG1, nTmpFY ) );
- aColRes.SetBlue( MAP( cB0, cB1, nTmpFY ) );
- pWAcc->SetPixel( nY, nX, aColRes );
- }
- }
- }
- }
- else
- {
- BitmapColor aCol0, aCol1;
-
- for( nY = 0; nY < nDstH; nY++ )
- {
- nSinY = pSinY[ nY ];
- nCosY = pCosY[ nY ];
-
- for( nX = 0; nX < nDstW; nX++ )
- {
- nUnRotX = ( pCosX[ nX ] - nSinY ) >> 8;
- nUnRotY = ( pSinX[ nX ] + nCosY ) >> 8;
-
- if( ( nUnRotX >= 0L ) && ( nUnRotX < nUnRotW ) &&
- ( nUnRotY >= 0L ) && ( nUnRotY < nUnRotH ) )
- {
- nTmpX = pMapIX[ nUnRotX ]; nTmpFX = pMapFX[ nUnRotX ];
- nTmpY = pMapIY[ nUnRotY ], nTmpFY = pMapFY[ nUnRotY ];
-
- aCol0 = pAcc->GetPixel( nTmpY, nTmpX );
- aCol1 = pAcc->GetPixel( nTmpY, ++nTmpX );
- cR0 = MAP( aCol0.GetRed(), aCol1.GetRed(), nTmpFX );
- cG0 = MAP( aCol0.GetGreen(), aCol1.GetGreen(), nTmpFX );
- cB0 = MAP( aCol0.GetBlue(), aCol1.GetBlue(), nTmpFX );
-
- aCol1 = pAcc->GetPixel( ++nTmpY, nTmpX );
- aCol0 = pAcc->GetPixel( nTmpY, --nTmpX );
- cR1 = MAP( aCol0.GetRed(), aCol1.GetRed(), nTmpFX );
- cG1 = MAP( aCol0.GetGreen(), aCol1.GetGreen(), nTmpFX );
- cB1 = MAP( aCol0.GetBlue(), aCol1.GetBlue(), nTmpFX );
-
- aColRes.SetRed( MAP( cR0, cR1, nTmpFY ) );
- aColRes.SetGreen( MAP( cG0, cG1, nTmpFY ) );
- aColRes.SetBlue( MAP( cB0, cB1, nTmpFY ) );
- pWAcc->SetPixel( nY, nX, aColRes );
- }
- }
- }
- }
-
- aOutBmp.ReleaseAccess( pWAcc );
- bRet = TRUE;
- }
-
- aBmp.ReleaseAccess( pAcc );
- }
-
- // mask processing
- if( bRet && ( rBmpEx.IsTransparent() || ( nRot10 != 900 && nRot10 != 1800 && nRot10 != 2700 ) ) )
- {
- bRet = FALSE;
-
- if( rBmpEx.IsAlpha() )
- {
- AlphaMask aAlpha( rBmpEx.GetAlpha() );
- AlphaMask aOutAlpha;
-
- pAcc = aAlpha.AcquireReadAccess();
-
- if( pAcc )
- {
- aOutAlpha = AlphaMask( Size( nDstW, nDstH ) );
- pWAcc = aOutAlpha.AcquireWriteAccess();
-
- if( pWAcc )
- {
- if( pAcc->GetScanlineFormat() == BMP_FORMAT_8BIT_PAL &&
- pWAcc->GetScanlineFormat() == BMP_FORMAT_8BIT_PAL )
- {
- Scanline pLine0, pLine1, pLineW;
-
- for( nY = 0; nY < nDstH; nY++ )
- {
- nSinY = pSinY[ nY ], nCosY = pCosY[ nY ];
- pLineW = pWAcc->GetScanline( nY );
-
- for( nX = 0; nX < nDstW; nX++ )
- {
- nUnRotX = ( pCosX[ nX ] - nSinY ) >> 8;
- nUnRotY = ( pSinX[ nX ] + nCosY ) >> 8;
-
- if( ( nUnRotX >= 0L ) && ( nUnRotX < nUnRotW ) &&
- ( nUnRotY >= 0L ) && ( nUnRotY < nUnRotH ) )
- {
- nTmpX = pMapIX[ nUnRotX ], nTmpFX = pMapFX[ nUnRotX ];
- nTmpY = pMapIY[ nUnRotY ], nTmpFY = pMapFY[ nUnRotY ];
-
- pLine0 = pAcc->GetScanline( nTmpY++ );
- pLine1 = pAcc->GetScanline( nTmpY );
-
- const long nAlpha0 = pLine0[ nTmpX ];
- const long nAlpha2 = pLine1[ nTmpX++ ];
- const long nAlpha1 = pLine0[ nTmpX ];
- const long nAlpha3 = pLine1[ nTmpX ];
- const long n0 = MAP( nAlpha0, nAlpha1, nTmpFX );
- const long n1 = MAP( nAlpha2, nAlpha3, nTmpFX );
-
- *pLineW++ = MAP( n0, n1, nTmpFY );
- }
- else
- *pLineW++ = 255;
- }
- }
- }
- else
- {
- const BitmapColor aTrans( pWAcc->GetBestMatchingColor( Color( COL_WHITE ) ) );
- BitmapColor aAlphaVal( 0 );
-
- for( nY = 0; nY < nDstH; nY++ )
- {
- nSinY = pSinY[ nY ], nCosY = pCosY[ nY ];
-
- for( nX = 0; nX < nDstW; nX++ )
- {
- nUnRotX = ( pCosX[ nX ] - nSinY ) >> 8;
- nUnRotY = ( pSinX[ nX ] + nCosY ) >> 8;
-
- if( ( nUnRotX >= 0L ) && ( nUnRotX < nUnRotW ) &&
- ( nUnRotY >= 0L ) && ( nUnRotY < nUnRotH ) )
- {
- nTmpX = pMapIX[ nUnRotX ]; nTmpFX = pMapFX[ nUnRotX ];
- nTmpY = pMapIY[ nUnRotY ], nTmpFY = pMapFY[ nUnRotY ];
-
- const long nAlpha0 = pAcc->GetPixel( nTmpY, nTmpX ).GetIndex();
- const long nAlpha1 = pAcc->GetPixel( nTmpY, ++nTmpX ).GetIndex();
- const long nAlpha3 = pAcc->GetPixel( ++nTmpY, nTmpX ).GetIndex();
- const long nAlpha2 = pAcc->GetPixel( nTmpY, --nTmpX ).GetIndex();
- const long n0 = MAP( nAlpha0, nAlpha1, nTmpFX );
- const long n1 = MAP( nAlpha2, nAlpha3, nTmpFX );
-
- aAlphaVal.SetIndex( MAP( n0, n1, nTmpFY ) );
- pWAcc->SetPixel( nY, nX, aAlphaVal );
- }
- else
- pWAcc->SetPixel( nY, nX, aTrans );
- }
- }
- }
-
- aOutAlpha.ReleaseAccess( pWAcc );
- bRet = TRUE;
- }
-
- aAlpha.ReleaseAccess( pAcc );
- }
-
- if( bRet )
- rOutBmpEx = BitmapEx( aOutBmp, aOutAlpha );
- }
- else
- {
- Bitmap aOutMsk( Size( nDstW, nDstH ), 1 );
- pWAcc = aOutMsk.AcquireWriteAccess();
-
- if( pWAcc )
- {
- Bitmap aMsk( rBmpEx.GetMask() );
- const BitmapColor aB( pWAcc->GetBestMatchingColor( Color( COL_BLACK ) ) );
- const BitmapColor aW( pWAcc->GetBestMatchingColor( Color( COL_WHITE ) ) );
- BitmapReadAccess* pMAcc = NULL;
-
- if( !aMsk || ( ( pMAcc = aMsk.AcquireReadAccess() ) != NULL ) )
- {
- long* pMapLX = new long[ nUnRotW ];
- long* pMapLY = new long[ nUnRotH ];
- BitmapColor aTestB;
-
- if( pMAcc )
- aTestB = pMAcc->GetBestMatchingColor( Color( COL_BLACK ) );
-
- // create new horizontal mapping table
- for( nX = 0UL; nX < nUnRotW; nX++ )
- pMapLX[ nX ] = FRound( (double) pMapIX[ nX ] + pMapFX[ nX ] / 1048576. );
-
- // create new vertical mapping table
- for( nY = 0UL; nY < nUnRotH; nY++ )
- pMapLY[ nY ] = FRound( (double) pMapIY[ nY ] + pMapFY[ nY ] / 1048576. );
-
- // do mask rotation
- for( nY = 0; nY < nDstH; nY++ )
- {
- nSinY = pSinY[ nY ];
- nCosY = pCosY[ nY ];
-
- for( nX = 0; nX < nDstW; nX++ )
- {
- nUnRotX = ( pCosX[ nX ] - nSinY ) >> 8;
- nUnRotY = ( pSinX[ nX ] + nCosY ) >> 8;
-
- if( ( nUnRotX >= 0L ) && ( nUnRotX < nUnRotW ) &&
- ( nUnRotY >= 0L ) && ( nUnRotY < nUnRotH ) )
- {
- if( pMAcc )
- {
- if( pMAcc->GetPixel( pMapLY[ nUnRotY ], pMapLX[ nUnRotX ] ) == aTestB )
- pWAcc->SetPixel( nY, nX, aB );
- else
- pWAcc->SetPixel( nY, nX, aW );
- }
- else
- pWAcc->SetPixel( nY, nX, aB );
- }
- else
- pWAcc->SetPixel( nY, nX, aW );
- }
- }
-
- delete[] pMapLX;
- delete[] pMapLY;
-
- if( pMAcc )
- aMsk.ReleaseAccess( pMAcc );
-
- bRet = TRUE;
- }
-
- aOutMsk.ReleaseAccess( pWAcc );
- }
-
- if( bRet )
- rOutBmpEx = BitmapEx( aOutBmp, aOutMsk );
- }
-
- if( !bRet )
- rOutBmpEx = aOutBmp;
- }
- else
- rOutBmpEx = aOutBmp;
-
- delete[] pSinX;
- delete[] pCosX;
- delete[] pSinY;
- delete[] pCosY;
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::ImplAdjust( BitmapEx& rBmpEx, const GraphicAttr& rAttr, ULONG nAdjustmentFlags )
-{
- GraphicAttr aAttr( rAttr );
-
- if( ( nAdjustmentFlags & ADJUSTMENT_DRAWMODE ) && aAttr.IsSpecialDrawMode() )
- {
- switch( aAttr.GetDrawMode() )
- {
- case( GRAPHICDRAWMODE_MONO ):
- rBmpEx.Convert( BMP_CONVERSION_1BIT_THRESHOLD );
- break;
-
- case( GRAPHICDRAWMODE_GREYS ):
- rBmpEx.Convert( BMP_CONVERSION_8BIT_GREYS );
- break;
-
- case( GRAPHICDRAWMODE_WATERMARK ):
- {
- aAttr.SetLuminance( aAttr.GetLuminance() + WATERMARK_LUM_OFFSET );
- aAttr.SetContrast( aAttr.GetContrast() + WATERMARK_CON_OFFSET );
- }
- break;
-
- default:
- break;
- }
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_COLORS ) && aAttr.IsAdjusted() )
- {
- rBmpEx.Adjust( aAttr.GetLuminance(), aAttr.GetContrast(),
- aAttr.GetChannelR(), aAttr.GetChannelG(), aAttr.GetChannelB(),
- aAttr.GetGamma(), aAttr.IsInvert() );
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_MIRROR ) && aAttr.IsMirrored() )
- {
- rBmpEx.Mirror( aAttr.GetMirrorFlags() );
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_ROTATE ) && aAttr.IsRotated() )
- {
- rBmpEx.Rotate( aAttr.GetRotation(), Color( COL_TRANSPARENT ) );
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_TRANSPARENCY ) && aAttr.IsTransparent() )
- {
- AlphaMask aAlpha;
- BYTE cTrans = aAttr.GetTransparency();
-
- if( !rBmpEx.IsTransparent() )
- aAlpha = AlphaMask( rBmpEx.GetSizePixel(), &cTrans );
- else if( !rBmpEx.IsAlpha() )
- {
- aAlpha = rBmpEx.GetMask();
- aAlpha.Replace( 0, cTrans );
- }
- else
- {
- aAlpha = rBmpEx.GetAlpha();
- BitmapWriteAccess* pA = aAlpha.AcquireWriteAccess();
-
- if( pA )
- {
- ULONG nTrans = cTrans, nNewTrans;
- const long nWidth = pA->Width(), nHeight = pA->Height();
-
- if( pA->GetScanlineFormat() == BMP_FORMAT_8BIT_PAL )
- {
- for( long nY = 0; nY < nHeight; nY++ )
- {
- Scanline pAScan = pA->GetScanline( nY );
-
- for( long nX = 0; nX < nWidth; nX++ )
- {
- nNewTrans = nTrans + *pAScan;
- *pAScan++ = (BYTE) ( ( nNewTrans & 0xffffff00 ) ? 255 : nNewTrans );
- }
- }
- }
- else
- {
- BitmapColor aAlphaValue( 0 );
-
- for( long nY = 0; nY < nHeight; nY++ )
- {
- for( long nX = 0; nX < nWidth; nX++ )
- {
- nNewTrans = nTrans + pA->GetPixel( nY, nX ).GetIndex();
- aAlphaValue.SetIndex( (BYTE) ( ( nNewTrans & 0xffffff00 ) ? 255 : nNewTrans ) );
- pA->SetPixel( nY, nX, aAlphaValue );
- }
- }
- }
-
- aAlpha.ReleaseAccess( pA );
- }
- }
-
- rBmpEx = BitmapEx( rBmpEx.GetBitmap(), aAlpha );
- }
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::ImplAdjust( GDIMetaFile& rMtf, const GraphicAttr& rAttr, ULONG nAdjustmentFlags )
-{
- GraphicAttr aAttr( rAttr );
-
- if( ( nAdjustmentFlags & ADJUSTMENT_DRAWMODE ) && aAttr.IsSpecialDrawMode() )
- {
- switch( aAttr.GetDrawMode() )
- {
- case( GRAPHICDRAWMODE_MONO ):
- rMtf.Convert( MTF_CONVERSION_1BIT_THRESHOLD );
- break;
-
- case( GRAPHICDRAWMODE_GREYS ):
- rMtf.Convert( MTF_CONVERSION_8BIT_GREYS );
- break;
-
- case( GRAPHICDRAWMODE_WATERMARK ):
- {
- aAttr.SetLuminance( aAttr.GetLuminance() + WATERMARK_LUM_OFFSET );
- aAttr.SetContrast( aAttr.GetContrast() + WATERMARK_CON_OFFSET );
- }
- break;
-
- default:
- break;
- }
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_COLORS ) && aAttr.IsAdjusted() )
- {
- rMtf.Adjust( aAttr.GetLuminance(), aAttr.GetContrast(),
- aAttr.GetChannelR(), aAttr.GetChannelG(), aAttr.GetChannelB(),
- aAttr.GetGamma(), aAttr.IsInvert() );
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_MIRROR ) && aAttr.IsMirrored() )
- {
- rMtf.Mirror( aAttr.GetMirrorFlags() );
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_ROTATE ) && aAttr.IsRotated() )
- {
- rMtf.Rotate( aAttr.GetRotation() );
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_TRANSPARENCY ) && aAttr.IsTransparent() )
- {
- DBG_ERROR( "Missing implementation: Mtf-Transparency" );
- }
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::ImplAdjust( Animation& rAnimation, const GraphicAttr& rAttr, ULONG nAdjustmentFlags )
-{
- GraphicAttr aAttr( rAttr );
-
- if( ( nAdjustmentFlags & ADJUSTMENT_DRAWMODE ) && aAttr.IsSpecialDrawMode() )
- {
- switch( aAttr.GetDrawMode() )
- {
- case( GRAPHICDRAWMODE_MONO ):
- rAnimation.Convert( BMP_CONVERSION_1BIT_THRESHOLD );
- break;
-
- case( GRAPHICDRAWMODE_GREYS ):
- rAnimation.Convert( BMP_CONVERSION_8BIT_GREYS );
- break;
-
- case( GRAPHICDRAWMODE_WATERMARK ):
- {
- aAttr.SetLuminance( aAttr.GetLuminance() + WATERMARK_LUM_OFFSET );
- aAttr.SetContrast( aAttr.GetContrast() + WATERMARK_CON_OFFSET );
- }
- break;
-
- default:
- break;
- }
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_COLORS ) && aAttr.IsAdjusted() )
- {
- rAnimation.Adjust( aAttr.GetLuminance(), aAttr.GetContrast(),
- aAttr.GetChannelR(), aAttr.GetChannelG(), aAttr.GetChannelB(),
- aAttr.GetGamma(), aAttr.IsInvert() );
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_MIRROR ) && aAttr.IsMirrored() )
- {
- rAnimation.Mirror( aAttr.GetMirrorFlags() );
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_ROTATE ) && aAttr.IsRotated() )
- {
- DBG_ERROR( "Missing implementation: Animation-Rotation" );
- }
-
- if( ( nAdjustmentFlags & ADJUSTMENT_TRANSPARENCY ) && aAttr.IsTransparent() )
- {
- DBG_ERROR( "Missing implementation: Animation-Transparency" );
- }
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicManager::ImplDraw( OutputDevice* pOut, const Point& rPt, const Size& rSz,
- const GDIMetaFile& rMtf, const GraphicAttr& rAttr )
-{
- USHORT nRot10 = rAttr.GetRotation() % 3600;
- Point aOutPt( rPt );
- Size aOutSz( rSz );
-
- if( nRot10 )
- {
- Polygon aPoly( Rectangle( aOutPt, aOutSz ) );
-
- aPoly.Rotate( aOutPt, nRot10 );
- const Rectangle aRotBoundRect( aPoly.GetBoundRect() );
- aOutPt = aRotBoundRect.TopLeft();
- aOutSz = aRotBoundRect.GetSize();
- }
-
- pOut->Push( PUSH_CLIPREGION );
- pOut->IntersectClipRegion( Rectangle( aOutPt, aOutSz ) );
-
- ( (GDIMetaFile&) rMtf ).WindStart();
- ( (GDIMetaFile&) rMtf ).Play( pOut, aOutPt, aOutSz );
- ( (GDIMetaFile&) rMtf ).WindStart();
-
- pOut->Pop();
-}
-
-// -----------------------------------------------------------------------------
-
-struct ImplTileInfo
-{
- ImplTileInfo() : aTileTopLeft(), aNextTileTopLeft(), aTileSizePixel(), nTilesEmptyX(0), nTilesEmptyY(0) {}
-
- Point aTileTopLeft; // top, left position of the rendered tile
- Point aNextTileTopLeft; // top, left position for next recursion
- // level's tile
- Size aTileSizePixel; // size of the generated tile (might
- // differ from
- // aNextTileTopLeft-aTileTopLeft, because
- // this is nExponent*prevTileSize. The
- // generated tile is always nExponent
- // times the previous tile, such that it
- // can be used in the next stage. The
- // required area coverage is often
- // less. The extraneous area covered is
- // later overwritten by the next stage)
- int nTilesEmptyX; // number of original tiles empty right of
- // this tile. This counts from
- // aNextTileTopLeft, i.e. the additional
- // area covered by aTileSizePixel is not
- // considered here. This is for
- // unification purposes, as the iterative
- // calculation of the next level's empty
- // tiles has to be based on this value.
- int nTilesEmptyY; // as above, for Y
-};
-
-
-bool GraphicObject::ImplRenderTempTile( VirtualDevice& rVDev, int nExponent,
- int nNumTilesX, int nNumTilesY,
- const Size& rTileSizePixel,
- const GraphicAttr* pAttr, ULONG nFlags )
-{
- if( nExponent <= 1 )
- return false;
-
- // determine MSB factor
- int nMSBFactor( 1 );
- while( nNumTilesX / nMSBFactor != 0 ||
- nNumTilesY / nMSBFactor != 0 )
- {
- nMSBFactor *= nExponent;
- }
-
- // one less
- nMSBFactor /= nExponent;
-
- ImplTileInfo aTileInfo;
-
- // #105229# Switch off mapping (converting to logic and back to
- // pixel might cause roundoff errors)
- BOOL bOldMap( rVDev.IsMapModeEnabled() );
- rVDev.EnableMapMode( FALSE );
-
- bool bRet( ImplRenderTileRecursive( rVDev, nExponent, nMSBFactor, nNumTilesX, nNumTilesY,
- nNumTilesX, nNumTilesY, rTileSizePixel, pAttr, nFlags, aTileInfo ) );
-
- rVDev.EnableMapMode( bOldMap );
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-// define for debug drawings
-//#define DBG_TEST
-
-// see header comment. this works similar to base conversion of a
-// number, i.e. if the exponent is 10, then the number for every tile
-// size is given by the decimal place of the corresponding decimal
-// representation.
-bool GraphicObject::ImplRenderTileRecursive( VirtualDevice& rVDev, int nExponent, int nMSBFactor,
- int nNumOrigTilesX, int nNumOrigTilesY,
- int nRemainderTilesX, int nRemainderTilesY,
- const Size& rTileSizePixel, const GraphicAttr* pAttr,
- ULONG nFlags, ImplTileInfo& rTileInfo )
-{
- // gets loaded with our tile bitmap
- GraphicObject aTmpGraphic;
-
- // stores a flag that renders the zero'th tile position
- // (i.e. (0,0)+rCurrPos) only if we're at the bottom of the
- // recursion stack. All other position already have that tile
- // rendered, because the lower levels painted their generated tile
- // there.
- bool bNoFirstTileDraw( false );
-
- // what's left when we're done with our tile size
- const int nNewRemainderX( nRemainderTilesX % nMSBFactor );
- const int nNewRemainderY( nRemainderTilesY % nMSBFactor );
-
- // gets filled out from the recursive call with info of what's
- // been generated
- ImplTileInfo aTileInfo;
-
- // current output position while drawing
- Point aCurrPos;
- int nX, nY;
-
- // check for recursion's end condition: LSB place reached?
- if( nMSBFactor == 1 )
- {
- aTmpGraphic = *this;
-
- // set initial tile size -> orig size
- aTileInfo.aTileSizePixel = rTileSizePixel;
- aTileInfo.nTilesEmptyX = nNumOrigTilesX;
- aTileInfo.nTilesEmptyY = nNumOrigTilesY;
- }
- else if( ImplRenderTileRecursive( rVDev, nExponent, nMSBFactor/nExponent,
- nNumOrigTilesX, nNumOrigTilesY,
- nNewRemainderX, nNewRemainderY,
- rTileSizePixel, pAttr, nFlags, aTileInfo ) )
- {
- // extract generated tile -> see comment on the first loop below
- BitmapEx aTileBitmap( rVDev.GetBitmap( aTileInfo.aTileTopLeft, aTileInfo.aTileSizePixel ) );
-
- aTmpGraphic = GraphicObject( aTileBitmap );
-
- // fill stripes left over from upstream levels:
- //
- // x0000
- // 0
- // 0
- // 0
- // 0
- //
- // where x denotes the place filled by our recursive predecessors
-
- // check whether we have to fill stripes here. Although not
- // obvious, there is one case where we can skip this step: if
- // the previous recursion level (the one who filled our
- // aTileInfo) had zero area to fill, then there are no white
- // stripes left, naturally. This happens if the digit
- // associated to that level has a zero, and can be checked via
- // aTileTopLeft==aNextTileTopLeft.
- if( aTileInfo.aTileTopLeft != aTileInfo.aNextTileTopLeft )
- {
- // now fill one row from aTileInfo.aNextTileTopLeft.X() all
- // the way to the right
- aCurrPos.X() = aTileInfo.aNextTileTopLeft.X();
- aCurrPos.Y() = aTileInfo.aTileTopLeft.Y();
- for( nX=0; nX < aTileInfo.nTilesEmptyX; nX += nMSBFactor )
- {
- if( !aTmpGraphic.Draw( &rVDev, aCurrPos, aTileInfo.aTileSizePixel, pAttr, nFlags ) )
- return false;
-
- aCurrPos.X() += aTileInfo.aTileSizePixel.Width();
- }
-
-#ifdef DBG_TEST
-// rVDev.SetFillColor( COL_WHITE );
- rVDev.SetFillColor();
- rVDev.SetLineColor( Color( 255 * nExponent / nMSBFactor, 255 - 255 * nExponent / nMSBFactor, 128 - 255 * nExponent / nMSBFactor ) );
- rVDev.DrawEllipse( Rectangle(aTileInfo.aNextTileTopLeft.X(), aTileInfo.aTileTopLeft.Y(),
- aTileInfo.aNextTileTopLeft.X() - 1 + (aTileInfo.nTilesEmptyX/nMSBFactor)*aTileInfo.aTileSizePixel.Width(),
- aTileInfo.aTileTopLeft.Y() + aTileInfo.aTileSizePixel.Height() - 1) );
-#endif
-
- // now fill one column from aTileInfo.aNextTileTopLeft.Y() all
- // the way to the bottom
- aCurrPos.X() = aTileInfo.aTileTopLeft.X();
- aCurrPos.Y() = aTileInfo.aNextTileTopLeft.Y();
- for( nY=0; nY < aTileInfo.nTilesEmptyY; nY += nMSBFactor )
- {
- if( !aTmpGraphic.Draw( &rVDev, aCurrPos, aTileInfo.aTileSizePixel, pAttr, nFlags ) )
- return false;
-
- aCurrPos.Y() += aTileInfo.aTileSizePixel.Height();
- }
-
-#ifdef DBG_TEST
- rVDev.DrawEllipse( Rectangle(aTileInfo.aTileTopLeft.X(), aTileInfo.aNextTileTopLeft.Y(),
- aTileInfo.aTileTopLeft.X() + aTileInfo.aTileSizePixel.Width() - 1,
- aTileInfo.aNextTileTopLeft.Y() - 1 + (aTileInfo.nTilesEmptyY/nMSBFactor)*aTileInfo.aTileSizePixel.Height()) );
-#endif
- }
- else
- {
- // Thought that aTileInfo.aNextTileTopLeft tile has always
- // been drawn already, but that's wrong: typically,
- // _parts_ of that tile have been drawn, since the
- // previous level generated the tile there. But when
- // aTileInfo.aNextTileTopLeft!=aTileInfo.aTileTopLeft, the
- // difference between these two values is missing in the
- // lower right corner of this first tile. So, can do that
- // only here.
- bNoFirstTileDraw = true;
- }
- }
- else
- {
- return false;
- }
-
- // calc number of original tiles in our drawing area without
- // remainder
- nRemainderTilesX -= nNewRemainderX;
- nRemainderTilesY -= nNewRemainderY;
-
- // fill tile info for calling method
- rTileInfo.aTileTopLeft = aTileInfo.aNextTileTopLeft;
- rTileInfo.aNextTileTopLeft = Point( rTileInfo.aTileTopLeft.X() + rTileSizePixel.Width()*nRemainderTilesX,
- rTileInfo.aTileTopLeft.Y() + rTileSizePixel.Height()*nRemainderTilesY );
- rTileInfo.aTileSizePixel = Size( rTileSizePixel.Width()*nMSBFactor*nExponent,
- rTileSizePixel.Height()*nMSBFactor*nExponent );
- rTileInfo.nTilesEmptyX = aTileInfo.nTilesEmptyX - nRemainderTilesX;
- rTileInfo.nTilesEmptyY = aTileInfo.nTilesEmptyY - nRemainderTilesY;
-
- // init output position
- aCurrPos = aTileInfo.aNextTileTopLeft;
-
- // fill our drawing area. Fill possibly more, to create the next
- // bigger tile size -> see bitmap extraction above. This does no
- // harm, since everything right or below our actual area is
- // overdrawn by our caller. Just in case we're in the last level,
- // we don't draw beyond the right or bottom border.
- for( nY=0; nY < aTileInfo.nTilesEmptyY && nY < nExponent*nMSBFactor; nY += nMSBFactor )
- {
- aCurrPos.X() = aTileInfo.aNextTileTopLeft.X();
-
- for( nX=0; nX < aTileInfo.nTilesEmptyX && nX < nExponent*nMSBFactor; nX += nMSBFactor )
- {
- if( bNoFirstTileDraw )
- bNoFirstTileDraw = false; // don't draw first tile position
- else if( !aTmpGraphic.Draw( &rVDev, aCurrPos, aTileInfo.aTileSizePixel, pAttr, nFlags ) )
- return false;
-
- aCurrPos.X() += aTileInfo.aTileSizePixel.Width();
- }
-
- aCurrPos.Y() += aTileInfo.aTileSizePixel.Height();
- }
-
-#ifdef DBG_TEST
-// rVDev.SetFillColor( COL_WHITE );
- rVDev.SetFillColor();
- rVDev.SetLineColor( Color( 255 * nExponent / nMSBFactor, 255 - 255 * nExponent / nMSBFactor, 128 - 255 * nExponent / nMSBFactor ) );
- rVDev.DrawRect( Rectangle((rTileInfo.aTileTopLeft.X())*rTileSizePixel.Width(),
- (rTileInfo.aTileTopLeft.Y())*rTileSizePixel.Height(),
- (rTileInfo.aNextTileTopLeft.X())*rTileSizePixel.Width()-1,
- (rTileInfo.aNextTileTopLeft.Y())*rTileSizePixel.Height()-1) );
-#endif
-
- return true;
-}
-
-// -----------------------------------------------------------------------------
-
-bool GraphicObject::ImplDrawTiled( OutputDevice* pOut, const Rectangle& rArea, const Size& rSizePixel,
- const Size& rOffset, const GraphicAttr* pAttr, ULONG nFlags, int nTileCacheSize1D )
-{
- // how many tiles to generate per recursion step
- enum{ SubdivisionExponent=2 };
-
- const MapMode aOutMapMode( pOut->GetMapMode() );
- const MapMode aMapMode( aOutMapMode.GetMapUnit(), Point(), aOutMapMode.GetScaleX(), aOutMapMode.GetScaleY() );
- bool bRet( false );
-
- // #i42643# Casting to Int64, to avoid integer overflow for
- // huge-DPI output devices
- if( GetGraphic().GetType() == GRAPHIC_BITMAP &&
- static_cast<sal_Int64>(rSizePixel.Width()) * rSizePixel.Height() <
- static_cast<sal_Int64>(nTileCacheSize1D)*nTileCacheSize1D )
- {
- // First combine very small bitmaps into a larger tile
- // ===================================================
-
- VirtualDevice aVDev;
- const int nNumTilesInCacheX( (nTileCacheSize1D + rSizePixel.Width()-1) / rSizePixel.Width() );
- const int nNumTilesInCacheY( (nTileCacheSize1D + rSizePixel.Height()-1) / rSizePixel.Height() );
-
- aVDev.SetOutputSizePixel( Size( nNumTilesInCacheX*rSizePixel.Width(),
- nNumTilesInCacheY*rSizePixel.Height() ) );
- aVDev.SetMapMode( aMapMode );
-
- // draw bitmap content
- if( ImplRenderTempTile( aVDev, SubdivisionExponent, nNumTilesInCacheX,
- nNumTilesInCacheY, rSizePixel, pAttr, nFlags ) )
- {
- BitmapEx aTileBitmap( aVDev.GetBitmap( Point(0,0), aVDev.GetOutputSize() ) );
-
- // draw alpha content, if any
- if( IsTransparent() )
- {
- GraphicObject aAlphaGraphic;
-
- if( GetGraphic().IsAlpha() )
- aAlphaGraphic.SetGraphic( GetGraphic().GetBitmapEx().GetAlpha().GetBitmap() );
- else
- aAlphaGraphic.SetGraphic( GetGraphic().GetBitmapEx().GetMask() );
-
- if( aAlphaGraphic.ImplRenderTempTile( aVDev, SubdivisionExponent, nNumTilesInCacheX,
- nNumTilesInCacheY, rSizePixel, pAttr, nFlags ) )
- {
- // Combine bitmap and alpha/mask
- if( GetGraphic().IsAlpha() )
- aTileBitmap = BitmapEx( aTileBitmap.GetBitmap(),
- AlphaMask( aVDev.GetBitmap( Point(0,0), aVDev.GetOutputSize() ) ) );
- else
- aTileBitmap = BitmapEx( aTileBitmap.GetBitmap(),
- aVDev.GetBitmap( Point(0,0), aVDev.GetOutputSize() ).CreateMask( Color(COL_WHITE) ) );
- }
- }
-
- // paint generated tile
- GraphicObject aTmpGraphic( aTileBitmap );
- bRet = aTmpGraphic.ImplDrawTiled( pOut, rArea,
- aTileBitmap.GetSizePixel(),
- rOffset, pAttr, nFlags, nTileCacheSize1D );
- }
- }
- else
- {
- const Size aOutOffset( pOut->LogicToPixel( rOffset, aOutMapMode ) );
- const Rectangle aOutArea( pOut->LogicToPixel( rArea, aOutMapMode ) );
-
- // number of invisible (because out-of-area) tiles
- int nInvisibleTilesX;
- int nInvisibleTilesY;
-
- // round towards -infty for negative offset
- if( aOutOffset.Width() < 0 )
- nInvisibleTilesX = (aOutOffset.Width() - rSizePixel.Width() + 1) / rSizePixel.Width();
- else
- nInvisibleTilesX = aOutOffset.Width() / rSizePixel.Width();
-
- // round towards -infty for negative offset
- if( aOutOffset.Height() < 0 )
- nInvisibleTilesY = (aOutOffset.Height() - rSizePixel.Height() + 1) / rSizePixel.Height();
- else
- nInvisibleTilesY = aOutOffset.Height() / rSizePixel.Height();
-
- // origin from where to 'virtually' start drawing in pixel
- const Point aOutOrigin( pOut->LogicToPixel( Point( rArea.Left() - rOffset.Width(),
- rArea.Top() - rOffset.Height() ) ) );
- // position in pixel from where to really start output
- const Point aOutStart( aOutOrigin.X() + nInvisibleTilesX*rSizePixel.Width(),
- aOutOrigin.Y() + nInvisibleTilesY*rSizePixel.Height() );
-
- pOut->Push( PUSH_CLIPREGION );
- pOut->IntersectClipRegion( rArea );
-
- // Paint all tiles
- // ===============
-
- bRet = ImplDrawTiled( *pOut, aOutStart,
- (aOutArea.GetWidth() + aOutArea.Left() - aOutStart.X() + rSizePixel.Width() - 1) / rSizePixel.Width(),
- (aOutArea.GetHeight() + aOutArea.Top() - aOutStart.Y() + rSizePixel.Height() - 1) / rSizePixel.Height(),
- rSizePixel, pAttr, nFlags );
-
- pOut->Pop();
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-bool GraphicObject::ImplDrawTiled( OutputDevice& rOut, const Point& rPosPixel,
- int nNumTilesX, int nNumTilesY,
- const Size& rTileSizePixel, const GraphicAttr* pAttr, ULONG nFlags )
-{
- Point aCurrPos( rPosPixel );
- Size aTileSizeLogic( rOut.PixelToLogic( rTileSizePixel ) );
- int nX, nY;
-
- // #107607# Use logical coordinates for metafile playing, too
- bool bDrawInPixel( rOut.GetConnectMetaFile() == NULL && GRAPHIC_BITMAP == GetType() );
- BOOL bRet( FALSE );
-
- // #105229# Switch off mapping (converting to logic and back to
- // pixel might cause roundoff errors)
- BOOL bOldMap( rOut.IsMapModeEnabled() );
-
- if( bDrawInPixel )
- rOut.EnableMapMode( FALSE );
-
- for( nY=0; nY < nNumTilesY; ++nY )
- {
- aCurrPos.X() = rPosPixel.X();
-
- for( nX=0; nX < nNumTilesX; ++nX )
- {
- // #105229# work with pixel coordinates here, mapping is disabled!
- // #104004# don't disable mapping for metafile recordings
- // #108412# don't quit the loop if one draw fails
-
- // update return value. This method should return true, if
- // at least one of the looped Draws succeeded.
- bRet |= Draw( &rOut,
- bDrawInPixel ? aCurrPos : rOut.PixelToLogic( aCurrPos ),
- bDrawInPixel ? rTileSizePixel : aTileSizeLogic,
- pAttr, nFlags );
-
- aCurrPos.X() += rTileSizePixel.Width();
- }
-
- aCurrPos.Y() += rTileSizePixel.Height();
- }
-
- if( bDrawInPixel )
- rOut.EnableMapMode( bOldMap );
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------------
-
-void GraphicObject::ImplTransformBitmap( BitmapEx& rBmpEx,
- const GraphicAttr& rAttr,
- const Size& rCropLeftTop,
- const Size& rCropRightBottom,
- const Rectangle& rCropRect,
- const Size& rDstSize,
- BOOL bEnlarge ) const
-{
- // #107947# Extracted from svdograf.cxx
-
- // #104115# Crop the bitmap
- if( rAttr.IsCropped() )
- {
- rBmpEx.Crop( rCropRect );
-
- // #104115# Negative crop sizes mean: enlarge bitmap and pad
- if( bEnlarge && (
- rCropLeftTop.Width() < 0 ||
- rCropLeftTop.Height() < 0 ||
- rCropRightBottom.Width() < 0 ||
- rCropRightBottom.Height() < 0 ) )
- {
- Size aBmpSize( rBmpEx.GetSizePixel() );
- sal_Int32 nPadLeft( rCropLeftTop.Width() < 0 ? -rCropLeftTop.Width() : 0 );
- sal_Int32 nPadTop( rCropLeftTop.Height() < 0 ? -rCropLeftTop.Height() : 0 );
- sal_Int32 nPadTotalWidth( aBmpSize.Width() + nPadLeft + (rCropRightBottom.Width() < 0 ? -rCropRightBottom.Width() : 0) );
- sal_Int32 nPadTotalHeight( aBmpSize.Height() + nPadTop + (rCropRightBottom.Height() < 0 ? -rCropRightBottom.Height() : 0) );
-
- BitmapEx aBmpEx2;
-
- if( rBmpEx.IsTransparent() )
- {
- if( rBmpEx.IsAlpha() )
- aBmpEx2 = BitmapEx( rBmpEx.GetBitmap(), rBmpEx.GetAlpha() );
- else
- aBmpEx2 = BitmapEx( rBmpEx.GetBitmap(), rBmpEx.GetMask() );
- }
- else
- {
- // #104115# Generate mask bitmap and init to zero
- Bitmap aMask( aBmpSize, 1 );
- aMask.Erase( Color(0,0,0) );
-
- // #104115# Always generate transparent bitmap, we need the border transparent
- aBmpEx2 = BitmapEx( rBmpEx.GetBitmap(), aMask );
-
- // #104115# Add opaque mask to source bitmap, otherwise the destination remains transparent
- rBmpEx = aBmpEx2;
- }
-
- aBmpEx2.SetSizePixel( Size(nPadTotalWidth, nPadTotalHeight) );
- aBmpEx2.Erase( Color(0xFF,0,0,0) );
- aBmpEx2.CopyPixel( Rectangle( Point(nPadLeft, nPadTop), aBmpSize ), Rectangle( Point(0, 0), aBmpSize ), &rBmpEx );
- rBmpEx = aBmpEx2;
- }
- }
-
- const Size aSizePixel( rBmpEx.GetSizePixel() );
-
- if( rAttr.GetRotation() != 0 && !IsAnimated() )
- {
- if( aSizePixel.Width() && aSizePixel.Height() && rDstSize.Width() && rDstSize.Height() )
- {
- double fSrcWH = (double) aSizePixel.Width() / aSizePixel.Height();
- double fDstWH = (double) rDstSize.Width() / rDstSize.Height();
- double fScaleX = 1.0, fScaleY = 1.0;
-
- // always choose scaling to shrink bitmap
- if( fSrcWH < fDstWH )
- fScaleY = aSizePixel.Width() / ( fDstWH * aSizePixel.Height() );
- else
- fScaleX = fDstWH * aSizePixel.Height() / aSizePixel.Width();
-
- rBmpEx.Scale( fScaleX, fScaleY );
- }
- }
-}
-
diff --git a/goodies/source/graphic/makefile.mk b/goodies/source/graphic/makefile.mk
deleted file mode 100644
index 63b1e641f675..000000000000
--- a/goodies/source/graphic/makefile.mk
+++ /dev/null
@@ -1,61 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.5 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..
-
-PRJNAME=goodies
-TARGET=graphic
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-.IF "$(GUI)"=="WIN"
-LINKFLAGS=$(LINKFLAGS) /PACKC:32768
-.ENDIF
-
-# --- Files --------------------------------------------------------
-
-CXXFILES= \
- grfattr.cxx \
- grfmgr.cxx \
- grfmgr2.cxx \
- grfcache.cxx
-
-SLOFILES= \
- $(SLO)$/grfattr.obj \
- $(SLO)$/grfmgr.obj \
- $(SLO)$/grfmgr2.obj \
- $(SLO)$/grfcache.obj
-
-# --- Target -------------------------------------------------------
-
-.INCLUDE : target.mk
diff --git a/goodies/source/inv/expl.cxx b/goodies/source/inv/expl.cxx
deleted file mode 100644
index 1cb94c07ddaf..000000000000
--- a/goodies/source/inv/expl.cxx
+++ /dev/null
@@ -1,140 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: expl.cxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include "expl.hxx"
-#include "shapes.hxx"
-#include "invader.hrc"
-#include <vcl/outdev.hxx>
-
-Explosion::Explosion(ResMgr* pRes) :
- ExplListe(0,1),
- pExpl1(0L),
- pExpl2(0L),
- pExpl3(0L)
-{
- pExpl1 = ImplLoadImage( EXPLOS1, pRes );
- pExpl2 = ImplLoadImage( EXPLOS2, pRes );
- pExpl3 = ImplLoadImage( EXPLOS3, pRes );
-}
-
-Explosion::~Explosion()
-{
- delete pExpl1;
- delete pExpl2;
- delete pExpl3;
-}
-
-void Explosion::Paint(OutputDevice& rDev)
-{
- unsigned long i;
- for( i = 0; i < Count(); i++ )
- {
- switch(GetMode(i))
- {
- case EXPL1:
- rDev.DrawImage(GetPoint(i),*pExpl1);
- SetMode(i,EXPL2);
- break;
- case EXPL2:
- rDev.DrawImage(GetPoint(i),*pExpl2);
- SetMode(i,EXPL3);
- break;
- case EXPL3:
- rDev.DrawImage(GetPoint(i),*pExpl3);
- SetMode(i,EXPL4);
- break;
- case EXPL4:
- rDev.DrawImage(GetPoint(i),*pExpl2);
- SetMode(i,EXPL5);
- break;
- case EXPL5:
- rDev.DrawImage(GetPoint(i),*pExpl3);
- SetMode(i,EXPL6);
- break;
- case EXPL6:
- rDev.DrawImage(GetPoint(i),*pExpl2);
- SetMode(i,EXPL7);
- break;
- case EXPL7:
- rDev.DrawImage(GetPoint(i),*pExpl1);
- SetMode(i,EXPLNONE);
- break;
- case EXPLNONE:
- SetMode(i,EXPLDEL);
- break;
- case EXPL8:
- break;
- case EXPLDEL:
- break;
- }
- }
-
-// RemoveExpl();
-}
-
-BOOL Explosion::RemoveExpl()
-{
- Expl_Impl* pWork;
-
- for(long i=Count()-1; i >= 0; i--)
- {
- if(GetMode(i) == EXPLDEL)
- {
- pWork = GetObject(i);
- Remove(pWork);
- delete pWork;
- }
- }
-
- if(Count())
- return FALSE;
- else
- return TRUE;
-}
-
-void Explosion::ClearAll()
-{
- unsigned long i;
- for( i = 0; i < Count(); i++ )
- delete GetObject(i);
-
- Clear();
-}
-
-void Explosion::InsertExpl(Point& rPoint)
-{
- Expl_Impl* pWork = new Expl_Impl();
-
- pWork->aPos = rPoint;
- pWork->eMode = EXPL1;
- Insert(pWork);
-}
diff --git a/goodies/source/inv/expl.hxx b/goodies/source/inv/expl.hxx
deleted file mode 100644
index c8da24f76de0..000000000000
--- a/goodies/source/inv/expl.hxx
+++ /dev/null
@@ -1,71 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: expl.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _EXPL_HXX
-#define _EXPL_HXX
-
-
-#include <vcl/image.hxx>
-#include <vcl/outdev.hxx>
-#include <tools/list.hxx>
-#include <tools/gen.hxx>
-
-enum ExplMode { EXPL1, EXPL2, EXPL3, EXPL4, EXPL5, EXPL6, EXPL7, EXPL8,
- EXPLNONE, EXPLDEL };
-
-struct Expl_Impl
-{
- Point aPos;
- ExplMode eMode;
-};
-
-DECLARE_LIST(ExplListe, Expl_Impl*)
-
-class Explosion : public ExplListe
-{
- private:
- Image* pExpl1;
- Image* pExpl2;
- Image* pExpl3;
-
- public:
- Explosion(ResMgr* pRes);
- ~Explosion();
-
- void Paint(OutputDevice& rDev);
- ExplMode GetMode(long nWert) { return GetObject(nWert)->eMode; }
- Point& GetPoint(long nWert) { return GetObject(nWert)->aPos; }
- void SetMode(long nWert, enum ExplMode nMode)
- { GetObject(nWert)->eMode = nMode; }
- BOOL RemoveExpl();
- void ClearAll();
- void InsertExpl(Point& rPoint);
-};
-
-#endif
diff --git a/goodies/source/inv/gegner.src b/goodies/source/inv/gegner.src
deleted file mode 100644
index 528a9e1fd80b..000000000000
--- a/goodies/source/inv/gegner.src
+++ /dev/null
@@ -1,163 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: gegner.src,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "invader.hrc"
-
-Bitmap MONSTER1 {
- File = "monster1.bmp";
-};
-
-Bitmap MONSTER2 {
- File = "monster2.bmp";
-};
-
-Bitmap MONSTER3 {
- File = "monster3.bmp";
-};
-
-Bitmap MONSTER4 {
- File = "monster4.bmp";
-};
-
-Bitmap MONSTER1B {
- File = "monstb1.bmp";
-};
-
-Bitmap MONSTER2B {
- File = "monstb2.bmp";
-};
-
-Bitmap MONSTER3B {
- File = "monstb3.bmp";
-};
-
-Bitmap MONSTER4B {
- File = "monstb4.bmp";
-};
-
-Bitmap MONSTER5 {
- File = "uvisibl1.bmp";
-};
-
-Bitmap MONSTER5A {
- File = "uvisibl2.bmp";
-};
-
-Bitmap MONSTER5B {
- File = "uvisibl3.bmp";
-};
-
-Bitmap FIGHTER1 {
- File = "fighter1.bmp";
-};
-
-Bitmap FIGHTERR {
- File = "fighterr.bmp";
-};
-
-Bitmap FIGHTERL {
- File = "fighterl.bmp";
-};
-
-Bitmap MUNITION1 {
- File = "monitio1.bmp";
-};
-
-Bitmap MUNITION2 {
- File = "monitio2.bmp";
-};
-
-Bitmap EXPLOS1 {
- File = "explos1.bmp";
-};
-
-Bitmap EXPLOS2 {
- File = "explos2.bmp";
-};
-
-Bitmap EXPLOS3 {
- File = "explos3.bmp";
-};
-
-Bitmap BOMBE {
- File = "bombe.bmp";
-};
-
-Bitmap WALL1 {
- File = "wall1.bmp";
-};
-
-Bitmap WALL2 {
- File = "wall2.bmp";
-};
-
-Bitmap WALL3 {
- File = "wall3.bmp";
-};
-
-Bitmap WALL4 {
- File = "wall4.bmp";
-};
-
-Bitmap WALL5 {
- File = "wall5.bmp";
-};
-
-Bitmap WALL6 {
- File = "wall6.bmp";
-};
-
-Bitmap WALL7 {
- File = "wall7.bmp";
-};
-
-Bitmap WALL8 {
- File = "wall8.bmp";
-};
-
-Bitmap WALL9 {
- File = "wall9.bmp";
-};
-
-Bitmap WALL10 {
- File = "wall10.bmp";
-};
-
-Bitmap HEROS {
- File = "helden.bmp";
-};
-
-Bitmap STARWARS {
- File = "swars.bmp";
-};
-
-Bitmap WELCOME2 {
- File = "wlcome2.bmp";
-};
-
diff --git a/goodies/source/inv/invader.cxx b/goodies/source/inv/invader.cxx
deleted file mode 100644
index 0aed6e76848f..000000000000
--- a/goodies/source/inv/invader.cxx
+++ /dev/null
@@ -1,624 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: invader.cxx,v $
- * $Revision: 1.12 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include "invader.hxx"
-#include "monst.hxx"
-#include "shapes.hxx"
-#include "expl.hxx"
-#include "invader.hrc"
-#include "strings.hrc"
-#include "score.hxx"
-#include <svl/solar.hrc>
-#include <cppuhelper/servicefactory.hxx>
-#include <comphelper/processfactory.hxx>
-#include <vcl/msgbox.hxx>
-#include <vcl/virdev.hxx>
-
-MyWindow::MyWindow(Window* pParent, ResMgr *pResMgr ) :
- FloatingWindow(pParent, WB_3DLOOK | WB_CLOSEABLE | WB_MOVEABLE ),
- pRes(pResMgr),
- ProgStatus(FALSE),
- bEndLevel(TRUE),
- bFightDest(FALSE),
- bTimeHigh(TRUE),
- bPause(FALSE),
- bAuseModus(FALSE),
- bWaitDlg(FALSE),
- StartPhase(1),
- nLevel(1),
- nScore(0L),
- nHighScore(0L),
- nFighter(3),
- nTimeOut(TIMEHIGH),
- nAuseCount(0),
- pBitWelcome2(0L),
- pBitHeros(0L),
- pBitStarWars(0L),
- pGegner(0L),
- pFighter(0L),
- pMunition(0L),
- pExplosion(0L),
- pBombe(0L),
- pWall(0L),
- pScoreWindow(0L),
- pVirtualDevice(0L),
- pPauseWindow(0L),
- pBox(0L),
- nDirection(0L),
- bMouseMooving(FALSE)
-{
- pBitWelcome2 = ImplLoadImage( WELCOME2, GetResMgr() );
- pBitHeros = ImplLoadImage( HEROS, GetResMgr() );
- pBitStarWars = ImplLoadImage( STARWARS, GetResMgr() );
- pBombe = new Bombe(GetResMgr());
- pMunition = new Munition(GetResMgr());
- pExplosion = new Explosion(GetResMgr());
- pWall = new Wall(GetResMgr());
- pScoreWindow = new ScoreWindow(this,WB_BORDER, GetResMgr());
- pPauseWindow = new Window(this, 0);
-
- SetOutputSizePixel(Size(WINWIDTH,WINHEIGHT));
- SetText(String(ResId(STR_APP_TITLE,*GetResMgr())));
-
- pPauseWindow->SetPosSizePixel(Point(100,190),Size(500,50));
- pPauseWindow->SetBackground();
-
- pScoreWindow->SetPosSizePixel(Point(0,0),Size(WINWIDTH,22));
- Size aSize(WINWIDTH,WINHEIGHT);
- pFighter = new Fighter(aSize, GetResMgr());
- pGegner = new Gegner(pFighter, pBombe, GetResMgr());
-
- pVirtualDevice = new VirtualDevice(*this);
- pVirtualDevice->SetOutputSizePixel(Size( WINWIDTH, WINHEIGHT ));
-
- SetBackground();
-
- aPaintTimer = Timer();
- aPaintTimer.SetTimeoutHdl(LINK(this, MyWindow, PaintTimer));
- aPaintTimer.SetTimeout(nTimeOut);
- aPaintTimer.Stop();
-
- aWaitDlgTimer = Timer();
- aWaitDlgTimer.SetTimeoutHdl(LINK(this, MyWindow, StartDlgTimer));
- aWaitDlgTimer.SetTimeout(10);
- aWaitDlgTimer.Stop();
-
- aPointer = GetPointer();
-
- Show();
-
-}
-
-MyWindow::~MyWindow()
-{
- aPaintTimer.Stop();
- delete pVirtualDevice;
- delete pGegner;
- delete pFighter;
- delete pMunition;
- delete pExplosion;
- delete pBombe;
- delete pWall;
- delete pBitHeros;
- delete pBitStarWars;
- delete pBitWelcome2;
- delete pScoreWindow;
- delete pPauseWindow;
-}
-
-void MyWindow::Paint(const Rectangle&)
-{
- if(bWaitDlg)
- return;
-
- Size aVSize = pVirtualDevice->GetOutputSizePixel();
-
- if (!ProgStatus)
- {
- if (StartPhase < 3)
- {
- pScoreWindow->Hide();
- bMouseMooving = FALSE;
-
- if( StartPhase == 1 )
- {
- const Font aOldFont( GetFont() );
- Font aFont( aOldFont );
-
- SetFillColor( COL_BLACK );
- DrawRect(Rectangle(Point(0,0),Point(640,480)));
-
- DrawImage(Point(55,78), *pBitStarWars);
- DrawImage(Point(53,207), *pBitHeros);
- DrawImage(Point(470,400), *(pFighter->pFight1));
- DrawImage(Point(460,290), *(pMunition->pMunition1));
- DrawImage(Point(480,320), *(pMunition->pMunition1));
- DrawImage(Point(470,250), *(pMunition->pMunition1));
-
- aFont.SetColor(COL_WHITE);
- aFont.SetFillColor(COL_BLACK);
- SetFont( aFont );
-
- DrawText(Point(175,170),String(ResId(STR_CHOOSEHERO, *GetResMgr())));
- DrawText(Point(98,208),String(ResId(STR_NAME1, *GetResMgr())));
- DrawText(Point(98,252),String(ResId(STR_NAME2, *GetResMgr())));
- DrawText(Point(98,296),String(ResId(STR_NAME3, *GetResMgr())));
- DrawText(Point(98,340),String(ResId(STR_NAME4, *GetResMgr())));
- DrawText(Point(98,384),String(ResId(STR_NAME5, *GetResMgr())));
-
- SetFont( aOldFont );
- }
- else if(StartPhase == 2)
- {
- SetFillColor( COL_WHITE );
- DrawRect(Rectangle(Point(0,0),Point(640,480)));
- DrawImage(Point(19,147), *pBitWelcome2 );
- }
- }
- }
- else if(!bPause)
- {
- aPaintTimer.Start();
-
- Point aPoint(0,20);
-
- pVirtualDevice->SetFillColor( COL_WHITE );
- pVirtualDevice->SetLineColor();
- pVirtualDevice->DrawRect(Rectangle(Point(0,0), Point(aVSize.Width(),aVSize.Height())));
-
- if(!bStartLevel)
- {
- if ((bMouseMooving)&&(nDirection > pFighter->GetPoint().X()+32))
- {
- pFighter->Move(1);
- pFighter->Move(1);
- pGegner->SetAuseMode(FALSE);
- nAuseCount = 0;
- }
- else if ((bMouseMooving)&&(nDirection < pFighter->GetPoint().X()))
- {
- pFighter->Move(-1);
- pFighter->Move(-1);
- pGegner->SetAuseMode(FALSE);
- nAuseCount = 0;
- }
- nAuseCount++;
- if(nAuseCount > AUSEMODE)
- pGegner->SetAuseMode(TRUE);
- pWall->Paint(*pVirtualDevice);
- pGegner->DrawGegner(pVirtualDevice,&aPoint);
- pFighter->Paint(*pVirtualDevice);
- pMunition->Paint(*pVirtualDevice);
- pBombe->Paint(*pVirtualDevice);
- pExplosion->Paint(*pVirtualDevice);
- }
- else
- {
- bMouseMooving = FALSE;
- Font aOldFont = pVirtualDevice->GetFont();
- Font aFont = aOldFont;
- switch(nStartLevel)
- {
- case 0:
- aFont.SetColor(COL_RED);
- break;
- case 1:
- aFont.SetColor(COL_YELLOW);
- break;
- case 2:
- aFont.SetColor(COL_GREEN);
- break;
- }
- pVirtualDevice->SetFont(*&aFont);
- String aString = String(ResId(STR_LEVELSTART, *GetResMgr()));
- aString += ' ';
- aString += String::CreateFromInt32(nLevel);
- if(nStartLevel < 3)
- pVirtualDevice->DrawText(Point(LEVELTEXTX,LEVELTEXTY),aString);
- nStartLevel++;
- if(nStartLevel > 3)
- {
- bStartLevel = FALSE;
- bEndLevel = FALSE;
- bFightDest = FALSE;
- aPaintTimer.SetTimeout(nTimeOut);
- }
- pVirtualDevice->SetFont(*&aOldFont);
-
- }
-
- DrawOutDev( Point( 0, 22), aVSize, Point( 0, 22), aVSize, *pVirtualDevice);
-
- if(!bStartLevel)
- Kollision();
- }
- else pPauseWindow->DrawText(Point(20,20),String(ResId(STR_PAUSE, *GetResMgr())));
-}
-
-void MyWindow::KeyInput( const KeyEvent& rKEvent)
-{
- if(bEndLevel || bFightDest)
- {
- rKEvent.GetKeyCode().GetCode();
- FloatingWindow::KeyInput(rKEvent);
-
- return;
- }
-
- bMouseMooving = FALSE;
- switch(rKEvent.GetKeyCode().GetCode())
- {
- case KEY_LEFT:
- pFighter->Move(-1);
- nAuseCount = 0;
- pGegner->SetAuseMode(FALSE);
- break;
- case KEY_RIGHT:
- pFighter->Move(1);
- nAuseCount = 0;
- pGegner->SetAuseMode(FALSE);
- break;
- case KEY_SPACE:
- pMunition->Start(pFighter->GetPoint());
- break;
- case KEY_L:
- if(nLevel > 1)
- return;
- if(bTimeHigh)
- {
- bTimeHigh = FALSE;
- nTimeOut = TIMELOW;
- }
- else
- {
- bTimeHigh = TRUE;
- nTimeOut = TIMEHIGH;
- }
- aPaintTimer.SetTimeout(nTimeOut);
- break;
- case KEY_ADD:
- if(nLevel > 1)
- return;
- nTimeOut++;
- aPaintTimer.SetTimeout(nTimeOut);
- break;
- case KEY_SUBTRACT:
- if(nLevel > 1)
- return;
- nTimeOut--;
- if(nTimeOut <= 0)
- nTimeOut = 1;
- aPaintTimer.SetTimeout(nTimeOut);
- aPaintTimer.Start();
- break;
- case KEY_P:
- if(!ProgStatus)
- return;
- if(bPause)
- {
- aPaintTimer.Start();
- bPause = FALSE;
- SetBackground();
- pPauseWindow->Hide();
- }
- else
- {
- aPaintTimer.Stop();
- bPause = TRUE;
- SetBackground( Wallpaper( COL_WHITE ) );
- pPauseWindow->Show();
- pPauseWindow->DrawText(Point(20,20),String(ResId(STR_PAUSE, *GetResMgr())));
- }
- break;
- default:
- FloatingWindow::KeyInput(rKEvent);
- }
-}
-
-IMPL_LINK( MyWindow, PaintTimer, Timer*, EMPTYARG)
-{
-
- Invalidate();
-
- return 0;
-}
-
-IMPL_LINK( MyWindow, StartDlgTimer, Timer*, EMPTYARG )
-{
- bWaitDlg = TRUE;
-
- aWaitDlgTimer.Stop();
-
- String aString;
- if(!bFightDest)
- {
- aString = String(ResId(STR_GRAT1,*GetResMgr()));
- aString += String::CreateFromInt32(nLevel);
- aString += String(ResId(STR_GRAT2,*GetResMgr()));
-
- pBox = new MessBox(this,WinBits(WB_OK),String(ResId(STR_APP_TITLE,*GetResMgr())),aString);
- PlaceDialog(pBox);
- ProgStatus=FALSE;
- SetBackground(Wallpaper( Color( COL_WHITE ) ) );
-
- pBox->Execute();
-
- SetBackground();
- ProgStatus=TRUE;
- delete pBox;
- nLevel++;
- GrabFocus();
- }
- else
- {
- nFighter--;
- pScoreWindow->SetLives(nFighter);
- if(nFighter > 0)
- {
- aString = String(ResId(STR_FIGHTDEST1,*GetResMgr()));
- aString += String::CreateFromInt32(nFighter);
- aString += String(ResId(STR_FIGHTDEST2,*GetResMgr()));
- }
- else
- {
- aString = String(ResId(STR_GAMEOVER,*GetResMgr()));
- ProgStatus = FALSE;
- nLevel = 1;
- nFighter = 3;
- pGegner->SetRandWert(200);
- pGegner->SetDown(10);
-
- if(bTimeHigh)
- nTimeOut = TIMEHIGH;
- else
- nTimeOut = TIMELOW;
- }
-
- pBox = new MessBox(this,WinBits(WB_OK),String(ResId(STR_APP_TITLE,*GetResMgr())),aString);
- PlaceDialog(pBox);
- BOOL aDummyStatus = ProgStatus;
- ProgStatus=FALSE;
- SetBackground(Wallpaper( Color( COL_WHITE ) ) );
-
- pBox->Execute();
-
- SetBackground();
- ProgStatus=aDummyStatus;
- delete pBox;
- GrabFocus();
-
- if(!ProgStatus)
- {
- StartPhase = 1;
- if (nScore > nHighScore)
- {
- String aHSString;
- aHSString = String(ResId(STR_HIGHSCORE1,*GetResMgr()));
- aHSString += String::CreateFromInt32(nScore);
- aHSString += String(ResId(STR_HIGHSCORE2,*GetResMgr()));
- aHSString += String::CreateFromInt32(nHighScore);
- aHSString += String(ResId(STR_HIGHSCORE3,*GetResMgr()));
- nHighScore = nScore;
- pBox = new MessBox(this,WinBits(WB_OK),String(ResId(STR_APP_TITLE,*GetResMgr())),aHSString);
- PlaceDialog(pBox);
- Paint(Rectangle(Point(0,0),Point(640,480)));
- SetBackground(Wallpaper( Color( COL_WHITE ) ) );
- pBox->Execute();
- SetBackground();
- delete pBox;
- GrabFocus();
- }
- nScore = 0;
- }
-
- }
-
- InitLevel();
- Invalidate();
-
- bWaitDlg = FALSE;
-
- return 0;
-}
-
-void MyWindow::MouseButtonDown(const MouseEvent& rMEvt)
-{
- MessBox* pMessBox = 0L;
-
- if (!ProgStatus)
- {
- TheHero = 0;
-
- if (StartPhase == 1)
- {
- if ((rMEvt.GetPosPixel().X() >= 57) && (rMEvt.GetPosPixel().X() <=90))
- {
- if ((rMEvt.GetPosPixel().Y() >= 211) && (rMEvt.GetPosPixel().Y() <= 244))
- TheHero = STR_NAME1;
- else if ((rMEvt.GetPosPixel().Y() >= 255) && (rMEvt.GetPosPixel().Y() <= 288))
- TheHero = STR_NAME2;
- else if ((rMEvt.GetPosPixel().Y() >= 299) && (rMEvt.GetPosPixel().Y() <= 332))
- TheHero = STR_NAME3;
- else if ((rMEvt.GetPosPixel().Y() >= 343) && (rMEvt.GetPosPixel().Y() <= 376))
- TheHero = STR_NAME4;
- else if ((rMEvt.GetPosPixel().Y() >= 387) && (rMEvt.GetPosPixel().Y() <= 420))
- TheHero = STR_NAME5;
- }
- if (TheHero)
- {
- SetPointer(aPointer);
- switch (TheHero)
- {
- case STR_NAME1:
- {
- pMessBox = new MessBox(this,WinBits(WB_OK),String(ResId(STR_APP_TITLE,*GetResMgr())),String(ResId(STR_HERO1, *GetResMgr())));
- }
- break;
- case STR_NAME2:
- {
- pMessBox = new MessBox(this,WinBits(WB_OK),String(ResId(STR_APP_TITLE,*GetResMgr())), String(ResId(STR_HERO2, *GetResMgr())));
- }
- break;
- case STR_NAME3:
- {
- pMessBox = new MessBox(this,WinBits(WB_OK),String(ResId(STR_APP_TITLE,*GetResMgr())), String(ResId(STR_HERO3, *GetResMgr())));
- }
- break;
- case STR_NAME4:
- {
- pMessBox = new MessBox(this,WinBits(WB_OK),String(ResId(STR_APP_TITLE,*GetResMgr())), String(ResId(STR_HERO4, *GetResMgr())));
- }
- break;
- case STR_NAME5:
- {
- pMessBox = new MessBox(this,WinBits(WB_OK),String(ResId(STR_APP_TITLE,*GetResMgr())), String(ResId(STR_HERO5, *GetResMgr())));
- }
- break;
- }
- PlaceDialog(pMessBox);
- pMessBox->Execute();
- delete pMessBox;
- StartPhase++;
- pScoreWindow->SetHero(TheHero);
- Invalidate();
- }
- }
- else if (StartPhase == 2)
- {
- ProgStatus = TRUE;
- StartPhase++;
- pScoreWindow->ShowMe();
- InitLevel();
- Invalidate();
- aPaintTimer.Start();
- }
- }
- else
- {
- if((!bStartLevel) && (!bPause))
- pMunition->Start(pFighter->GetPoint());
- }
-}
-
-void MyWindow::MouseMove(const MouseEvent& rMEvt)
-{
- long Hero;
-
- if ((!ProgStatus) && ( StartPhase == 1 ))
- {
- Hero = 0;
- if ((rMEvt.GetPosPixel().X() >= 57) && (rMEvt.GetPosPixel().X() <=90))
- {
- if ((rMEvt.GetPosPixel().Y() >= 211) && (rMEvt.GetPosPixel().Y() <= 244))
- Hero = 1;
- else if ((rMEvt.GetPosPixel().Y() >= 255) && (rMEvt.GetPosPixel().Y() <= 288))
- Hero = 2;
- else if ((rMEvt.GetPosPixel().Y() >= 299) && (rMEvt.GetPosPixel().Y() <= 332))
- Hero = 3;
- else if ((rMEvt.GetPosPixel().Y() >= 343) && (rMEvt.GetPosPixel().Y() <= 376))
- Hero = 4;
- else if ((rMEvt.GetPosPixel().Y() >= 387) && (rMEvt.GetPosPixel().Y() <= 420))
- Hero = 5;
- }
- if ((Hero) && (GetPointer() != POINTER_REFHAND)) SetPointer(POINTER_REFHAND);
- else if ((!Hero) && (GetPointer() != aPointer)) SetPointer(aPointer);
- }
- else if ( ProgStatus )
- {
- nDirection = rMEvt.GetPosPixel().X();
- bMouseMooving = TRUE;
- }
-}
-
-BOOL MyWindow::Close()
-{
- Hide();
-#ifdef TEST
- pApplication->Quit();
-#else
- delete this;
-#endif
-
- return TRUE;
-}
-
-void MyWindow::PlaceDialog(MessBox* pMessBox)
-{
- if(pMessBox)
- {
- Point aPos = GetPosPixel();
- Size aSize = GetSizePixel();
- Size aBoxSize = pMessBox->GetOutputSizePixel();
- aSize = Size(aSize.Width()/2 - aBoxSize.Width()/2,
- aSize.Height()/2 - aBoxSize.Height()/2);
- pMessBox->SetPosPixel(
- Point(aPos.X()+aSize.Width(),aPos.Y()+aSize.Height()));
- }
-}
-
-#ifdef TEST
-void MyApp::Main()
-{
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
- xMSF = cppu::createRegistryServiceFactory(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "applicat.rdb" ) ), sal_True );
-
- ::comphelper::setProcessServiceFactory( xMSF );
-
- ByteString aRes = "tfu";
- ResMgr *pMyResMgr = ResMgr::CreateResMgr(aRes.GetBuffer());
-
- MyWindow aWindow( NULL, pMyResMgr);
-
-#ifdef TEST
- aWindow.setApplication(this);
-#endif
-
- Execute();
-
- delete pMyResMgr;
-}
-
-MyApp aMyApp;
-#else
-
-#ifdef WNT
-extern "C" void __cdecl StartInvader(Window* pParent , ResMgr* pRes)
-#else
-extern "C" void StartInvader(Window* pParent, ResMgr* pRes )
-#endif
-{
- MyWindow *pInvaderWin = new MyWindow(pParent, pRes);
- pInvaderWin->Show();
-}
-#endif
-
diff --git a/goodies/source/inv/invader.hrc b/goodies/source/inv/invader.hrc
deleted file mode 100644
index 689c3198cba1..000000000000
--- a/goodies/source/inv/invader.hrc
+++ /dev/null
@@ -1,63 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: invader.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#define MONSTER1 17000
-#define MONSTER2 17001
-#define MONSTER3 17002
-#define MONSTER4 17003
-#define FIGHTERR 17004
-#define FIGHTERL 17005
-#define FIGHTER1 17006
-#define MUNITION1 17007
-#define MUNITION2 17008
-#define MONSTER1B 17009
-#define MONSTER2B 17010
-#define MONSTER3B 17011
-#define MONSTER4B 17012
-#define EXPLOS1 17013
-#define EXPLOS2 17014
-#define EXPLOS3 17015
-#define BOMBE 17016
-#define WALL1 17017
-#define WALL2 17018
-#define WALL3 17019
-#define WALL4 17020
-#define WALL5 17021
-#define WALL6 17022
-#define WALL7 17023
-#define WALL8 17024
-#define WALL9 17025
-#define WALL10 17026
-#define WELCOME 17027
-#define WELCOME2 17028
-#define MONSTER5 17029
-#define MONSTER5A 17030
-#define MONSTER5B 17031
-#define HEROS 17032
-#define STARWARS 17033
diff --git a/goodies/source/inv/invader.hxx b/goodies/source/inv/invader.hxx
deleted file mode 100644
index 374d81002970..000000000000
--- a/goodies/source/inv/invader.hxx
+++ /dev/null
@@ -1,135 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: invader.hxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _INVADER_HXX
-#define _INVADER_HXX
-
-#define WINWIDTH 640
-#define WINHEIGHT 480
-#define LEVELTEXTX 280
-#define LEVELTEXTY 200
-
-#define TIMEHIGH 100
-#define TIMELOW 30
-#define AUSEMODE 50
-
-#include <vcl/timer.hxx>
-#include <vcl/floatwin.hxx>
-#include <tools/resmgr.hxx>
-#include <vcl/image.hxx>
-#include <vcl/svapp.hxx>
-
-
-class Gegner;
-class Fighter;
-class Munition;
-class Explosion;
-class Bombe;
-class Wall;
-class ScoreWindow;
-class MessBox;
-
-class MyApp : public Application
-{
- public:
- virtual void Main();
-};
-
-class MyWindow : public FloatingWindow
-{
- private:
- ResMgr* pRes;
- BOOL ProgStatus;
- BOOL bStartLevel;
- BOOL bEndLevel;
- BOOL bFightDest;
- BOOL bTimeHigh;
- BOOL bPause;
- BOOL bAuseModus;
- BOOL bGetFighter;
- BOOL bWaitDlg;
-
- long nStartLevel;
- long StartPhase;
- Pointer aPointer;
- long nLevel;
- long nScore;
- long nHighScore;
- long TheHero;
- long nFighter;
- long nTimeOut;
- long nAuseCount;
-
- Image* pBitWelcome2;
- Image* pBitHeros;
- Image* pBitStarWars;
- Gegner* pGegner;
- Fighter* pFighter;
- Munition* pMunition;
- Explosion* pExplosion;
- Bombe* pBombe;
- Wall* pWall;
- Timer aPaintTimer;
- Timer aWaitDlgTimer;
- ScoreWindow* pScoreWindow;
- VirtualDevice* pVirtualDevice;
- Window* pPauseWindow;
- MessBox* pBox;
-
- void Init();
- DECL_LINK( PaintTimer, Timer*);
- DECL_LINK( StartDlgTimer, Timer* );
-
- void InitLevel();
- void RandomLevel();
-
- long nDirection;
- BOOL bMouseMooving;
- void PlaceDialog(MessBox* pBox);
-
- public:
- MyWindow(Window* pParent, ResMgr* pRes);
- ~MyWindow();
-
- virtual void Paint(const Rectangle& rRect);
- virtual void KeyInput( const KeyEvent& rKEvent);
- virtual void MouseButtonDown(const MouseEvent& rMEvt);
-// virtual void MouseButtonUp(const MouseEvent& rMEvt);
- virtual void MouseMove(const MouseEvent& rMEvt);
- virtual BOOL Close();
-
- void EndLevel();
- void Kollision();
- ResMgr* GetResMgr(){return pRes;}
-
- void setApplication(MyApp *rApplication) { pApplication = rApplication; };
- MyApp *pApplication;
-};
-
-#endif
diff --git a/goodies/source/inv/invader1.cxx b/goodies/source/inv/invader1.cxx
deleted file mode 100644
index 7c1b159fe0b0..000000000000
--- a/goodies/source/inv/invader1.cxx
+++ /dev/null
@@ -1,447 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: invader1.cxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include <stdlib.h>
-#include <vcl/msgbox.hxx>
-#include <tools/datetime.hxx>
-
-#include "invader.hxx"
-#include "monst.hxx"
-#include "shapes.hxx"
-#include "expl.hxx"
-#include "waves.hxx"
-#include "score.hxx"
-#include "strings.hrc"
-
-
-void MyWindow::Kollision()
-{
- Rectangle aRect;
- long nStart = nScore;
- long nRockets = pMunition->Count();
-
- long nWert;
-
- unsigned long i;
- for(i=0; i<pBombe->Count(); i++)
- {
- //Kollision Bombe->Mauer prfen
- aRect = pBombe->GetKoll(i);
- if(pWall->Kollision(aRect,FALSE))
- pBombe->SetDelete(i);
- //Kollision Bombe->Fighter prfen
- if(pFighter->Kollision(pBombe->GetKoll(i),pExplosion))
- {
- bFightDest = TRUE;
- pBombe->SetDelete(i);
- }
- }
-
- for(i=0; i<pMunition->Count(); i++)
- {
- //Kollision Muniton->Gegner prfen
- aRect = pMunition->GetKoll(i);
- nWert = pGegner->Kollision(aRect,pExplosion);
- if(nWert != -1)
- {
- nScore += nWert;
- pMunition->SetDelete(i);
- }
- //Kollision Muniton->Mauer prfen
- aRect = pMunition->GetKoll(i);
- if(pWall->Kollision(aRect,FALSE))
- pMunition->SetDelete(i);
-
- //Kollision Munition->Bombe prfen
- aRect = pMunition->GetKoll(i);
- if(pBombe->Kollision(aRect,pExplosion))
- pMunition->SetDelete(i);
- }
-
- for(i=0; i<pGegner->Count();i++)
- {
-
- //Kollision Gegner->Mauer prfen
- aRect = pGegner->GetKoll(i);
- pWall->Kollision(aRect,TRUE);
- //Kollision Gegner->Fighter prfen
- aRect = pGegner->GetKoll(i);
- if(pFighter->Kollision(aRect,pExplosion))
- {
- bFightDest = TRUE;
- pGegner->ClearAll();
- pBombe->ClearAll();
- }
-
- }
-
- pBombe->RemoveBomben();
- nWert = pMunition->RemoveMunition();
- if( nWert != nRockets)
- pScoreWindow->SetRockets(nWert);
-
- if(nScore > nStart)
- pScoreWindow->SetScore(nScore);
-
- if(pGegner->RemoveGegner())
- {
- bEndLevel = TRUE;
- pBombe->ClearAll();
- pMunition->ClearAll();
- }
-
- if(bFightDest)
- {
- pBombe->ClearAll();
- pMunition->ClearAll();
- pGegner->ClearAll();
- }
-
- if(pExplosion->RemoveExpl() && (bEndLevel || bFightDest))
- {
- if(!bWaitDlg)
- aWaitDlgTimer.Start();
-
- /*String aString;
- if(!bFightDest)
- {
- aString = String(ResId(STR_GRAT1,GetResMgr()));
- aString += String(nLevel);
- aString += String(ResId(STR_GRAT2,GetResMgr()));
-
- if(!pBox)
- {
- bWaitDlg = TRUE;
- pBox = new MessBox(GetParent(),WinBits(WB_OK),String(ResId(STR_APP_TITLE,GetResMgr())),aString);
- ProgStatus=FALSE;
- SetBackground(Wallpaper( Color( COL_WHITE ) ) );
-
- aWaitDlgTimer.Start();
- return;
- }
-
- SetBackground();
- ProgStatus=TRUE;
- delete pBox;
- pBox = 0L;
- nLevel++;
- GrabFocus();
- }
- else
- {
- nFighter--;
- pScoreWindow->SetLives(nFighter);
- if(nFighter > 0)
- {
- aString = String(ResId(STR_FIGHTDEST1,GetResMgr()));
- aString += String(nFighter);
- aString += String(ResId(STR_FIGHTDEST2,GetResMgr()));
- }
- else
- {
- aString = String(ResId(STR_GAMEOVER,GetResMgr()));
- }
-
- BOOL aDummyStatus;
-
- if(!pBox)
- {
- pBox = new MessBox(this,WinBits(WB_OK),String(ResId(STR_APP_TITLE,GetResMgr())),aString);
- aDummyStatus = ProgStatus;
- //ProgStatus=FALSE;
- SetBackground(Wallpaper( Color( COL_WHITE ) ) );
-
- aWaitDlgTimer.Start();
-
- return;
- }
-
- if(nFighter == 0)
- {
- ProgStatus = FALSE;
- nLevel = 1;
- nFighter = 3;
- pGegner->SetRandWert(200);
- pGegner->SetDown(10);
-
- if(bTimeHigh)
- nTimeOut = TIMEHIGH;
- else
- nTimeOut = TIMELOW;
- }
-
- SetBackground();
- //ProgStatus=aDummyStatus;
- delete pBox;
- pBox = 0L;
- GrabFocus();
-
- if(!ProgStatus)
- {
- StartPhase = 1;
- if (nScore > nHighScore)
- {
- String aString;
- aString = String(ResId(STR_HIGHSCORE1,GetResMgr()));
- aString += String(nScore);
- aString += String(ResId(STR_HIGHSCORE2,GetResMgr()));
- aString += String(nHighScore);
- aString += String(ResId(STR_HIGHSCORE3,GetResMgr()));
- nHighScore = nScore;
- if(!pBox)
- {
- pBox = new MessBox(this,WinBits(WB_OK),String(ResId(STR_APP_TITLE,GetResMgr())),aString);
- Paint(Rectangle(Point(0,0),Point(640,480)));
- SetBackground(Wallpaper( Color( COL_WHITE ) ) );
-
- aWaitDlgTimer.Start();
- }
-
- SetBackground();
- delete pBox;
- pBox = 0L;
- GrabFocus();
- }
- nScore = 0;
- }
-
- }
-
- InitLevel();*/
- }
-}
-
-void MyWindow::InitLevel()
-{
- bStartLevel = TRUE;
- long nWert;
-
- aPaintTimer.SetTimeout(1000);
- nStartLevel = 0;
- pFighter->Init();
- pMunition->ClearAll();
- pBombe->ClearAll();
- pWall->ClearAll();
- pGegner->ClearAll();
- bAuseModus = FALSE;
- nAuseCount = 0;
- pGegner->SetAuseMode(FALSE);
-
- pScoreWindow->SetRockets(5);
- pScoreWindow->SetLives(nFighter);
- pScoreWindow->SetScore(nScore);
- pScoreWindow->SetLevel(nLevel);
-
- if(nLevel > 1)
- {
- pGegner->SetRandWert(pGegner->GetRandWert()+10);
- nTimeOut -= 2;
- if(nTimeOut <= 0)
- nTimeOut = 1;
- }
-
- if(nLevel == 10 || nLevel == 20 || nLevel == 30 || nLevel >= 40)
- {
- pGegner->SetDown(pGegner->GetDown()+2);
- if(pGegner->GetDown() > 30)
- pGegner->SetDown(30);
- }
-
- nWert = nLevel;
- while( nWert > WAVES )
- nWert -= WAVES;
-
- if(!( nLevel % 10 ))
- {
- if(!bGetFighter)
- {
- nFighter++;
- pScoreWindow->SetLives(nFighter);
- bGetFighter = TRUE;
- }
- }
- else
- bGetFighter = FALSE;
-
- long nGegner;
- long nDummy;
-
- if(nLevel < WAVES*2)
- {
- nGegner = waves[nWert-1][0];
- nDummy = nGegner;
- for(long i=0; i<nGegner; i++)
- if ( nLevel > 10 ) pGegner->InsertGegner((USHORT)waves[nWert-1][i*3+1],
- (USHORT)waves[nWert-1][i*3+2],
- (USHORT)waves[nWert-1][i*3+3]);
- else if ( waves[nWert-1][i*3+1] < 4 ) pGegner->InsertGegner((USHORT)waves[nWert-1][i*3+1],
- (USHORT)waves[nWert-1][i*3+2],
- (USHORT)waves[nWert-1][i*3+3]);
- else nDummy--;
-
-
- }
- else
- {
- if(levelpuf[0] != nLevel)
- RandomLevel();
- else
- {
- for(long i=0; i<levelpuf[1]; i++)
- pGegner->InsertGegner(levelpuf[i*3+2],levelpuf[i*3+3],levelpuf[i*3+4]);
- }
- nGegner = levelpuf[1];
- nDummy = nGegner;
- }
-
- BYTE nMauer;
- Point aPoint;
-
- if(nLevel < WAVES*2)
- nMauer = (BYTE)waves[nWert-1][nGegner*3+1];
- else
- nMauer = 0xff;
- if(nMauer & 0x01)
- {
- aPoint = Point(0,340);
- pWall->InsertWall(aPoint);
- }
- if(nMauer & 0x02)
- {
- aPoint = Point(32,340);
- pWall->InsertWall(aPoint);
- }
- if(nMauer & 0x04)
- {
- aPoint = Point(64,340);
- pWall->InsertWall(aPoint);
- }
- if(nMauer & 0x08)
- {
- aPoint = Point(96,340);
- pWall->InsertWall(aPoint);
- }
- if(nMauer & 0x10)
- {
- aPoint = Point(128,340);
- pWall->InsertWall(aPoint);
- }
- if(nMauer & 0x20)
- {
- aPoint = Point(160,340);
- pWall->InsertWall(aPoint);
- }
- if(nMauer & 0x40)
- {
- aPoint = Point(192,340);
- pWall->InsertWall(aPoint);
- }
- if(nMauer & 0x80)
- {
- aPoint = Point(224,340);
- pWall->InsertWall(aPoint);
- }
- if(nLevel < WAVES*2)
- nMauer = (BYTE)waves[nWert-1][nGegner*3+2];
- else
- nMauer = 0xff;
- if(nMauer & 0x01)
- pWall->InsertWall(Point(256,340));
- if(nMauer & 0x02)
- pWall->InsertWall(Point(288,340));
- if(nMauer & 0x04)
- pWall->InsertWall(Point(320,340));
- if(nMauer & 0x08)
- pWall->InsertWall(Point(352,340));
- if(nMauer & 0x10)
- pWall->InsertWall(Point(384,340));
- if(nMauer & 0x20)
- pWall->InsertWall(Point(416,340));
- if(nMauer & 0x40)
- pWall->InsertWall(Point(448,340));
- if(nMauer & 0x80)
- pWall->InsertWall(Point(480,340));
- if(nLevel < WAVES*2)
- nMauer = (BYTE)waves[nWert-1][nGegner*3+3];
- else
- nMauer = 0xff;
- if(nMauer & 0x01)
- pWall->InsertWall(Point(512,340));
- if(nMauer & 0x02)
- pWall->InsertWall(Point(544,340));
- if(nMauer & 0x04)
- pWall->InsertWall(Point(576,340));
- if(nMauer & 0x08)
- pWall->InsertWall(Point(608,340));
-
- nGegner = nDummy;
-
-}
-
-void MyWindow::RandomLevel()
-{
- Time aTime;
-
- srand(aTime.GetTime() % 1000);
-
- long nPos = ranpos[0];
- while(!pGegner->Count())
- {
- for(long i=0; i<nPos ;i++)
- {
-
- int nRan = rand() % 40;
-
- if(nRan < 3)
- pGegner->InsertGegner(GEGNER5,ranpos[i*2+1],ranpos[i*2+2]);
- if(nRan > 2 && nRan < 9)
- pGegner->InsertGegner(GEGNER4,ranpos[i*2+1],ranpos[i*2+2]);
- if(nRan > 8 && nRan < 16)
- pGegner->InsertGegner(GEGNER3,ranpos[i*2+1],ranpos[i*2+2]);
- if(nRan > 15 && nRan < 27)
- pGegner->InsertGegner(GEGNER2,ranpos[i*2+1],ranpos[i*2+2]);
- if(nRan > 26 && nRan < 41)
- pGegner->InsertGegner(GEGNER1,ranpos[i*2+1],ranpos[i*2+2]);
- }
- }
-
- levelpuf[0] = nLevel;
- levelpuf[1] = pGegner->Count();
- unsigned long i;
- for(i=0; i<pGegner->Count(); i++)
- {
- levelpuf[i*3+2] = pGegner->GegType(i);
- levelpuf[i*3+3] = pGegner->GegnerX(i);
- levelpuf[i*3+4] = pGegner->GegnerY(i);
- }
-}
-
diff --git a/goodies/source/inv/makefile.mk b/goodies/source/inv/makefile.mk
deleted file mode 100644
index 500ba17f6091..000000000000
--- a/goodies/source/inv/makefile.mk
+++ /dev/null
@@ -1,159 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.21 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..
-
-PRJNAME=goodies
-TARGET=invader
-TARGETTYPE=GUI
-
-EXTERNAL_WARNINGS_NOT_ERRORS := TRUE
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-.IF "$(L10N_framework)"==""
-
-.IF "$(TEST)" != ""
-CDEFS+=-DTEST
-OBJFILES= \
- $(OBJ)$/invader.obj \
- $(OBJ)$/invader1.obj \
- $(OBJ)$/shapes.obj \
- $(OBJ)$/expl.obj \
- $(OBJ)$/score.obj \
- $(OBJ)$/monst.obj
-.ELSE
-
-SLOFILES= \
- $(SLO)$/invader.obj \
- $(SLO)$/invader1.obj \
- $(SLO)$/shapes.obj \
- $(SLO)$/expl.obj \
- $(SLO)$/score.obj \
- $(SLO)$/monst.obj
-.ENDIF
-.ENDIF
-
-SRS1NAME=$(TARGET)
-SRC1FILES=gegner.src strings.src
-
-RESLIB1IMAGES= $(PRJ)$/res
-RESLIB1NAME=tfu
-RESLIB1SRSFILES=$(SRS)$/invader.srs
-
-
-.IF "$(L10N_framework)"==""
-
-.IF "$(TEST)"!=""
-APP1TARGET= $(TARGET)
-APP1OBJS= $(OBJFILES)
-APP1STDLIBS= $(CPPULIB) \
- $(CPPUHELPERLIB) \
- $(COMPHELPERLIB) \
- $(TOOLSLIB) \
- $(SALLIB) \
- $(VOSLIB) \
- $(SOTLIB) \
- $(VCLLIB)
-
-.ELSE
-
-SHL1TARGET= tfu$(DLLPOSTFIX)
-SHL1IMPLIB= i
-SHL1STDLIBS=\
- $(VCLLIB) \
- $(TOOLSLIB) \
- $(SALLIB)
-
-.IF "$(GUI)"=="WNT"
-SHL1STDLIBS+=\
- $(COMDLG32LIB) \
- $(ADVAPI32LIB)
-.ENDIF
-
-SHL1OBJS=$(SLOFILES)
-
-SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-
-.ENDIF
-# --- Targets -------------------------------------------------------
-.ENDIF
-
-.INCLUDE : target.mk
-
-.IF "$(L10N_framework)"==""
-ALLTAR: \
- $(BIN)$/applicat.rdb
-
-$(BIN)$/applicat.rdb : makefile.mk $(SOLARBINDIR)$/types.rdb
- rm -f $@
- $(GNUCOPY) $(SOLARBINDIR)$/types.rdb $@
- cd $(BIN) && \
- $(REGCOMP) -register -r applicat.rdb \
- -c i18npool.uno$(DLLPOST)
-
-# --- Def-File ---
-
-.IF "$(GUI)"=="WNT"
-
-$(MISC)$/$(SHL1TARGET).def: makefile.mk
- @echo -------------------------------------------
- @echo DEF-File erstellen $@
- @echo LIBRARY $(DLLNAME) >$@
-.IF "$(COM)"!="GCC"
- @echo DESCRIPTION 'Star Cube DLL' >>$@
- @echo DATA READ WRITE NONSHARED >>$@
-.ENDIF
- @echo EXPORTS >>$@
- @echo StartInvader @22 >>$@
-
-.ENDIF
-
-.IF "$(GUI)"=="OS2"
-
-$(MISC)$/$(SHL1TARGET).def: makefile.mk
- @+echo -------------------------------------------
- @+echo DEF-File erstellen $@
- @+echo LIBRARY $(SHL1TARGET) INITINSTANCE TERMINSTANCE >$@
- @+echo DESCRIPTION 'Star Cube DLL' >>$@
- @+echo DATA MULTIPLE >>$@
- @+echo EXPORTS >>$@
- @+echo _StartInvader @22 >>$@
-
-.ENDIF
-
-.ELSE
-pseudo:
-
-.ENDIF
diff --git a/goodies/source/inv/monst.cxx b/goodies/source/inv/monst.cxx
deleted file mode 100644
index 81c1a7edc1bc..000000000000
--- a/goodies/source/inv/monst.cxx
+++ /dev/null
@@ -1,427 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: monst.cxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include <stdlib.h>
-#include "monst.hxx"
-#include "invader.hrc"
-#include "expl.hxx"
-#include "shapes.hxx"
-#include <vcl/outdev.hxx>
-#include <tools/time.hxx>
-
-Gegner::Gegner(Fighter* pFig, Bombe* pBom, ResMgr* pRes) :
- GegnerListe(0,0),
- pBitMonst1(0L),
- pBitMonst2(0L),
- pBitMonst3(0L),
- pBitMonst4(0L),
- pBitMonst1b(0L),
- pBitMonst2b(0L),
- pBitMonst3b(0L),
- pBitMonst4b(0L),
- pBitMonst5(0L),
- pBitMonst5a(0L),
- pBitMonst5b(0L),
- pBombe(pBom),
- pFighter(pFig),
- bDown(FALSE),
- bLeft(TRUE),
- bAuseMode(FALSE),
- nDown(MOVEY)
-{
- pBitMonst1 = ImplLoadImage( MONSTER1, pRes );
- pBitMonst2 = ImplLoadImage( MONSTER2, pRes );
- pBitMonst3 = ImplLoadImage( MONSTER3, pRes );
- pBitMonst4 = ImplLoadImage( MONSTER4, pRes );
- pBitMonst1b = ImplLoadImage( MONSTER1B, pRes );
- pBitMonst2b = ImplLoadImage( MONSTER2B, pRes );
- pBitMonst3b = ImplLoadImage( MONSTER3B, pRes );
- pBitMonst4b = ImplLoadImage( MONSTER4B, pRes );
- pBitMonst5 = ImplLoadImage( MONSTER5, pRes );
- pBitMonst5a = ImplLoadImage( MONSTER5A, pRes );
- pBitMonst5b = ImplLoadImage( MONSTER5B, pRes );
-
- aOutSize = pBitMonst1->GetSizePixel();
-
- SetRandWert( 100 );
-}
-
-Gegner::~Gegner()
-{
- ClearAll();
-
- delete pBitMonst1;
- delete pBitMonst2;
- delete pBitMonst3;
- delete pBitMonst4;
- delete pBitMonst1b;
- delete pBitMonst2b;
- delete pBitMonst3b;
- delete pBitMonst4b;
- delete pBitMonst5;
- delete pBitMonst5a;
- delete pBitMonst5b;
-}
-
-void Gegner::InsertGegner(long nType, long x, long y)
-{
- Gegner_Impl* pWork = new Gegner_Impl();
-
- pWork->aType = (enum GegnerType)nType;
- pWork->aMode = MOVE1;
- pWork->aXY = Point(x,y);
- pWork->aX = x;
- pWork->nHits = 0;
- switch(pWork->aType)
- {
- case GEGNER1:
- pWork->nPoints = 50;
- pWork->nMaxHits = 1;
- break;
- case GEGNER2:
- pWork->nPoints = 75;
- pWork->nMaxHits = 2;
- break;
- case GEGNER3:
- pWork->nPoints = 150;
- pWork->nMaxHits = 3;
- break;
- case GEGNER4:
- pWork->nPoints = 225;
- pWork->nMaxHits = 5;
- break;
- case GEGNER5:
- pWork->nPoints = 500;
- pWork->nMaxHits = 3;
- pWork->aMode = HIDE;
- break;
- }
-
- Insert(pWork);
-}
-
-void Gegner::Move()
-{
- BOOL bNextDown = FALSE;
- unsigned long i;
- for(i=0; i<Count(); i++)
- {
- if(bDown)
- {
- SetGegnerPos(i,Point(GegnerX(i),GegnerY(i)+nDown));
-
- }
- else if(bLeft)
- {
- SetGegnerPos(i,Point(GegnerX(i)+MOVEX,GegnerY(i)));
- if(GegnerX(i)+MOVEX+aOutSize.Width() > nMaxX)
- bNextDown = TRUE;
- }
- else
- {
- SetGegnerPos(i,Point(GegnerX(i)-MOVEX,GegnerY(i)));
- if(GegnerX(i)-MOVEX <= 0)
- bNextDown = TRUE;
- }
-
- }
-
- if(bDown)
- {
- if(bLeft)
- bLeft = FALSE;
- else
- bLeft = TRUE;
- }
-
- bDown = FALSE;
- if(bNextDown)
- bDown = TRUE;
-}
-
-void Gegner::DrawGegner(OutputDevice* pDev,Point* pStart)
-{
-
- Time aTime;
- srand(aTime.GetTime() % 1000);
-
- nMaxX = pDev->GetOutputSizePixel().Width()-pStart->X();
- unsigned long i;
- for(i=0; i<Count();i++)
- {
- switch(GegType(i))
- {
- case GEGNER1:
- if(GegMode(i) == MOVE1)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst1);
- SetMode(i,MOVE2);
- }
- else if(GegMode(i) == MOVE2)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst1b);
- SetMode(i,MOVE1);
- }
- break;
- case GEGNER2:
- if(GegMode(i) == MOVE1)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst2);
- SetMode(i,MOVE2);
- }
- else if(GegMode(i) == MOVE2)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst2b);
- SetMode(i,MOVE1);
- }
- break;
- case GEGNER3:
- if(GegMode(i) == MOVE1)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst3);
- SetMode(i,MOVE2);
- }
- else if(GegMode(i) == MOVE2)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst3b);
- SetMode(i,MOVE1);
- }
- break;
- case GEGNER4:
- if(GegMode(i) == MOVE1)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst4);
- SetMode(i,MOVE2);
- }
- else if(GegMode(i) == MOVE2)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst4b);
- SetMode(i,MOVE1);
- }
- break;
- case GEGNER5:
- if(GegMode(i) == MOVE1)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst5);
- DecDelay(i);
- if(!GetDelay(i))
- {
- SetDelay(i);
- SetMode(i,MOVE2);
- }
- }
- if(GegMode(i) == MOVE2)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst5a);
- DecDelay(i);
- if(!GetDelay(i))
- {
- SetDelay(i);
- SetMode(i,MOVE3);
- }
- }
- if(GegMode(i) == MOVE3)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst5b);
- DecDelay(i);
- pBombe->InsertBombe(Point(GegnerX(i),
- GegnerY(i)+aOutSize.Height()/2));
- if(!GetDelay(i))
- {
- SetDelay(i);
- SetMode(i,MOVE4);
- }
- }
- if(GegMode(i) == MOVE4)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst5a);
- DecDelay(i);
- if(!GetDelay(i))
- {
- SetDelay(i);
- if ( rand() % 5 < 2 )
- SetMode(i,MOVE3);
- else
- SetMode(i,MOVE5);
- }
- }
- if(GegMode(i) == MOVE5)
- {
- pDev->DrawImage(Point(pStart->X()+GegnerX(i),
- pStart->Y()+GegnerY(i)),*pBitMonst5);
- DecDelay(i);
- if(!GetDelay(i))
- {
- if ( rand() % 5 < 2 )
- {
- SetMode(i,MOVE1);
- SetDelay(i);
- }
- else
- SetMode(i,HIDE);
- }
- }
- break;
-
- }
-
- SetKoll(i,Rectangle(Point(GegnerX(i)+KOLLXY,GegnerY(i)+KOLLXY),
- Point(GegnerX(i)+aOutSize.Width()-KOLLXY,
- GegnerY(i)+aOutSize.Height()-KOLLXY)));
-
- if(bAuseMode && GegMode(i) == MOVE1)
- {
- if(GegnerX(i) < pFighter->GetHalf() &&
- GegnerX(i)+aOutSize.Width() > pFighter->GetHalf())
- pBombe->InsertBombe(Point(pFighter->GetPoint().X(),
- GegnerY(i)+aOutSize.Height()/2));
- }
- else
- {
- int ran = rand();
-
- int nScaledLimit;
- // NOTE: the two expressions are the same in floatingpoint but not in integer
-
- int nRandMax = RAND_MAX;
- if ( nRandMax < 32767 )
- nScaledLimit = GetRandWert() / ( 32767 / nRandMax );
- else
- nScaledLimit = GetRandWert() * ( nRandMax / 32767);
-
- if(GegType(i) != GEGNER5)
- {
- if(ran < nScaledLimit )
- pBombe->InsertBombe(Point(GegnerX(i),
- GegnerY(i)+aOutSize.Height()/2));
- }
- else if(GegMode(i) == HIDE)
- {
- if(ran < (nScaledLimit *3) /2)
- {
- SetMode(i,MOVE1);
- SetDelay(i);
- }
- }
- }
- }
-
- Move();
-}
-
-long Gegner::Kollision(Rectangle& rRect, Explosion* pExpl)
-{
- long nWert = -1;
-
- Rectangle aWork;
-
- unsigned long i;
- for( i=0; i<Count();i++)
- {
- aWork = GegnerKoll(i);
- if((aWork.Left() <= rRect.Left() && aWork.Right() >= rRect.Right()) &&
- (aWork.Top() <= rRect.Top() && aWork.Bottom() >= rRect.Bottom()) &&
- GegMode(i) != DELETED)
- {
- nWert = 0;
- if(GegnerDest(i))
- {
- SetMode(i,DELETED);
- if(nWert == -1)
- nWert = GegnerPoints(i);
- else
- nWert += GegnerPoints(i);
- }
-
- pExpl->InsertExpl(GegnerPos(i));
-
- }
- }
-
- return nWert;
-}
-
-BOOL Gegner::GegnerDest(long nWert)
-{
- GegnerHit(nWert);
- if(GetObject(nWert)->nHits >= GetObject(nWert)->nMaxHits)
- return TRUE;
-
- return FALSE;
-}
-
-Rectangle Gegner::GetKoll(long nWert)
-{
- return Rectangle(Point(GegnerX(nWert)+aOutSize.Width()/2,
- GegnerY(nWert)+aOutSize.Height()),
- Point(GegnerX(nWert)+aOutSize.Width()/2,
- GegnerY(nWert)+aOutSize.Height()));
-}
-
-BOOL Gegner::RemoveGegner()
-{
- for(long i=Count()-1; i>=0; i--)
- {
- Gegner_Impl* pWork = GetObject(i);
-
- if(pWork->aMode == DELETED)
- {
- Remove(pWork);
- delete pWork;
- }
- }
- if(Count())
- return FALSE;
- else
- return TRUE;
-}
-
-void Gegner::ClearAll()
-{
- unsigned long i;
- for( i=0; i<Count(); i++ )
- delete GetObject(i);
-
- Clear();
-}
diff --git a/goodies/source/inv/monst.hxx b/goodies/source/inv/monst.hxx
deleted file mode 100644
index ff29bbd6a3fd..000000000000
--- a/goodies/source/inv/monst.hxx
+++ /dev/null
@@ -1,135 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: monst.hxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _MONST_HXX
-#define _MONST_HXX
-
-enum GegnerType { GEGNER1, GEGNER2, GEGNER3, GEGNER4, GEGNER5 };
-enum GegnerMode { MOVE1, MOVE2, MOVE3, MOVE4, MOVE5, DELETED, HIDE };
-
-#define DIFFX 20
-#define DIFFY 20
-#define MOVEX 10
-#define MOVEY 10
-#define KOLLXY 2
-
-#include <tools/list.hxx>
-#include <vcl/image.hxx>
-#include <tools/gen.hxx>
-#include <vcl/outdev.hxx>
-
-struct Gegner_Impl
-{
- Point aXY;
- long nRow;
- long aX;
- long nDiffX;
- long nPoints;
- long nMaxHits;
- long nHits;
- long nDelay;
- GegnerType aType;
- GegnerMode aMode;
- Rectangle aKoll;
-};
-
-DECLARE_LIST(GegnerListe,Gegner_Impl*)
-
-class Explosion;
-class Bombe;
-class Fighter;
-
-class Gegner : public GegnerListe
-{
- private:
- long nRows;
- long nGegnerRow;
- long nMaxX;
- Size aOutSize;
- Image* pBitMonst1;
- Image* pBitMonst2;
- Image* pBitMonst3;
- Image* pBitMonst4;
- Image* pBitMonst1b;
- Image* pBitMonst2b;
- Image* pBitMonst3b;
- Image* pBitMonst4b;
- Image* pBitMonst5;
- Image* pBitMonst5a;
- Image* pBitMonst5b;
- Bombe* pBombe;
- Fighter* pFighter;
-
- BOOL bDown;
- BOOL bLeft;
- BOOL bAuseMode;
- long nRandWert;
- long nDown;
-
- public:
- Gegner(Fighter* pFighter, Bombe* pBombe, ResMgr* pRes);
- ~Gegner();
-
- void InsertGegner(long nType, long x, long y);
- void DrawGegner(OutputDevice* pDev, Point* pStart);
- void Move();
- void SetRandWert(long nWert) { nRandWert = nWert; }
- long GetRandWert() { return nRandWert; }
- long GegnerX(long nWert) { return GetObject(nWert)->aXY.X(); }
- long GegnerXStart(long nWert) { return GetObject(nWert)->aX; }
- long GegnerY(long nWert) { return GetObject(nWert)->aXY.Y(); }
- GegnerType GegType(long nWert)
- { return GetObject(nWert)->aType; }
- GegnerMode GegMode(long nWert)
- { return GetObject(nWert)->aMode; }
- void SetMode(long nWert, enum GegnerMode nMode)
- { GetObject(nWert)->aMode = nMode; }
- void SetGegnerPos(long nWert, const Point& rPoint)
- { GetObject(nWert)->aXY = rPoint;}
- long GegnerDiffX(long nWert) { return GetObject(nWert)->nDiffX; }
- Rectangle& GegnerKoll(long nWert) { return GetObject(nWert)->aKoll; }
- Rectangle GetKoll(long nWert);
- void SetKoll(long nWert, const Rectangle& rRect)
- { GetObject(nWert)->aKoll = rRect; }
- long Kollision(Rectangle& rRect, Explosion* pExplosion);
- Point& GegnerPos(long nWert) { return GetObject(nWert)->aXY; }
- BOOL RemoveGegner();
- void ClearAll();
- long GegnerPoints(long nWert) { return GetObject(nWert)->nPoints; }
- void GegnerHit(long nWert) { GetObject(nWert)->nHits++; }
- BOOL GegnerDest(long nWert);
- void SetDown(long nWert) { nDown = nWert; }
- long GetDown() { return nDown; }
- void SetAuseMode(BOOL bFlag) { bAuseMode = bFlag; }
- void SetDelay(long nWert) { GetObject(nWert)->nDelay = 3; }
- long GetDelay(long nWert) { return GetObject(nWert)->nDelay; }
- void DecDelay(long nWert) { GetObject(nWert)->nDelay--; }
-};
-
-#endif
diff --git a/goodies/source/inv/score.cxx b/goodies/source/inv/score.cxx
deleted file mode 100644
index 6ff3abcbb90d..000000000000
--- a/goodies/source/inv/score.cxx
+++ /dev/null
@@ -1,155 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: score.cxx,v $
- * $Revision: 1.10 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include "score.hxx"
-#include "strings.hrc"
-#include "invader.hxx"
-
-ScoreWindow::ScoreWindow(Window* Parent, WinBits wBits, ResMgr* pP) :
- Window(Parent, wBits),
- nHero(-1),
- nRockets(5),
- nLives(3),
- nScore(0L),
- pRes(pP),
- bPaintBack(FALSE)
-{
- SetBackground(Wallpaper( Color( COL_GRAY ) ) );
-}
-
-ScoreWindow::~ScoreWindow()
-{
-}
-
-void ScoreWindow::Paint(const Rectangle&)
-{
- Font aFont = GetFont();
- aFont.SetColor(COL_WHITE);
- aFont.SetFillColor(COL_GRAY);
- SetFont(*&aFont);
-
- SetFillColor(COL_GRAY);
-
- if(bPaintBack)
- {
- Push( PUSH_LINECOLOR );
- SetLineColor();
- DrawRect(Rectangle(Point(0,0),GetOutputSizePixel()));
- Pop();
- }
-
- if(nHero)
- DrawText(Point(0,0),String(ResId(nHero, *pRes)));
-
- DrawText(Point(180,0),String(ResId(STR_ROCKETS, *pRes)));
-
- DrawText(Point(300,0),String(ResId(STR_FIGHTER, *pRes)));
- DrawText(Point(370,0),String::CreateFromInt32(nLives));
-
- DrawText(Point(400,0),String(ResId(STR_LEVEL, *pRes)));
- DrawText(Point(460,0),String::CreateFromInt32(nLevel));
-
- DrawText(Point(500,0),String(ResId(STR_SCORE, *pRes)));
- String aString = String::CreateFromInt32(nScore);
- if ( aString.Len() < 7 )
- {
- for ( xub_StrLen i = aString.Len(); i < 7; ++i )
- aString.Insert( '0', 0 );
- }
- DrawText(Point(560,0),aString);
-
- for(long i=0; i<5;i++)
- {
- if(nRockets > i)
- {
- SetLineColor(COL_GREEN);
- SetFillColor(COL_GREEN);
- }
- else
- {
- SetLineColor(COL_RED);
- SetFillColor(COL_RED);
- }
-
- DrawRect(Rectangle(Point(250+i*8,5),Point(256+i*8,12)));
- }
- SetBackground(Wallpaper( Color( COL_GRAY ) ) );
-
- bPaintBack = FALSE;
-}
-
-void ScoreWindow::SetHero(long nName)
-{
- nHero = nName;
-
- SetBackground();
- Invalidate();
-}
-
-void ScoreWindow::SetRockets(long nWert)
-{
- nRockets = nWert;
-
- SetBackground();
- Invalidate();
-}
-
-void ScoreWindow::SetLives(long nWert)
-{
- nLives = nWert;
-
-// SetBackground();
- Invalidate();
-}
-
-void ScoreWindow::SetScore(long nWert)
-{
- nScore = nWert;
-
- SetBackground();
- Invalidate();
-}
-
-void ScoreWindow::SetLevel(long nWert)
-{
- nLevel = nWert;
-
-// SetBackground();
- Invalidate();
-}
-
-void ScoreWindow::ShowMe()
-{
- bPaintBack = TRUE;
-
- Window::Show();
-}
diff --git a/goodies/source/inv/score.hxx b/goodies/source/inv/score.hxx
deleted file mode 100644
index ec09135550f0..000000000000
--- a/goodies/source/inv/score.hxx
+++ /dev/null
@@ -1,61 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: score.hxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _SCORE_HXX
-#define _SCORE_HXX
-
-
-#include <vcl/window.hxx>
-
-class ScoreWindow : public Window
-{
- private:
- long nHero;
- long nRockets;
- long nLives;
- long nScore;
- long nLevel;
- ResMgr* pRes;
-
- BOOL bPaintBack;
-
- public:
- ScoreWindow(Window* pParent, WinBits bits,ResMgr* pRes);
- ~ScoreWindow();
- virtual void Paint(const Rectangle& rRect);
- void SetHero(long nName);
- void SetRockets(long nWert);
- void SetLives(long nWert);
- void SetScore(long nWert);
- void SetLevel(long nWert);
-
- void ShowMe();
-};
-
-#endif
diff --git a/goodies/source/inv/shapes.cxx b/goodies/source/inv/shapes.cxx
deleted file mode 100644
index 87c09c928a1b..000000000000
--- a/goodies/source/inv/shapes.cxx
+++ /dev/null
@@ -1,485 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: shapes.cxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include "shapes.hxx"
-#include "invader.hrc"
-#include "expl.hxx"
-#include <vcl/outdev.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/bitmap.hxx>
-
-Image* ImplLoadImage( USHORT nId, ResMgr* pRes )
-{
- return new Image( Bitmap( ResId( nId, *pRes ) ), COL_WHITE );
-}
-
-// ------------------------------------------------------------------------
-
-Fighter::Fighter(Size& rOut, ResMgr* pRes) :
- pFightr(NULL),
- pFightl(NULL),
- eMode(FIGHT_NORM),
- bNoKey(FALSE),
- nDelay(0),
- pFight1(NULL)
-{
- pFight1 = ImplLoadImage( FIGHTER1, pRes );
- pFightr = ImplLoadImage( FIGHTERR, pRes );
- pFightl = ImplLoadImage( FIGHTERL, pRes );
-
- aSize = pFight1->GetSizePixel();
-
- aOut.X() = rOut.Width()/2-aSize.Width()/2;
- aOut.Y() = rOut.Height()-aSize.Height()-10;
-
- aStart = aOut;
-
- nMax = rOut.Width() - aSize.Width();
-}
-
-Fighter::~Fighter()
-{
-
- delete pFight1;
- delete pFightr;
- delete pFightl;
-}
-
-void Fighter::Init()
-{
- aOut = aStart;
- eMode = FIGHT_NORM;
-}
-
-void Fighter::Paint(OutputDevice& rDev)
-{
- if(eMode == FIGHT_DEST)
- return;
-
- switch(eMode)
- {
- case FIGHT_NORM:
- rDev.DrawImage(aOut,*pFight1);
- break;
- case FIGHT_RIGHT:
- rDev.DrawImage(aOut,*pFightr);
- break;
- case FIGHT_LEFT:
- rDev.DrawImage(aOut,*pFightl);
- break;
- case FIGHT_DEST:
- break;
- }
-
- if(nDelay <= 0)
- eMode = FIGHT_NORM;
- else
- nDelay--;
-
- bNoKey = FALSE;
-}
-
-void Fighter::Move(long nDirect)
-{
- if(eMode == FIGHT_DEST)
- return;
-
- if(nDirect < 0)
- {
- aOut.X() -= KANONEX;
- eMode = FIGHT_LEFT;
- }
- else
- {
- aOut.X() += KANONEX;
- eMode = FIGHT_RIGHT;
- }
-
- nDelay = 5;
-
- if(aOut.X() <= 0)
- aOut.X() = 1;
- if(aOut.X() > nMax)
- aOut.X() = nMax;
-
- bNoKey = TRUE;
-}
-
-BOOL Fighter::Kollision(Rectangle aRect, Explosion* pExpl)
-{
- if((aOut.X() <= aRect.Left() && aOut.X()+aSize.Width() >= aRect.Right()) &&
- (aOut.Y() <= aRect.Top() && aOut.Y()+aSize.Height() >= aRect.Bottom()))
- {
- pExpl->InsertExpl(aOut);
- eMode = FIGHT_DEST;
- return TRUE;
- }
-
- return FALSE;
-}
-
-Munition::Munition(ResMgr* pRes) :
- MunitionListe(0,1),
- pMunition2( NULL ),
- pMunition1( NULL )
-{
- pMunition1 = ImplLoadImage( MUNITION1,pRes );
- pMunition2 = ImplLoadImage( MUNITION2,pRes );
-
- aSize = pMunition1->GetSizePixel();
-}
-
-Munition::~Munition()
-{
- ClearAll();
-
- delete pMunition1;
- delete pMunition2;
-}
-
-void Munition::Start(Point& rPoint)
-{
- if( Count() >= MUNMAX)
- return;
-
-
- Munition_Impl* pWork = new Munition_Impl();
-
- pWork->aPoint = rPoint;
- pWork->eMode = MUNI_MODE1;
-
- Insert(pWork);
-}
-
-void Munition::Paint(OutputDevice& rDev)
-{
- unsigned long i;
- for(i=0; i<Count();i++)
- {
- switch(GetMode(i))
- {
- case MUNI_MODE1:
- rDev.DrawImage(GetPoint(i),*pMunition1);
- SetMode(i,MUNI_MODE2);
- break;
- case MUNI_MODE2:
- rDev.DrawImage(GetPoint(i),*pMunition2);
- SetMode(i,MUNI_MODE1);
- break;
- case MUNI_DEL:
- break;
- }
-
- SetKoll(i,Rectangle(Point(GetPoint(i).X()+aSize.Width()/2,GetPoint(i).Y()),
- Point(GetPoint(i).X()+aSize.Width()/2,
- GetPoint(i).Y())));
-
-
- SetPoint(i,Point(GetPoint(i).X(),GetPoint(i).Y() - MUNIY));
- if(GetPoint(i).Y() <= aSize.Height()*-1)
- {
- SetMode(i,MUNI_DEL);
- }
- }
-}
-
-long Munition::RemoveMunition()
-{
- for(long i=Count()-1; i>=0; i--)
- {
- if(GetMode(i) == MUNI_DEL)
- {
- Munition_Impl* pWork = GetObject(i);
- Remove(pWork);
- delete pWork;
- }
- }
-
- return 5-Count();
-}
-
-void Munition::ClearAll()
-{
- for(long i=Count()-1; i>=0; i--)
- delete GetObject(i);
-
- Clear();
-}
-
-Bombe::Bombe(ResMgr* pRes) :
- BombenListe(0,1)
-{
- pBombe = ImplLoadImage( BOMBE,pRes );
-
- aSize = pBombe->GetSizePixel();
- nSpeed = BOMBEY;
-}
-
-Bombe::~Bombe()
-{
- ClearAll();
-
- delete pBombe;
-}
-
-void Bombe::Paint(OutputDevice& rDev)
-{
- unsigned long i;
- for(i=0; i<Count();i++)
- {
- rDev.DrawImage(GetPoint(i),*pBombe);
- SetKoll(i,Rectangle(Point(GetPoint(i).X()+aSize.Width()/2,
- GetPoint(i).Y()+aSize.Height()),
- Point(GetPoint(i).X()+aSize.Width()/2,
- GetPoint(i).Y()+aSize.Height())));
-
- SetPoint(i,Point(GetPoint(i).X(),GetPoint(i).Y() + MUNIY));
- }
-}
-
-void Bombe::InsertBombe(const Point& rPoint)
-{
- Bombe_Impl* pWork = new Bombe_Impl;
- pWork->aXY = rPoint;
- pWork->bDelete = FALSE;
- Insert(pWork);
-}
-
-void Bombe::RemoveBomben()
-{
- for(long i=Count()-1; i>=0; i--)
- {
- Bombe_Impl* pWork = GetObject(i);
- if(pWork->bDelete)
- {
- Remove(pWork);
- delete pWork;
- }
- }
-}
-
-void Bombe::ClearAll()
-{
- unsigned long i;
- for(i=0;i<Count();i++)
- delete GetObject(i);
- Clear();
-}
-
-BOOL Bombe::Kollision(Rectangle aRect, Explosion* pExpl)
-{
- unsigned long i;
- for(i=0;i<Count();i++)
- {
- if((GetPoint(i).X() <= aRect.Left() && GetPoint(i).X()+aSize.Width() >= aRect.Right()) &&
- (GetPoint(i).Y() <= aRect.Top() && GetPoint(i).Y()+aSize.Height() >= aRect.Bottom()))
- {
- pExpl->InsertExpl(GetPoint(i));
- SetDelete(i);
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-Wall::Wall(ResMgr* pRes) :
- WallListe(0,1),
- pWall1(0L),
- pWall2(0L),
- pWall3(0L),
- pWall4(0L),
- pWall5(0L),
- pWall6(0L),
- pWall7(0L),
- pWall8(0L),
- pWall9(0L),
- pWall10(0L)
-{
- pWall1 = ImplLoadImage( WALL1,pRes );
- pWall2 = ImplLoadImage( WALL2,pRes );
- pWall3 = ImplLoadImage( WALL3,pRes );
- pWall4 = ImplLoadImage( WALL4,pRes );
- pWall5 = ImplLoadImage( WALL5,pRes );
- pWall6 = ImplLoadImage( WALL6,pRes );
- pWall7 = ImplLoadImage( WALL7,pRes );
- pWall8 = ImplLoadImage( WALL8,pRes );
- pWall9 = ImplLoadImage( WALL9,pRes );
- pWall10 = ImplLoadImage( WALL10,pRes );
-
- aSize = pWall1->GetSizePixel();
-}
-
-Wall::~Wall()
-{
- ClearAll();
-
- delete pWall1;
- delete pWall2;
- delete pWall3;
- delete pWall4;
- delete pWall5;
- delete pWall6;
- delete pWall7;
- delete pWall8;
- delete pWall9;
- delete pWall10;
-}
-
-void Wall::Paint(OutputDevice& rDev)
-{
- unsigned long i;
- for(i=0; i<Count(); i++)
- {
- switch(GetMode(i))
- {
- case WALL_MOD1:
- rDev.DrawImage(GetPoint(i),*pWall1);
- break;
- case WALL_MOD2:
- rDev.DrawImage(GetPoint(i),*pWall2);
- break;
- case WALL_MOD3:
- rDev.DrawImage(GetPoint(i),*pWall3);
- break;
- case WALL_MOD4:
- rDev.DrawImage(GetPoint(i),*pWall4);
- break;
- case WALL_MOD5:
- rDev.DrawImage(GetPoint(i),*pWall5);
- break;
- case WALL_MOD6:
- rDev.DrawImage(GetPoint(i),*pWall6);
- break;
- case WALL_MOD7:
- rDev.DrawImage(GetPoint(i),*pWall7);
- break;
- case WALL_MOD8:
- rDev.DrawImage(GetPoint(i),*pWall8);
- break;
- case WALL_MOD9:
- rDev.DrawImage(GetPoint(i),*pWall9);
- break;
- case WALL_MOD10:
- rDev.DrawImage(GetPoint(i),*pWall10);
- break;
- case WALL_DEL:
- break;
- }
-
- }
-}
-
-void Wall::InsertWall(const Point& rPoint)
-{
- Wall_Impl* pWork = new Wall_Impl();
-
- pWork->aXY = rPoint;
- pWork->aXY.Y() = WALLY;
- pWork->eMode = WALL_MOD1;
-
- Insert(pWork);
-}
-
-void Wall::ClearAll()
-{
- unsigned long i;
- for(i=0; i<Count(); i++)
- delete GetObject(i);
-
- Clear();
-}
-
-BOOL Wall::Kollision(Rectangle& rRect, BOOL bDel)
-{
- BOOL nTreffer = FALSE;
-
- Rectangle aWork;
-
- unsigned long i;
- for(i=0; i<Count();i++)
- {
-
- Point aPoint = GetPoint(i);
- aWork = Rectangle(Point(aPoint.X(),aPoint.Y()-WALLKOLL),
- Point(aPoint.X()+aSize.Width(),
- aPoint.Y()+aSize.Height()-WALLKOLL));
-
- if((aWork.Left() <= rRect.Left() && aWork.Right() >= rRect.Right()) &&
- (aWork.Top() <= rRect.Top() && aWork.Bottom() >= rRect.Bottom()) &&
- GetMode(i) != WALL_DEL)
- {
- switch(GetMode(i))
- {
- case WALL_MOD1:
- SetMode(i,WALL_MOD2);
- break;
- case WALL_MOD2:
- SetMode(i,WALL_MOD3);
- break;
- case WALL_MOD3:
- SetMode(i,WALL_MOD4);
- break;
- case WALL_MOD4:
- SetMode(i,WALL_MOD5);
- break;
- case WALL_MOD5:
- SetMode(i,WALL_MOD6);
- break;
- case WALL_MOD6:
- SetMode(i,WALL_MOD7);
- break;
- case WALL_MOD7:
- SetMode(i,WALL_MOD8);
- break;
- case WALL_MOD8:
- SetMode(i,WALL_MOD9);
- break;
- case WALL_MOD9:
- SetMode(i,WALL_MOD10);
- break;
- case WALL_MOD10:
- SetMode(i,WALL_DEL);
- break;
- case WALL_DEL:
- break;
- }
-
- if(bDel)
- SetMode(i,WALL_DEL);
-
- nTreffer = TRUE;
- }
- }
-
- return nTreffer;
-}
diff --git a/goodies/source/inv/shapes.hxx b/goodies/source/inv/shapes.hxx
deleted file mode 100644
index b94b93e905fc..000000000000
--- a/goodies/source/inv/shapes.hxx
+++ /dev/null
@@ -1,194 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: shapes.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _SHAPES_HXX
-#define _SHAPES_HXX
-
-
-#include <vcl/image.hxx>
-#include <vcl/outdev.hxx>
-
-#define KANONEX 10
-#define BOMBEY 20
-#define MUNIXY 10
-#define BOMBXY 5
-#define WALLY 400
-#define WALLKOLL 8
-
-Image* ImplLoadImage( USHORT nId, ResMgr* pRes );
-
-enum FighterMode { FIGHT_NORM, FIGHT_RIGHT, FIGHT_LEFT, FIGHT_DEST};
-
-class Explosion;
-
-class Fighter
-{
- private:
- Image* pFightr;
- Image* pFightl;
- Point aOut;
- Point aStart;
- long nMax;
- FighterMode eMode;
- BOOL bNoKey;
- Size aSize;
- long nDelay;
-
- public:
-
- Image* pFight1;
-
- Fighter(Size& rOut, ResMgr* pRes);
- ~Fighter();
- void Paint(OutputDevice& pDev);
- void Move(long nDirect);
- Point& GetPoint() { return aOut; }
- BOOL Kollision(Rectangle, Explosion* pExpl);
- void Init();
- void NoFighter() { eMode = FIGHT_DEST; }
- long GetHalf() { return aOut.X()+aSize.Width()/2; }
-};
-
-enum MuniMode { MUNI_DEL, MUNI_MODE1, MUNI_MODE2 };
-
-#define MUNIY 10
-#define MUNMAX 5
-
-struct Munition_Impl
-{
- MuniMode eMode;
- Point aPoint;
- Rectangle aKoll;
-};
-
-DECLARE_LIST(MunitionListe,Munition_Impl*)
-
-class Munition : public MunitionListe
-{
- private:
- Image* pMunition2;
- Size aSize;
-
- public:
-
- Image* pMunition1;
-
- Munition(ResMgr* pRes);
- ~Munition();
- void Paint(OutputDevice& rDev);
- void Start(Point& rPoint);
- void SetDelete(long nWert) { GetObject(nWert)->eMode = MUNI_DEL; }
- Rectangle GetKoll(long nWert) { return GetObject(nWert)->aKoll; }
- void SetKoll(long nWert, Rectangle aRect)
- { GetObject(nWert)->aKoll = aRect; }
- MuniMode GetMode(long nWert) { return GetObject(nWert)->eMode; }
- void SetMode(long nWert, enum MuniMode mode)
- { GetObject(nWert)->eMode = mode; }
- void SetPoint(long nWert, const Point& rPoint)
- { GetObject(nWert)->aPoint = rPoint; }
- Point GetPoint(long nWert) { return GetObject(nWert)->aPoint; }
- long RemoveMunition();
- void ClearAll();
-};
-
-struct Bombe_Impl
-{
- Point aXY;
- Rectangle aKoll;
- BOOL bDelete;
-};
-
-DECLARE_LIST(BombenListe, Bombe_Impl*)
-
-class Bombe : public BombenListe
-{
- private:
- Image* pBombe;
- Size aSize;
- long nSpeed;
-
- public:
- Bombe(ResMgr* pRes);
- ~Bombe();
- void Paint(OutputDevice& rDev);
- Point& GetPoint(long nWert) { return GetObject(nWert)->aXY; }
- void SetPoint(long nWert, const Point& rPoint)
- { GetObject(nWert)->aXY = rPoint; }
- void InsertBombe(const Point& rPoint);
- Rectangle GetKoll(long nWert) { return GetObject(nWert)->aKoll; }
- void SetKoll(long nWert, Rectangle aRect)
- { GetObject(nWert)->aKoll = aRect; }
- void SetDelete(long nWert) { GetObject(nWert)->bDelete = TRUE; }
- void RemoveBomben();
- void SetSpeed(long nWert) { nSpeed = nWert; }
- void ClearAll();
- BOOL Kollision(Rectangle aRect, Explosion* pExpl);
-};
-
-enum WallMode { WALL_MOD1, WALL_MOD2, WALL_MOD3, WALL_MOD4, WALL_MOD5,
- WALL_MOD6, WALL_MOD7, WALL_MOD8, WALL_MOD9, WALL_MOD10,
- WALL_DEL };
-struct Wall_Impl
-{
- Point aXY;
- WallMode eMode;
-};
-
-DECLARE_LIST(WallListe, Wall_Impl*)
-
-class Wall : public WallListe
-{
- private:
- Image* pWall1;
- Image* pWall2;
- Image* pWall3;
- Image* pWall4;
- Image* pWall5;
- Image* pWall6;
- Image* pWall7;
- Image* pWall8;
- Image* pWall9;
- Image* pWall10;
- Size aSize;
-
- public:
- Wall(ResMgr* pRes);
- ~Wall();
-
- void Paint(OutputDevice& pDev);
- WallMode GetMode(long nWert) { return GetObject(nWert)->eMode; }
- void SetMode(long nWert, enum WallMode Mode)
- { GetObject(nWert)->eMode = Mode; }
- Point GetPoint(long nWert) { return GetObject(nWert)->aXY; }
- void InsertWall(const Point& rPoint);
- void ClearAll();
- BOOL Kollision(Rectangle& rRect, BOOL bDel);
-};
-
-#endif
diff --git a/goodies/source/inv/strings.hrc b/goodies/source/inv/strings.hrc
deleted file mode 100644
index 968f84471263..000000000000
--- a/goodies/source/inv/strings.hrc
+++ /dev/null
@@ -1,57 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: strings.hrc,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#define STR_BASE 7000
-#define STR_APP_TITLE (STR_BASE+1)
-#define STR_HERO1 (STR_BASE+2)
-#define STR_HERO2 (STR_BASE+3)
-#define STR_HERO3 (STR_BASE+4)
-#define STR_HERO4 (STR_BASE+5)
-#define STR_HERO5 (STR_BASE+6)
-#define STR_LEVELSTART (STR_BASE+7)
-#define STR_NAME1 (STR_BASE+8)
-#define STR_NAME2 (STR_BASE+9)
-#define STR_NAME3 (STR_BASE+10)
-#define STR_NAME4 (STR_BASE+11)
-#define STR_NAME5 (STR_BASE+12)
-#define STR_ROCKETS (STR_BASE+13)
-#define STR_FIGHTER (STR_BASE+14)
-#define STR_SCORE (STR_BASE+15)
-#define STR_LEVEL (STR_BASE+16)
-#define STR_GRAT1 (STR_BASE+17)
-#define STR_GRAT2 (STR_BASE+18)
-#define STR_FIGHTDEST1 (STR_BASE+19)
-#define STR_FIGHTDEST2 (STR_BASE+20)
-#define STR_GAMEOVER (STR_BASE+21)
-#define STR_HIGHSCORE1 (STR_BASE+22)
-#define STR_HIGHSCORE2 (STR_BASE+23)
-#define STR_HIGHSCORE3 (STR_BASE+24)
-#define STR_PAUSE (STR_BASE+25)
-#define STR_CHOOSEHERO (STR_BASE+26)
-
diff --git a/goodies/source/inv/strings.src b/goodies/source/inv/strings.src
deleted file mode 100644
index 2a5f712da55c..000000000000
--- a/goodies/source/inv/strings.src
+++ /dev/null
@@ -1,136 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: strings.src,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#include "strings.hrc"
-
-String STR_APP_TITLE {
- Text = "StarWars Galaxy (c)96 by Updaters / TRI & NF";
-};
-
-String STR_HERO1 {
- Text = "Eine gute Wahl!\n\nTriminatoren sind Spezialisten in\nder Bekämpfung tötlicher CXXe.";
-};
-
-String STR_HERO2 {
- Text = "Weise entschieden!\n\nHuge Jelly Stars bekämpfen wirkungsvoll\ngefährliche Makefiles!";
-};
-
-String STR_HERO3 {
- Text = "Zu dieser Entscheidung ist zu gratulieren!\n\nMega Hunter bekämpfen alles immer überall!";
-};
-
-String STR_HERO4 {
- Text = "Gut gewählt!\n\nNatural Fighter vernichten gerne tötliche HXXe!";
-};
-
-String STR_HERO5 {
- Text = "Excellen entschieden!\n\nOverkill GunFighter optimieren jeden Einsatz wirkungsvoll!";
-};
-
-String STR_LEVELSTART {
- Text = "START LEVEL";
-};
-
-String STR_NAME1 {
- Text = "Triminator";
-};
-
-String STR_NAME2 {
- Text = "Huge Jelly Star";
-};
-
-String STR_NAME3 {
- Text = "Mega Hunter";
-};
-
-String STR_NAME4 {
- Text = "Natural Fighter";
-};
-
-String STR_NAME5 {
- Text = "Overkill GunFighter";
-};
-
-String STR_ROCKETS {
- Text = "Rockets";
-};
-
-String STR_FIGHTER {
- Text = "Fighter";
-};
-
-String STR_SCORE {
- Text = "Score";
-};
-
-String STR_LEVEL {
- Text = "Level";
-};
-
-String STR_GRAT1 {
- Text = "Gratuliere !!\nSie haben das ";
-};
-
-String STR_GRAT2 {
- Text = ". Geschwader vernichtet!!\n\nSie erhalten den Orden des inkompatiblen Updates am roten Band!";
-};
-
-String STR_FIGHTDEST1 {
- Text = "Tod und Teufel !!\n\nIhr Fighter wurde terminiert!\nVerbleibende Waffensysteme im Basislager: ";
-};
-
-String STR_FIGHTDEST2 {
- Text = "\nViel Glück....";
-};
-
-String STR_GAMEOVER {
- Text = "Tödlicher Fehler !!\n\nIhr Fighter wurde zerstört!\nSie kommen in den Updaterhimmel...\nBegeben Sie sich direkt dorthin,\nziehen Sie nich über Los,\nziehen Sie nicht DM 4000!\n\nGAME OVER!!!";
-};
-
-String STR_HIGHSCORE1 {
- Text = "Sie sind ja eine ware Vernichtungsmaschine!\n\nSie haben den Highscore geknackt!\n\nNeuer Highscore: ";
-};
-
-String STR_HIGHSCORE2 {
- Text = " Punkte\nAlter Highscore: ";
-};
-
-String STR_HIGHSCORE3 {
- Text = " Punkte";
-};
-
-String STR_PAUSE {
- Text = " Spiel wegen wichtiger Mussänderung unterbrochen... ";
-};
-
-String STR_CHOOSEHERO {
- Text = "Choose Your Hero ...";
-};
diff --git a/goodies/source/inv/waves.hxx b/goodies/source/inv/waves.hxx
deleted file mode 100644
index 81866effedf0..000000000000
--- a/goodies/source/inv/waves.hxx
+++ /dev/null
@@ -1,121 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: waves.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _WAVES_HXX
-#define _WAVES_HXX
-
-#include <tools/solar.h>
-
-#define MAX_LEN 250
-#define WAVES 10
-#define RANMAX 60
-
-#ifdef WIN
-#pragma data_seg( "MY_DATA", "DATA" )
-#endif
-
-USHORT ranpos[RANMAX*2+1] =
-{ 60,
- 10,20,50,20,90,20,130,20,170,20,210,20,250,20,290,20,330,20,370,20,
- 30,50,70,50,110,50,150,50,190,50,230,50,270,50,310,50,350,50,390,50,
- 10,80,50,80,90,80,130,80,170,80,210,80,250,80,290,80,330,80,370,80,
- 30,110,70,110,110,110,150,110,190,110,230,110,270,110,310,110,350,
- 110,390,110,
- 10,140,50,140,90,140,130,140,170,140,210,140,250,140,290,140,330,140,
- 370,140,
- 30,170,70,170,110,170,150,170,190,170,230,170,270,170,310,170,350,
- 170,390,170
-};
-
-long levelpuf[RANMAX*3+2] =
-{ 0, 0, 0, 0, 0};
-
-BYTE waves[WAVES][MAX_LEN] = {
-{ 11, 0, 10, 20, 0, 50, 20, 0, 90, 20, 0, 130, 20, 0, 170, 20,
- 0, 30, 50, 0, 70, 50, 0, 110, 50, 0, 150, 50, 0, 190, 50,
- 4,100, 200,
- 240, 240, 0 },
-{ 12, 1, 10, 20, 1, 50, 20, 1, 90, 20, 1, 130, 20, 1, 170, 20,
- 1, 30, 50, 1, 70, 50, 1, 110, 50, 1, 150, 50, 1, 190, 50,
- 4,80, 200, 4,120,200,
- 15, 15, 15 },
-{ 13, 2, 10, 20, 2, 50, 20, 2, 90, 20, 2, 130, 20, 2, 170, 20,
- 2, 30, 50, 2, 70, 50, 2, 110, 50, 2, 150, 50, 2, 190, 50,
- 4,5,250, 4,100,190, 4,200,230,
- 240, 240, 0 },
-{ 14, 3, 10, 20, 3, 50, 20, 3, 90, 20, 3, 130, 20, 3, 170, 20,
- 3, 30, 50, 3, 70, 50, 3, 110, 50, 3, 150, 50, 3, 190, 50,
- 4, 10,190, 4,50,240, 4,120,250, 4, 180,210,
- 15, 15, 15 },
-{ 25, 0, 10, 50, 0, 10, 90, 0, 10, 130,
- 1, 50, 30, 1, 50, 70, 1, 50, 110,
- 2, 90, 10, 1, 90, 50, 2, 90, 90,
- 3,130, 10, 3,130, 50, 3,130, 90,
- 2,170, 10, 1,170, 50, 2,170, 90,
- 1,210, 30, 1,210, 70, 1,210, 110,
- 0,250, 50, 0,250, 90, 0,250, 130,
- 4, 211, 211, 4, 215, 115, 4, 230,230, 4,198, 210,
- 15, 6, 15 },
-{ 18, 3, 10, 10, 3, 50, 10, 3, 90, 10, 3, 130, 10, 3, 170, 10,
- 2, 30, 50, 2, 70 , 50, 2, 110, 50, 2, 150, 50,
- 4,10,90,1, 50, 90, 1, 90, 90, 1, 130, 90,
- 0, 70, 130, 0, 110, 130,4,150,110,
- 0, 90, 170, 4, 120, 200,
- 240, 255, 0 },
-{ 15, 0, 50, 50, 0, 100, 50, 0, 150, 50, 0, 200, 50, 0, 250, 50,
- 2, 50, 100, 2, 150, 100, 2, 250, 100,
- 3, 100, 150, 3, 200, 150,
- 0, 50, 200, 1, 100, 200, 0, 150, 200, 1, 200, 200, 0, 250 ,200,
- 255, 249, 15 },
-{ 20, 1, 10, 20, 1, 50, 20, 1, 90, 20, 1, 130, 20, 1, 170, 20,
- 1, 30, 50, 1, 70, 50, 1, 110, 50, 1, 150, 50, 1, 190, 50,
- 2, 10, 80, 2, 50, 80, 2, 90, 80, 2, 130, 80, 2, 170, 80,
- 2, 30, 110, 2, 70, 110, 2, 110, 110, 2, 150, 110, 2, 190, 110,
- 240, 240, 0 },
-
-{ 40, 0, 10, 20, 0, 50, 20, 0, 90, 20, 0, 130, 20, 0, 170, 20,
- 0, 30, 50, 0, 70, 50, 0, 110, 50, 0, 150, 50, 0, 190, 50,
- 1, 10, 80, 1, 50, 80, 1, 90, 80, 1, 130, 80, 1, 170, 80,
- 1, 30, 110, 1, 70, 110, 1, 110, 110, 1, 150, 110, 1, 190, 110,
- 2, 10, 140, 2, 50, 140, 2, 90, 140, 2, 130, 140, 2, 170, 140,
- 0, 30, 170, 0, 70, 170, 0, 110, 170, 0, 150, 170, 0, 190, 170,
- 3, 10, 200, 3, 50, 200, 3, 90, 200, 3, 130, 200, 3, 170, 200,
- 0, 30, 230, 0, 70, 230, 0, 110, 230, 0, 150, 230, 0, 190, 230,
- 15, 15, 15 },
-{ 64, 0, 5, 5, 0, 40, 5, 0, 75, 5, 0, 110, 5, 0, 145, 5, 0, 180, 5, 0, 215, 5, 0, 250, 5,
- 0, 5, 40, 0, 40, 40, 0, 75, 40, 0, 110, 40, 0, 145, 40, 0, 180, 40, 0, 215, 40, 0, 250, 40,
- 0, 5, 75, 1, 40, 75, 2, 75, 75, 2, 110, 75, 2, 145, 75, 2, 180, 75, 1, 215, 75, 0, 250, 75,
- 0, 5, 110, 1, 40, 110, 2, 75, 110, 0, 110, 110, 3, 145, 110, 2, 180, 110, 1, 215, 110, 0, 250, 110,
- 0, 5, 145, 1, 40, 145, 2, 75, 145, 3, 110, 145, 0, 145, 145, 2, 180, 145, 1, 215, 145, 0, 250, 145,
- 0, 5, 180, 1, 40, 180, 2, 75, 180, 2, 110, 180, 2, 145, 180, 2, 180, 180, 1, 215, 180, 0, 250, 180,
- 0, 5, 215, 0, 40, 215, 0, 75, 215, 0, 110, 215, 0, 145, 215, 0, 180, 215, 0, 215, 215, 0, 250, 215,
- 0, 5, 250, 0, 40, 250, 0, 75, 250, 0, 110, 250, 0, 145, 250, 0, 180, 250, 0, 215, 250, 0, 250, 250,
- 255, 255, 255 },
-};
-#endif
diff --git a/goodies/source/unographic/descriptor.cxx b/goodies/source/unographic/descriptor.cxx
deleted file mode 100644
index c19318d6e11e..000000000000
--- a/goodies/source/unographic/descriptor.cxx
+++ /dev/null
@@ -1,508 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: descriptor.cxx,v $
- * $Revision: 1.10 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#include "descriptor.hxx"
-
-#include <rtl/uuid.h>
-#include <vos/mutex.hxx>
-#include <unotools/ucbstreamhelper.hxx>
-#include <svtools/filter.hxx>
-#include <svl/itemprop.hxx>
-
-#ifndef _COM_SUN_STAR_BEANS_PROPERTYSTATE_HDL_
-#include <com/sun/star/beans/PropertyState.hpp>
-#endif
-#ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HDL_
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#endif
-#ifndef _COM_SUN_STAR_AWT_SIZE_HDL_
-#include <com/sun/star/awt/Size.hpp>
-#endif
-#ifndef _COM_SUN_STAR_GRAPHIC_GRAPHICTYPE_HDL_
-#include <com/sun/star/graphic/GraphicType.hpp>
-#endif
-#include "vcl/graph.hxx"
-#include "vcl/svapp.hxx"
-
-#define UNOGRAPHIC_GRAPHICTYPE 1
-#define UNOGRAPHIC_MIMETYPE 2
-#define UNOGRAPHIC_SIZEPIXEL 3
-#define UNOGRAPHIC_SIZE100THMM 4
-#define UNOGRAPHIC_BITSPERPIXEL 5
-#define UNOGRAPHIC_TRANSPARENT 6
-#define UNOGRAPHIC_ALPHA 7
-#define UNOGRAPHIC_ANIMATED 8
-
-using namespace ::com::sun::star;
-
-namespace unographic {
-
-// ---------------------
-// - GraphicDescriptor -
-// ---------------------
-
-GraphicDescriptor::GraphicDescriptor() :
- ::comphelper::PropertySetHelper( createPropertySetInfo(), SAL_NO_ACQUIRE ),
- mpGraphic( NULL ),
- meType( GRAPHIC_NONE ),
- mnBitsPerPixel ( 0 ),
- mbTransparent ( false ),
- mbAlpha( false ),
- mbAnimated( false )
-{
-}
-
-// ------------------------------------------------------------------------------
-
-GraphicDescriptor::~GraphicDescriptor()
- throw()
-{
-}
-
-// ------------------------------------------------------------------------------
-
-void GraphicDescriptor::init( const ::Graphic& rGraphic )
- throw()
-{
- mpGraphic = &rGraphic;
-}
-
-// ------------------------------------------------------------------------------
-
-void GraphicDescriptor::init( const ::rtl::OUString& rURL )
- throw()
-{
- SvStream* pIStm = ::utl::UcbStreamHelper::CreateStream( rURL, STREAM_READ );
-
- if( pIStm )
- {
- implCreate( *pIStm, &rURL );
- delete pIStm;
- }
-}
-
-// ------------------------------------------------------------------------------
-
-void GraphicDescriptor::init( const uno::Reference< io::XInputStream >& rxIStm, const ::rtl::OUString& rURL )
- throw()
-{
- SvStream* pIStm = ::utl::UcbStreamHelper::CreateStream( rxIStm );
-
- if( pIStm )
- {
- implCreate( *pIStm, &rURL );
- delete pIStm;
- }
-}
-
-// ------------------------------------------------------------------------------
-
-bool GraphicDescriptor::isValid() const
-{
- return( mpGraphic ? ( mpGraphic->GetType() != GRAPHIC_NONE ) : ( meType != GRAPHIC_NONE ) );
-}
-
-// ------------------------------------------------------------------------------
-
-void GraphicDescriptor::implCreate( SvStream& rIStm, const ::rtl::OUString* pURL )
-{
- String aURL;
- if( pURL )
- aURL = *pURL;
- ::GraphicDescriptor aDescriptor( rIStm, &aURL );
-
- mpGraphic = NULL;
- maMimeType = ::rtl::OUString();
- meType = GRAPHIC_NONE;
- mnBitsPerPixel = 0;
- mbTransparent = false;
-
- if( aDescriptor.Detect( true ) && aDescriptor.GetFileFormat() != GFF_NOT )
- {
- const char* pMimeType = NULL;
- sal_uInt8 cType = graphic::GraphicType::EMPTY;
-
- switch( aDescriptor.GetFileFormat() )
- {
- case( GFF_BMP ): pMimeType = MIMETYPE_BMP; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_GIF ): pMimeType = MIMETYPE_GIF; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_JPG ): pMimeType = MIMETYPE_JPG; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_PCD ): pMimeType = MIMETYPE_PCD; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_PCX ): pMimeType = MIMETYPE_PCX; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_PNG ): pMimeType = MIMETYPE_PNG; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_TIF ): pMimeType = MIMETYPE_TIF; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_XBM ): pMimeType = MIMETYPE_XBM; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_XPM ): pMimeType = MIMETYPE_XPM; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_PBM ): pMimeType = MIMETYPE_PBM; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_PGM ): pMimeType = MIMETYPE_PGM; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_PPM ): pMimeType = MIMETYPE_PPM; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_RAS ): pMimeType = MIMETYPE_RAS; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_TGA ): pMimeType = MIMETYPE_TGA; cType = graphic::GraphicType::PIXEL; break;
- case( GFF_PSD ): pMimeType = MIMETYPE_PSD; cType = graphic::GraphicType::PIXEL; break;
-
- case( GFF_EPS ): pMimeType = MIMETYPE_EPS; cType = graphic::GraphicType::VECTOR; break;
- case( GFF_DXF ): pMimeType = MIMETYPE_DXF; cType = graphic::GraphicType::VECTOR; break;
- case( GFF_MET ): pMimeType = MIMETYPE_MET; cType = graphic::GraphicType::VECTOR; break;
- case( GFF_PCT ): pMimeType = MIMETYPE_PCT; cType = graphic::GraphicType::VECTOR; break;
- case( GFF_SGF ): pMimeType = MIMETYPE_SGF; cType = graphic::GraphicType::VECTOR; break;
- case( GFF_SVM ): pMimeType = MIMETYPE_SVM; cType = graphic::GraphicType::VECTOR; break;
- case( GFF_WMF ): pMimeType = MIMETYPE_WMF; cType = graphic::GraphicType::VECTOR; break;
- case( GFF_SGV ): pMimeType = MIMETYPE_SGV; cType = graphic::GraphicType::VECTOR; break;
- case( GFF_EMF ): pMimeType = MIMETYPE_EMF; cType = graphic::GraphicType::VECTOR; break;
-
- default:
- break;
- }
-
- if( graphic::GraphicType::EMPTY != cType )
- {
- meType = ( ( graphic::GraphicType::PIXEL == cType ) ? GRAPHIC_BITMAP : GRAPHIC_GDIMETAFILE );
- maMimeType = String( pMimeType, RTL_TEXTENCODING_ASCII_US );
- maSizePixel = aDescriptor.GetSizePixel();
- maSize100thMM = aDescriptor.GetSize_100TH_MM();
- mnBitsPerPixel = aDescriptor.GetBitsPerPixel();
- mbTransparent = ( graphic::GraphicType::VECTOR == cType );
- mbAlpha = mbAnimated = false;
- }
- }
-}
-
-// ------------------------------------------------------------------------------
-
-::rtl::OUString GraphicDescriptor::getImplementationName_Static()
- throw()
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.graphic.GraphicDescriptor" ) );
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< ::rtl::OUString > GraphicDescriptor::getSupportedServiceNames_Static()
- throw( )
-{
- uno::Sequence< ::rtl::OUString > aSeq( 1 );
-
- aSeq.getArray()[ 0 ] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.graphic.GraphicDescriptor" ) );
-
- return aSeq;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Any SAL_CALL GraphicDescriptor::queryAggregation( const uno::Type & rType )
- throw( uno::RuntimeException )
-{
- uno::Any aAny;
-
- if( rType == ::getCppuType((const uno::Reference< lang::XServiceInfo >*)0) )
- aAny <<= uno::Reference< lang::XServiceInfo >(this);
- else if( rType == ::getCppuType((const uno::Reference< lang::XTypeProvider >*)0) )
- aAny <<= uno::Reference< lang::XTypeProvider >(this);
- else if( rType == ::getCppuType((const uno::Reference< beans::XPropertySet >*)0) )
- aAny <<= uno::Reference< beans::XPropertySet >(this);
- else if( rType == ::getCppuType((const uno::Reference< beans::XPropertyState >*)0) )
- aAny <<= uno::Reference< beans::XPropertyState >(this);
- else if( rType == ::getCppuType((const uno::Reference< beans::XMultiPropertySet >*)0) )
- aAny <<= uno::Reference< beans::XMultiPropertySet >(this);
- else
- aAny <<= OWeakAggObject::queryAggregation( rType );
-
- return aAny;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Any SAL_CALL GraphicDescriptor::queryInterface( const uno::Type & rType )
- throw( uno::RuntimeException )
-{
- return OWeakAggObject::queryInterface( rType );
-}
-
-// ------------------------------------------------------------------------------
-
-void SAL_CALL GraphicDescriptor::acquire()
- throw()
-{
- OWeakAggObject::acquire();
-}
-
-// ------------------------------------------------------------------------------
-
-void SAL_CALL GraphicDescriptor::release()
- throw()
-{
- OWeakAggObject::release();
-}
-
-// ------------------------------------------------------------------------------
-
-::rtl::OUString SAL_CALL GraphicDescriptor::getImplementationName()
- throw( uno::RuntimeException )
-{
- return getImplementationName_Static();
-}
-
-// ------------------------------------------------------------------------------
-
-sal_Bool SAL_CALL GraphicDescriptor::supportsService( const rtl::OUString& ServiceName )
- throw( uno::RuntimeException )
-{
- uno::Sequence< ::rtl::OUString > aSNL( getSupportedServiceNames() );
- const ::rtl::OUString* pArray = aSNL.getConstArray();
-
- for( sal_Int32 i = 0; i < aSNL.getLength(); i++ )
- if( pArray[i] == ServiceName )
- return true;
-
- return false;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< rtl::OUString > SAL_CALL GraphicDescriptor::getSupportedServiceNames()
- throw( uno::RuntimeException )
-{
- return getSupportedServiceNames_Static();
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< uno::Type > SAL_CALL GraphicDescriptor::getTypes()
- throw( uno::RuntimeException )
-{
- uno::Sequence< uno::Type > aTypes( 6 );
- uno::Type* pTypes = aTypes.getArray();
-
- *pTypes++ = ::getCppuType((const uno::Reference< uno::XAggregation>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< lang::XServiceInfo>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< lang::XTypeProvider>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< beans::XPropertySet>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< beans::XPropertyState>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< beans::XMultiPropertySet>*)0);
-
- return aTypes;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< sal_Int8 > SAL_CALL GraphicDescriptor::getImplementationId()
- throw( uno::RuntimeException )
-{
- vos::OGuard aGuard( Application::GetSolarMutex() );
- static uno::Sequence< sal_Int8 > aId;
-
- if( aId.getLength() == 0 )
- {
- aId.realloc( 16 );
- rtl_createUuid( reinterpret_cast< sal_uInt8* >( aId.getArray() ), 0, sal_True );
- }
-
- return aId;
-}
-
-// ------------------------------------------------------------------------------
-
-::comphelper::PropertySetInfo* GraphicDescriptor::createPropertySetInfo()
-{
- vos::OGuard aGuard( Application::GetSolarMutex() );
- ::comphelper::PropertySetInfo* pRet = new ::comphelper::PropertySetInfo();
-
- static ::comphelper::PropertyMapEntry aEntries[] =
- {
- { MAP_CHAR_LEN( "GraphicType" ), UNOGRAPHIC_GRAPHICTYPE, &::getCppuType( (const sal_Int8*)(0)), beans::PropertyAttribute::READONLY, 0 },
- { MAP_CHAR_LEN( "MimeType" ), UNOGRAPHIC_MIMETYPE, &::getCppuType( (const ::rtl::OUString*)(0)), beans::PropertyAttribute::READONLY, 0 },
- { MAP_CHAR_LEN( "SizePixel" ), UNOGRAPHIC_SIZEPIXEL, &::getCppuType( (const awt::Size*)(0)), beans::PropertyAttribute::READONLY, 0 },
- { MAP_CHAR_LEN( "Size100thMM" ), UNOGRAPHIC_SIZE100THMM, &::getCppuType( (const awt::Size*)(0)), beans::PropertyAttribute::READONLY, 0 },
- { MAP_CHAR_LEN( "BitsPerPixel" ), UNOGRAPHIC_BITSPERPIXEL, &::getCppuType( (const sal_uInt8*)(0)), beans::PropertyAttribute::READONLY, 0 },
- { MAP_CHAR_LEN( "Transparent" ), UNOGRAPHIC_TRANSPARENT, &::getCppuType( (const sal_Bool*)(0)), beans::PropertyAttribute::READONLY, 0 },
- { MAP_CHAR_LEN( "Alpha" ), UNOGRAPHIC_ALPHA, &::getCppuType( (const sal_Bool*)(0)), beans::PropertyAttribute::READONLY, 0 },
- { MAP_CHAR_LEN( "Animated" ), UNOGRAPHIC_ANIMATED, &::getCppuType( (const sal_Bool*)(0)), beans::PropertyAttribute::READONLY, 0 },
-
- { 0,0,0,0,0,0 }
- };
-
- pRet->acquire();
- pRet->add( aEntries );
-
- return pRet;
-}
-
-// ------------------------------------------------------------------------------
-
-void GraphicDescriptor::_setPropertyValues( const comphelper::PropertyMapEntry** /*ppEntries*/, const uno::Any* /*pValues*/ )
- throw( beans::UnknownPropertyException,
- beans::PropertyVetoException,
- lang::IllegalArgumentException,
- lang::WrappedTargetException )
-{
- // we only have readonly attributes
-}
-
-// ------------------------------------------------------------------------------
-
-void GraphicDescriptor::_getPropertyValues( const comphelper::PropertyMapEntry** ppEntries, uno::Any* pValues )
- throw( beans::UnknownPropertyException, lang::WrappedTargetException )
-{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- while( *ppEntries )
- {
- switch( (*ppEntries)->mnHandle )
- {
- case( UNOGRAPHIC_GRAPHICTYPE ):
- {
- const GraphicType eType( mpGraphic ? mpGraphic->GetType() : meType );
-
- *pValues <<= ( ( eType == GRAPHIC_BITMAP ? graphic::GraphicType::PIXEL :
- ( eType == GRAPHIC_GDIMETAFILE ? graphic::GraphicType::VECTOR :
- graphic::GraphicType::EMPTY ) ) );
- }
- break;
-
- case( UNOGRAPHIC_MIMETYPE ):
- {
- ::rtl::OUString aMimeType;
-
- if( mpGraphic )
- {
- if( mpGraphic->IsLink() )
- {
- const char* pMimeType;
-
- switch( const_cast< Graphic* >( mpGraphic )->GetLink().GetType() )
- {
- case( GFX_LINK_TYPE_NATIVE_GIF ): pMimeType = MIMETYPE_GIF; break;
- case( GFX_LINK_TYPE_NATIVE_JPG ): pMimeType = MIMETYPE_JPG; break;
- case( GFX_LINK_TYPE_NATIVE_PNG ): pMimeType = MIMETYPE_PNG; break;
- case( GFX_LINK_TYPE_NATIVE_WMF ): pMimeType = MIMETYPE_WMF; break;
- case( GFX_LINK_TYPE_NATIVE_MET ): pMimeType = MIMETYPE_MET; break;
- case( GFX_LINK_TYPE_NATIVE_PCT ): pMimeType = MIMETYPE_PCT ; break;
-
- default:
- pMimeType = NULL;
- break;
- }
-
- if( pMimeType )
- aMimeType = ::rtl::OUString::createFromAscii( pMimeType );
- }
-
- if( !aMimeType.getLength() && ( mpGraphic->GetType() != GRAPHIC_NONE ) )
- aMimeType = ::rtl::OUString::createFromAscii( MIMETYPE_VCLGRAPHIC );
- }
- else
- aMimeType = maMimeType;
-
- *pValues <<= aMimeType;
- }
- break;
-
- case( UNOGRAPHIC_SIZEPIXEL ):
- {
- awt::Size aAWTSize( 0, 0 );
-
- if( mpGraphic )
- {
- if( mpGraphic->GetType() == GRAPHIC_BITMAP )
- {
- const Size aSizePix( mpGraphic->GetBitmapEx().GetSizePixel() );
- aAWTSize = awt::Size( aSizePix.Width(), aSizePix.Height() );
- }
- }
- else
- aAWTSize = awt::Size( maSizePixel.Width(), maSizePixel.Height() );
-
- *pValues <<= aAWTSize;
- }
- break;
-
- case( UNOGRAPHIC_SIZE100THMM ):
- {
- awt::Size aAWTSize( 0, 0 );
-
- if( mpGraphic )
- {
- if( mpGraphic->GetPrefMapMode().GetMapUnit() != MAP_PIXEL )
- {
- const Size aSizeLog( OutputDevice::LogicToLogic( mpGraphic->GetPrefSize(), mpGraphic->GetPrefMapMode(), MAP_100TH_MM ) );
- aAWTSize = awt::Size( aSizeLog.Width(), aSizeLog.Height() );
- }
- }
- else
- aAWTSize = awt::Size( maSize100thMM.Width(), maSize100thMM.Height() );
-
- *pValues <<= aAWTSize;
- }
- break;
-
- case( UNOGRAPHIC_BITSPERPIXEL ):
- {
- USHORT nBitsPerPixel = 0;
-
- if( mpGraphic )
- {
- if( mpGraphic->GetType() == GRAPHIC_BITMAP )
- nBitsPerPixel = mpGraphic->GetBitmapEx().GetBitmap().GetBitCount();
- }
- else
- nBitsPerPixel = mnBitsPerPixel;
-
- *pValues <<= sal::static_int_cast< sal_Int8 >(nBitsPerPixel);
- }
- break;
-
- case( UNOGRAPHIC_TRANSPARENT ):
- {
- *pValues <<= static_cast< sal_Bool >( mpGraphic ? mpGraphic->IsTransparent() : mbTransparent );
- }
- break;
-
- case( UNOGRAPHIC_ALPHA ):
- {
- *pValues <<= static_cast< sal_Bool >( mpGraphic ? mpGraphic->IsAlpha() : mbAlpha );
- }
- break;
-
- case( UNOGRAPHIC_ANIMATED ):
- {
- *pValues <<= static_cast< sal_Bool >( mpGraphic ? mpGraphic->IsAnimated() : mbAnimated );
- }
- break;
- }
-
- ++ppEntries;
- ++pValues;
- }
-}
-
-}
diff --git a/goodies/source/unographic/descriptor.hxx b/goodies/source/unographic/descriptor.hxx
deleted file mode 100644
index 5bbb982846ff..000000000000
--- a/goodies/source/unographic/descriptor.hxx
+++ /dev/null
@@ -1,143 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: descriptor.hxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _GOODIES_DESCRIPTOR_HXX
-#define _GOODIES_DESCRIPTOR_HXX
-
-#include <comphelper/propertysethelper.hxx>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-
-#include <comphelper/propertysetinfo.hxx>
-#include <vcl/graph.hxx>
-
-#define MIMETYPE_BMP "image/x-MS-bmp"
-#define MIMETYPE_GIF "image/gif"
-#define MIMETYPE_JPG "image/jpeg"
-#define MIMETYPE_PCD "image/x-photo-cd"
-#define MIMETYPE_PCX "image/x-pcx"
-#define MIMETYPE_PNG "image/png"
-#define MIMETYPE_TIF "image/tiff"
-#define MIMETYPE_XBM "image/x-xbitmap"
-#define MIMETYPE_XPM "image/x-xpixmap"
-#define MIMETYPE_PBM "image/x-portable-bitmap"
-#define MIMETYPE_PGM "image/x-portable-graymap"
-#define MIMETYPE_PPM "image/x-portable-pixmap"
-#define MIMETYPE_RAS "image/x-cmu-raster"
-#define MIMETYPE_TGA "image/x-targa"
-#define MIMETYPE_PSD "image/vnd.adobe.photoshop"
-#define MIMETYPE_EPS "image/x-eps"
-#define MIMETYPE_DXF "image/vnd.dxf"
-#define MIMETYPE_MET "image/x-met"
-#define MIMETYPE_PCT "image/x-pict"
-#define MIMETYPE_SGF "image/x-sgf"
-#define MIMETYPE_SVM "image/x-svm"
-#define MIMETYPE_WMF "image/x-wmf"
-#define MIMETYPE_SGV "image/x-sgv"
-#define MIMETYPE_EMF "image/x-emf"
-#define MIMETYPE_SVG "image/svg+xml"
-#define MIMETYPE_VCLGRAPHIC "image/x-vclgraphic"
-
-using namespace com::sun::star;
-
-namespace comphelper { class PropertySetInfo; }
-namespace com { namespace sun { namespace star { namespace io { class XInputStream; } } } }
-
-class Graphic;
-
-namespace unographic {
-
-// -------------------
-// - GraphicProvider -
-// -------------------
-
-class GraphicDescriptor : public ::cppu::OWeakAggObject,
- public ::com::sun::star::lang::XServiceInfo,
- public ::com::sun::star::lang::XTypeProvider,
- public ::comphelper::PropertySetHelper
-{
-public:
-
- GraphicDescriptor();
- ~GraphicDescriptor() throw();
-
- void init( const ::Graphic& rGraphic ) throw();
- void init( const ::rtl::OUString& rURL ) throw();
- void init( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rxIStm, const ::rtl::OUString& rURL ) throw();
-
- bool isValid() const;
-
- static ::rtl::OUString getImplementationName_Static() throw();
- static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static() throw();
-
-protected:
-
- static ::comphelper::PropertySetInfo* createPropertySetInfo();
-
- // XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
-
- // XServiceInfo
- virtual rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
- virtual sal_Bool SAL_CALL supportsService( const rtl::OUString& ServiceName ) throw( ::com::sun::star::uno::RuntimeException );
- virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException );
-
- // XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
-
- // PropertySetHelper
- virtual void _setPropertyValues( const comphelper::PropertyMapEntry** ppEntries, const ::com::sun::star::uno::Any* pValues ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException );
- virtual void _getPropertyValues( const comphelper::PropertyMapEntry** ppEntries, ::com::sun::star::uno::Any* pValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException );
-
-private:
-
- const ::Graphic* mpGraphic;
- GraphicType meType;
- ::rtl::OUString maMimeType;
- Size maSizePixel;
- Size maSize100thMM;
- USHORT mnBitsPerPixel;
- bool mbTransparent;
- bool mbAlpha;
- bool mbAnimated;
-
- GraphicDescriptor( const GraphicDescriptor& rDescriptor );
-
- GraphicDescriptor& operator=( const GraphicDescriptor& );
-
- void implCreate( SvStream& rIStm, const ::rtl::OUString* pPath );
-};
-
-}
-
-#endif
diff --git a/goodies/source/unographic/graphic.cxx b/goodies/source/unographic/graphic.cxx
deleted file mode 100644
index ed40de4dcc55..000000000000
--- a/goodies/source/unographic/graphic.cxx
+++ /dev/null
@@ -1,308 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: graphic.cxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include <rtl/uuid.h>
-#include <vos/mutex.hxx>
-#ifndef _SV_SVAPP_HXX_
-#include <vcl/svapp.hxx>
-#endif
-#include <com/sun/star/graphic/GraphicType.hpp>
-
-#ifndef _COM_SUN_STAR_GRAPHIC_XGRAPHICTRANSOFMER_HPP_
-#include <com/sun/star/graphic/XGraphicTransformer.hpp>
-#endif
-
-#include <vcl/graph.hxx>
-#include "graphic.hxx"
-
-using namespace com::sun::star;
-
-namespace unographic {
-
-// -------------------
-// - GraphicProvider -
-// -------------------
-
-Graphic::Graphic() :
- mpGraphic( NULL )
-{
-}
-
-// ------------------------------------------------------------------------------
-
-Graphic::~Graphic()
- throw()
-{
- delete mpGraphic;
-}
-
-// ------------------------------------------------------------------------------
-
-void Graphic::init( const ::Graphic& rGraphic )
- throw()
-{
- delete mpGraphic;
- mpGraphic = new ::Graphic( rGraphic );
- ::unographic::GraphicDescriptor::init( *mpGraphic );
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Any SAL_CALL Graphic::queryAggregation( const uno::Type& rType )
- throw( uno::RuntimeException )
-{
- uno::Any aAny;
- if( rType == ::getCppuType((const uno::Reference< graphic::XGraphic >*)0) )
- aAny <<= uno::Reference< graphic::XGraphic >( this );
- else if( rType == ::getCppuType((const uno::Reference< awt::XBitmap >*)0) )
- aAny <<= uno::Reference< awt::XBitmap >( this );
- else if( rType == ::getCppuType((const uno::Reference< lang::XUnoTunnel >*)0) )
- aAny <<= uno::Reference< lang::XUnoTunnel >(this);
- else
- aAny <<= ::unographic::GraphicDescriptor::queryAggregation( rType );
-
- return aAny ;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Any SAL_CALL Graphic::queryInterface( const uno::Type & rType )
- throw( uno::RuntimeException )
-{
- ::com::sun::star::uno::Any aReturn = ::unographic::GraphicDescriptor::queryInterface( rType );
- if ( !aReturn.hasValue() )
- aReturn = ::cppu::queryInterface ( rType, static_cast< graphic::XGraphicTransformer*>( this ) );
- return aReturn;
-}
-
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Graphic::acquire()
- throw()
-{
- ::unographic::GraphicDescriptor::acquire();
-}
-
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Graphic::release() throw()
-{
- ::unographic::GraphicDescriptor::release();
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< sal_Int8 > SAL_CALL Graphic::getImplementationId_Static()
- throw(uno::RuntimeException)
-{
- vos::OGuard aGuard( Application::GetSolarMutex() );
- static uno::Sequence< sal_Int8 > aId;
-
- if( aId.getLength() == 0 )
- {
- aId.realloc( 16 );
- rtl_createUuid( reinterpret_cast< sal_uInt8* >( aId.getArray() ), 0, sal_True );
- }
-
- return aId;
-}
-
-// ------------------------------------------------------------------------------
-
-::rtl::OUString Graphic::getImplementationName_Static()
- throw()
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.graphic.Graphic" ) );
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< ::rtl::OUString > Graphic::getSupportedServiceNames_Static()
- throw()
-{
- uno::Sequence< ::rtl::OUString > aSeq( 1 );
-
- aSeq.getArray()[ 0 ] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.graphic.Graphic" ) );
-
- return aSeq;
-}
-
-// ------------------------------------------------------------------------------
-
-::rtl::OUString SAL_CALL Graphic::getImplementationName()
- throw( uno::RuntimeException )
-{
- return getImplementationName_Static();
-}
-
-// ------------------------------------------------------------------------------
-
-sal_Bool SAL_CALL Graphic::supportsService( const ::rtl::OUString& rServiceName )
- throw( uno::RuntimeException )
-{
- if( ::unographic::GraphicDescriptor::supportsService( rServiceName ) )
- return true;
- else
- {
- uno::Sequence< ::rtl::OUString > aSNL( getSupportedServiceNames() );
- const ::rtl::OUString* pArray = aSNL.getConstArray();
-
- for( int i = 0; i < aSNL.getLength(); i++ )
- if( pArray[i] == rServiceName )
- return true;
-
- return false;
- }
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< ::rtl::OUString > SAL_CALL Graphic::getSupportedServiceNames()
- throw( uno::RuntimeException )
-{
- uno::Sequence< ::rtl::OUString > aRet( ::unographic::GraphicDescriptor::getSupportedServiceNames() );
- uno::Sequence< ::rtl::OUString > aNew( getSupportedServiceNames_Static() );
- sal_Int32 nOldCount = aRet.getLength();
-
- aRet.realloc( nOldCount + aNew.getLength() );
-
- for( sal_Int32 i = 0; i < aNew.getLength(); ++i )
- aRet[ nOldCount++ ] = aNew[ i ];
-
- return aRet;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< uno::Type > SAL_CALL Graphic::getTypes()
- throw(uno::RuntimeException)
-{
- uno::Sequence< uno::Type > aRet( ::unographic::GraphicDescriptor::getTypes() );
- sal_Int32 nOldCount = aRet.getLength();
-
- aRet.realloc( nOldCount + 2 );
- aRet[ nOldCount ] = ::getCppuType((const uno::Reference< graphic::XGraphic>*)0);
- aRet[ nOldCount+1 ] = ::getCppuType((const uno::Reference< awt::XBitmap>*)0);
-
- return aRet;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< sal_Int8 > SAL_CALL Graphic::getImplementationId()
- throw(uno::RuntimeException)
-{
- return getImplementationId_Static();
-}
-
-// ------------------------------------------------------------------------------
-
-::sal_Int8 SAL_CALL Graphic::getType()
- throw (uno::RuntimeException)
-{
- ::sal_Int8 cRet = graphic::GraphicType::EMPTY;
-
- if( mpGraphic && ( mpGraphic->GetType() != GRAPHIC_NONE ) )
- cRet = ( ( mpGraphic->GetType() == GRAPHIC_BITMAP ) ? graphic::GraphicType::PIXEL : graphic::GraphicType::VECTOR );
-
- return cRet;
-}
-
-//----------------------------------------------------------------------
-// XBitmap
-//----------------------------------------------------------------------
-
-awt::Size SAL_CALL Graphic::getSize( ) throw (uno::RuntimeException)
-{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- ::Size aVclSize;
- if( mpGraphic && ( mpGraphic->GetType() != GRAPHIC_NONE ) )
- aVclSize = mpGraphic->GetSizePixel();
-
- return awt::Size( aVclSize.Width(), aVclSize.Height() );
-}
-
-//----------------------------------------------------------------------
-
-uno::Sequence< ::sal_Int8 > SAL_CALL Graphic::getDIB( ) throw (uno::RuntimeException)
-{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- if( mpGraphic && ( mpGraphic->GetType() != GRAPHIC_NONE ) )
- {
- SvMemoryStream aMem;
- aMem << mpGraphic->GetBitmapEx().GetBitmap();
- return ::com::sun::star::uno::Sequence<sal_Int8>( (sal_Int8*) aMem.GetData(), aMem.Tell() );
- }
- else
- {
- return uno::Sequence<sal_Int8>();
- }
-}
-
-//----------------------------------------------------------------------
-
-uno::Sequence< ::sal_Int8 > SAL_CALL Graphic::getMaskDIB( ) throw (uno::RuntimeException)
-{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- if( mpGraphic && ( mpGraphic->GetType() != GRAPHIC_NONE ) )
- {
- SvMemoryStream aMem;
- aMem << mpGraphic->GetBitmapEx().GetMask();
- return ::com::sun::star::uno::Sequence<sal_Int8>( (sal_Int8*) aMem.GetData(), aMem.Tell() );
- }
- else
- {
- return uno::Sequence<sal_Int8>();
- }
-}
-
-//----------------------------------------------------------------------
-const ::Graphic* Graphic::getImplementation( const uno::Reference< uno::XInterface >& rxIFace )
- throw()
-{
- uno::Reference< lang::XUnoTunnel > xTunnel( rxIFace, uno::UNO_QUERY );
- return( xTunnel.is() ? reinterpret_cast< ::Graphic* >( xTunnel->getSomething( getImplementationId_Static() ) ) : NULL );
-}
-
-//----------------------------------------------------------------------
-sal_Int64 SAL_CALL Graphic::getSomething( const uno::Sequence< sal_Int8 >& rId )
- throw( uno::RuntimeException )
-{
- return( ( rId.getLength() == 16 && 0 == rtl_compareMemory( getImplementationId().getConstArray(), rId.getConstArray(), 16 ) ) ?
- reinterpret_cast< sal_Int64 >( mpGraphic ) :
- 0 );
-}
-
-}
diff --git a/goodies/source/unographic/graphic.hxx b/goodies/source/unographic/graphic.hxx
deleted file mode 100644
index a7687458be19..000000000000
--- a/goodies/source/unographic/graphic.hxx
+++ /dev/null
@@ -1,106 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: graphic.hxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _GOODIES_GRAPHIC_HXX
-#define _GOODIES_GRAPHIC_HXX
-
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/graphic/XGraphic.hpp>
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <com/sun/star/awt/XBitmap.hpp>
-
-#include "descriptor.hxx"
-#include "transformer.hxx"
-
-using namespace com::sun::star;
-
-class Graphic;
-
-namespace unographic {
-
-// -------------------
-// - GraphicProvider -
-// -------------------
-
-class Graphic : public ::com::sun::star::graphic::XGraphic,
- public ::com::sun::star::awt::XBitmap,
- public ::com::sun::star::lang::XUnoTunnel,
- public ::unographic::GraphicDescriptor,
- public ::unographic::GraphicTransformer
-{
-public:
-
- Graphic();
- ~Graphic() throw();
-
- using unographic::GraphicDescriptor::init;
- void init( const ::Graphic& rGraphic ) throw();
-
- static const ::Graphic* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxIFace ) throw();
- static ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId_Static( ) throw(::com::sun::star::uno::RuntimeException);
- static ::rtl::OUString getImplementationName_Static() throw();
- static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static() throw();
-
-protected:
-
- // XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
-
- // XServiceInfo
- virtual rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
- virtual sal_Bool SAL_CALL supportsService( const rtl::OUString& ServiceName ) throw( ::com::sun::star::uno::RuntimeException );
- virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException );
-
- // XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XGraphic
- virtual ::sal_Int8 SAL_CALL getType( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XBitmap
- virtual ::com::sun::star::awt::Size SAL_CALL getSize( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL getDIB( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL getMaskDIB( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw(::com::sun::star::uno::RuntimeException);
-
-private:
-
- ::Graphic* mpGraphic;
-};
-
-}
-
-#endif
diff --git a/goodies/source/unographic/graphicuno.cxx b/goodies/source/unographic/graphicuno.cxx
deleted file mode 100755
index b47f04034336..000000000000
--- a/goodies/source/unographic/graphicuno.cxx
+++ /dev/null
@@ -1,169 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: graphicuno.cxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include <osl/diagnose.h>
-#include <cppuhelper/factory.hxx>
-#include <uno/mapping.hxx>
-#include "provider.hxx"
-#include "renderer.hxx"
-
-#include <com/sun/star/registry/XRegistryKey.hpp>
-#include "comphelper/servicedecl.hxx"
-
-using namespace com::sun::star;
-namespace sdecl = comphelper::service_decl;
-
-namespace unographic {
-extern sdecl::ServiceDecl const serviceDecl;
-// --------------------
-// - *_createInstance -
-// --------------------
-
-static uno::Reference< uno::XInterface > SAL_CALL GraphicProvider_createInstance( const uno::Reference< lang::XMultiServiceFactory >& )
-{
- return SAL_STATIC_CAST( ::cppu::OWeakObject*, new GraphicProvider );
-}
-
-// -----------------------------------------------------------------------------
-
-static uno::Reference< uno::XInterface > SAL_CALL GraphicRendererVCL_createInstance( const uno::Reference< lang::XMultiServiceFactory >&)
-{
- return SAL_STATIC_CAST( ::cppu::OWeakObject*, new GraphicRendererVCL );
-}
-
-// ------------------------------------------
-// - component_getImplementationEnvironment -
-// ------------------------------------------
-
-extern "C" void SAL_CALL component_getImplementationEnvironment( const sal_Char** ppEnvTypeName, uno_Environment** )
-{
- *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-}
-
-// -----------------------
-// - component_writeInfo -
-// -----------------------
-
-extern "C" sal_Bool SAL_CALL component_writeInfo( void* pServiceManager, void* pRegistryKey )
-{
- sal_Bool bRet = sal_False;
-
- if( pRegistryKey )
- {
- try
- {
- uno::Reference< registry::XRegistryKey > xNewKey;
- uno::Sequence< ::rtl::OUString > aServices;
-
- // GraphicProvider
- xNewKey = reinterpret_cast< registry::XRegistryKey * >( pRegistryKey )->createKey(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("/") ) +
- GraphicProvider::getImplementationName_Static() +
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "/UNO/SERVICES") ) );
-
- aServices = GraphicProvider::getSupportedServiceNames_Static();
-
- int i;
- for( i = 0; i < aServices.getLength(); i++ )
- xNewKey->createKey( aServices.getConstArray()[ i ] );
-
- // GraphicRendererVCL
- xNewKey = reinterpret_cast< registry::XRegistryKey * >( pRegistryKey )->createKey(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("/") ) +
- GraphicRendererVCL::getImplementationName_Static() +
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "/UNO/SERVICES") ) );
-
- aServices = ( GraphicRendererVCL::getSupportedServiceNames_Static() );
-
- for( i = 0; i < aServices.getLength(); i++ )
- xNewKey->createKey( aServices.getConstArray()[ i ] );
-
- if ( !component_writeInfoHelper( reinterpret_cast< lang::XMultiServiceFactory* >( pServiceManager ), reinterpret_cast< registry::XRegistryKey* >( pRegistryKey ), serviceDecl ) )
- return false;
-
- bRet = true;
- }
- catch (registry::InvalidRegistryException &)
- {
- OSL_ENSURE( sal_False, "### InvalidRegistryException!" );
- }
- }
-
- return bRet;
-}
-
-// ------------------------
-// - component_getFactory -
-// ------------------------
-
-extern "C" void* SAL_CALL component_getFactory( const sal_Char* pImplName, void* pServiceManager, void* pRegistryKey )
-{
- void * pRet = 0;
-
- if( pServiceManager && ( 0 == GraphicProvider::getImplementationName_Static().compareToAscii( pImplName ) ) )
- {
- uno::Reference< lang::XSingleServiceFactory > xFactory( ::cppu::createOneInstanceFactory(
- reinterpret_cast< lang::XMultiServiceFactory * >( pServiceManager ),
- GraphicProvider::getImplementationName_Static(),
- GraphicProvider_createInstance,
- GraphicProvider::getSupportedServiceNames_Static() ) );
-
- if( xFactory.is())
- {
- xFactory->acquire();
- pRet = xFactory.get();
- }
- }
- else if( pServiceManager && ( 0 == GraphicRendererVCL::getImplementationName_Static().compareToAscii( pImplName ) ) )
- {
- uno::Reference< lang::XSingleServiceFactory > xFactory( ::cppu::createOneInstanceFactory(
- reinterpret_cast< lang::XMultiServiceFactory * >( pServiceManager ),
- GraphicRendererVCL::getImplementationName_Static(),
- GraphicRendererVCL_createInstance,
- GraphicRendererVCL::getSupportedServiceNames_Static() ) );
-
- if( xFactory.is())
- {
- xFactory->acquire();
- pRet = xFactory.get();
- }
- }
- else
- {
- pRet = component_getFactoryHelper( pImplName, reinterpret_cast< lang::XMultiServiceFactory * >( pServiceManager ),reinterpret_cast< registry::XRegistryKey* >( pRegistryKey ), serviceDecl );
-
- }
- return pRet;
-}
-
-}
diff --git a/goodies/source/unographic/graphicunofactory.cxx b/goodies/source/unographic/graphicunofactory.cxx
deleted file mode 100644
index cdf9c51bf601..000000000000
--- a/goodies/source/unographic/graphicunofactory.cxx
+++ /dev/null
@@ -1,106 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: graphicunofactory.cxx,v $
- * $Revision: 1.1.2.1 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include <comphelper/servicedecl.hxx>
-#include <cppuhelper/implbase1.hxx>
-#include <com/sun/star/graphic/XGraphicObject.hpp>
-#include <com/sun/star/lang/IllegalArgumentException.hpp>
-#include "grfmgr.hxx"
-
-using namespace com::sun::star;
-
-namespace unographic {
-
-typedef ::cppu::WeakImplHelper1< graphic::XGraphicObject > GObjectAccess_BASE;
- // Simple uno wrapper around the GraphicObject class to allow basic
- // access. ( and solves a horrible cyclic link problem between
- // goodies/toolkit/extensions )
-class GObjectImpl : public GObjectAccess_BASE
-{
- ::osl::Mutex m_aMutex;
- std::auto_ptr< GraphicObject > mpGObject;
-public:
- GObjectImpl( uno::Sequence< uno::Any > const & args, uno::Reference< uno::XComponentContext > const & xComponentContext ) throw (uno::RuntimeException);
-
- // XGraphicObject
- virtual uno::Reference< graphic::XGraphic > SAL_CALL getGraphic() throw (uno::RuntimeException);
- virtual void SAL_CALL setGraphic( const uno::Reference< graphic::XGraphic >& _graphic ) throw (uno::RuntimeException);
- ::rtl::OUString SAL_CALL getUniqueID() throw (uno::RuntimeException);
-};
-
-GObjectImpl::GObjectImpl( uno::Sequence< uno::Any > const & args, uno::Reference< uno::XComponentContext > const & /*xComponentContext*/ ) throw (uno::RuntimeException)
-{
- if ( args.getLength() == 1 )
- {
- rtl::OUString sId;
- if ( !( args[ 0 ] >>= sId ) || sId.getLength() == 0 )
- throw lang::IllegalArgumentException();
- ByteString bsId( sId.getStr(), RTL_TEXTENCODING_UTF8 );
- mpGObject.reset( new GraphicObject( bsId ) );
- }
- else
- mpGObject.reset( new GraphicObject() );
-}
-
-uno::Reference< graphic::XGraphic > SAL_CALL GObjectImpl::getGraphic() throw (uno::RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- if ( !mpGObject.get() )
- throw uno::RuntimeException();
- return mpGObject->GetGraphic().GetXGraphic();
-}
-
-void SAL_CALL GObjectImpl::setGraphic( const uno::Reference< graphic::XGraphic >& _graphic ) throw (uno::RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- if ( !mpGObject.get() )
- throw uno::RuntimeException();
- Graphic aGraphic( _graphic );
- mpGObject->SetGraphic( aGraphic );
-}
-
-::rtl::OUString SAL_CALL GObjectImpl::getUniqueID() throw (uno::RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- rtl::OUString sId;
- if ( mpGObject.get() )
- sId = String( mpGObject->GetUniqueID().GetBuffer(), RTL_TEXTENCODING_ASCII_US );
- return sId;
-}
-
-
-namespace sdecl = comphelper::service_decl;
-sdecl::class_<GObjectImpl, sdecl::with_args<true> > serviceBI;
-extern sdecl::ServiceDecl const serviceDecl( serviceBI, "com.sun.star.graphic.GraphicObject", "com.sun.star.graphic.GraphicObject" );
-
-}
diff --git a/goodies/source/unographic/makefile.mk b/goodies/source/unographic/makefile.mk
deleted file mode 100755
index 59196031f089..000000000000
--- a/goodies/source/unographic/makefile.mk
+++ /dev/null
@@ -1,64 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.6.40.1 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..
-
-PRJNAME=goodies
-TARGET=unographic
-ENABLE_EXCEPTIONS=TRUE
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-
-CXXFILES= \
- graphicuno.cxx \
- descriptor.cxx \
- provider.cxx \
- graphic.cxx \
- renderer.cxx \
- graphicunofactory.cxx \
- transformer.cxx
-
-SLOFILES= \
- $(SLO)$/graphicuno.obj \
- $(SLO)$/descriptor.obj \
- $(SLO)$/provider.obj \
- $(SLO)$/graphic.obj \
- $(SLO)$/renderer.obj \
- $(SLO)$/graphicunofactory.obj \
- $(SLO)$/transformer.obj
-
-# --- Target -------------------------------------------------------
-
-.INCLUDE : target.mk
diff --git a/goodies/source/unographic/provider.cxx b/goodies/source/unographic/provider.cxx
deleted file mode 100644
index 1f7de99d4473..000000000000
--- a/goodies/source/unographic/provider.cxx
+++ /dev/null
@@ -1,862 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: provider.cxx,v $
- * $Revision: 1.18 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include <rtl/uuid.h>
-#include <vos/mutex.hxx>
-#ifndef _SV_SVAPP_HXX_
-#include <vcl/svapp.hxx>
-#endif
-#ifndef _SV_IMAGE_HXX_
-#include <vcl/image.hxx>
-#endif
-#include <vcl/metaact.hxx>
-#include <vcl/msgbox.hxx>
-#include <vcl/imagerepository.hxx>
-#include <tools/rcid.h>
-#include <tools/resid.hxx>
-#include <tools/resmgr.hxx>
-#include <unotools/ucbstreamhelper.hxx>
-#include <svtools/filter.hxx>
-#include <svl/solar.hrc>
-#include <vcl/salbtype.hxx>
-#include <vcl/virdev.hxx>
-#include <com/sun/star/io/XStream.hpp>
-#include <com/sun/star/text/GraphicCrop.hpp>
-
-#include "descriptor.hxx"
-#include "graphic.hxx"
-#include "grfmgr.hxx"
-#include "provider.hxx"
-
-using namespace com::sun::star;
-
-namespace unographic {
-
-#define UNO_NAME_GRAPHOBJ_URLPREFIX "vnd.sun.star.GraphicObject:"
-
-// -------------------
-// - GraphicProvider -
-// -------------------
-
-GraphicProvider::GraphicProvider()
-{
-}
-
-// ------------------------------------------------------------------------------
-
-GraphicProvider::~GraphicProvider()
-{
-}
-
-// ------------------------------------------------------------------------------
-
-::rtl::OUString GraphicProvider::getImplementationName_Static()
- throw()
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.graphic.GraphicProvider" ) );
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< ::rtl::OUString > GraphicProvider::getSupportedServiceNames_Static()
- throw()
-{
- uno::Sequence< ::rtl::OUString > aSeq( 1 );
-
- aSeq.getArray()[ 0 ] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.graphic.GraphicProvider" ) );
-
- return aSeq;
-}
-
-// ------------------------------------------------------------------------------
-
-::rtl::OUString SAL_CALL GraphicProvider::getImplementationName()
- throw( uno::RuntimeException )
-{
- return getImplementationName_Static();
-}
-
-// ------------------------------------------------------------------------------
-
-sal_Bool SAL_CALL GraphicProvider::supportsService( const ::rtl::OUString& ServiceName )
- throw( uno::RuntimeException )
-{
- uno::Sequence< ::rtl::OUString > aSNL( getSupportedServiceNames() );
- const ::rtl::OUString* pArray = aSNL.getConstArray();
-
- for( int i = 0; i < aSNL.getLength(); i++ )
- if( pArray[i] == ServiceName )
- return true;
-
- return false;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< ::rtl::OUString > SAL_CALL GraphicProvider::getSupportedServiceNames()
- throw( uno::RuntimeException )
-{
- return getSupportedServiceNames_Static();
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< uno::Type > SAL_CALL GraphicProvider::getTypes()
- throw(uno::RuntimeException)
-{
- uno::Sequence< uno::Type > aTypes( 3 );
- uno::Type* pTypes = aTypes.getArray();
-
- *pTypes++ = ::getCppuType((const uno::Reference< lang::XServiceInfo>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< lang::XTypeProvider>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< graphic::XGraphicProvider>*)0);
-
- return aTypes;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< sal_Int8 > SAL_CALL GraphicProvider::getImplementationId()
- throw(uno::RuntimeException)
-{
- vos::OGuard aGuard( Application::GetSolarMutex() );
- static uno::Sequence< sal_Int8 > aId;
-
- if( aId.getLength() == 0 )
- {
- aId.realloc( 16 );
- rtl_createUuid( reinterpret_cast< sal_uInt8* >( aId.getArray() ), 0, sal_True );
- }
-
- return aId;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Reference< ::graphic::XGraphic > GraphicProvider::implLoadGraphicObject( const ::rtl::OUString& rResourceURL ) const
-{
- uno::Reference< ::graphic::XGraphic > xRet;
- if( rResourceURL.compareToAscii( UNO_NAME_GRAPHOBJ_URLPREFIX, RTL_CONSTASCII_LENGTH( UNO_NAME_GRAPHOBJ_URLPREFIX ) ) == 0 )
- {
- // graphic manager url
- String aTmpStr( rResourceURL.copy( sizeof( UNO_NAME_GRAPHOBJ_URLPREFIX ) - 1 ) );
- ByteString aUniqueID( aTmpStr, RTL_TEXTENCODING_UTF8 );
- GraphicObject aGrafObj( aUniqueID );
- // I don't call aGrafObj.GetXGraphic because it will call us back
- // into implLoadMemory ( with "private:memorygraphic" test )
- ::unographic::Graphic* pUnoGraphic = new ::unographic::Graphic;
- pUnoGraphic->init( aGrafObj.GetGraphic() );
- xRet = pUnoGraphic;
- }
- return xRet;
-}
-
-uno::Reference< ::graphic::XGraphic > GraphicProvider::implLoadMemory( const ::rtl::OUString& rResourceURL ) const
-{
- uno::Reference< ::graphic::XGraphic > xRet;
- sal_Int32 nIndex = 0;
-
- if( ( 0 == rResourceURL.getToken( 0, '/', nIndex ).compareToAscii( "private:memorygraphic" ) ) )
- {
- sal_Int64 nGraphicAddress = rResourceURL.getToken( 0, '/', nIndex ).toInt64();
-
- if( nGraphicAddress )
- {
- ::unographic::Graphic* pUnoGraphic = new ::unographic::Graphic;
-
- pUnoGraphic->init( *reinterpret_cast< ::Graphic* >( nGraphicAddress ) );
- xRet = pUnoGraphic;
- }
- }
-
- return xRet;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Reference< ::graphic::XGraphic > GraphicProvider::implLoadRepositoryImage( const ::rtl::OUString& rResourceURL ) const
-{
- uno::Reference< ::graphic::XGraphic > xRet;
- sal_Int32 nIndex = 0;
-
- if( ( 0 == rResourceURL.getToken( 0, '/', nIndex ).compareToAscii( "private:graphicrepository" ) ) )
- {
- String sPathName( rResourceURL.copy( nIndex ) );
- BitmapEx aBitmap;
- if ( ::vcl::ImageRepository::loadImage( sPathName, aBitmap, false ) )
- {
- Image aImage( aBitmap );
- xRet = aImage.GetXGraphic();
- }
- }
- return xRet;
-}
-
-
-// ------------------------------------------------------------------------------
-
-uno::Reference< ::graphic::XGraphic > GraphicProvider::implLoadStandardImage( const ::rtl::OUString& rResourceURL ) const
-{
- uno::Reference< ::graphic::XGraphic > xRet;
- sal_Int32 nIndex = 0;
-
- if( ( 0 == rResourceURL.getToken( 0, '/', nIndex ).compareToAscii( "private:standardimage" ) ) )
- {
- rtl::OUString sImageName( rResourceURL.copy( nIndex ) );
- if ( sImageName.compareToAscii( "info" ) )
- {
- xRet = InfoBox::GetStandardImage().GetXGraphic();
- }
- else if ( sImageName.compareToAscii( "warning" ) )
- {
- xRet = WarningBox::GetStandardImage().GetXGraphic();
- }
- else if ( sImageName.compareToAscii( "error" ) )
- {
- xRet = ErrorBox::GetStandardImage().GetXGraphic();
- }
- else if ( sImageName.compareToAscii( "query" ) )
- {
- xRet = QueryBox::GetStandardImage().GetXGraphic();
- }
- }
- return xRet;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Reference< ::graphic::XGraphic > GraphicProvider::implLoadBitmap( const uno::Reference< awt::XBitmap >& xBtm ) const
-{
- uno::Reference< ::graphic::XGraphic > xRet;
- uno::Sequence< sal_Int8 > aBmpSeq( xBtm->getDIB() );
- uno::Sequence< sal_Int8 > aMaskSeq( xBtm->getMaskDIB() );
- SvMemoryStream aBmpStream( aBmpSeq.getArray(), aBmpSeq.getLength(), STREAM_READ );
- Bitmap aBmp;
- aBmpStream >> aBmp;
-
- BitmapEx aBmpEx;
-
- if( aMaskSeq.getLength() )
- {
- SvMemoryStream aMaskStream( aMaskSeq.getArray(), aMaskSeq.getLength(), STREAM_READ );
- Bitmap aMask;
- aMaskStream >> aMask;
- aBmpEx = BitmapEx( aBmp, aMask );
- }
- else
- aBmpEx = BitmapEx( aBmp );
-
- if( !aBmpEx.IsEmpty() )
- {
- ::unographic::Graphic* pUnoGraphic = new ::unographic::Graphic;
-
- pUnoGraphic->init( aBmpEx );
- xRet = pUnoGraphic;
- }
- return xRet;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Reference< ::graphic::XGraphic > GraphicProvider::implLoadResource( const ::rtl::OUString& rResourceURL ) const
-{
- uno::Reference< ::graphic::XGraphic > xRet;
- sal_Int32 nIndex = 0;
-
- if( ( 0 == rResourceURL.getToken( 0, '/', nIndex ).compareToAscii( "private:resource" ) ) )
- {
- ByteString aResMgrName( String( rResourceURL.getToken( 0, '/', nIndex ) ), RTL_TEXTENCODING_ASCII_US );
-
- ResMgr* pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
-
- if( pResMgr )
- {
- const ::rtl::OUString aResourceType( rResourceURL.getToken( 0, '/', nIndex ) );
- const ResId aResId( rResourceURL.getToken( 0, '/', nIndex ).toInt32(), *pResMgr );
-
- if( aResourceType.getLength() )
- {
- BitmapEx aBmpEx;
-
- if( ( 0 == aResourceType.compareToAscii( "bitmap" ) ) ||
- ( 0 == aResourceType.compareToAscii( "bitmapex" ) ) )
- {
- aResId.SetRT( RSC_BITMAP );
-
- if( pResMgr->IsAvailable( aResId ) )
- {
- aBmpEx = BitmapEx( aResId );
- }
- }
- else if( 0 == aResourceType.compareToAscii( "image" ) )
- {
- aResId.SetRT( RSC_IMAGE );
-
- if( pResMgr->IsAvailable( aResId ) )
- {
- const Image aImage( aResId );
- aBmpEx = aImage.GetBitmapEx();
- }
- }
- else if( 0 == aResourceType.compareToAscii( "imagelist" ) )
- {
- aResId.SetRT( RSC_IMAGELIST );
-
- if( pResMgr->IsAvailable( aResId ) )
- {
- const ImageList aImageList( aResId );
- sal_Int32 nImageId = ( nIndex > -1 ) ? rResourceURL.getToken( 0, '/', nIndex ).toInt32() : 0;
-
- if( 0 < nImageId )
- {
- const Image aImage( aImageList.GetImage( sal::static_int_cast< USHORT >(nImageId) ) );
- aBmpEx = aImage.GetBitmapEx();
- }
- else
- {
- aBmpEx = aImageList.GetAsHorizontalStrip();
- }
- }
- }
-
- if( !aBmpEx.IsEmpty() )
- {
- ::unographic::Graphic* pUnoGraphic = new ::unographic::Graphic;
-
- pUnoGraphic->init( aBmpEx );
- xRet = pUnoGraphic;
- }
- }
-
- delete pResMgr;
- }
- }
-
- return xRet;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Reference< beans::XPropertySet > SAL_CALL GraphicProvider::queryGraphicDescriptor( const uno::Sequence< beans::PropertyValue >& rMediaProperties )
- throw ( io::IOException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
-{
- uno::Reference< beans::XPropertySet > xRet;
-
- ::rtl::OUString aURL;
- uno::Reference< io::XInputStream > xIStm;
- uno::Reference< awt::XBitmap >xBtm;
-
- for( sal_Int32 i = 0; ( i < rMediaProperties.getLength() ) && !xRet.is(); ++i )
- {
- const ::rtl::OUString aName( rMediaProperties[ i ].Name );
- const uno::Any aValue( rMediaProperties[ i ].Value );
-
- if( COMPARE_EQUAL == aName.compareToAscii( "URL" ) )
- {
- aValue >>= aURL;
- }
- else if( COMPARE_EQUAL == aName.compareToAscii( "InputStream" ) )
- {
- aValue >>= xIStm;
- }
- else if( COMPARE_EQUAL == aName.compareToAscii( "Bitmap" ) )
- {
- aValue >>= xBtm;
- }
- }
-
- if( xIStm.is() )
- {
- GraphicDescriptor* pDescriptor = new GraphicDescriptor;
- pDescriptor->init( xIStm, aURL );
- xRet = pDescriptor;
- }
- else if( aURL.getLength() )
- {
- uno::Reference< ::graphic::XGraphic > xGraphic( implLoadMemory( aURL ) );
- if( !xGraphic.is() )
- xGraphic = implLoadResource( aURL );
- if( !xGraphic.is() )
- xGraphic = implLoadGraphicObject( aURL );
-
- if ( !xGraphic.is() )
- xGraphic = implLoadRepositoryImage( aURL );
-
- if ( !xGraphic.is() )
- xGraphic = implLoadStandardImage( aURL );
-
- if( xGraphic.is() )
- {
- xRet = uno::Reference< beans::XPropertySet >( xGraphic, uno::UNO_QUERY );
- }
- else
- {
- GraphicDescriptor* pDescriptor = new GraphicDescriptor;
- pDescriptor->init( aURL );
- xRet = pDescriptor;
- }
- }
- else if( xBtm.is() )
- {
- uno::Reference< ::graphic::XGraphic > xGraphic( implLoadBitmap( xBtm ) );
- if( xGraphic.is() )
- xRet = uno::Reference< beans::XPropertySet >( xGraphic, uno::UNO_QUERY );
- }
-
- return xRet;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Reference< ::graphic::XGraphic > SAL_CALL GraphicProvider::queryGraphic( const uno::Sequence< ::beans::PropertyValue >& rMediaProperties )
- throw ( io::IOException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
-{
- uno::Reference< ::graphic::XGraphic > xRet;
- String aPath;
- SvStream* pIStm = NULL;
-
- uno::Reference< io::XInputStream > xIStm;
- uno::Reference< awt::XBitmap >xBtm;
-
- for( sal_Int32 i = 0; ( i < rMediaProperties.getLength() ) && !pIStm && !xRet.is(); ++i )
- {
- const ::rtl::OUString aName( rMediaProperties[ i ].Name );
- const uno::Any aValue( rMediaProperties[ i ].Value );
-
- if( COMPARE_EQUAL == aName.compareToAscii( "URL" ) )
- {
- ::rtl::OUString aURL;
- aValue >>= aURL;
- aPath = aURL;
- }
- else if( COMPARE_EQUAL == aName.compareToAscii( "InputStream" ) )
- {
- aValue >>= xIStm;
- }
- else if( COMPARE_EQUAL == aName.compareToAscii( "Bitmap" ) )
- {
- aValue >>= xBtm;
- }
- }
-
- if( xIStm.is() )
- {
- pIStm = ::utl::UcbStreamHelper::CreateStream( xIStm );
- }
- else if( aPath.Len() )
- {
- xRet = implLoadMemory( aPath );
-
- if( !xRet.is() )
- xRet = implLoadGraphicObject( aPath );
-
- if( !xRet.is() )
- xRet = implLoadResource( aPath );
-
- if ( !xRet.is() )
- xRet = implLoadRepositoryImage( aPath );
-
- if ( !xRet.is() )
- xRet = implLoadStandardImage( aPath );
-
- if( !xRet.is() )
- pIStm = ::utl::UcbStreamHelper::CreateStream( aPath, STREAM_READ );
- }
- else if( xBtm.is() )
- {
- xRet = implLoadBitmap( xBtm );
- }
-
- if( pIStm )
- {
- ::GraphicFilter* pFilter = ::GraphicFilter::GetGraphicFilter();
-
- if( pFilter )
- {
- ::Graphic aVCLGraphic;
-
- if( ( pFilter->ImportGraphic( aVCLGraphic, aPath, *pIStm ) == GRFILTER_OK ) &&
- ( aVCLGraphic.GetType() != GRAPHIC_NONE ) )
- {
- ::unographic::Graphic* pUnoGraphic = new ::unographic::Graphic;
-
- pUnoGraphic->init( aVCLGraphic );
- xRet = pUnoGraphic;
- }
- }
-
- delete pIStm;
- }
-
- return xRet;
-}
-
-void ImplCalculateCropRect( ::Graphic& rGraphic, const text::GraphicCrop& rGraphicCropLogic, Rectangle& rGraphicCropPixel )
-{
- if ( rGraphicCropLogic.Left || rGraphicCropLogic.Top || rGraphicCropLogic.Right || rGraphicCropLogic.Bottom )
- {
- Size aSourceSizePixel( rGraphic.GetSizePixel() );
- if ( aSourceSizePixel.Width() && aSourceSizePixel.Height() )
- {
- if ( rGraphicCropLogic.Left || rGraphicCropLogic.Top || rGraphicCropLogic.Right || rGraphicCropLogic.Bottom )
- {
- Size aSize100thMM( 0, 0 );
- if( rGraphic.GetPrefMapMode().GetMapUnit() != MAP_PIXEL )
- {
- aSize100thMM = OutputDevice::LogicToLogic( rGraphic.GetPrefSize(), rGraphic.GetPrefMapMode(), MAP_100TH_MM );
- }
- else
- {
- aSize100thMM = Application::GetDefaultDevice()->PixelToLogic( rGraphic.GetPrefSize(), MAP_100TH_MM );
- }
- if ( aSize100thMM.Width() && aSize100thMM.Height() )
- {
- double fSourceSizePixelWidth = static_cast<double>(aSourceSizePixel.Width());
- double fSourceSizePixelHeight= static_cast<double>(aSourceSizePixel.Height());
- rGraphicCropPixel.Left() = static_cast< sal_Int32 >((fSourceSizePixelWidth * rGraphicCropLogic.Left ) / aSize100thMM.Width());
- rGraphicCropPixel.Top() = static_cast< sal_Int32 >((fSourceSizePixelHeight * rGraphicCropLogic.Top ) / aSize100thMM.Height());
- rGraphicCropPixel.Right() = static_cast< sal_Int32 >(( fSourceSizePixelWidth * ( aSize100thMM.Width() - rGraphicCropLogic.Right ) ) / aSize100thMM.Width() );
- rGraphicCropPixel.Bottom() = static_cast< sal_Int32 >(( fSourceSizePixelHeight * ( aSize100thMM.Height() - rGraphicCropLogic.Bottom ) ) / aSize100thMM.Height() );
- }
- }
- }
- }
-}
-
-void ImplApplyBitmapScaling( ::Graphic& rGraphic, sal_Int32 nPixelWidth, sal_Int32 nPixelHeight )
-{
- if ( nPixelWidth && nPixelHeight )
- {
- BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
- MapMode aPrefMapMode( aBmpEx.GetPrefMapMode() );
- Size aPrefSize( aBmpEx.GetPrefSize() );
- aBmpEx.Scale( Size( nPixelWidth, nPixelHeight ) );
- aBmpEx.SetPrefMapMode( aPrefMapMode );
- aBmpEx.SetPrefSize( aPrefSize );
- rGraphic = aBmpEx;
- }
-}
-
-void ImplApplyBitmapResolution( ::Graphic& rGraphic, sal_Int32 nImageResolution, const Size& rVisiblePixelSize, const awt::Size& rLogicalSize )
-{
- if ( nImageResolution && rLogicalSize.Width && rLogicalSize.Height )
- {
- const double fImageResolution = static_cast<double>( nImageResolution );
- const double fSourceDPIX = ( static_cast<double>(rVisiblePixelSize.Width()) * 2540.0 ) / static_cast<double>(rLogicalSize.Width);
- const double fSourceDPIY = ( static_cast<double>(rVisiblePixelSize.Height()) * 2540.0 ) / static_cast<double>(rLogicalSize.Height);
- const sal_Int32 nSourcePixelWidth( rGraphic.GetSizePixel().Width() );
- const sal_Int32 nSourcePixelHeight( rGraphic.GetSizePixel().Height() );
- const double fSourcePixelWidth = static_cast<double>( nSourcePixelWidth );
- const double fSourcePixelHeight= static_cast<double>( nSourcePixelHeight );
-
- sal_Int32 nDestPixelWidth = nSourcePixelWidth;
- sal_Int32 nDestPixelHeight = nSourcePixelHeight;
-
- // check, if the bitmap DPI exceeds the maximum DPI
- if( fSourceDPIX > fImageResolution )
- {
- nDestPixelWidth = static_cast<sal_Int32>(( fSourcePixelWidth * fImageResolution ) / fSourceDPIX);
- if ( !nDestPixelWidth || ( nDestPixelWidth > nSourcePixelWidth ) )
- nDestPixelWidth = nSourcePixelWidth;
- }
- if ( fSourceDPIY > fImageResolution )
- {
- nDestPixelHeight= static_cast<sal_Int32>(( fSourcePixelHeight* fImageResolution ) / fSourceDPIY);
- if ( !nDestPixelHeight || ( nDestPixelHeight > nSourcePixelHeight ) )
- nDestPixelHeight = nSourcePixelHeight;
- }
- if ( ( nDestPixelWidth != nSourcePixelWidth ) || ( nDestPixelHeight != nSourcePixelHeight ) )
- ImplApplyBitmapScaling( rGraphic, nDestPixelWidth, nDestPixelHeight );
- }
-}
-
-void ImplApplyFilterData( ::Graphic& rGraphic, uno::Sequence< beans::PropertyValue >& rFilterData )
-{
- /* this method applies following attributes to the graphic, in the first step the
- cropping area (logical size in 100thmm) is applied, in the second step the resolution
- is applied, in the third step the graphic is scaled to the corresponding pixelsize.
- if a parameter value is zero or not available the corresponding step will be skipped */
-
- sal_Int32 nPixelWidth = 0;
- sal_Int32 nPixelHeight= 0;
- sal_Int32 nImageResolution = 0;
- awt::Size aLogicalSize( 0, 0 );
- text::GraphicCrop aCropLogic( 0, 0, 0, 0 );
- sal_Bool bRemoveCropArea = sal_True;
-
- for( sal_Int32 i = 0; i < rFilterData.getLength(); ++i )
- {
- const ::rtl::OUString aName( rFilterData[ i ].Name );
- const uno::Any aValue( rFilterData[ i ].Value );
-
- if( COMPARE_EQUAL == aName.compareToAscii( "PixelWidth" ) )
- aValue >>= nPixelWidth;
- else if( COMPARE_EQUAL == aName.compareToAscii( "PixelHeight" ) )
- aValue >>= nPixelHeight;
- else if( COMPARE_EQUAL == aName.compareToAscii( "LogicalSize" ) )
- aValue >>= aLogicalSize;
- else if (COMPARE_EQUAL == aName.compareToAscii( "GraphicCropLogic" ) )
- aValue >>= aCropLogic;
- else if (COMPARE_EQUAL == aName.compareToAscii( "RemoveCropArea" ) )
- aValue >>= bRemoveCropArea;
- else if (COMPARE_EQUAL == aName.compareToAscii( "ImageResolution" ) )
- aValue >>= nImageResolution;
- }
- if ( rGraphic.GetType() == GRAPHIC_BITMAP )
- {
- Rectangle aCropPixel( Point( 0, 0 ), rGraphic.GetSizePixel() );
- ImplCalculateCropRect( rGraphic, aCropLogic, aCropPixel );
- if ( bRemoveCropArea )
- {
- BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
- aBmpEx.Crop( aCropPixel );
- rGraphic = aBmpEx;
- }
- Size aVisiblePixelSize( bRemoveCropArea ? rGraphic.GetSizePixel() : aCropPixel.GetSize() );
- ImplApplyBitmapResolution( rGraphic, nImageResolution, aVisiblePixelSize, aLogicalSize );
- ImplApplyBitmapScaling( rGraphic, nPixelWidth, nPixelHeight );
- }
- else if ( ( rGraphic.GetType() == GRAPHIC_GDIMETAFILE ) && nImageResolution )
- {
- VirtualDevice aDummyVDev;
- GDIMetaFile aMtf( rGraphic.GetGDIMetaFile() );
- Size aMtfSize( aDummyVDev.LogicToLogic( aMtf.GetPrefSize(), aMtf.GetPrefMapMode(), MAP_100TH_MM ) );
- if ( aMtfSize.Width() && aMtfSize.Height() )
- {
- MapMode aNewMapMode( MAP_100TH_MM );
- aNewMapMode.SetScaleX( static_cast< double >( aLogicalSize.Width ) / static_cast< double >( aMtfSize.Width() ) );
- aNewMapMode.SetScaleY( static_cast< double >( aLogicalSize.Height ) / static_cast< double >( aMtfSize.Height() ) );
- aDummyVDev.EnableOutput( sal_False );
- aDummyVDev.SetMapMode( aNewMapMode );
-
- for( sal_uInt32 i = 0, nObjCount = aMtf.GetActionCount(); i < nObjCount; i++ )
- {
- MetaAction* pAction = aMtf.GetAction( i );
- switch( pAction->GetType() )
- {
- // only optimizing common bitmap actions:
- case( META_MAPMODE_ACTION ):
- {
- const_cast< MetaAction* >( pAction )->Execute( &aDummyVDev );
- break;
- }
- case( META_PUSH_ACTION ):
- {
- const MetaPushAction* pA = (const MetaPushAction*)pAction;
- aDummyVDev.Push( pA->GetFlags() );
- break;
- }
- case( META_POP_ACTION ):
- {
- aDummyVDev.Pop();
- break;
- }
- case( META_BMPSCALE_ACTION ):
- case( META_BMPEXSCALE_ACTION ):
- {
- BitmapEx aBmpEx;
- Point aPos;
- Size aSize;
- if ( pAction->GetType() == META_BMPSCALE_ACTION )
- {
- MetaBmpScaleAction* pScaleAction = dynamic_cast< MetaBmpScaleAction* >( pAction );
- aBmpEx = pScaleAction->GetBitmap();
- aPos = pScaleAction->GetPoint();
- aSize = pScaleAction->GetSize();
- }
- else
- {
- MetaBmpExScaleAction* pScaleAction = dynamic_cast< MetaBmpExScaleAction* >( pAction );
- aBmpEx = pScaleAction->GetBitmapEx();
- aPos = pScaleAction->GetPoint();
- aSize = pScaleAction->GetSize();
- }
- ::Graphic aGraphic( aBmpEx );
- const Size aSize100thmm( aDummyVDev.LogicToPixel( aSize ) );
- Size aSize100thmm2( aDummyVDev.PixelToLogic( aSize100thmm, MAP_100TH_MM ) );
-
- ImplApplyBitmapResolution( aGraphic, nImageResolution,
- aGraphic.GetSizePixel(), awt::Size( aSize100thmm2.Width(), aSize100thmm2.Height() ) );
-
- MetaAction* pNewAction;
- if ( pAction->GetType() == META_BMPSCALE_ACTION )
- pNewAction = new MetaBmpScaleAction ( aPos, aSize, aGraphic.GetBitmap() );
- else
- pNewAction = new MetaBmpExScaleAction( aPos, aSize, aGraphic.GetBitmapEx() );
-
- aMtf.ReplaceAction( pNewAction, i );
- pAction->Delete();
- break;
- }
- default:
- case( META_BMP_ACTION ):
- case( META_BMPSCALEPART_ACTION ):
- case( META_BMPEX_ACTION ):
- case( META_BMPEXSCALEPART_ACTION ):
- case( META_MASK_ACTION ):
- case( META_MASKSCALE_ACTION ):
- break;
- }
- }
- rGraphic = aMtf;
- }
- }
-}
-
-// ------------------------------------------------------------------------------
-
-void SAL_CALL GraphicProvider::storeGraphic( const uno::Reference< ::graphic::XGraphic >& rxGraphic, const uno::Sequence< beans::PropertyValue >& rMediaProperties )
- throw ( io::IOException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
-{
- SvStream* pOStm = NULL;
- String aPath;
- sal_Int32 i;
-
- for( i = 0; ( i < rMediaProperties.getLength() ) && !pOStm; ++i )
- {
- const ::rtl::OUString aName( rMediaProperties[ i ].Name );
- const uno::Any aValue( rMediaProperties[ i ].Value );
-
- if( COMPARE_EQUAL == aName.compareToAscii( "URL" ) )
- {
- ::rtl::OUString aURL;
-
- aValue >>= aURL;
- pOStm = ::utl::UcbStreamHelper::CreateStream( aURL, STREAM_WRITE | STREAM_TRUNC );
- aPath = aURL;
- }
- else if( COMPARE_EQUAL == aName.compareToAscii( "OutputStream" ) )
- {
- uno::Reference< io::XStream > xOStm;
-
- aValue >>= xOStm;
-
- if( xOStm.is() )
- pOStm = ::utl::UcbStreamHelper::CreateStream( xOStm );
- }
- }
-
- if( pOStm )
- {
- uno::Sequence< beans::PropertyValue > aFilterDataSeq;
- const char* pFilterShortName = NULL;
-
- for( i = 0; i < rMediaProperties.getLength(); ++i )
- {
- const ::rtl::OUString aName( rMediaProperties[ i ].Name );
- const uno::Any aValue( rMediaProperties[ i ].Value );
-
- if( COMPARE_EQUAL == aName.compareToAscii( "FilterData" ) )
- {
- aValue >>= aFilterDataSeq;
- }
- else if( COMPARE_EQUAL == aName.compareToAscii( "MimeType" ) )
- {
- ::rtl::OUString aMimeType;
-
- aValue >>= aMimeType;
-
- if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_BMP ) )
- pFilterShortName = "bmp";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_EPS ) )
- pFilterShortName = "eps";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_GIF ) )
- pFilterShortName = "gif";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_JPG ) )
- pFilterShortName = "jpg";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_MET ) )
- pFilterShortName = "met";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_PNG ) )
- pFilterShortName = "png";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_PCT ) )
- pFilterShortName = "pct";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_PBM ) )
- pFilterShortName = "pbm";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_PGM ) )
- pFilterShortName = "pgm";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_PPM ) )
- pFilterShortName = "ppm";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_RAS ) )
- pFilterShortName = "ras";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_SVM ) )
- pFilterShortName = "svm";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_TIF ) )
- pFilterShortName = "tif";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_EMF ) )
- pFilterShortName = "emf";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_WMF ) )
- pFilterShortName = "wmf";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_XPM ) )
- pFilterShortName = "xpm";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_SVG ) )
- pFilterShortName = "svg";
- else if( COMPARE_EQUAL == aMimeType.compareToAscii( MIMETYPE_VCLGRAPHIC ) )
- pFilterShortName = MIMETYPE_VCLGRAPHIC;
- }
- }
-
- if( pFilterShortName )
- {
- ::GraphicFilter* pFilter = ::GraphicFilter::GetGraphicFilter();
-
- if( pFilter )
- {
- const uno::Reference< XInterface > xIFace( rxGraphic, uno::UNO_QUERY );
- const ::Graphic* pGraphic = ::unographic::Graphic::getImplementation( xIFace );
-
- if( pGraphic && ( pGraphic->GetType() != GRAPHIC_NONE ) )
- {
- ::Graphic aGraphic( *pGraphic );
- ImplApplyFilterData( aGraphic, aFilterDataSeq );
-
- /* sj: using a temporary memory stream, because some graphic filters are seeking behind
- stream end (which leads to an invalid argument exception then). */
- SvMemoryStream aMemStrm;
- aMemStrm.SetVersion( SOFFICE_FILEFORMAT_CURRENT );
- if( 0 == strcmp( pFilterShortName, MIMETYPE_VCLGRAPHIC ) )
- aMemStrm << aGraphic;
- else
- {
- pFilter->ExportGraphic( aGraphic, aPath, aMemStrm,
- pFilter->GetExportFormatNumberForShortName( ::rtl::OUString::createFromAscii( pFilterShortName ) ),
- ( aFilterDataSeq.getLength() ? &aFilterDataSeq : NULL ) );
- }
- aMemStrm.Seek( STREAM_SEEK_TO_END );
- pOStm->Write( aMemStrm.GetData(), aMemStrm.Tell() );
- }
- }
- }
- delete pOStm;
- }
-}
-
-}
diff --git a/goodies/source/unographic/provider.hxx b/goodies/source/unographic/provider.hxx
deleted file mode 100644
index d92866d1ed09..000000000000
--- a/goodies/source/unographic/provider.hxx
+++ /dev/null
@@ -1,85 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: provider.hxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _GOODIES_PROVIDER_HXX
-#define _GOODIES_PROVIDER_HXX
-
-#include <cppuhelper/implbase1.hxx>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/graphic/XGraphicProvider.hpp>
-#include <com/sun/star/awt/XBitmap.hpp>
-
-using namespace com::sun::star;
-
-namespace unographic {
-
-// -------------------
-// - GraphicProvider -
-// -------------------
-
-class GraphicProvider : public ::cppu::WeakImplHelper1< ::com::sun::star::graphic::XGraphicProvider >
-{
-public:
-
- GraphicProvider();
- ~GraphicProvider();
-
- static ::rtl::OUString getImplementationName_Static() throw();
- static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static() throw();
-
-protected:
-
- // XServiceInfo
- virtual rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
- virtual sal_Bool SAL_CALL supportsService( const rtl::OUString& ServiceName ) throw( ::com::sun::star::uno::RuntimeException );
- virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException );
-
- // XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XGraphicProvider
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL queryGraphicDescriptor( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& MediaProperties ) throw (::com::sun::star::io::IOException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > SAL_CALL queryGraphic( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& MediaProperties ) throw (::com::sun::star::io::IOException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL storeGraphic( const ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >& Graphic, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& MediaProperties ) throw (::com::sun::star::io::IOException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
-private:
-
- ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > implLoadMemory( const ::rtl::OUString& rResourceURL ) const;
- ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > implLoadGraphicObject( const ::rtl::OUString& rResourceURL ) const;
- ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > implLoadResource( const ::rtl::OUString& rResourceURL ) const;
- ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > implLoadRepositoryImage( const ::rtl::OUString& rResourceURL ) const;
- ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > implLoadBitmap( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap >& rBitmap ) const;
- ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > implLoadStandardImage( const ::rtl::OUString& rResourceURL ) const;
-};
-
-}
-
-#endif
diff --git a/goodies/source/unographic/renderer.cxx b/goodies/source/unographic/renderer.cxx
deleted file mode 100644
index d280ed832999..000000000000
--- a/goodies/source/unographic/renderer.cxx
+++ /dev/null
@@ -1,351 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: renderer.cxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-
-#ifndef _COM_SUN_STAR_BEANS_PROPERTYSTATE_HDL_
-#include <com/sun/star/beans/PropertyState.hpp>
-#endif
-#ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HDL_
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#endif
-#ifndef _COM_SUN_STAR_AWT_RECTANGLE_HDL_
-#include <com/sun/star/awt/Rectangle.hpp>
-#endif
-#include <rtl/uuid.h>
-#include <vos/mutex.hxx>
-#ifndef _SV_SVAPP_HXX_
-#include <vcl/svapp.hxx>
-#endif
-
-#include <toolkit/helper/vclunohelper.hxx>
-#include <comphelper/propertysetinfo.hxx>
-#include <svl/itemprop.hxx>
-#include "grfmgr.hxx"
-#include "graphic.hxx"
-#include "renderer.hxx"
-
-#define UNOGRAPHIC_DEVICE 1
-#define UNOGRAPHIC_DESTINATIONRECT 2
-#define UNOGRAPHIC_RENDERDATA 3
-
-using namespace ::com::sun::star;
-
-namespace unographic {
-
-// ---------------------
-// - GraphicRendererVCL -
-// ---------------------
-
-GraphicRendererVCL::GraphicRendererVCL() :
- ::comphelper::PropertySetHelper( createPropertySetInfo() ),
- mpOutDev( NULL )
-{
-}
-
-// ------------------------------------------------------------------------------
-
-GraphicRendererVCL::~GraphicRendererVCL()
- throw()
-{
-}
-
-// ------------------------------------------------------------------------------
-
-::rtl::OUString GraphicRendererVCL::getImplementationName_Static()
- throw()
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.graphic.GraphicRendererVCL" ) );
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< ::rtl::OUString > GraphicRendererVCL::getSupportedServiceNames_Static()
- throw( )
-{
- uno::Sequence< ::rtl::OUString > aSeq( 1 );
-
- aSeq.getArray()[ 0 ] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.graphic.GraphicRendererVCL" ) );
-
- return aSeq;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Any SAL_CALL GraphicRendererVCL::queryAggregation( const uno::Type & rType )
- throw( uno::RuntimeException )
-{
- uno::Any aAny;
-
- if( rType == ::getCppuType((const uno::Reference< lang::XServiceInfo >*)0) )
- aAny <<= uno::Reference< lang::XServiceInfo >(this);
- else if( rType == ::getCppuType((const uno::Reference< lang::XTypeProvider >*)0) )
- aAny <<= uno::Reference< lang::XTypeProvider >(this);
- else if( rType == ::getCppuType((const uno::Reference< beans::XPropertySet >*)0) )
- aAny <<= uno::Reference< beans::XPropertySet >(this);
- else if( rType == ::getCppuType((const uno::Reference< beans::XPropertyState >*)0) )
- aAny <<= uno::Reference< beans::XPropertyState >(this);
- else if( rType == ::getCppuType((const uno::Reference< beans::XMultiPropertySet >*)0) )
- aAny <<= uno::Reference< beans::XMultiPropertySet >(this);
- else if( rType == ::getCppuType((const uno::Reference< graphic::XGraphicRenderer >*)0) )
- aAny <<= uno::Reference< graphic::XGraphicRenderer >(this);
- else
- aAny <<= OWeakAggObject::queryAggregation( rType );
-
- return aAny;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Any SAL_CALL GraphicRendererVCL::queryInterface( const uno::Type & rType )
- throw( uno::RuntimeException )
-{
- return OWeakAggObject::queryInterface( rType );
-}
-
-// ------------------------------------------------------------------------------
-
-void SAL_CALL GraphicRendererVCL::acquire()
- throw()
-{
- OWeakAggObject::acquire();
-}
-
-// ------------------------------------------------------------------------------
-
-void SAL_CALL GraphicRendererVCL::release()
- throw()
-{
- OWeakAggObject::release();
-}
-
-// ------------------------------------------------------------------------------
-
-::rtl::OUString SAL_CALL GraphicRendererVCL::getImplementationName()
- throw( uno::RuntimeException )
-{
- return getImplementationName_Static();
-}
-
-// ------------------------------------------------------------------------------
-
-sal_Bool SAL_CALL GraphicRendererVCL::supportsService( const rtl::OUString& ServiceName )
- throw( uno::RuntimeException )
-{
- uno::Sequence< ::rtl::OUString > aSNL( getSupportedServiceNames() );
- const ::rtl::OUString* pArray = aSNL.getConstArray();
-
- for( sal_Int32 i = 0; i < aSNL.getLength(); i++ )
- if( pArray[i] == ServiceName )
- return true;
-
- return false;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< rtl::OUString > SAL_CALL GraphicRendererVCL::getSupportedServiceNames()
- throw( uno::RuntimeException )
-{
- return getSupportedServiceNames_Static();
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< uno::Type > SAL_CALL GraphicRendererVCL::getTypes()
- throw( uno::RuntimeException )
-{
- uno::Sequence< uno::Type > aTypes( 7 );
- uno::Type* pTypes = aTypes.getArray();
-
- *pTypes++ = ::getCppuType((const uno::Reference< uno::XAggregation>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< lang::XServiceInfo>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< lang::XTypeProvider>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< beans::XPropertySet>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< beans::XPropertyState>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< beans::XMultiPropertySet>*)0);
- *pTypes++ = ::getCppuType((const uno::Reference< graphic::XGraphicRenderer>*)0);
-
- return aTypes;
-}
-
-// ------------------------------------------------------------------------------
-
-uno::Sequence< sal_Int8 > SAL_CALL GraphicRendererVCL::getImplementationId()
- throw( uno::RuntimeException )
-{
- vos::OGuard aGuard( Application::GetSolarMutex() );
- static uno::Sequence< sal_Int8 > aId;
-
- if( aId.getLength() == 0 )
- {
- aId.realloc( 16 );
- rtl_createUuid( reinterpret_cast< sal_uInt8* >( aId.getArray() ), 0, sal_True );
- }
-
- return aId;
-}
-
-// ------------------------------------------------------------------------------
-
-::comphelper::PropertySetInfo* GraphicRendererVCL::createPropertySetInfo()
-{
- vos::OGuard aGuard( Application::GetSolarMutex() );
- ::comphelper::PropertySetInfo* pRet = new ::comphelper::PropertySetInfo();
-
- static ::comphelper::PropertyMapEntry aEntries[] =
- {
- { MAP_CHAR_LEN( "Device" ), UNOGRAPHIC_DEVICE, &::getCppuType( (const uno::Any*)(0)), 0, 0 },
- { MAP_CHAR_LEN( "DestinationRect" ), UNOGRAPHIC_DESTINATIONRECT, &::getCppuType( (const awt::Rectangle*)(0)), 0, 0 },
- { MAP_CHAR_LEN( "RenderData" ), UNOGRAPHIC_RENDERDATA, &::getCppuType( (const uno::Any*)(0)), 0, 0 },
-
- { 0,0,0,0,0,0 }
- };
-
- pRet->acquire();
- pRet->add( aEntries );
-
- return pRet;
-}
-
-// ------------------------------------------------------------------------------
-
-void GraphicRendererVCL::_setPropertyValues( const comphelper::PropertyMapEntry** ppEntries, const uno::Any* pValues )
- throw( beans::UnknownPropertyException,
- beans::PropertyVetoException,
- lang::IllegalArgumentException,
- lang::WrappedTargetException )
-{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- while( *ppEntries )
- {
- switch( (*ppEntries)->mnHandle )
- {
- case( UNOGRAPHIC_DEVICE ):
- {
- uno::Reference< awt::XDevice > xDevice;
-
- if( ( *pValues >>= xDevice ) && xDevice.is() )
- {
- mxDevice = xDevice;
- mpOutDev = VCLUnoHelper::GetOutputDevice( xDevice );
- }
- else
- {
- mxDevice.clear();
- mpOutDev = NULL;
- }
- }
- break;
-
- case( UNOGRAPHIC_DESTINATIONRECT ):
- {
- awt::Rectangle aAWTRect;
-
- if( *pValues >>= aAWTRect )
- {
- maDestRect = Rectangle( Point( aAWTRect.X, aAWTRect.Y ),
- Size( aAWTRect.Width, aAWTRect.Height ) );
- }
- }
- break;
-
- case( UNOGRAPHIC_RENDERDATA ):
- {
- *pValues >>= maRenderData;
- }
- break;
- }
-
- ++ppEntries;
- ++pValues;
- }
-}
-
-// ------------------------------------------------------------------------------
-
-void GraphicRendererVCL::_getPropertyValues( const comphelper::PropertyMapEntry** ppEntries, uno::Any* pValues )
- throw( beans::UnknownPropertyException, lang::WrappedTargetException )
-{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- while( *ppEntries )
- {
- switch( (*ppEntries)->mnHandle )
- {
- case( UNOGRAPHIC_DEVICE ):
- {
- if( mxDevice.is() )
- *pValues <<= mxDevice;
- }
- break;
-
- case( UNOGRAPHIC_DESTINATIONRECT ):
- {
- const awt::Rectangle aAWTRect( maDestRect.Left(), maDestRect.Top(),
- maDestRect.GetWidth(), maDestRect.GetHeight() );
-
- *pValues <<= aAWTRect;
- }
- break;
-
- case( UNOGRAPHIC_RENDERDATA ):
- {
- *pValues <<= maRenderData;
- }
- break;
- }
-
- ++ppEntries;
- ++pValues;
- }
-}
-
-// ------------------------------------------------------------------------------
-
-void SAL_CALL GraphicRendererVCL::render( const uno::Reference< graphic::XGraphic >& rxGraphic )
- throw (uno::RuntimeException)
-{
- if( mpOutDev && mxDevice.is() && rxGraphic.is() )
- {
- const uno::Reference< XInterface > xIFace( rxGraphic, uno::UNO_QUERY );
- const ::Graphic* pGraphic = ::unographic::Graphic::getImplementation( xIFace );
-
- if( pGraphic )
- {
- GraphicObject aGraphicObject( *pGraphic );
- aGraphicObject.Draw( mpOutDev, maDestRect.TopLeft(), maDestRect.GetSize() );
- }
- }
-}
-
-}
diff --git a/goodies/source/unographic/renderer.hxx b/goodies/source/unographic/renderer.hxx
deleted file mode 100644
index ebb4b2e3dca7..000000000000
--- a/goodies/source/unographic/renderer.hxx
+++ /dev/null
@@ -1,103 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: renderer.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _GOODIES_RENDERER_HXX
-#define _GOODIES_RENDERER_HXX
-
-#include <tools/gen.hxx>
-#include <comphelper/propertysethelper.hxx>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/awt/XDevice.hpp>
-#include <com/sun/star/graphic/XGraphic.hpp>
-#include <com/sun/star/graphic/XGraphicRenderer.hpp>
-
-
-using namespace com::sun::star;
-
-class OutputDevice;
-
-namespace unographic {
-
-// -------------------
-// - GraphicRenderer -
-// -------------------
-
-class GraphicRendererVCL : public ::cppu::OWeakAggObject,
- public ::com::sun::star::lang::XServiceInfo,
- public ::com::sun::star::lang::XTypeProvider,
- public ::comphelper::PropertySetHelper,
- public ::com::sun::star::graphic::XGraphicRenderer
-{
-public:
-
- GraphicRendererVCL();
- ~GraphicRendererVCL() throw();
-
- static ::rtl::OUString getImplementationName_Static() throw();
- static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static() throw();
-
-protected:
-
- static ::comphelper::PropertySetInfo* createPropertySetInfo();
-
- // XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
-
- // XServiceInfo
- virtual rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
- virtual sal_Bool SAL_CALL supportsService( const rtl::OUString& ServiceName ) throw( ::com::sun::star::uno::RuntimeException );
- virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException );
-
- // XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
-
- // PropertySetHelper
- virtual void _setPropertyValues( const comphelper::PropertyMapEntry** ppEntries, const ::com::sun::star::uno::Any* pValues ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException );
- virtual void _getPropertyValues( const comphelper::PropertyMapEntry** ppEntries, ::com::sun::star::uno::Any* pValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException );
-
- // XGraphicRenderer
- virtual void SAL_CALL render( const ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >& Graphic ) throw (::com::sun::star::uno::RuntimeException);
-
-private:
-
- ::com::sun::star::uno::Reference< ::com::sun::star::awt::XDevice > mxDevice;
-
- OutputDevice* mpOutDev;
- Rectangle maDestRect;
- ::com::sun::star::uno::Any maRenderData;
-};
-
-}
-
-#endif
diff --git a/goodies/source/unographic/transformer.cxx b/goodies/source/unographic/transformer.cxx
deleted file mode 100644
index 7e18c10cdd41..000000000000
--- a/goodies/source/unographic/transformer.cxx
+++ /dev/null
@@ -1,162 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: transformer.cxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_goodies.hxx"
-#include <rtl/uuid.h>
-#include <vos/mutex.hxx>
-#ifndef _SV_SVAPP_HXX_
-#include <vcl/svapp.hxx>
-#endif
-#ifndef _SV_IMAGE_HXX_
-#include <vcl/image.hxx>
-#endif
-#include <vcl/metaact.hxx>
-#include <tools/rcid.h>
-#include <tools/resid.hxx>
-#include <tools/resmgr.hxx>
-#include <unotools/ucbstreamhelper.hxx>
-#include <svl/solar.hrc>
-#include <vcl/salbtype.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/bmpacc.hxx>
-#include <com/sun/star/text/GraphicCrop.hpp>
-
-#include "graphic.hxx"
-#include "transformer.hxx"
-
-using namespace com::sun::star;
-
-namespace unographic {
-
-// ----------------------
-// - GraphicTransformer -
-// ----------------------
-
-GraphicTransformer::GraphicTransformer()
-{
-}
-
-// ------------------------------------------------------------------------------
-
-GraphicTransformer::~GraphicTransformer()
-{
-}
-
-// ------------------------------------------------------------------------------
-
-void setAlpha( Bitmap& rBitmap, AlphaMask& rAlpha, sal_Int32 nColorFrom, sal_Int8 nAlphaTo )
-{
- BitmapWriteAccess* pWriteAccess = rAlpha.AcquireWriteAccess();
- BitmapReadAccess* pReadAccess = rBitmap.AcquireReadAccess();
- BitmapColor aColorFrom( static_cast< sal_uInt8 >( nColorFrom >> 16 ),
- static_cast< sal_uInt8 >( nColorFrom >> 8 ),
- static_cast< sal_uInt8 >( nColorFrom ) );
- if ( pReadAccess && pWriteAccess )
- {
- for ( sal_Int32 nY = 0; nY < pReadAccess->Height(); nY++ )
- {
- for ( sal_Int32 nX = 0; nX < pReadAccess->Width(); nX++ )
- {
- BitmapColor aColor( pReadAccess->GetPixel( nY, nX ) );
- if ( aColor == aColorFrom )
- pWriteAccess->SetPixel( nY, nX, nAlphaTo );
- }
- }
- }
- rBitmap.ReleaseAccess( pReadAccess );
- rAlpha.ReleaseAccess( pWriteAccess );
-}
-
-// XGraphicTransformer
-uno::Reference< graphic::XGraphic > SAL_CALL GraphicTransformer::colorChange(
- const uno::Reference< graphic::XGraphic >& rxGraphic, sal_Int32 nColorFrom, sal_Int8 nTolerance, sal_Int32 nColorTo, sal_Int8 nAlphaTo )
- throw ( lang::IllegalArgumentException, uno::RuntimeException)
-{
- const uno::Reference< uno::XInterface > xIFace( rxGraphic, uno::UNO_QUERY );
- ::Graphic aGraphic( *::unographic::Graphic::getImplementation( xIFace ) );
-
- BitmapColor aColorFrom( static_cast< sal_uInt8 >( nColorFrom ), static_cast< sal_uInt8 >( nColorFrom >> 8 ), static_cast< sal_uInt8 >( nColorFrom >> 16 ) );
- BitmapColor aColorTo( static_cast< sal_uInt8 >( nColorTo ), static_cast< sal_uInt8 >( nColorTo >> 8 ), static_cast< sal_uInt8 >( nColorTo >> 16 ) );
-
- if ( aGraphic.GetType() == GRAPHIC_BITMAP )
- {
- BitmapEx aBitmapEx( aGraphic.GetBitmapEx() );
- Bitmap aBitmap( aBitmapEx.GetBitmap() );
-
- if ( aBitmapEx.IsAlpha() )
- {
- AlphaMask aAlphaMask( aBitmapEx.GetAlpha() );
- setAlpha( aBitmap, aAlphaMask, aColorFrom, nAlphaTo );
- aBitmap.Replace( aColorFrom, aColorTo, nTolerance );
- aGraphic = ::Graphic( BitmapEx( aBitmap, aAlphaMask ) );
- }
- else if ( aBitmapEx.IsTransparent() )
- {
- if ( ( nAlphaTo == 0 ) || ( nAlphaTo == sal::static_int_cast<sal_Int8>(0xff) ) )
- {
- Bitmap aMask( aBitmapEx.GetMask() );
- Bitmap aMask2( aBitmap.CreateMask( aColorFrom, nTolerance ) );
- aMask.CombineSimple( aMask2, BMP_COMBINE_OR );
- aBitmap.Replace( aColorFrom, aColorTo, nTolerance );
- aGraphic = ::Graphic( BitmapEx( aBitmap, aMask ) );
- }
- else
- {
- AlphaMask aAlphaMask( aBitmapEx.GetMask() );
- setAlpha( aBitmap, aAlphaMask, aColorFrom, nAlphaTo );
- aBitmap.Replace( aColorFrom, aColorTo, nTolerance );
- aGraphic = ::Graphic( BitmapEx( aBitmap, aAlphaMask ) );
- }
- }
- else
- {
- if ( ( nAlphaTo == 0 ) || ( nAlphaTo == sal::static_int_cast<sal_Int8>(0xff) ) )
- {
- Bitmap aMask( aBitmap.CreateMask( aColorFrom, nTolerance ) );
- aBitmap.Replace( aColorFrom, aColorTo, nTolerance );
- aGraphic = ::Graphic( BitmapEx( aBitmap, aMask ) );
- }
- else
- {
- AlphaMask aAlphaMask( aBitmapEx.GetSizePixel() );
- setAlpha( aBitmap, aAlphaMask, aColorFrom, nAlphaTo );
- aBitmap.Replace( aColorFrom, aColorTo, nTolerance );
- aGraphic = ::Graphic( BitmapEx( aBitmap, aAlphaMask ) );
- }
- }
- }
- ::unographic::Graphic* pUnoGraphic = new ::unographic::Graphic();
- pUnoGraphic->init( aGraphic );
- uno::Reference< graphic::XGraphic > xRet( pUnoGraphic );
- return xRet;
-}
-
-}
diff --git a/goodies/source/unographic/transformer.hxx b/goodies/source/unographic/transformer.hxx
deleted file mode 100644
index 5de3acc7f2d5..000000000000
--- a/goodies/source/unographic/transformer.hxx
+++ /dev/null
@@ -1,66 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: transformer.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _GOODIES_GRAPHICTRANSFORMER_HXX
-#define _GOODIES_GRAPHICTRANSFORMER_HXX
-
-#include <cppuhelper/implbase1.hxx>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/graphic/XGraphicTransformer.hpp>
-
-using namespace com::sun::star;
-
-namespace unographic {
-
-// ----------------------
-// - GraphicTransformer -
-// ----------------------
-
-typedef ::cppu::WeakAggImplHelper1<
- ::com::sun::star::graphic::XGraphicTransformer
- > GraphicTransformer_UnoImplHelper1;
-class GraphicTransformer : public GraphicTransformer_UnoImplHelper1
-{
- public:
-
- GraphicTransformer();
- ~GraphicTransformer();
-
- // XGraphicTransformer
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > SAL_CALL colorChange(
- const ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >& rGraphic,
- sal_Int32 nColorFrom, sal_Int8 nTolerance, sal_Int32 nColorTo, sal_Int8 nAlphaTo )
- throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
-
-};
-
-}
-
-#endif
diff --git a/goodies/util/goodies.dxp b/goodies/util/goodies.dxp
deleted file mode 100755
index 9630d7e06768..000000000000
--- a/goodies/util/goodies.dxp
+++ /dev/null
@@ -1,3 +0,0 @@
-component_getImplementationEnvironment
-component_writeInfo
-component_getFactory
diff --git a/goodies/util/makefile.mk b/goodies/util/makefile.mk
deleted file mode 100644
index dc5d9566ea8a..000000000000
--- a/goodies/util/makefile.mk
+++ /dev/null
@@ -1,105 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.12 $
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..
-
-PRJNAME=goodies
-TARGET=go
-
-#goodies.hid generieren
-GEN_HID=TRUE
-
-# --- Settings ---------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Allgemein ---------------------------------------------------
-.IF "$(L10N_framework)"==""
-
-LIB1TARGET=$(SLB)$/go.lib
-LIB1FILES=\
- $(SLB)$/base3d.lib \
- $(SLB)$/graphic.lib \
- $(SLB)$/unographic.lib
-
-SHL1TARGET= go$(DLLPOSTFIX)
-SHL1IMPLIB= igo
-
-SHL1STDLIBS=\
- $(BASEGFXLIB) \
- $(VCLLIB) \
- $(SVLLIB) \
- $(SVTOOLLIB) \
- $(UNOTOOLSLIB) \
- $(TOOLSLIB) \
- $(SALLIB) \
- $(CPPULIB) \
- $(COMPHELPERLIB) \
- $(CPPUHELPERLIB) \
- $(BASEGFXLIB) \
- $(TKLIB)
-
-SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-SHL1LIBS= $(SLB)$/go.lib
-
-DEF1NAME =$(SHL1TARGET)
-DEF1DEPN =$(MISC)$/$(SHL1TARGET).flt \
- $(LIB1TARGET)
-DEF1DES =Goodies
-DEFLIB1NAME =go
-DEF1EXPORTFILE =goodies.dxp
-
-# THB: exports list goodies checked for 6.0 Final 6.12.2001
-# Note: explicit exports only necessary for VCL graphic filters (see there)
-.ENDIF
-
-# --- Targets -----------------------------------------------------------
-
-.INCLUDE : target.mk
-
-.IF "$(depend)"==""
-
-# --- Goodies-Filter-Datei ---
-.IF "$(L10N_framework)"==""
-
-$(MISC)$/$(SHL1TARGET).flt: makefile.mk
- @echo ------------------------------
- @echo Making: $@
- @echo _Impl>$@
- @echo WEP>>$@
- @echo m_pLoader>$@
- @echo LIBMAIN>>$@
- @echo LibMain>>$@
- @echo CT>>$@
-
-.ENDIF
-
-.ENDIF
diff --git a/goodies/util/shelp.ico b/goodies/util/shelp.ico
deleted file mode 100644
index 34afa8928737..000000000000
--- a/goodies/util/shelp.ico
+++ /dev/null
Binary files differ