diff options
220 files changed, 163 insertions, 45531 deletions
diff --git a/canvas/prj/build.lst b/canvas/prj/build.lst index df1f8e9f31d3..28e8524a9b38 100644 --- a/canvas/prj/build.lst +++ b/canvas/prj/build.lst @@ -1,4 +1,4 @@ -cv canvas : javaunohelper comphelper cppuhelper offuh unoil tools goodies vcl AGG:agg basegfx CAIRO:cairo NULL +cv canvas : javaunohelper comphelper cppuhelper offuh unoil tools svtools vcl AGG:agg basegfx CAIRO:cairo NULL cv canvas usr1 - all cv_mkout NULL cv canvas\inc nmake - all cv_inc NULL cv canvas\source\tools nmake - all cv_tools cv_inc NULL diff --git a/canvas/source/vcl/cachedbitmap.hxx b/canvas/source/vcl/cachedbitmap.hxx index 8f60f1661a9b..dad3c640de48 100644 --- a/canvas/source/vcl/cachedbitmap.hxx +++ b/canvas/source/vcl/cachedbitmap.hxx @@ -33,7 +33,7 @@ #include <canvas/base/cachedprimitivebase.hxx> -#include <goodies/grfmgr.hxx> +#include <svtools/grfmgr.hxx> #include <boost/shared_ptr.hpp> diff --git a/canvas/source/vcl/makefile.mk b/canvas/source/vcl/makefile.mk index fdfdd62d16b8..9e05587fcb4d 100644 --- a/canvas/source/vcl/makefile.mk +++ b/canvas/source/vcl/makefile.mk @@ -73,7 +73,7 @@ SLOFILES = $(SLO)$/backbuffer.obj \ SHL1TARGET=$(TARGET).uno -SHL1STDLIBS= $(TOOLSLIB) $(TKLIB) $(CPPULIB) $(SALLIB) $(VCLLIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(BASEGFXLIB) $(CANVASTOOLSLIB) $(GOODIESLIB) $(I18NISOLANGLIB) +SHL1STDLIBS= $(TOOLSLIB) $(TKLIB) $(CPPULIB) $(SALLIB) $(VCLLIB) $(COMPHELPERLIB) $(CPPUHELPERLIB) $(BASEGFXLIB) $(CANVASTOOLSLIB) $(SVTOOLLIB) $(I18NISOLANGLIB) SHL1IMPLIB=i$(TARGET) SHL1LIBS=$(SLB)$/$(TARGET).lib 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/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/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/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 zurck, die nicht - { // zur vorherigen pat -> diese mssen wir dann auch lschen - 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/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/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/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 Binary files differdeleted file mode 100644 index 34afa8928737..000000000000 --- a/goodies/util/shelp.ico +++ /dev/null diff --git a/goodies/inc/mailenum.hxx b/svl/inc/svl/mailenum.hxx index ac6b78ac86a2..ac6b78ac86a2 100644 --- a/goodies/inc/mailenum.hxx +++ b/svl/inc/svl/mailenum.hxx diff --git a/goodies/inc/grfmgr.hxx b/svtools/inc/svtools/grfmgr.hxx index 2cc2146af70a..f27d6e5e35aa 100644 --- a/goodies/inc/grfmgr.hxx +++ b/svtools/inc/svtools/grfmgr.hxx @@ -32,6 +32,7 @@ #define _GRFMGR_HXX #include <vcl/graph.hxx> +#include <svtools/svtdllapi.h> // ----------- // - Defines - @@ -94,7 +95,7 @@ struct ImplTileInfo; // - GraphicAttr - // --------------- -class GraphicAttr +class SVT_DLLPUBLIC GraphicAttr { private: @@ -192,7 +193,7 @@ public: // - GraphicObject - // ----------------- -class GraphicObject : public SvDataCopyStream +class SVT_DLLPUBLIC GraphicObject : public SvDataCopyStream { friend class GraphicManager; @@ -224,16 +225,14 @@ private: BOOL mbAlpha : 1; BOOL mbDummyFlag8 : 1; -//#if 0 // _SOLAR__PRIVATE - - void ImplConstruct(); - void ImplAssignGraphicData(); - void ImplSetGraphicManager( const GraphicManager* pMgr, + void SVT_DLLPRIVATE ImplConstruct(); + void SVT_DLLPRIVATE ImplAssignGraphicData(); + void SVT_DLLPRIVATE 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, + void SVT_DLLPRIVATE ImplAutoSwapIn(); + BOOL SVT_DLLPRIVATE ImplIsAutoSwapped() const { return mbAutoSwapped; } + BOOL SVT_DLLPRIVATE 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 @@ -277,27 +276,27 @@ private: @return true, if everything was successfully rendered. */ - bool ImplRenderTempTile( VirtualDevice& rVDev, int nExponent, + bool SVT_DLLPRIVATE 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, + bool SVT_DLLPRIVATE 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, + bool SVT_DLLPRIVATE 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, + bool SVT_DLLPRIVATE ImplDrawTiled( OutputDevice& rOut, const Point& rPos, int nNumTilesX, int nNumTilesY, const Size& rTileSize, const GraphicAttr* pAttr, ULONG nFlags ); - void ImplTransformBitmap( BitmapEx& rBmpEx, + void SVT_DLLPRIVATE ImplTransformBitmap( BitmapEx& rBmpEx, const GraphicAttr& rAttr, const Size& rCropLeftTop, const Size& rCropRightBottom, @@ -307,8 +306,6 @@ private: DECL_LINK( ImplAutoSwapOutHdl, void* ); -//#endif // _SOLAR__PRIVATE - protected: virtual void GraphicManagerDestroyed(); @@ -481,7 +478,7 @@ public: // - GraphicManager - // ------------------ -class GraphicManager +class SVT_DLLPUBLIC GraphicManager { friend class GraphicObject; friend class GraphicDisplayCacheEntry; @@ -494,54 +491,50 @@ private: GraphicManager( const GraphicManager& ) {} GraphicManager& operator=( const GraphicManager& ) { return *this; } -//#if 0 // _SOLAR__PRIVATE - - BOOL ImplDraw( OutputDevice* pOut, const Point& rPt, + BOOL SVT_DLLPRIVATE 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, + BOOL SVT_DLLPRIVATE 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, + BOOL SVT_DLLPRIVATE 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, + BOOL SVT_DLLPRIVATE 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, + BOOL SVT_DLLPRIVATE 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 SVT_DLLPRIVATE ImplAdjust( BitmapEx& rBmpEx, const GraphicAttr& rAttr, ULONG nAdjustmentFlags ); + static void SVT_DLLPRIVATE ImplAdjust( GDIMetaFile& rMtf, const GraphicAttr& rAttr, ULONG nAdjustmentFlags ); + static void SVT_DLLPRIVATE ImplAdjust( Animation& rAnimation, const GraphicAttr& rAttr, ULONG nAdjustmentFlags ); - static void ImplDraw( OutputDevice* pOut, const Point& rPt, const Size& rSz, + static void SVT_DLLPRIVATE 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, + void SVT_DLLPRIVATE 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 ); } + void SVT_DLLPRIVATE ImplUnregisterObj( const GraphicObject& rObj ); + inline BOOL SVT_DLLPRIVATE 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; + void SVT_DLLPRIVATE ImplGraphicObjectWasSwappedOut( const GraphicObject& rObj ); + BOOL SVT_DLLPRIVATE ImplFillSwappedGraphicObject( const GraphicObject& rObj, Graphic& rSubstitute ); + void SVT_DLLPRIVATE ImplGraphicObjectWasSwappedIn( const GraphicObject& rObj ); -//#endif // _SOLAR__PRIVATE + ByteString SVT_DLLPRIVATE ImplGetUniqueID( const GraphicObject& rObj ) const; public: diff --git a/svtools/prj/build.lst b/svtools/prj/build.lst index 5a67b9414181..4b2cd9f9b26b 100644 --- a/svtools/prj/build.lst +++ b/svtools/prj/build.lst @@ -14,6 +14,7 @@ st svtools\source\filter.vcl\igif nmake - all st_vigif st_inc NULL st svtools\source\filter.vcl\jpeg nmake - all st_vjpeg st_inc NULL st svtools\source\filter.vcl\ixbm nmake - all st_vixbm st_inc NULL st svtools\source\filter.vcl\ixpm nmake - all st_vixpm st_inc NULL +st svtools\source\graphic nmake - all st_svtgraphic st_inc NULL st svtools\source\java nmake - all st_svtjava st_inc NULL st svtools\source\misc nmake - all st__misc st_bmp st_inc NULL st svtools\source\plugapp nmake - all st_papp st_inc NULL @@ -22,7 +23,7 @@ st svtools\source\svrtf nmake - all st_rtf st_inc NULL st svtools\source\table nmake - all st_table st_inc NULL st svtools\source\uno nmake - all st_uno st_inc NULL st svtools\source\urlobj nmake - all st__url st_inc NULL -st svtools\util nmake - all st_util st__brw st__ctr st_conf st_ctl st_dial st_edit st__misc st__url st_html st_papp st_rtf st_table st_uno st_vfilt st_vigif st_vixbm st_vixpm st_vjpeg st_vwmf st_svtjava NULL +st svtools\util nmake - all st_util st_svtgraphic st__brw st__ctr st_conf st_ctl st_dial st_edit st__misc st__url st_html st_papp st_rtf st_table st_uno st_vfilt st_vigif st_vixbm st_vixpm st_vjpeg st_vwmf st_svtjava NULL st svtools\source\hatchwindow nmake - all st_hatchwin st_inc NULL st svtools\source\productregistration nmake - all st_prodreg st_util st_inc NULL st svtools\workben\unodialog nmake - all st_workben_udlg st_util NULL diff --git a/goodies/source/unographic/descriptor.cxx b/svtools/source/graphic/descriptor.cxx index c19318d6e11e..f4ef69982cea 100644 --- a/goodies/source/unographic/descriptor.cxx +++ b/svtools/source/graphic/descriptor.cxx @@ -29,7 +29,7 @@ ************************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" +#include "precompiled_svtools.hxx" #include "descriptor.hxx" @@ -39,18 +39,11 @@ #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" diff --git a/goodies/source/unographic/descriptor.hxx b/svtools/source/graphic/descriptor.hxx index 5bbb982846ff..5bbb982846ff 100644 --- a/goodies/source/unographic/descriptor.hxx +++ b/svtools/source/graphic/descriptor.hxx diff --git a/goodies/source/unographic/graphic.cxx b/svtools/source/graphic/graphic.cxx index ed40de4dcc55..aa1d276c437f 100644 --- a/goodies/source/unographic/graphic.cxx +++ b/svtools/source/graphic/graphic.cxx @@ -29,18 +29,13 @@ ************************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" +#include "precompiled_svtools.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" diff --git a/goodies/source/unographic/graphic.hxx b/svtools/source/graphic/graphic.hxx index a7687458be19..a7687458be19 100644 --- a/goodies/source/unographic/graphic.hxx +++ b/svtools/source/graphic/graphic.hxx diff --git a/goodies/source/unographic/graphicunofactory.cxx b/svtools/source/graphic/graphicunofactory.cxx index cdf9c51bf601..9aea39ca7460 100644 --- a/goodies/source/unographic/graphicunofactory.cxx +++ b/svtools/source/graphic/graphicunofactory.cxx @@ -28,14 +28,14 @@ * ************************************************************************/ - // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" +#include "precompiled_svtools.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" +#include <svtools/grfmgr.hxx> using namespace com::sun::star; diff --git a/goodies/source/graphic/grfattr.cxx b/svtools/source/graphic/grfattr.cxx index f04011d9e6b0..6b3fe6f16c02 100644 --- a/goodies/source/graphic/grfattr.cxx +++ b/svtools/source/graphic/grfattr.cxx @@ -29,10 +29,10 @@ ************************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" +#include "precompiled_svtools.hxx" #include <tools/vcompat.hxx> -#include "grfmgr.hxx" +#include <svtools/grfmgr.hxx> // --------------- // - GraphicAttr - diff --git a/goodies/source/graphic/grfcache.cxx b/svtools/source/graphic/grfcache.cxx index 1a2af16ed741..b9d91ccf85d9 100644 --- a/goodies/source/graphic/grfcache.cxx +++ b/svtools/source/graphic/grfcache.cxx @@ -29,7 +29,7 @@ ************************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" +#include "precompiled_svtools.hxx" #include <vos/timer.hxx> #include <tools/debug.hxx> diff --git a/goodies/source/graphic/grfcache.hxx b/svtools/source/graphic/grfcache.hxx index 86b982b01498..65391e12c656 100644 --- a/goodies/source/graphic/grfcache.hxx +++ b/svtools/source/graphic/grfcache.hxx @@ -34,7 +34,7 @@ #include <tools/list.hxx> #include <vcl/graph.hxx> #include <vcl/timer.hxx> -#include "grfmgr.hxx" +#include <svtools/grfmgr.hxx> // ----------------------- // - GraphicManagerCache - diff --git a/goodies/source/graphic/grfmgr.cxx b/svtools/source/graphic/grfmgr.cxx index c92d24d62815..cdac200810bc 100644 --- a/goodies/source/graphic/grfmgr.cxx +++ b/svtools/source/graphic/grfmgr.cxx @@ -29,7 +29,7 @@ ************************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" +#include "precompiled_svtools.hxx" #define ENABLE_BYTESTRING_STREAM_OPERATORS @@ -45,7 +45,7 @@ #include <vcl/virdev.hxx> #include <vcl/salbtype.hxx> #include <unotools/cacheoptions.hxx> -#include "grfmgr.hxx" +#include <svtools/grfmgr.hxx> // ----------- // - Defines - diff --git a/goodies/source/graphic/grfmgr2.cxx b/svtools/source/graphic/grfmgr2.cxx index 2b7dc86f7149..03e88a7be6c4 100644 --- a/goodies/source/graphic/grfmgr2.cxx +++ b/svtools/source/graphic/grfmgr2.cxx @@ -29,7 +29,7 @@ ************************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" +#include "precompiled_svtools.hxx" #include <vos/macros.hxx> #include <vcl/bmpacc.hxx> @@ -43,7 +43,7 @@ #include <vcl/alpha.hxx> #include <vcl/virdev.hxx> #include "grfcache.hxx" -#include "grfmgr.hxx" +#include <svtools/grfmgr.hxx> // ----------- // - defines - diff --git a/goodies/source/unographic/makefile.mk b/svtools/source/graphic/makefile.mk index 59196031f089..ed985e142aa0 100755..100644 --- a/goodies/source/unographic/makefile.mk +++ b/svtools/source/graphic/makefile.mk @@ -8,7 +8,7 @@ # # $RCSfile: makefile.mk,v $ # -# $Revision: 1.6.40.1 $ +# $Revision: 1.5 $ # # This file is part of OpenOffice.org. # @@ -31,27 +31,33 @@ PRJ=..$/.. -PRJNAME=goodies -TARGET=unographic -ENABLE_EXCEPTIONS=TRUE +PRJNAME=svtools +TARGET=graphic # --- Settings ----------------------------------------------------- .INCLUDE : settings.mk +.INCLUDE : $(PRJ)$/util$/svt.pmk -# --- Files -------------------------------------------------------- +.IF "$(GUI)"=="WIN" +LINKFLAGS=$(LINKFLAGS) /PACKC:32768 +.ENDIF -CXXFILES= \ - graphicuno.cxx \ - descriptor.cxx \ - provider.cxx \ - graphic.cxx \ - renderer.cxx \ - graphicunofactory.cxx \ - transformer.cxx +# --- Files -------------------------------------------------------- SLOFILES= \ - $(SLO)$/graphicuno.obj \ + $(SLO)$/grfattr.obj \ + $(SLO)$/grfmgr.obj \ + $(SLO)$/grfmgr2.obj \ + $(SLO)$/grfcache.obj \ + $(SLO)$/descriptor.obj \ + $(SLO)$/provider.obj \ + $(SLO)$/graphic.obj \ + $(SLO)$/renderer.obj \ + $(SLO)$/graphicunofactory.obj \ + $(SLO)$/transformer.obj + +EXCEPTIONSFILES= \ $(SLO)$/descriptor.obj \ $(SLO)$/provider.obj \ $(SLO)$/graphic.obj \ diff --git a/goodies/source/unographic/provider.cxx b/svtools/source/graphic/provider.cxx index 1f7de99d4473..f8f1c77b255d 100644 --- a/goodies/source/unographic/provider.cxx +++ b/svtools/source/graphic/provider.cxx @@ -29,15 +29,12 @@ ************************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" +#include "precompiled_svtools.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> @@ -54,7 +51,7 @@ #include "descriptor.hxx" #include "graphic.hxx" -#include "grfmgr.hxx" +#include <svtools/grfmgr.hxx> #include "provider.hxx" using namespace com::sun::star; @@ -67,6 +64,11 @@ namespace unographic { // - GraphicProvider - // ------------------- +uno::Reference< uno::XInterface > SAL_CALL GraphicProvider_CreateInstance( const uno::Reference< lang::XMultiServiceFactory >& ) +{ + return SAL_STATIC_CAST( ::cppu::OWeakObject*, new GraphicProvider ); +} + GraphicProvider::GraphicProvider() { } diff --git a/goodies/source/unographic/renderer.cxx b/svtools/source/graphic/renderer.cxx index d280ed832999..39f45ad0f8f0 100644 --- a/goodies/source/unographic/renderer.cxx +++ b/svtools/source/graphic/renderer.cxx @@ -29,27 +29,18 @@ ************************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" +#include "precompiled_svtools.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 <svtools/grfmgr.hxx> #include "graphic.hxx" #include "renderer.hxx" @@ -65,6 +56,12 @@ namespace unographic { // - GraphicRendererVCL - // --------------------- +uno::Reference< uno::XInterface > SAL_CALL GraphicRendererVCL_CreateInstance( const uno::Reference< lang::XMultiServiceFactory >& ) +{ + return SAL_STATIC_CAST( ::cppu::OWeakObject*, new GraphicRendererVCL ); +} + + GraphicRendererVCL::GraphicRendererVCL() : ::comphelper::PropertySetHelper( createPropertySetInfo() ), mpOutDev( NULL ) diff --git a/goodies/source/unographic/transformer.cxx b/svtools/source/graphic/transformer.cxx index 7e18c10cdd41..7cd9be15fca5 100644 --- a/goodies/source/unographic/transformer.cxx +++ b/svtools/source/graphic/transformer.cxx @@ -29,15 +29,12 @@ ************************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" +#include "precompiled_svtools.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> diff --git a/goodies/source/unographic/transformer.hxx b/svtools/source/graphic/transformer.hxx index 5de3acc7f2d5..5de3acc7f2d5 100644 --- a/goodies/source/unographic/transformer.hxx +++ b/svtools/source/graphic/transformer.hxx diff --git a/goodies/source/unographic/provider.hxx b/svtools/source/inc/provider.hxx index d92866d1ed09..d92866d1ed09 100644 --- a/goodies/source/unographic/provider.hxx +++ b/svtools/source/inc/provider.hxx diff --git a/goodies/source/unographic/renderer.hxx b/svtools/source/inc/renderer.hxx index ebb4b2e3dca7..ebb4b2e3dca7 100644 --- a/goodies/source/unographic/renderer.hxx +++ b/svtools/source/inc/renderer.hxx diff --git a/svtools/source/uno/miscservices.cxx b/svtools/source/uno/miscservices.cxx index 0f7b79720179..ed1bd7451b41 100644 --- a/svtools/source/uno/miscservices.cxx +++ b/svtools/source/uno/miscservices.cxx @@ -37,13 +37,27 @@ #include <com/sun/star/lang/XSingleServiceFactory.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/registry/XRegistryKey.hpp> +#include <osl/diagnose.h> +#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::uno; using namespace ::com::sun::star::registry; using namespace ::com::sun::star::lang; +using namespace unographic; using rtl::OUString; +namespace sdecl = comphelper::service_decl; + +namespace unographic { +extern sdecl::ServiceDecl const serviceDecl; +} + // ------------------------------------------------------------------------------------- // for CreateInstance functions implemented elsewhere @@ -60,10 +74,10 @@ using rtl::OUString; DECLARE_CREATEINSTANCE_NAMESPACE( svt, OAddressBookSourceDialogUno ) DECLARE_CREATEINSTANCE( SvFilterOptionsDialog ) -DECLARE_CREATEINSTANCE( PathService ) +DECLARE_CREATEINSTANCE_NAMESPACE( unographic, GraphicProvider ) +DECLARE_CREATEINSTANCE_NAMESPACE( unographic, GraphicRendererVCL ) // ------------------------------------------------------------------------------------- - extern "C" { @@ -74,13 +88,14 @@ SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment ( } SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo ( - void * /* _pServiceManager */, void * _pRegistryKey ) + void * pServiceManager, void * _pRegistryKey ) { if (_pRegistryKey) { Reference< XRegistryKey > xRegistryKey ( reinterpret_cast< XRegistryKey* >( _pRegistryKey )); Reference< XRegistryKey > xNewKey; + uno::Sequence< ::rtl::OUString > aServices; xNewKey = xRegistryKey->createKey ( OUString::createFromAscii( "/com.sun.star.comp.svtools.OAddressBookSourceDialogUno/UNO/SERVICES" ) ); @@ -92,13 +107,37 @@ SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo ( xNewKey->createKey ( OUString::createFromAscii( "com.sun.star.ui.dialogs.FilterOptionsDialog" ) ); + // 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; + return sal_True; } return sal_False; } SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory ( - const sal_Char * pImplementationName, void * _pServiceManager, void * /* _pRegistryKey */) + const sal_Char * pImplementationName, void * _pServiceManager, void * pRegistryKey) { void * pResult = 0; if ( _pServiceManager ) @@ -130,6 +169,27 @@ SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory ( SvFilterOptionsDialog_CreateInstance, aServiceNames); } + else if( 0 == GraphicProvider::getImplementationName_Static().compareToAscii( pImplementationName ) ) + { + xFactory = ::cppu::createOneInstanceFactory( + reinterpret_cast< lang::XMultiServiceFactory * >( _pServiceManager ), + GraphicProvider::getImplementationName_Static(), + GraphicProvider_CreateInstance, + GraphicProvider::getSupportedServiceNames_Static() ); + } + else if( 0 == GraphicRendererVCL::getImplementationName_Static().compareToAscii( pImplementationName ) ) + { + xFactory = ::cppu::createOneInstanceFactory( + reinterpret_cast< lang::XMultiServiceFactory * >( _pServiceManager ), + GraphicRendererVCL::getImplementationName_Static(), + GraphicRendererVCL_CreateInstance, + GraphicRendererVCL::getSupportedServiceNames_Static() ); + } + else + { + pResult = component_getFactoryHelper( pImplementationName, reinterpret_cast< lang::XMultiServiceFactory * >( _pServiceManager ),reinterpret_cast< registry::XRegistryKey* >( pRegistryKey ), serviceDecl ); + } + if ( xFactory.is() ) { xFactory->acquire(); diff --git a/svtools/util/makefile.mk b/svtools/util/makefile.mk index 51ea7a9fef31..448bc982bbae 100644 --- a/svtools/util/makefile.mk +++ b/svtools/util/makefile.mk @@ -62,6 +62,7 @@ LIB1FILES= \ $(SLB)$/edit.lib \ $(SLB)$/filter.lib \ $(SLB)$/filter.uno.lib \ + $(SLB)$/graphic.lib \ $(SLB)$/igif.lib \ $(SLB)$/jpeg.lib \ $(SLB)$/ixpm.lib \ diff --git a/toolkit/src2xml/include.lst b/toolkit/src2xml/include.lst index d4be6f5e3517..a93449625585 100644 --- a/toolkit/src2xml/include.lst +++ b/toolkit/src2xml/include.lst @@ -223,8 +223,6 @@ ../../xmlsecurity/inc ../../xmlsecurity/unxlngi6.pro/inc ../../padmin/unxlngi6.pro/inc -../../goodies/inc -../../goodies/unxlngi6.pro/inc ../../regexp/inc ../../regexp/unxlngi6.pro/inc ../../ucbhelper/inc diff --git a/toolkit/src2xml/src.lst b/toolkit/src2xml/src.lst index 5375af00b8f0..4a5876b84a08 100644 --- a/toolkit/src2xml/src.lst +++ b/toolkit/src2xml/src.lst @@ -629,22 +629,6 @@ ../../xmlsecurity/source/component/warnbox.src ../../padmin/source/rtsetup.src ../../padmin/source/padialog.src -../../goodies/source/inv/strings.src -../../goodies/source/inv/gegner.src -../../goodies/source/filter.vcl/eps/epsstr.src -../../goodies/source/filter.vcl/eps/dlgeps.src -../../goodies/source/filter.vcl/egif/dlgegif.src -../../goodies/source/filter.vcl/egif/egifstr.src -../../goodies/source/filter.vcl/epbm/dlgepbm.src -../../goodies/source/filter.vcl/epbm/epbmstr.src -../../goodies/source/filter.vcl/epgm/dlgepgm.src -../../goodies/source/filter.vcl/epgm/epgmstr.src -../../goodies/source/filter.vcl/eppm/dlgeppm.src -../../goodies/source/filter.vcl/eppm/eppmstr.src -../../goodies/source/filter.vcl/epict/dlgepct.src -../../goodies/source/filter.vcl/epict/epictstr.src -../../goodies/source/filter.vcl/eos2met/dlgeos2.src -../../goodies/source/filter.vcl/eos2met/eos2mstr.src ../../ucbhelper/workben/ucbexplorer/ucbexplorer.src ../../starmath/util/hidother.src ../../starmath/source/commands.src diff --git a/goodies/inc/b3dtrans.hxx b/tools/inc/tools/b3dtrans.hxx index 0d78c918c22c..e2b1bdb8d262 100644 --- a/goodies/inc/b3dtrans.hxx +++ b/tools/inc/tools/b3dtrans.hxx @@ -39,6 +39,7 @@ #include <tools/gen.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> #include <basegfx/point/b2dpoint.hxx> +#include <tools/toolsdllapi.h> // Vorausdeklarationen @@ -73,7 +74,7 @@ enum Base3DProjectionType |* \************************************************************************/ -class B3dTransformationSet +class TOOLS_DLLPUBLIC B3dTransformationSet { private: // Object Matrix Object -> World @@ -272,7 +273,7 @@ protected: |* \************************************************************************/ -class B3dViewport : public B3dTransformationSet +class TOOLS_DLLPUBLIC B3dViewport : public B3dTransformationSet { private: basegfx::B3DPoint aVRP; // View Reference Point @@ -305,7 +306,7 @@ protected: |* \************************************************************************/ -class B3dCamera : public B3dViewport +class TOOLS_DLLPUBLIC B3dCamera : public B3dViewport { private: basegfx::B3DPoint aPosition; diff --git a/tools/prj/d.lst b/tools/prj/d.lst index 3208ecbb3168..76cb0107453c 100644 --- a/tools/prj/d.lst +++ b/tools/prj/d.lst @@ -112,6 +112,7 @@ mkdir: %_DEST%\inc%_EXT%\bootstrp ..\inc\tools\testtoolloader.hxx %_DEST%\inc%_EXT%\tools\testtoolloader.hxx ..\inc\tools\svborder.hxx %_DEST%\inc%_EXT%\tools\svborder.hxx ..\inc\tools\getprocessworkingdir.hxx %_DEST%\inc%_EXT%\tools\getprocessworkingdir.hxx +..\inc\tools\b3dtrans.hxx %_DEST%\inc%_EXT%\tools\b3dtrans.hxx ..\%__SRC%\bin\rscdep.exe %_DEST%\bin%_EXT%\rscdep.exe ..\%__SRC%\bin\rscdep %_DEST%\bin%_EXT%\rscdep diff --git a/goodies/source/base3d/b3dtrans.cxx b/tools/source/generic/b3dtrans.cxx index fd2908c3ea2e..251a532dd9d1 100644 --- a/goodies/source/base3d/b3dtrans.cxx +++ b/tools/source/generic/b3dtrans.cxx @@ -29,8 +29,8 @@ ************************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" -#include "b3dtrans.hxx" +#include "precompiled_tools.hxx" +#include <tools/b3dtrans.hxx> #include <tools/debug.hxx> /************************************************************************* diff --git a/tools/source/generic/makefile.mk b/tools/source/generic/makefile.mk index 6340e4daae08..6661d917051c 100644 --- a/tools/source/generic/makefile.mk +++ b/tools/source/generic/makefile.mk @@ -44,6 +44,7 @@ TARGET=gen EXCEPTIONSFILES = $(SLO)$/poly.obj $(OBJ)$/poly.obj SLOFILES= $(SLO)$/toolsin.obj \ + $(SLO)$/b3dtrans.obj \ $(SLO)$/link.obj \ $(SLO)$/bigint.obj \ $(SLO)$/fract.obj \ @@ -56,6 +57,7 @@ SLOFILES= $(SLO)$/toolsin.obj \ $(SLO)$/line.obj OBJFILES= $(OBJ)$/toolsin.obj \ + $(OBJ)$/b3dtrans.obj \ $(OBJ)$/link.obj \ $(OBJ)$/bigint.obj \ $(OBJ)$/fract.obj \ |