diff options
author | Mathias Bauer <mba@openoffice.org> | 2009-10-31 00:29:04 +0100 |
---|---|---|
committer | Mathias Bauer <mba@openoffice.org> | 2009-10-31 00:29:04 +0100 |
commit | 8744578b99ab60f90174ae3b00e3a3fd7bb05788 (patch) | |
tree | a9cf19c1cf5ddda70e75251810381410dfeda0c6 /svx/inc | |
parent | 8c5a4612ce4ebedbe3ac68339a34d405b7d07f9b (diff) |
#i106421#: move msfilter to filter
Diffstat (limited to 'svx/inc')
-rw-r--r-- | svx/inc/countryid.hxx | 321 | ||||
-rw-r--r-- | svx/inc/mscodec.hxx | 343 | ||||
-rw-r--r-- | svx/inc/msoleexp.hxx | 63 | ||||
-rw-r--r-- | svx/inc/svx/escherex.hxx | 1513 | ||||
-rw-r--r-- | svx/inc/svx/msdffdef.hxx | 93 | ||||
-rw-r--r-- | svx/inc/svx/msdffimp.hxx | 773 | ||||
-rw-r--r-- | svx/inc/svx/msfiltertracer.hxx | 99 | ||||
-rw-r--r-- | svx/inc/svx/msocximex.hxx | 1423 | ||||
-rw-r--r-- | svx/inc/svx/svdfppt.hxx | 1445 | ||||
-rw-r--r-- | svx/inc/svxmsbas.hxx | 97 |
10 files changed, 0 insertions, 6170 deletions
diff --git a/svx/inc/countryid.hxx b/svx/inc/countryid.hxx deleted file mode 100644 index 20794a355477..000000000000 --- a/svx/inc/countryid.hxx +++ /dev/null @@ -1,321 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: countryid.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 INCLUDED_SVX_COUNTRYID_HXX -#define INCLUDED_SVX_COUNTRYID_HXX - -#include <sal/types.h> -#include <i18npool/lang.h> -#include "svx/svxdllapi.h" - -// ---------------------------------------------------------------------------- - -namespace svx { - -// Windows Country IDs ======================================================== - -/** Represents a Windows country ID. - - The country IDs used in Windows are equal to the international calling - code of each country, i.e. the code 353 represents Ireland (+353). - - ATTENTION: These country codes are not supposed to be used anywhere in core - structures! They shall ONLY be used in the import/export filters for - Microsoft Office documents! - */ -typedef sal_uInt16 CountryId; - -const CountryId COUNTRY_DONTKNOW = 0; -const CountryId COUNTRY_USA = 1; -const CountryId COUNTRY_DOMINICAN_REPUBLIC = 1; // NANP -const CountryId COUNTRY_GUAM = 1; // NANP -const CountryId COUNTRY_JAMAICA = 1; // NANP -const CountryId COUNTRY_PUERTO_RICO = 1; // NANP -const CountryId COUNTRY_TRINIDAD_Y_TOBAGO = 1; // NANP -const CountryId COUNTRY_CANADA = 2; -const CountryId COUNTRY_RUSSIA = 7; -const CountryId COUNTRY_KAZAKHSTAN = 7; // no own ID -const CountryId COUNTRY_TATARSTAN = 7; // no own ID -const CountryId COUNTRY_EGYPT = 20; -const CountryId COUNTRY_SOUTH_AFRICA = 27; -const CountryId COUNTRY_GREECE = 30; -const CountryId COUNTRY_NETHERLANDS = 31; -const CountryId COUNTRY_BELGIUM = 32; -const CountryId COUNTRY_FRANCE = 33; -const CountryId COUNTRY_SPAIN = 34; -const CountryId COUNTRY_HUNGARY = 36; -const CountryId COUNTRY_ITALY = 39; -const CountryId COUNTRY_ROMANIA = 40; -const CountryId COUNTRY_SWITZERLAND = 41; -const CountryId COUNTRY_AUSTRIA = 43; -const CountryId COUNTRY_UNITED_KINGDOM = 44; -const CountryId COUNTRY_DENMARK = 45; -const CountryId COUNTRY_SWEDEN = 46; -const CountryId COUNTRY_NORWAY = 47; -const CountryId COUNTRY_POLAND = 48; -const CountryId COUNTRY_GERMANY = 49; -const CountryId COUNTRY_PERU = 51; -const CountryId COUNTRY_MEXICO = 52; -const CountryId COUNTRY_CUBA = 53; -const CountryId COUNTRY_ARGENTINIA = 54; -const CountryId COUNTRY_BRAZIL = 55; -const CountryId COUNTRY_CHILE = 56; -const CountryId COUNTRY_COLOMBIA = 57; -const CountryId COUNTRY_VENEZUELA = 58; -const CountryId COUNTRY_MALAYSIA = 60; -const CountryId COUNTRY_AUSTRALIA = 61; -const CountryId COUNTRY_INDONESIA = 62; -const CountryId COUNTRY_PHILIPPINES = 63; -const CountryId COUNTRY_NEW_ZEALAND = 64; -const CountryId COUNTRY_SINGAPORE = 65; -const CountryId COUNTRY_THAILAND = 66; -const CountryId COUNTRY_JAPAN = 81; -const CountryId COUNTRY_SOUTH_KOREA = 82; -const CountryId COUNTRY_VIET_NAM = 84; -const CountryId COUNTRY_PR_CHINA = 86; -const CountryId COUNTRY_TIBET = 86; // no own ID -const CountryId COUNTRY_TURKEY = 90; -const CountryId COUNTRY_INDIA = 91; -const CountryId COUNTRY_PAKISTAN = 92; -const CountryId COUNTRY_AFGHANISTAN = 93; -const CountryId COUNTRY_SRI_LANKA = 94; -const CountryId COUNTRY_MYANMAR = 95; -const CountryId COUNTRY_MOROCCO = 212; -const CountryId COUNTRY_ALGERIA = 213; -const CountryId COUNTRY_TUNISIA = 216; -const CountryId COUNTRY_LIBYA = 218; -const CountryId COUNTRY_GAMBIA = 220; -const CountryId COUNTRY_SENEGAL = 221; -const CountryId COUNTRY_MAURITANIA = 222; -const CountryId COUNTRY_MALI = 223; -const CountryId COUNTRY_GUINEA = 224; -const CountryId COUNTRY_COTE_D_IVOIRE = 225; -const CountryId COUNTRY_BURKINA_FARSO = 226; -const CountryId COUNTRY_NIGER = 227; -const CountryId COUNTRY_TOGO = 228; -const CountryId COUNTRY_BENIN = 229; -const CountryId COUNTRY_MAURITIUS = 230; -const CountryId COUNTRY_LIBERIA = 231; -const CountryId COUNTRY_SIERRA_LEONE = 232; -const CountryId COUNTRY_GHANA = 233; -const CountryId COUNTRY_NIGERIA = 234; -const CountryId COUNTRY_CHAD = 235; -const CountryId COUNTRY_CENTRAL_AFR_REP = 236; -const CountryId COUNTRY_CAMEROON = 237; -const CountryId COUNTRY_CAPE_VERDE = 238; -const CountryId COUNTRY_SAO_TOME = 239; -const CountryId COUNTRY_EQUATORIAL_GUINEA = 240; -const CountryId COUNTRY_GABON = 241; -const CountryId COUNTRY_CONGO = 242; -const CountryId COUNTRY_ZAIRE = 243; -const CountryId COUNTRY_ANGOLA = 244; -const CountryId COUNTRY_GUINEA_BISSAU = 245; -const CountryId COUNTRY_DIEGO_GARCIA = 246; -const CountryId COUNTRY_ASCENSION_ISLAND = 247; -const CountryId COUNTRY_SEYCHELLES = 248; -const CountryId COUNTRY_SUDAN = 249; -const CountryId COUNTRY_RWANDA = 250; -const CountryId COUNTRY_ETHIOPIA = 251; -const CountryId COUNTRY_SOMALIA = 252; -const CountryId COUNTRY_DJIBOUTI = 253; -const CountryId COUNTRY_KENYA = 254; -const CountryId COUNTRY_TANZANIA = 255; -const CountryId COUNTRY_UGANDA = 256; -const CountryId COUNTRY_BURUNDI = 257; -const CountryId COUNTRY_MOZAMBIQUE = 258; -const CountryId COUNTRY_ZANZIBAR = 259; -const CountryId COUNTRY_ZAMBIA = 260; -const CountryId COUNTRY_MADAGASKAR = 261; -const CountryId COUNTRY_REUNION = 262; -const CountryId COUNTRY_ZIMBABWE = 263; -const CountryId COUNTRY_NAMIBIA = 264; -const CountryId COUNTRY_MALAWI = 265; -const CountryId COUNTRY_LESOTHO = 266; -const CountryId COUNTRY_BOTSWANA = 267; -const CountryId COUNTRY_SWAZILAND = 268; -const CountryId COUNTRY_COMOROS_MAYOTTE = 269; -const CountryId COUNTRY_ST_HELENA = 290; -const CountryId COUNTRY_ERITREA = 291; -const CountryId COUNTRY_ARUBA = 297; -const CountryId COUNTRY_FAEROE_ISLANDS = 298; -const CountryId COUNTRY_GREEN_ISLAND = 299; -const CountryId COUNTRY_GIBRALTAR = 350; -const CountryId COUNTRY_PORTUGAL = 351; -const CountryId COUNTRY_LUXEMBOURG = 352; -const CountryId COUNTRY_IRELAND = 353; -const CountryId COUNTRY_ICELAND = 354; -const CountryId COUNTRY_ALBANIA = 355; -const CountryId COUNTRY_MALTA = 356; -const CountryId COUNTRY_CYPRUS = 357; -const CountryId COUNTRY_FINLAND = 358; -const CountryId COUNTRY_BULGARIA = 359; -const CountryId COUNTRY_LITHUANIA = 370; -const CountryId COUNTRY_LATVIA = 371; -const CountryId COUNTRY_ESTONIA = 372; -const CountryId COUNTRY_MOLDOVA = 373; -const CountryId COUNTRY_ARMENIA = 374; -const CountryId COUNTRY_BELARUS = 375; -const CountryId COUNTRY_ANDORRA = 376; -const CountryId COUNTRY_MONACO = 377; -const CountryId COUNTRY_SAN_MARINO = 378; -const CountryId COUNTRY_VATICAN_CITY = 379; -const CountryId COUNTRY_UKRAINE = 380; -const CountryId COUNTRY_SERBIA = 381; -const CountryId COUNTRY_CROATIA = 385; -const CountryId COUNTRY_SLOVENIA = 386; -const CountryId COUNTRY_BOSNIA = 387; -const CountryId COUNTRY_MACEDONIA = 389; -const CountryId COUNTRY_CZECH = 420; -const CountryId COUNTRY_SLOVAK = 421; -const CountryId COUNTRY_LIECHTENSTEIN = 423; -const CountryId COUNTRY_FALKLAND_ISLANDS = 500; -const CountryId COUNTRY_BELIZE = 501; -const CountryId COUNTRY_GUATEMALA = 502; -const CountryId COUNTRY_EL_SALVADOR = 503; -const CountryId COUNTRY_HONDURAS = 504; -const CountryId COUNTRY_NICARAGUA = 505; -const CountryId COUNTRY_COSTA_RICA = 506; -const CountryId COUNTRY_PANAMA = 507; -const CountryId COUNTRY_ST_PIERRE = 508; -const CountryId COUNTRY_HAITI = 509; -const CountryId COUNTRY_GUADELOUPE = 590; -const CountryId COUNTRY_BOLIVIA = 591; -const CountryId COUNTRY_GUYANA = 592; -const CountryId COUNTRY_ECUADOR = 593; -const CountryId COUNTRY_FRENCH_GUIANA = 594; -const CountryId COUNTRY_PARAGUAY = 595; -const CountryId COUNTRY_MARTINIQUE = 596; -const CountryId COUNTRY_SURINAME = 597; -const CountryId COUNTRY_URUGUAY = 598; -const CountryId COUNTRY_NETHERL_ANTILLES = 599; -const CountryId COUNTRY_EAST_TIMOR = 670; -const CountryId COUNTRY_ANTARCTICA = 672; -const CountryId COUNTRY_BRUNEI_DARUSSALAM = 673; -const CountryId COUNTRY_NARUPU = 674; -const CountryId COUNTRY_PAPUA_NEW_GUINEA = 675; -const CountryId COUNTRY_TONGA = 676; -const CountryId COUNTRY_SOLOMON_ISLANDS = 677; -const CountryId COUNTRY_VANUATU = 678; -const CountryId COUNTRY_FIJI = 679; -const CountryId COUNTRY_PALAU = 680; -const CountryId COUNTRY_WALLIS_AND_FUTUNA = 681; -const CountryId COUNTRY_COOK_ISLANDS = 682; -const CountryId COUNTRY_NIUE_ISLAND = 683; -const CountryId COUNTRY_AMERICAN_SAMOA = 684; -const CountryId COUNTRY_WESTERN_SAMOA = 685; -const CountryId COUNTRY_KIRIBATI = 686; -const CountryId COUNTRY_NEW_CALEDONIA = 687; -const CountryId COUNTRY_TUVALU = 688; -const CountryId COUNTRY_FRENCH_POLYNESIA = 689; -const CountryId COUNTRY_TOKELAU = 690; -const CountryId COUNTRY_MICRONESIA = 691; -const CountryId COUNTRY_MARSHALL_ISLANDS = 692; -const CountryId COUNTRY_NORTH_KOREA = 850; -const CountryId COUNTRY_HONG_KONG = 852; -const CountryId COUNTRY_MACAU = 853; -const CountryId COUNTRY_CAMBODIA = 855; -const CountryId COUNTRY_LAOS = 856; -const CountryId COUNTRY_BANGLADESH = 880; -const CountryId COUNTRY_TAIWAN = 886; -const CountryId COUNTRY_MALDIVES = 960; -const CountryId COUNTRY_LEBANON = 961; -const CountryId COUNTRY_JORDAN = 962; -const CountryId COUNTRY_SYRIA = 963; -const CountryId COUNTRY_IRAQ = 964; -const CountryId COUNTRY_KUWAIT = 965; -const CountryId COUNTRY_SAUDI_ARABIA = 966; -const CountryId COUNTRY_YEMEN = 967; -const CountryId COUNTRY_OMAN = 968; -const CountryId COUNTRY_PALESTINE = 970; -const CountryId COUNTRY_UAE = 971; -const CountryId COUNTRY_ISRAEL = 972; -const CountryId COUNTRY_BAHRAIN = 973; -const CountryId COUNTRY_QATAR = 974; -const CountryId COUNTRY_BHUTAN = 975; -const CountryId COUNTRY_MONGOLIA = 976; -const CountryId COUNTRY_NEPAL = 977; -const CountryId COUNTRY_IRAN = 981; -const CountryId COUNTRY_TAJIKISTAN = 992; -const CountryId COUNTRY_TURKMENISTAN = 993; -const CountryId COUNTRY_AZERBAIJAN = 994; -const CountryId COUNTRY_GEORGIA = 995; -const CountryId COUNTRY_KYRGYZSTAN = 996; -const CountryId COUNTRY_UZBEKISTAN = 998; - -// Country ID <-> Language type conversion ==================================== - -/** Converts a language type to a Windows country ID. - - The function regards the sub type of the passed language, and tries to - return the appropriate country, i.e. COUNTRY_IRELAND for - LANGUAGE_ENGLISH_EIRE. - - A few countries do not have an own associated country ID. Most of these - countries are mapped to another related country, i.e. Kazakhstan is - mapped to Russia. - - If no country can be found, the value COUNTRY_DONTKNOW will be returned. - - @param eLanguage - A language type, defined in tools/lang.hxx. - - @return - The best Windows country ID for the passed language type, or - COUNTRY_DONTKNOW on error. - */ -SVX_DLLPUBLIC CountryId ConvertLanguageToCountry( LanguageType eLanguage ); - -/** Converts a Windows country ID to a language type. - - The function returns the most used language for the passed country - (hopefully), i.e. LANGUAGE_ENGLISH_EIRE for COUNTRY_IRELAND. - - If the passed country ID is not valid, the value LANGUAGE_DONTKNOW will be - returned. - - @param eCountry - A Windows country ID, defined above. - - @return - The most used language type in the passed country, or LANGUAGE_DONTKNOW - on error. - */ -SVX_DLLPUBLIC LanguageType ConvertCountryToLanguage( CountryId eCountry ); - -// ============================================================================ - -} // namespace svx - -// ============================================================================ - -#endif - diff --git a/svx/inc/mscodec.hxx b/svx/inc/mscodec.hxx deleted file mode 100644 index 4ee508d661dd..000000000000 --- a/svx/inc/mscodec.hxx +++ /dev/null @@ -1,343 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: mscodec.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 SVX_MSCODEC_HXX -#define SVX_MSCODEC_HXX - -#include "rtl/cipher.h" -#include "rtl/digest.h" -#include "svx/svxdllapi.h" - -namespace svx { - -// ============================================================================ - -/** Encodes and decodes data from protected MSO 95- documents. - */ -class SVX_DLLPUBLIC MSCodec_Xor95 -{ -public: - explicit MSCodec_Xor95(int nRotateDistance); - virtual ~MSCodec_Xor95(); - - /** Initializes the algorithm with the specified password. - - @param pPassData - Character array containing the password. Must be zero terminated, - which results in a maximum length of 15 characters. - */ - void InitKey( const sal_uInt8 pnPassData[ 16 ] ); - - /** Verifies the validity of the password using the passed key and hash. - - @precond - The codec must be initialized with InitKey() before this function - can be used. - - @param nKey - Password key value read from the file. - @param nHash - Password hash value read from the file. - - @return - true = Test was successful. - */ - bool VerifyKey( sal_uInt16 nKey, sal_uInt16 nHash ) const; - - /** Reinitializes the codec to start a new memory block. - - Resets the internal key offset to 0. - - @precond - The codec must be initialized with InitKey() before this function - can be used. - */ - void InitCipher(); - - /** Decodes a block of memory inplace. - - @precond - The codec must be initialized with InitKey() before this function - can be used. - - @param pnData - Encrypted data block. Will contain the decrypted data afterwards. - @param nBytes - Size of the passed data block. - */ - virtual void Decode( sal_uInt8* pnData, sal_Size nBytes )=0; - - /** Lets the cipher skip a specific amount of bytes. - - This function sets the cipher to the same state as if the specified - amount of data has been decoded with one or more calls of Decode(). - - @precond - The codec must be initialized with InitKey() before this function - can be used. - - @param nBytes - Number of bytes to be skipped (cipher "seeks" forward). - */ - void Skip( sal_Size nBytes ); - - // static ----------------------------------------------------------------- - - /** Calculates the 16-bit hash value for the given password. - - The password data may be longer than 16 bytes. The array does not need - to be terminated with a NULL byte (but it can without invalidating the - result). - */ - static sal_uInt16 GetHash( const sal_uInt8* pnPassData, sal_Size nSize ); - -protected: - sal_uInt8 mpnKey[ 16 ]; /// Encryption key. - sal_Size mnOffset; /// Key offset. - -private: - SVX_DLLPRIVATE MSCodec_Xor95( const MSCodec_Xor95& ); - SVX_DLLPRIVATE MSCodec_Xor95& operator=( const MSCodec_Xor95& ); - - sal_uInt16 mnKey; /// Base key from password. - sal_uInt16 mnHash; /// Hash value from password. - int mnRotateDistance; -}; - -/** Encodes and decodes data from protected MSO XLS 95- documents. - */ -class SVX_DLLPUBLIC MSCodec_XorXLS95 : public MSCodec_Xor95 -{ -public: - explicit MSCodec_XorXLS95() : MSCodec_Xor95(2) {} - - /** Decodes a block of memory inplace. - - @precond - The codec must be initialized with InitKey() before this function - can be used. - - @param pnData - Encrypted data block. Will contain the decrypted data afterwards. - @param nBytes - Size of the passed data block. - */ - virtual void Decode( sal_uInt8* pnData, sal_Size nBytes ); -}; - -/** Encodes and decodes data from protected MSO Word 95- documents. - */ -class SVX_DLLPUBLIC MSCodec_XorWord95 : public MSCodec_Xor95 -{ -public: - explicit MSCodec_XorWord95() : MSCodec_Xor95(7) {} - - /** Decodes a block of memory inplace. - - @precond - The codec must be initialized with InitKey() before this function - can be used. - - @param pnData - Encrypted data block. Will contain the decrypted data afterwards. - @param nBytes - Size of the passed data block. - */ - virtual void Decode( sal_uInt8* pnData, sal_Size nBytes ); -}; - - -// ============================================================================ - -/** Encodes and decodes data from protected MSO 97+ documents. - - This is a wrapper class around low level cryptographic functions from RTL. - Implementation is based on the wvDecrypt package by Caolan McNamara: - http://www.csn.ul.ie/~caolan/docs/wvDecrypt.html - */ -class SVX_DLLPUBLIC MSCodec_Std97 -{ -public: - explicit MSCodec_Std97(); - ~MSCodec_Std97(); - - /** Initializes the algorithm with the specified password and document ID. - - @param pPassData - Wide character array containing the password. Must be zero - terminated, which results in a maximum length of 15 characters. - @param pUnique - Unique document identifier read from or written to the file. - */ - void InitKey( - const sal_uInt16 pPassData[ 16 ], - const sal_uInt8 pUnique[ 16 ] ); - - /** Verifies the validity of the password using the passed salt data. - - @precond - The codec must be initialized with InitKey() before this function - can be used. - - @param pSaltData - Salt data block read from the file. - @param pSaltDigest - Salt digest read from the file. - - @return - true = Test was successful. - */ - bool VerifyKey( - const sal_uInt8 pSaltData[ 16 ], - const sal_uInt8 pSaltDigest[ 16 ] ); - - /** Rekeys the codec using the specified counter. - - After reading a specific amount of data the cipher algorithm needs to - be rekeyed using a counter that counts the data blocks. - - The block size is for example 512 Bytes for Word files and 1024 Bytes - for Excel files. - - @precond - The codec must be initialized with InitKey() before this function - can be used. - - @param nCounter - Block counter used to rekey the cipher. - */ - bool InitCipher( sal_uInt32 nCounter ); - - /** Creates an MD5 digest of salt digest. */ - bool CreateSaltDigest( - const sal_uInt8 nSaltData[16], sal_uInt8 nSaltDigest[16] ); - - /** Encodes a block of memory. - - @see rtl_cipher_encode() - - @precond - The codec must be initialized with InitKey() before this function - can be used. The destination buffer must be able to take all - unencoded data from the source buffer (usually this means it must be - as long as or longer than the source buffer). - - @param pData - Unencrypted source data block. - @param nDatLen - Size of the passed source data block. - @param pBuffer - Destination buffer for the encrypted data. - @param nBufLen - Size of the destination buffer. - - @return - true = Encoding was successful (no error occured). - */ - bool Encode( - const void* pData, sal_Size nDatLen, - sal_uInt8* pBuffer, sal_Size nBufLen ); - - /** Decodes a block of memory. - - @see rtl_cipher_decode() - - @precond - The codec must be initialized with InitKey() before this function - can be used. The destination buffer must be able to take all - encoded data from the source buffer (usually this means it must be - as long as or longer than the source buffer). - - @param pData - Encrypted source data block. - @param nDatLen - Size of the passed source data block. - @param pBuffer - Destination buffer for the decrypted data. - @param nBufLen - Size of the destination buffer. - - @return - true = Decoding was successful (no error occured). - */ - bool Decode( - const void* pData, sal_Size nDatLen, - sal_uInt8* pBuffer, sal_Size nBufLen ); - - /** Lets the cipher skip a specific amount of bytes. - - This function sets the cipher to the same state as if the specified - amount of data has been decoded with one or more calls of Decode(). - - @precond - The codec must be initialized with InitKey() before this function - can be used. - - @param nDatLen - Number of bytes to be skipped (cipher "seeks" forward). - */ - bool Skip( sal_Size nDatLen ); - - /** Gets salt data and salt digest. - - @precond - The codec must be initialized with InitKey() before this function - can be used. - - @param pSalt - Salt, a random number. - @param pSaltData - Salt data block generated from the salt. - @param pSaltDigest - Salt digest generated from the salt. - */ - void GetEncryptKey ( - const sal_uInt8 pSalt[16], - sal_uInt8 pSaltData[16], - sal_uInt8 pSaltDigest[16]); - -private: - void GetDigestFromSalt( const sal_uInt8 pSaltData[16], sal_uInt8 pDigest[16] ); - -private: - SVX_DLLPRIVATE MSCodec_Std97( const MSCodec_Std97& ); - SVX_DLLPRIVATE MSCodec_Std97& operator=( const MSCodec_Std97& ); - - rtlCipher m_hCipher; - rtlDigest m_hDigest; - sal_uInt8 m_pDigestValue[ RTL_DIGEST_LENGTH_MD5 ]; -}; - -// ============================================================================ - -} // namespace svx - -#endif - diff --git a/svx/inc/msoleexp.hxx b/svx/inc/msoleexp.hxx deleted file mode 100644 index 830a36f4bbca..000000000000 --- a/svx/inc/msoleexp.hxx +++ /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: msoleexp.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 _MSOLEEXP_HXX -#define _MSOLEEXP_HXX - -#include <com/sun/star/uno/Reference.h> -#include "svx/svxdllapi.h" - -// for the CreateSdrOLEFromStorage we need the information, how we handle -// convert able OLE-Objects - this ist stored in -#define OLE_STARMATH_2_MATHTYPE 0x0001 -#define OLE_STARWRITER_2_WINWORD 0x0002 -#define OLE_STARCALC_2_EXCEL 0x0004 -#define OLE_STARIMPRESS_2_POWERPOINT 0x0008 - -class SotStorage; - -#include <svtools/embedhlp.hxx> - -class SVX_DLLPUBLIC SvxMSExportOLEObjects -{ - UINT32 nConvertFlags; -public: - SvxMSExportOLEObjects( UINT32 nCnvrtFlgs ) : nConvertFlags(nCnvrtFlgs) {} - - void SetFlags( UINT32 n ) { nConvertFlags = n; } - UINT32 GetFlags() const { return nConvertFlags; } - - void ExportOLEObject( svt::EmbeddedObjectRef& rObj, SotStorage& rDestStg ); - void ExportOLEObject( const com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject>& rObj, SotStorage& rDestStg ); -}; - - - -#endif - diff --git a/svx/inc/svx/escherex.hxx b/svx/inc/svx/escherex.hxx deleted file mode 100644 index a93814b2a825..000000000000 --- a/svx/inc/svx/escherex.hxx +++ /dev/null @@ -1,1513 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: escherex.hxx,v $ - * $Revision: 1.6.146.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. - * - ************************************************************************/ - -#ifndef _SVX_ESCHEREX_HXX -#define _SVX_ESCHEREX_HXX - -#include <vector> -#include <tools/solar.h> -#include <tools/gen.hxx> -#include <tools/list.hxx> -#include <tools/stream.hxx> -#include <com/sun/star/uno/Reference.h> -#include <goodies/grfmgr.hxx> -#include <com/sun/star/awt/Size.hpp> -#include <com/sun/star/awt/Point.hpp> -#include <com/sun/star/awt/Rectangle.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/beans/PropertyState.hpp> -#include <com/sun/star/drawing/BitmapMode.hpp> -#include <com/sun/star/drawing/Hatch.hpp> -#include <svx/msdffdef.hxx> -#include "svx/svxdllapi.h" - - /*Record Name FBT-Value Instance Contents Wrd Exl PPt Ver*/ -// In der Mickysoft-Doku heissen die msofbt... statt ESCHER_... -#define ESCHER_DggContainer 0xF000 /* per-document data X X X */ -#define ESCHER_Dgg 0xF006 /* an FDGG and several FIDCLs X X X 0 */ -#define ESCHER_CLSID 0xF016 /* the CLSID of the application that put the data on the clipboard C C C 0 */ -#define ESCHER_OPT 0xF00B /* count of properties the document-wide default shape properties X X X 3 */ -#define ESCHER_ColorMRU 0xF11A /* count of colors the colors in the MRU swatch X X X 0 */ -#define ESCHER_SplitMenuColors 0xF11E /* count of colors the colors in the top-level split menus X X X 0 */ -#define ESCHER_BstoreContainer 0xF001 /* count of BLIPs all images in the document (JPEGs, metafiles, etc.) X X X */ -#define ESCHER_BSE 0xF007 /* BLIP type an FBSE (one per BLIP) X X X 2 */ -#define ESCHER_BlipFirst 0xF018 /* range of fbts reserved for various kinds of BLIPs X X X */ -#define ESCHER_BlipLast 0xF117 /* range of fbts reserved for various kinds of BLIPs X X X */ - -#define ESCHER_DgContainer 0xF002 /* per-sheet/page/slide data X X X */ -#define ESCHER_Dg 0xF008 /* drawing ID an FDG X X X 0 */ -#define ESCHER_RegroupItems 0xF118 /* count of regroup entries several FRITs X X X 0 */ -#define ESCHER_ColorScheme 0xF120 /* count of colors the colors of the source host's color scheme C C 0 */ -#define ESCHER_SpgrContainer 0xF003 /* several SpContainers, the first of which is the group shape itself X X X */ -#define ESCHER_SpContainer 0xF004 /* a shape X X X */ -#define ESCHER_Spgr 0xF009 /* an FSPGR; only present if the shape is a group shape X X X 1 */ -#define ESCHER_Sp 0xF00A /* shape type an FSP X X X 2 */ -//#define ESCHER_OPT 0xF00B /* count of properties a shape property table X X X 3 */ -#define ESCHER_Textbox 0xF00C /* RTF text C C C 0 */ -#define ESCHER_ClientTextbox 0xF00D /* host-defined the text in the textbox, in host-defined format X X X */ -#define ESCHER_Anchor 0xF00E /* a RECT, in 100000ths of an inch C C C 0 */ -#define ESCHER_ChildAnchor 0xF00F /* a RECT, in units relative to the parent group X X X 0 */ -#define ESCHER_ClientAnchor 0xF010 /* host-defined the location of the shape, in a host-defined format X X X */ -#define ESCHER_ClientData 0xF011 /* host-defined host-specific data X X X */ -#define ESCHER_OleObject 0xF11F /* a serialized IStorage for an OLE object C C C 0 */ -#define ESCHER_DeletedPspl 0xF11D /* an FPSPL; only present in top-level deleted shapes X 0 */ -#define ESCHER_SolverContainer 0xF005 /* count of rules the rules governing shapes X X X */ -#define ESCHER_ConnectorRule 0xF012 /* an FConnectorRule X X 1 */ -#define ESCHER_AlignRule 0xF013 /* an FAlignRule X X X 0 */ -#define ESCHER_ArcRule 0xF014 /* an FARCRU X X X 0 */ -#define ESCHER_ClientRule 0xF015 /* host-defined host-defined */ -#define ESCHER_CalloutRule 0xF017 /* an FCORU X X X 0 */ -#define ESCHER_Selection 0xF119 /* an FDGSL followed by the SPIDs of the shapes in the selection X 0 */ -#define ESCHER_UDefProp 0xF122 - -#define SHAPEFLAG_GROUP 0x001 // This shape is a group shape -#define SHAPEFLAG_CHILD 0x002 // Not a top-level shape -#define SHAPEFLAG_PATRIARCH 0x004 // This is the topmost group shape. Exactly one of these per drawing. -#define SHAPEFLAG_DELETED 0x008 // The shape has been deleted -#define SHAPEFLAG_OLESHAPE 0x010 // The shape is an OLE object -#define SHAPEFLAG_HAVEMASTER 0x020 // Shape has a hspMaster property -#define SHAPEFLAG_FLIPH 0x040 // Shape is flipped horizontally -#define SHAPEFLAG_FLIPV 0x080 // Shape is flipped vertically -#define SHAPEFLAG_CONNECTOR 0x100 // Connector type of shape -#define SHAPEFLAG_HAVEANCHOR 0x200 // Shape has an anchor of some kind -#define SHAPEFLAG_BACKGROUND 0x400 // Background shape -#define SHAPEFLAG_HAVESPT 0x800 // Shape has a shape type property - -#define ESCHER_ShpInst_Min 0 -#define ESCHER_ShpInst_NotPrimitive ESCHER_ShpInst_Min -#define ESCHER_ShpInst_Rectangle 1 -#define ESCHER_ShpInst_RoundRectangle 2 -#define ESCHER_ShpInst_Ellipse 3 -#define ESCHER_ShpInst_Diamond 4 -#define ESCHER_ShpInst_IsocelesTriangle 5 -#define ESCHER_ShpInst_RightTriangle 6 -#define ESCHER_ShpInst_Parallelogram 7 -#define ESCHER_ShpInst_Trapezoid 8 -#define ESCHER_ShpInst_Hexagon 9 -#define ESCHER_ShpInst_Octagon 10 -#define ESCHER_ShpInst_Plus 11 -#define ESCHER_ShpInst_Star 12 -#define ESCHER_ShpInst_Arrow 13 -#define ESCHER_ShpInst_ThickArrow 14 -#define ESCHER_ShpInst_HomePlate 15 -#define ESCHER_ShpInst_Cube 16 -#define ESCHER_ShpInst_Balloon 17 -#define ESCHER_ShpInst_Seal 18 -#define ESCHER_ShpInst_Arc 19 -#define ESCHER_ShpInst_Line 20 -#define ESCHER_ShpInst_Plaque 21 -#define ESCHER_ShpInst_Can 22 -#define ESCHER_ShpInst_Donut 23 -#define ESCHER_ShpInst_TextSimple 24 -#define ESCHER_ShpInst_TextOctagon 25 -#define ESCHER_ShpInst_TextHexagon 26 -#define ESCHER_ShpInst_TextCurve 27 -#define ESCHER_ShpInst_TextWave 28 -#define ESCHER_ShpInst_TextRing 29 -#define ESCHER_ShpInst_TextOnCurve 30 -#define ESCHER_ShpInst_TextOnRing 31 -#define ESCHER_ShpInst_StraightConnector1 32 -#define ESCHER_ShpInst_BentConnector2 33 -#define ESCHER_ShpInst_BentConnector3 34 -#define ESCHER_ShpInst_BentConnector4 35 -#define ESCHER_ShpInst_BentConnector5 36 -#define ESCHER_ShpInst_CurvedConnector2 37 -#define ESCHER_ShpInst_CurvedConnector3 38 -#define ESCHER_ShpInst_CurvedConnector4 39 -#define ESCHER_ShpInst_CurvedConnector5 40 -#define ESCHER_ShpInst_Callout1 41 -#define ESCHER_ShpInst_Callout2 42 -#define ESCHER_ShpInst_Callout3 43 -#define ESCHER_ShpInst_AccentCallout1 44 -#define ESCHER_ShpInst_AccentCallout2 45 -#define ESCHER_ShpInst_AccentCallout3 46 -#define ESCHER_ShpInst_BorderCallout1 47 -#define ESCHER_ShpInst_BorderCallout2 48 -#define ESCHER_ShpInst_BorderCallout3 49 -#define ESCHER_ShpInst_AccentBorderCallout1 50 -#define ESCHER_ShpInst_AccentBorderCallout2 51 -#define ESCHER_ShpInst_AccentBorderCallout3 52 -#define ESCHER_ShpInst_Ribbon 53 -#define ESCHER_ShpInst_Ribbon2 54 -#define ESCHER_ShpInst_Chevron 55 -#define ESCHER_ShpInst_Pentagon 56 -#define ESCHER_ShpInst_NoSmoking 57 -#define ESCHER_ShpInst_Seal8 58 -#define ESCHER_ShpInst_Seal16 59 -#define ESCHER_ShpInst_Seal32 60 -#define ESCHER_ShpInst_WedgeRectCallout 61 -#define ESCHER_ShpInst_WedgeRRectCallout 62 -#define ESCHER_ShpInst_WedgeEllipseCallout 63 -#define ESCHER_ShpInst_Wave 64 -#define ESCHER_ShpInst_FoldedCorner 65 -#define ESCHER_ShpInst_LeftArrow 66 -#define ESCHER_ShpInst_DownArrow 67 -#define ESCHER_ShpInst_UpArrow 68 -#define ESCHER_ShpInst_LeftRightArrow 69 -#define ESCHER_ShpInst_UpDownArrow 70 -#define ESCHER_ShpInst_IrregularSeal1 71 -#define ESCHER_ShpInst_IrregularSeal2 72 -#define ESCHER_ShpInst_LightningBolt 73 -#define ESCHER_ShpInst_Heart 74 -#define ESCHER_ShpInst_PictureFrame 75 -#define ESCHER_ShpInst_QuadArrow 76 -#define ESCHER_ShpInst_LeftArrowCallout 77 -#define ESCHER_ShpInst_RightArrowCallout 78 -#define ESCHER_ShpInst_UpArrowCallout 79 -#define ESCHER_ShpInst_DownArrowCallout 80 -#define ESCHER_ShpInst_LeftRightArrowCallout 81 -#define ESCHER_ShpInst_UpDownArrowCallout 82 -#define ESCHER_ShpInst_QuadArrowCallout 83 -#define ESCHER_ShpInst_Bevel 84 -#define ESCHER_ShpInst_LeftBracket 85 -#define ESCHER_ShpInst_RightBracket 86 -#define ESCHER_ShpInst_LeftBrace 87 -#define ESCHER_ShpInst_RightBrace 88 -#define ESCHER_ShpInst_LeftUpArrow 89 -#define ESCHER_ShpInst_BentUpArrow 90 -#define ESCHER_ShpInst_BentArrow 91 -#define ESCHER_ShpInst_Seal24 92 -#define ESCHER_ShpInst_StripedRightArrow 93 -#define ESCHER_ShpInst_NotchedRightArrow 94 -#define ESCHER_ShpInst_BlockArc 95 -#define ESCHER_ShpInst_SmileyFace 96 -#define ESCHER_ShpInst_VerticalScroll 97 -#define ESCHER_ShpInst_HorizontalScroll 98 -#define ESCHER_ShpInst_CircularArrow 99 -#define ESCHER_ShpInst_NotchedCircularArrow 100 -#define ESCHER_ShpInst_UturnArrow 101 -#define ESCHER_ShpInst_CurvedRightArrow 102 -#define ESCHER_ShpInst_CurvedLeftArrow 103 -#define ESCHER_ShpInst_CurvedUpArrow 104 -#define ESCHER_ShpInst_CurvedDownArrow 105 -#define ESCHER_ShpInst_CloudCallout 106 -#define ESCHER_ShpInst_EllipseRibbon 107 -#define ESCHER_ShpInst_EllipseRibbon2 108 -#define ESCHER_ShpInst_FlowChartProcess 109 -#define ESCHER_ShpInst_FlowChartDecision 110 -#define ESCHER_ShpInst_FlowChartInputOutput 111 -#define ESCHER_ShpInst_FlowChartPredefinedProcess 112 -#define ESCHER_ShpInst_FlowChartInternalStorage 113 -#define ESCHER_ShpInst_FlowChartDocument 114 -#define ESCHER_ShpInst_FlowChartMultidocument 115 -#define ESCHER_ShpInst_FlowChartTerminator 116 -#define ESCHER_ShpInst_FlowChartPreparation 117 -#define ESCHER_ShpInst_FlowChartManualInput 118 -#define ESCHER_ShpInst_FlowChartManualOperation 119 -#define ESCHER_ShpInst_FlowChartConnector 120 -#define ESCHER_ShpInst_FlowChartPunchedCard 121 -#define ESCHER_ShpInst_FlowChartPunchedTape 122 -#define ESCHER_ShpInst_FlowChartSummingJunction 123 -#define ESCHER_ShpInst_FlowChartOr 124 -#define ESCHER_ShpInst_FlowChartCollate 125 -#define ESCHER_ShpInst_FlowChartSort 126 -#define ESCHER_ShpInst_FlowChartExtract 127 -#define ESCHER_ShpInst_FlowChartMerge 128 -#define ESCHER_ShpInst_FlowChartOfflineStorage 129 -#define ESCHER_ShpInst_FlowChartOnlineStorage 130 -#define ESCHER_ShpInst_FlowChartMagneticTape 131 -#define ESCHER_ShpInst_FlowChartMagneticDisk 132 -#define ESCHER_ShpInst_FlowChartMagneticDrum 133 -#define ESCHER_ShpInst_FlowChartDisplay 134 -#define ESCHER_ShpInst_FlowChartDelay 135 -#define ESCHER_ShpInst_TextPlainText 136 -#define ESCHER_ShpInst_TextStop 137 -#define ESCHER_ShpInst_TextTriangle 138 -#define ESCHER_ShpInst_TextTriangleInverted 139 -#define ESCHER_ShpInst_TextChevron 140 -#define ESCHER_ShpInst_TextChevronInverted 141 -#define ESCHER_ShpInst_TextRingInside 142 -#define ESCHER_ShpInst_TextRingOutside 143 -#define ESCHER_ShpInst_TextArchUpCurve 144 -#define ESCHER_ShpInst_TextArchDownCurve 145 -#define ESCHER_ShpInst_TextCircleCurve 146 -#define ESCHER_ShpInst_TextButtonCurve 147 -#define ESCHER_ShpInst_TextArchUpPour 148 -#define ESCHER_ShpInst_TextArchDownPour 149 -#define ESCHER_ShpInst_TextCirclePour 150 -#define ESCHER_ShpInst_TextButtonPour 151 -#define ESCHER_ShpInst_TextCurveUp 152 -#define ESCHER_ShpInst_TextCurveDown 153 -#define ESCHER_ShpInst_TextCascadeUp 154 -#define ESCHER_ShpInst_TextCascadeDown 155 -#define ESCHER_ShpInst_TextWave1 156 -#define ESCHER_ShpInst_TextWave2 157 -#define ESCHER_ShpInst_TextWave3 158 -#define ESCHER_ShpInst_TextWave4 159 -#define ESCHER_ShpInst_TextInflate 160 -#define ESCHER_ShpInst_TextDeflate 161 -#define ESCHER_ShpInst_TextInflateBottom 162 -#define ESCHER_ShpInst_TextDeflateBottom 163 -#define ESCHER_ShpInst_TextInflateTop 164 -#define ESCHER_ShpInst_TextDeflateTop 165 -#define ESCHER_ShpInst_TextDeflateInflate 166 -#define ESCHER_ShpInst_TextDeflateInflateDeflate 167 -#define ESCHER_ShpInst_TextFadeRight 168 -#define ESCHER_ShpInst_TextFadeLeft 169 -#define ESCHER_ShpInst_TextFadeUp 170 -#define ESCHER_ShpInst_TextFadeDown 171 -#define ESCHER_ShpInst_TextSlantUp 172 -#define ESCHER_ShpInst_TextSlantDown 173 -#define ESCHER_ShpInst_TextCanUp 174 -#define ESCHER_ShpInst_TextCanDown 175 -#define ESCHER_ShpInst_FlowChartAlternateProcess 176 -#define ESCHER_ShpInst_FlowChartOffpageConnector 177 -#define ESCHER_ShpInst_Callout90 178 -#define ESCHER_ShpInst_AccentCallout90 179 -#define ESCHER_ShpInst_BorderCallout90 180 -#define ESCHER_ShpInst_AccentBorderCallout90 181 -#define ESCHER_ShpInst_LeftRightUpArrow 182 -#define ESCHER_ShpInst_Sun 183 -#define ESCHER_ShpInst_Moon 184 -#define ESCHER_ShpInst_BracketPair 185 -#define ESCHER_ShpInst_BracePair 186 -#define ESCHER_ShpInst_Seal4 187 -#define ESCHER_ShpInst_DoubleWave 188 -#define ESCHER_ShpInst_ActionButtonBlank 189 -#define ESCHER_ShpInst_ActionButtonHome 190 -#define ESCHER_ShpInst_ActionButtonHelp 191 -#define ESCHER_ShpInst_ActionButtonInformation 192 -#define ESCHER_ShpInst_ActionButtonForwardNext 193 -#define ESCHER_ShpInst_ActionButtonBackPrevious 194 -#define ESCHER_ShpInst_ActionButtonEnd 195 -#define ESCHER_ShpInst_ActionButtonBeginning 196 -#define ESCHER_ShpInst_ActionButtonReturn 197 -#define ESCHER_ShpInst_ActionButtonDocument 198 -#define ESCHER_ShpInst_ActionButtonSound 199 -#define ESCHER_ShpInst_ActionButtonMovie 200 -#define ESCHER_ShpInst_HostControl 201 -#define ESCHER_ShpInst_TextBox 202 - -#define ESCHER_ShpInst_COUNT 203 -#define ESCHER_ShpInst_Max 0x0FFF -#define ESCHER_ShpInst_Nil ESCHER_ShpInst_Max - -enum ESCHER_BlibType -{ // GEL provided types... - ERROR = 0, // An error occured during loading - UNKNOWN, // An unknown blip type - EMF, // Windows Enhanced Metafile - WMF, // Windows Metafile - PICT, // Macintosh PICT - PEG, // JFIF - PNG, // PNG - DIB, // Windows DIB - FirstClient = 32, // First client defined blip type - LastClient = 255 // Last client defined blip type -}; - -enum ESCHER_FillStyle -{ - ESCHER_FillSolid, // Fill with a solid color - ESCHER_FillPattern, // Fill with a pattern (bitmap) - ESCHER_FillTexture, // A texture (pattern with its own color map) - ESCHER_FillPicture, // Center a picture in the shape - ESCHER_FillShade, // Shade from start to end points - ESCHER_FillShadeCenter, // Shade from bounding rectangle to end point - ESCHER_FillShadeShape, // Shade from shape outline to end point - ESCHER_FillShadeScale, - ESCHER_FillShadeTitle, - ESCHER_FillBackground -}; - -enum ESCHER_wMode -{ - ESCHER_wColor, // only used for predefined shades - ESCHER_wAutomatic, // depends on object type - ESCHER_wGrayScale, // shades of gray only - ESCHER_wLightGrayScale, // shades of light gray only - ESCHER_wInverseGray, // dark gray mapped to light gray, etc. - ESCHER_wGrayOutline, // pure gray and white - ESCHER_wBlackTextLine, // black text and lines, all else grayscale - ESCHER_wHighContrast, // pure black and white mode (no grays) - ESCHER_wBlack, // solid black msobwWhite, // solid white - ESCHER_wDontShow, // object not drawn - ESCHER_wNumModes // number of Black and white modes -}; - - -// -enum ESCHER_ShapePath -{ - ESCHER_ShapeLines, // A line of straight segments - ESCHER_ShapeLinesClosed, // A closed polygonal object - ESCHER_ShapeCurves, // A line of Bezier curve segments - ESCHER_ShapeCurvesClosed, // A closed shape with curved edges - ESCHER_ShapeComplex // pSegmentInfo must be non-empty -}; - - -enum ESCHER_WrapMode -{ - ESCHER_WrapSquare, - ESCHER_WrapByPoints, - ESCHER_WrapNone, - ESCHER_WrapTopBottom, - ESCHER_WrapThrough -}; - -// -enum ESCHER_bwMode -{ - ESCHER_bwColor, // only used for predefined shades - ESCHER_bwAutomatic, // depends on object type - ESCHER_bwGrayScale, // shades of gray only - ESCHER_bwLightGrayScale, // shades of light gray only - ESCHER_bwInverseGray, // dark gray mapped to light gray, etc. - ESCHER_bwGrayOutline, // pure gray and white - ESCHER_bwBlackTextLine, // black text and lines, all else grayscale - ESCHER_bwHighContrast, // pure black and white mode (no grays) - ESCHER_bwBlack, // solid black - ESCHER_bwWhite, // solid white - ESCHER_bwDontShow, // object not drawn - ESCHER_bwNumModes // number of Black and white modes -}; - - -enum ESCHER_AnchorText -{ - ESCHER_AnchorTop, - ESCHER_AnchorMiddle, - ESCHER_AnchorBottom, - ESCHER_AnchorTopCentered, - ESCHER_AnchorMiddleCentered, - ESCHER_AnchorBottomCentered, - ESCHER_AnchorTopBaseline, - ESCHER_AnchorBottomBaseline, - ESCHER_AnchorTopCenteredBaseline, - ESCHER_AnchorBottomCenteredBaseline -}; - -enum ESCHER_cDir -{ - ESCHER_cDir0, // Right - ESCHER_cDir90, // Down - ESCHER_cDir180, // Left - ESCHER_cDir270 // Up -}; - -// connector style -enum ESCHER_cxSTYLE -{ - ESCHER_cxstyleStraight = 0, - ESCHER_cxstyleBent, - ESCHER_cxstyleCurved, - ESCHER_cxstyleNone -}; - -// text flow -enum ESCHER_txfl -{ - ESCHER_txflHorzN, // Horizontal non-@ - ESCHER_txflTtoBA, // Top to Bottom @-font - ESCHER_txflBtoT, // Bottom to Top non-@ - ESCHER_txflTtoBN, // Top to Bottom non-@ - ESCHER_txflHorzA, // Horizontal @-font - ESCHER_txflVertN // Vertical, non-@ -}; - -// text direction (needed for Bi-Di support) -enum ESCHER_txDir -{ - ESCHER_txdirLTR, // left-to-right text direction - ESCHER_txdirRTL, // right-to-left text direction - ESCHER_txdirContext // context text direction -}; - -// Callout Type -enum ESCHER_spcot -{ - ESCHER_spcotRightAngle = 1, - ESCHER_spcotOneSegment = 2, - ESCHER_spcotTwoSegment = 3, - ESCHER_spcotThreeSegment = 4 -}; - -// Callout Angle -enum ESCHER_spcoa -{ - ESCHER_spcoaAny, - ESCHER_spcoa30, - ESCHER_spcoa45, - ESCHER_spcoa60, - ESCHER_spcoa90, - ESCHER_spcoa0 -}; - -// Callout Drop -enum ESCHER_spcod -{ - ESCHER_spcodTop, - ESCHER_spcodCenter, - ESCHER_spcodBottom, - ESCHER_spcodSpecified -}; - -// FontWork alignment -enum ESCHER_GeoTextAlign -{ - ESCHER_AlignTextStretch, /* Stretch each line of text to fit width. */ - ESCHER_AlignTextCenter, /* Center text on width. */ - ESCHER_AlignTextLeft, /* Left justify. */ - ESCHER_AlignTextRight, /* Right justify. */ - ESCHER_AlignTextLetterJust, /* Spread letters out to fit width. */ - ESCHER_AlignTextWordJust, /* Spread words out to fit width. */ - ESCHER_AlignTextInvalid /* Invalid */ -}; - -// flags for pictures -enum ESCHER_BlipFlags -{ - ESCHER_BlipFlagDefault = 0, - ESCHER_BlipFlagComment = 0, // Blip name is a comment - ESCHER_BlipFlagFile, // Blip name is a file name - ESCHER_BlipFlagURL, // Blip name is a full URL - ESCHER_BlipFlagType = 3, // Mask to extract type - /* Or the following flags with any of the above. */ - ESCHER_BlipFlagDontSave = 4, // A "dont" is the depression in the metal - // body work of an automobile caused when a - // cyclist violently thrusts his or her nose - // at it, thus a DontSave is another name for - // a cycle lane. - ESCHER_BlipFlagDoNotSave = 4, // For those who prefer English - ESCHER_BlipFlagLinkToFile = 8 -}; - -// -enum ESCHER_3DRenderMode -{ - ESCHER_FullRender, // Generate a full rendering - ESCHER_Wireframe, // Generate a wireframe - ESCHER_BoundingCube // Generate a bounding cube -}; - -// -enum ESCHER_xFormType -{ - ESCHER_xFormAbsolute, // Apply transform in absolute space centered on shape - ESCHER_xFormShape, // Apply transform to shape geometry - ESCHER_xFormDrawing // Apply transform in drawing space -}; - -// -enum ESCHER_ShadowType -{ - ESCHER_ShadowOffset, // N pixel offset shadow - ESCHER_ShadowDouble, // Use second offset too - ESCHER_ShadowRich, // Rich perspective shadow (cast relative to shape) - ESCHER_ShadowShape, // Rich perspective shadow (cast in shape space) - ESCHER_ShadowDrawing, // Perspective shadow cast in drawing space - ESCHER_ShadowEmbossOrEngrave -}; - -// - the type of a (length) measurement -enum ESCHER_dzType - { - ESCHER_dzTypeMin = 0, - ESCHER_dzTypeDefault = 0, // Default size, ignore the values - ESCHER_dzTypeA = 1, // Values are in EMUs - ESCHER_dzTypeV = 2, // Values are in pixels - ESCHER_dzTypeShape = 3, // Values are 16.16 fractions of shape size - ESCHER_dzTypeFixedAspect = 4, // Aspect ratio is fixed - ESCHER_dzTypeAFixed = 5, // EMUs, fixed aspect ratio - ESCHER_dzTypeVFixed = 6, // Pixels, fixed aspect ratio - ESCHER_dzTypeShapeFixed = 7, // Proportion of shape, fixed aspect ratio - ESCHER_dzTypeFixedAspectEnlarge= 8, // Aspect ratio is fixed, favor larger size - ESCHER_dzTypeAFixedBig = 9, // EMUs, fixed aspect ratio - ESCHER_dzTypeVFixedBig = 10, // Pixels, fixed aspect ratio - ESCHER_dzTypeShapeFixedBig= 11, // Proportion of shape, fixed aspect ratio - ESCHER_dzTypeMax = 11 -}; - -// how to interpret the colors in a shaded fill. -enum ESCHER_ShadeType -{ - ESCHER_ShadeNone = 0, // Interpolate without correction between RGBs - ESCHER_ShadeGamma = 1, // Apply gamma correction to colors - ESCHER_ShadeSigma = 2, // Apply a sigma transfer function to position - ESCHER_ShadeBand = 4, // Add a flat band at the start of the shade - ESCHER_ShadeOneColor = 8, // This is a one color shade - - /* A parameter for the band or sigma function can be stored in the top - 16 bits of the value - this is a proportion of *each* band of the - shade to make flat (or the approximate equal value for a sigma - function). NOTE: the parameter is not used for the sigma function, - instead a built in value is used. This value should not be changed - from the default! */ - ESCHER_ShadeParameterShift = 16, - ESCHER_ShadeParameterMask = 0xffff0000, - - ESCHER_ShadeDefault = (ESCHER_ShadeGamma|ESCHER_ShadeSigma| - (16384<<ESCHER_ShadeParameterShift)) -}; - -// compound line style -enum ESCHER_LineStyle -{ - ESCHER_LineSimple, // Single line (of width lineWidth) - ESCHER_LineDouble, // Double lines of equal width - ESCHER_LineThickThin, // Double lines, one thick, one thin - ESCHER_LineThinThick, // Double lines, reverse order - ESCHER_LineTriple // Three lines, thin, thick, thin -}; - -// how to "fill" the line contour -enum ESCHER_LineType -{ - ESCHER_lineSolidType, // Fill with a solid color - ESCHER_linePattern, // Fill with a pattern (bitmap) - ESCHER_lineTexture, // A texture (pattern with its own color map) - ESCHER_linePicture // Center a picture in the shape -}; - -// dashed line style -enum ESCHER_LineDashing -{ - ESCHER_LineSolid, // Solid (continuous) pen - ESCHER_LineDashSys, // PS_DASH system dash style - ESCHER_LineDotSys, // PS_DOT system dash style - ESCHER_LineDashDotSys, // PS_DASHDOT system dash style - ESCHER_LineDashDotDotSys, // PS_DASHDOTDOT system dash style - ESCHER_LineDotGEL, // square dot style - ESCHER_LineDashGEL, // dash style - ESCHER_LineLongDashGEL, // long dash style - ESCHER_LineDashDotGEL, // dash short dash - ESCHER_LineLongDashDotGEL, // long dash short dash - ESCHER_LineLongDashDotDotGEL // long dash short dash short dash -}; - -// line end effect -enum ESCHER_LineEnd -{ - ESCHER_LineNoEnd, - ESCHER_LineArrowEnd, - ESCHER_LineArrowStealthEnd, - ESCHER_LineArrowDiamondEnd, - ESCHER_LineArrowOvalEnd, - ESCHER_LineArrowOpenEnd -}; - -// size of arrowhead -enum ESCHER_LineWidth -{ - ESCHER_LineNarrowArrow, - ESCHER_LineMediumWidthArrow, - ESCHER_LineWideArrow -}; - -// size of arrowhead -enum ESCHER_LineEndLenght -{ - ESCHER_LineShortArrow, - ESCHER_LineMediumLenArrow, - ESCHER_LineLongArrow -}; - -// line join style. -enum ESCHER_LineJoin -{ - ESCHER_LineJoinBevel, // Join edges by a straight line - ESCHER_LineJoinMiter, // Extend edges until they join - ESCHER_LineJoinRound // Draw an arc between the two edges -}; - -// line cap style (applies to ends of dash segments too). -enum ESCHER_LineCap -{ - ESCHER_LineEndCapRound, // Rounded ends - the default - ESCHER_LineEndCapSquare, // Square protrudes by half line width - ESCHER_LineEndCapFlat // Line ends at end point -}; -// Shape Properties -// 1pt = 12700 EMU (English Metric Units) -// 1pt = 20 Twip = 20/1440" = 1/72" -// 1twip=635 EMU -// 1" = 12700*72 = 914400 EMU -// 1" = 25.4mm -// 1mm = 36000 EMU -// Transform -#define ESCHER_Prop_Rotation 4 /* Fixed Point 16.16 degrees */ -// Protection -#define ESCHER_Prop_LockRotation 119 /* BOOL No rotation */ -#define ESCHER_Prop_LockAspectRatio 120 /* BOOL Don't allow changes in aspect ratio */ -#define ESCHER_Prop_LockPosition 121 /* BOOL Don't allow the shape to be moved */ -#define ESCHER_Prop_LockAgainstSelect 122 /* BOOL Shape may not be selected */ -#define ESCHER_Prop_LockCropping 123 /* BOOL No cropping this shape */ -#define ESCHER_Prop_LockVertices 124 /* BOOL Edit Points not allowed */ -#define ESCHER_Prop_LockText 125 /* BOOL Do not edit text */ -#define ESCHER_Prop_LockAdjustHandles 126 /* BOOL Do not adjust */ -#define ESCHER_Prop_LockAgainstGrouping 127 /* BOOL Do not group this shape */ -// Text -#define ESCHER_Prop_lTxid 128 /* LONG id for the text, value determined by the host */ -#define ESCHER_Prop_dxTextLeft 129 /* LONG margins relative to shape's inscribed */ -#define ESCHER_Prop_dyTextTop 130 /* LONG text rectangle (in EMUs) */ -#define ESCHER_Prop_dxTextRight 131 /* LONG */ -#define ESCHER_Prop_dyTextBottom 132 /* LONG */ -#define ESCHER_Prop_WrapText 133 /* MSOWRAPMODE Wrap text at shape margins */ -#define ESCHER_Prop_scaleText 134 /* LONG Text zoom/scale (used if fFitTextToShape) */ -#define ESCHER_Prop_AnchorText 135 /* ESCHER_AnchorText How to anchor the text */ -#define ESCHER_Prop_txflTextFlow 136 /* MSOTXFL Text flow */ -#define ESCHER_Prop_cdirFont 137 /* MSOCDIR Font rotation */ -#define ESCHER_Prop_hspNext 138 /* MSOHSP ID of the next shape (used by Word for linked textboxes) */ -#define ESCHER_Prop_txdir 139 /* MSOTXDIR Bi-Di Text direction */ -#define ESCHER_Prop_SelectText 187 /* BOOL TRUE if single click selects text, FALSE if two clicks */ -#define ESCHER_Prop_AutoTextMargin 188 /* BOOL use host's margin calculations */ -#define ESCHER_Prop_RotateText 189 /* BOOL Rotate text with shape */ -#define ESCHER_Prop_FitShapeToText 190 /* BOOL Size shape to fit text size */ -#define ESCHER_Prop_FitTextToShape 191 /* BOOL Size text to fit shape size */ -// GeoText -#define ESCHER_Prop_gtextUNICODE 192 /* WCHAR* UNICODE text string */ -#define ESCHER_Prop_gtextRTF 193 /* char* RTF text string */ -#define ESCHER_Prop_gtextAlign 194 /* MSOGEOTEXTALIGN alignment on curve */ -#define ESCHER_Prop_gtextSize 195 /* LONG default point size */ -#define ESCHER_Prop_gtextSpacing 196 /* LONG fixed point 16.16 */ -#define ESCHER_Prop_gtextFont 197 /* WCHAR* font family name */ -#define ESCHER_Prop_gtextFReverseRows 240 /* BOOL Reverse row order */ -#define ESCHER_Prop_fGtext 241 /* BOOL Has text effect */ -#define ESCHER_Prop_gtextFVertical 242 /* BOOL Rotate characters */ -#define ESCHER_Prop_gtextFKern 243 /* BOOL Kern characters */ -#define ESCHER_Prop_gtextFTight 244 /* BOOL Tightening or tracking */ -#define ESCHER_Prop_gtextFStretch 245 /* BOOL Stretch to fit shape */ -#define ESCHER_Prop_gtextFShrinkFit 246 /* BOOL Char bounding box */ -#define ESCHER_Prop_gtextFBestFit 247 /* BOOL Scale text-on-path */ -#define ESCHER_Prop_gtextFNormalize 248 /* BOOL Stretch char height */ -#define ESCHER_Prop_gtextFDxMeasure 249 /* BOOL Do not measure along path */ -#define ESCHER_Prop_gtextFBold 250 /* BOOL Bold font */ -#define ESCHER_Prop_gtextFItalic 251 /* BOOL Italic font */ -#define ESCHER_Prop_gtextFUnderline 252 /* BOOL Underline font */ -#define ESCHER_Prop_gtextFShadow 253 /* BOOL Shadow font */ -#define ESCHER_Prop_gtextFSmallcaps 254 /* BOOL Small caps font */ -#define ESCHER_Prop_gtextFStrikethrough 255 /* BOOL Strike through font */ -// Blip -#define ESCHER_Prop_cropFromTop 256 /* LONG 16.16 fraction times total */ -#define ESCHER_Prop_cropFromBottom 257 /* LONG image width or height, */ -#define ESCHER_Prop_cropFromLeft 258 /* LONG as appropriate. */ -#define ESCHER_Prop_cropFromRight 259 /* LONG */ -#define ESCHER_Prop_pib 260 /* IMsoBlip* Blip to display */ -#define ESCHER_Prop_pibName 261 /* WCHAR* Blip file name */ -#define ESCHER_Prop_pibFlags 262 /* MSOBLIPFLAGS Blip flags */ -#define ESCHER_Prop_pictureTransparent 263 /* LONG transparent color (none if ~0UL) */ -#define ESCHER_Prop_pictureContrast 264 /* LONG contrast setting */ -#define ESCHER_Prop_pictureBrightness 265 /* LONG brightness setting */ -#define ESCHER_Prop_pictureGamma 266 /* LONG 16.16 gamma */ -#define ESCHER_Prop_pictureId 267 /* LONG Host-defined ID for OLE objects (usually a pointer) */ -#define ESCHER_Prop_pictureDblCrMod 268 /* MSOCLR Modification used if shape has double shadow */ -#define ESCHER_Prop_pictureFillCrMod 269 /* MSOCLR */ -#define ESCHER_Prop_pictureLineCrMod 270 /* MSOCLR */ -#define ESCHER_Prop_pibPrint 271 /* IMsoBlip* Blip to display when printing */ -#define ESCHER_Prop_pibPrintName 272 /* WCHAR* Blip file name */ -#define ESCHER_Prop_pibPrintFlags 273 /* MSOBLIPFLAGS Blip flags */ -#define ESCHER_Prop_fNoHitTestPicture 316 /* BOOL Do not hit test the picture */ -#define ESCHER_Prop_pictureGray 317 /* BOOL grayscale display */ -#define ESCHER_Prop_pictureBiLevel 318 /* BOOL bi-level display */ -#define ESCHER_Prop_pictureActive 319 /* BOOL Server is active (OLE objects only) */ -// Geometry -#define ESCHER_Prop_geoLeft 320 /* LONG Defines the G (geometry) coordinate space. */ -#define ESCHER_Prop_geoTop 321 /* LONG */ -#define ESCHER_Prop_geoRight 322 /* LONG */ -#define ESCHER_Prop_geoBottom 323 /* LONG */ -#define ESCHER_Prop_shapePath 324 /* MSOSHAPEPATH */ -#define ESCHER_Prop_pVertices 325 /* IMsoArray An array of points, in G units. */ -#define ESCHER_Prop_pSegmentInfo 326 /* IMsoArray */ -#define ESCHER_Prop_adjustValue 327 /* LONG Adjustment values corresponding to */ -#define ESCHER_Prop_adjust2Value 328 /* LONG the positions of the adjust handles */ -#define ESCHER_Prop_adjust3Value 329 /* LONG of the shape. The number of values */ -#define ESCHER_Prop_adjust4Value 330 /* LONG used and their allowable ranges vary */ -#define ESCHER_Prop_adjust5Value 331 /* LONG from shape type to shape type. */ -#define ESCHER_Prop_adjust6Value 332 /* LONG */ -#define ESCHER_Prop_adjust7Value 333 /* LONG */ -#define ESCHER_Prop_adjust8Value 334 /* LONG */ -#define ESCHER_Prop_adjust9Value 335 /* LONG */ -#define ESCHER_Prop_adjust10Value 336 /* LONG */ -#define ESCHER_Prop_fShadowOK 378 /* BOOL Shadow may be set */ -#define ESCHER_Prop_f3DOK 379 /* BOOL 3D may be set */ -#define ESCHER_Prop_fLineOK 380 /* BOOL Line style may be set */ -#define ESCHER_Prop_fGtextOK 381 /* BOOL Text effect (FontWork) supported */ -#define ESCHER_Prop_fFillShadeShapeOK 382 /* BOOL */ -#define ESCHER_Prop_fFillOK 383 /* BOOL OK to fill the shape through the UI or VBA? */ -// FillStyle -#define ESCHER_Prop_fillType 384 /* ESCHER_FillStyle Type of fill */ -#define ESCHER_Prop_fillColor 385 /* MSOCLR Foreground color */ -#define ESCHER_Prop_fillOpacity 386 /* LONG Fixed 16.16 */ -#define ESCHER_Prop_fillBackColor 387 /* MSOCLR Background color */ -#define ESCHER_Prop_fillBackOpacity 388 /* LONG Shades only */ -#define ESCHER_Prop_fillCrMod 389 /* MSOCLR Modification for BW views */ -#define ESCHER_Prop_fillBlip 390 /* IMsoBlip* Pattern/texture */ -#define ESCHER_Prop_fillBlipName 391 /* WCHAR* Blip file name */ -#define ESCHER_Prop_fillBlipFlags 392 /* MSOBLIPFLAGS Blip flags */ -#define ESCHER_Prop_fillWidth 393 /* LONG How big (A units) to make a metafile texture. */ -#define ESCHER_Prop_fillHeight 394 /* LONG */ -#define ESCHER_Prop_fillAngle 395 /* LONG Fade angle - degrees in 16.16 */ -#define ESCHER_Prop_fillFocus 396 /* LONG Linear shaded fill focus percent */ -#define ESCHER_Prop_fillToLeft 397 /* LONG Fraction 16.16 */ -#define ESCHER_Prop_fillToTop 398 /* LONG Fraction 16.16 */ -#define ESCHER_Prop_fillToRight 399 /* LONG Fraction 16.16 */ -#define ESCHER_Prop_fillToBottom 400 /* LONG Fraction 16.16 */ -#define ESCHER_Prop_fillRectLeft 401 /* LONG For shaded fills, use the specified rectangle */ -#define ESCHER_Prop_fillRectTop 402 /* LONG instead of the shape's bounding rect to */ -#define ESCHER_Prop_fillRectRight 403 /* LONG define how large the fade is going to be. */ -#define ESCHER_Prop_fillRectBottom 404 /* LONG */ -#define ESCHER_Prop_fillDztype 405 /* MSODZTYPE */ -#define ESCHER_Prop_fillShadePreset 406 /* LONG Special shades */ -#define ESCHER_Prop_fillShadeColors 407 /* IMsoArray a preset array of colors */ -#define ESCHER_Prop_fillOriginX 408 /* LONG */ -#define ESCHER_Prop_fillOriginY 409 /* LONG */ -#define ESCHER_Prop_fillShapeOriginX 410 /* LONG */ -#define ESCHER_Prop_fillShapeOriginY 411 /* LONG */ -#define ESCHER_Prop_fillShadeType 412 /* MSOSHADETYPE Type of shading, if a shaded (gradient) fill. */ -#define ESCHER_Prop_fFilled 443 /* BOOL Is shape filled? */ -#define ESCHER_Prop_fHitTestFill 444 /* BOOL Should we hit test fill? */ -#define ESCHER_Prop_fillShape 445 /* BOOL Register pattern on shape */ -#define ESCHER_Prop_fillUseRect 446 /* BOOL Use the large rect? */ -#define ESCHER_Prop_fNoFillHitTest 447 /* BOOL Hit test a shape as though filled */ -// LineStyle -#define ESCHER_Prop_lineColor 448 /* MSOCLR Color of line */ -#define ESCHER_Prop_lineOpacity 449 /* LONG Not implemented */ -#define ESCHER_Prop_lineBackColor 450 /* MSOCLR Background color */ -#define ESCHER_Prop_lineCrMod 451 /* MSOCLR Modification for BW views */ -#define ESCHER_Prop_lineType 452 /* MSOLINETYPE Type of line */ -#define ESCHER_Prop_lineFillBlip 453 /* IMsoBlip* Pattern/texture */ -#define ESCHER_Prop_lineFillBlipName 454 /* WCHAR* Blip file name */ -#define ESCHER_Prop_lineFillBlipFlags 455 /* MSOBLIPFLAGS Blip flags */ -#define ESCHER_Prop_lineFillWidth 456 /* LONG How big (A units) to make */ -#define ESCHER_Prop_lineFillHeight 457 /* LONG a metafile texture. */ -#define ESCHER_Prop_lineFillDztype 458 /* MSODZTYPE How to interpret fillWidth/Height numbers. */ -#define ESCHER_Prop_lineWidth 459 /* LONG A units; 1pt == 12700 EMUs */ -#define ESCHER_Prop_lineMiterLimit 460 /* LONG ratio (16.16) of width */ -#define ESCHER_Prop_lineStyle 461 /* MSOLINESTYLE Draw parallel lines? */ -#define ESCHER_Prop_lineDashing 462 /* MSOLINEDASHING Can be overridden by: */ -#define ESCHER_Prop_lineDashStyle 463 /* IMsoArray As Win32 ExtCreatePen */ -#define ESCHER_Prop_lineStartArrowhead 464 /* MSOLINEEND Arrow at start */ -#define ESCHER_Prop_lineEndArrowhead 465 /* MSOLINEEND Arrow at end */ -#define ESCHER_Prop_lineStartArrowWidth 466 /* MSOLINEENDWIDTH Arrow at start */ -#define ESCHER_Prop_lineStartArrowLength 467 /* MSOLINEENDLENGTH Arrow at end */ -#define ESCHER_Prop_lineEndArrowWidth 468 /* MSOLINEENDWIDTH Arrow at start */ -#define ESCHER_Prop_lineEndArrowLength 469 /* MSOLINEENDLENGTH Arrow at end */ -#define ESCHER_Prop_lineJoinStyle 470 /* MSOLINEJOIN How to join lines */ -#define ESCHER_Prop_lineEndCapStyle 471 /* MSOLINECAP How to end lines */ -#define ESCHER_Prop_fArrowheadsOK 507 /* BOOL Allow arrowheads if prop. is set */ -#define ESCHER_Prop_fLine 508 /* BOOL Any line? */ -#define ESCHER_Prop_fHitTestLine 509 /* BOOL Should we hit test lines? */ -#define ESCHER_Prop_lineFillShape 510 /* BOOL Register pattern on shape */ -#define ESCHER_Prop_fNoLineDrawDash 511 /* BOOL Draw a dashed line if no line */ -// ShadowStyle -#define ESCHER_Prop_shadowType 512 /* MSOSHADOWTYPE Type of effect */ -#define ESCHER_Prop_shadowColor 513 /* MSOCLR Foreground color */ -#define ESCHER_Prop_shadowHighlight 514 /* MSOCLR Embossed color */ -#define ESCHER_Prop_shadowCrMod 515 /* MSOCLR Modification for BW views */ -#define ESCHER_Prop_shadowOpacity 516 /* LONG Fixed 16.16 */ -#define ESCHER_Prop_shadowOffsetX 517 /* LONG Offset shadow */ -#define ESCHER_Prop_shadowOffsetY 518 /* LONG Offset shadow */ -#define ESCHER_Prop_shadowSecondOffsetX 519 /* LONG Double offset shadow */ -#define ESCHER_Prop_shadowSecondOffsetY 520 /* LONG Double offset shadow */ -#define ESCHER_Prop_shadowScaleXToX 521 /* LONG 16.16 */ -#define ESCHER_Prop_shadowScaleYToX 522 /* LONG 16.16 */ -#define ESCHER_Prop_shadowScaleXToY 523 /* LONG 16.16 */ -#define ESCHER_Prop_shadowScaleYToY 524 /* LONG 16.16 */ -#define ESCHER_Prop_shadowPerspectiveX 525 /* LONG 16.16 / weight */ -#define ESCHER_Prop_shadowPerspectiveY 526 /* LONG 16.16 / weight */ -#define ESCHER_Prop_shadowWeight 527 /* LONG scaling factor */ -#define ESCHER_Prop_shadowOriginX 528 /* LONG */ -#define ESCHER_Prop_shadowOriginY 529 /* LONG */ -#define ESCHER_Prop_fShadow 574 /* BOOL Any shadow? */ -#define ESCHER_Prop_fshadowObscured 575 /* BOOL Excel5-style shadow */ -// PerspectiveStyle -#define ESCHER_Prop_perspectiveType 576 /* MSOXFORMTYPE Where transform applies */ -#define ESCHER_Prop_perspectiveOffsetX 577 /* LONG The LONG values define a */ -#define ESCHER_Prop_perspectiveOffsetY 578 /* LONG transformation matrix, */ -#define ESCHER_Prop_perspectiveScaleXToX 579 /* LONG effectively, each value */ -#define ESCHER_Prop_perspectiveScaleYToX 580 /* LONG is scaled by the */ -#define ESCHER_Prop_perspectiveScaleXToY 581 /* LONG perspectiveWeight parameter. */ -#define ESCHER_Prop_perspectiveScaleYToY 582 /* LONG */ -#define ESCHER_Prop_perspectivePerspectiveX 583 /* LONG */ -#define ESCHER_Prop_perspectivePerspectiveY 584 /* LONG */ -#define ESCHER_Prop_perspectiveWeight 585 /* LONG Scaling factor */ -#define ESCHER_Prop_perspectiveOriginX 586 /* LONG */ -#define ESCHER_Prop_perspectiveOriginY 587 /* LONG */ -#define ESCHER_Prop_fPerspective 639 /* BOOL On/off */ -// 3D Object -#define ESCHER_Prop_c3DSpecularAmt 640 /* LONG Fixed-point 16.16 */ -#define ESCHER_Prop_c3DDiffuseAmt 641 /* LONG Fixed-point 16.16 */ -#define ESCHER_Prop_c3DShininess 642 /* LONG Default gives OK results */ -#define ESCHER_Prop_c3DEdgeThickness 643 /* LONG Specular edge thickness */ -#define ESCHER_Prop_c3DExtrudeForward 644 /* LONG Distance of extrusion in EMUs */ -#define ESCHER_Prop_c3DExtrudeBackward 645 /* LONG */ -#define ESCHER_Prop_c3DExtrudePlane 646 /* LONG Extrusion direction */ -#define ESCHER_Prop_c3DExtrusionColor 647 /* MSOCLR Basic color of extruded part of shape; the lighting model used will determine the exact shades used when rendering. */ -#define ESCHER_Prop_c3DCrMod 648 /* MSOCLR Modification for BW views */ -#define ESCHER_Prop_f3D 700 /* BOOL Does this shape have a 3D effect? */ -#define ESCHER_Prop_fc3DMetallic 701 /* BOOL Use metallic specularity? */ -#define ESCHER_Prop_fc3DUseExtrusionColor 702 /* BOOL */ -#define ESCHER_Prop_fc3DLightFace 703 /* BOOL */ -// 3D Style -#define ESCHER_Prop_c3DYRotationAngle 704 /* LONG degrees (16.16) about y axis */ -#define ESCHER_Prop_c3DXRotationAngle 705 /* LONG degrees (16.16) about x axis */ -#define ESCHER_Prop_c3DRotationAxisX 706 /* LONG These specify the rotation axis; */ -#define ESCHER_Prop_c3DRotationAxisY 707 /* LONG only their relative magnitudes */ -#define ESCHER_Prop_c3DRotationAxisZ 708 /* LONG matter. */ -#define ESCHER_Prop_c3DRotationAngle 709 /* LONG degrees (16.16) about axis */ -#define ESCHER_Prop_c3DRotationCenterX 710 /* LONG rotation center x (16.16 or g-units) */ -#define ESCHER_Prop_c3DRotationCenterY 711 /* LONG rotation center y (16.16 or g-units) */ -#define ESCHER_Prop_c3DRotationCenterZ 712 /* LONG rotation center z (absolute (emus)) */ -#define ESCHER_Prop_c3DRenderMode 713 /* MSO3DRENDERMODE Full,wireframe, or bcube */ -#define ESCHER_Prop_c3DTolerance 714 /* LONG pixels (16.16) */ -#define ESCHER_Prop_c3DXViewpoint 715 /* LONG X view point (emus) */ -#define ESCHER_Prop_c3DYViewpoint 716 /* LONG Y view point (emus) */ -#define ESCHER_Prop_c3DZViewpoint 717 /* LONG Z view distance (emus) */ -#define ESCHER_Prop_c3DOriginX 718 /* LONG */ -#define ESCHER_Prop_c3DOriginY 719 /* LONG */ -#define ESCHER_Prop_c3DSkewAngle 720 /* LONG degree (16.16) skew angle */ -#define ESCHER_Prop_c3DSkewAmount 721 /* LONG Percentage skew amount */ -#define ESCHER_Prop_c3DAmbientIntensity 722 /* LONG Fixed point intensity */ -#define ESCHER_Prop_c3DKeyX 723 /* LONG Key light source direc- */ -#define ESCHER_Prop_c3DKeyY 724 /* LONG tion; only their relative */ -#define ESCHER_Prop_c3DKeyZ 725 /* LONG magnitudes matter */ -#define ESCHER_Prop_c3DKeyIntensity 726 /* LONG Fixed point intensity */ -#define ESCHER_Prop_c3DFillX 727 /* LONG Fill light source direc- */ -#define ESCHER_Prop_c3DFillY 728 /* LONG tion; only their relative */ -#define ESCHER_Prop_c3DFillZ 729 /* LONG magnitudes matter */ -#define ESCHER_Prop_c3DFillIntensity 730 /* LONG Fixed point intensity */ -#define ESCHER_Prop_fc3DConstrainRotation 763 /* BOOL */ -#define ESCHER_Prop_fc3DRotationCenterAuto 764 /* BOOL */ -#define ESCHER_Prop_fc3DParallel 765 /* BOOL Parallel projection? */ -#define ESCHER_Prop_fc3DKeyHarsh 766 /* BOOL Is key lighting harsh? */ -#define ESCHER_Prop_fc3DFillHarsh 767 /* BOOL Is fill lighting harsh? */ -// Shape -#define ESCHER_Prop_hspMaster 769 /* MSOHSP master shape */ -#define ESCHER_Prop_cxstyle 771 /* MSOCXSTYLE Type of connector */ -#define ESCHER_Prop_bWMode 772 /* ESCHERwMode Settings for modifications to */ -#define ESCHER_Prop_bWModePureBW 773 /* ESCHERwMode be made when in different */ -#define ESCHER_Prop_bWModeBW 774 /* ESCHERwMode forms of black-and-white mode. */ -#define ESCHER_Prop_fOleIcon 826 /* BOOL For OLE objects, whether the object is in icon form */ -#define ESCHER_Prop_fPreferRelativeResize 827 /* BOOL For UI only. Prefer relative resizing. */ -#define ESCHER_Prop_fLockShapeType 828 /* BOOL Lock the shape type (don't allow Change Shape) */ -#define ESCHER_Prop_fDeleteAttachedObject 830 /* BOOL */ -#define ESCHER_Prop_fBackground 831 /* BOOL If TRUE, this is the background shape. */ -// Callout -#define ESCHER_Prop_spcot 832 /* MSOSPCOT Callout type */ -#define ESCHER_Prop_dxyCalloutGap 833 /* LONG Distance from box to first point.(EMUs) */ -#define ESCHER_Prop_spcoa 834 /* MSOSPCOA Callout angle */ -#define ESCHER_Prop_spcod 835 /* MSOSPCOD Callout drop type */ -#define ESCHER_Prop_dxyCalloutDropSpecified 836 /* LONG if msospcodSpecified, the actual drop distance */ -#define ESCHER_Prop_dxyCalloutLengthSpecified 837 /* LONG if fCalloutLengthSpecified, the actual distance */ -#define ESCHER_Prop_fCallout 889 /* BOOL Is the shape a callout? */ -#define ESCHER_Prop_fCalloutAccentBar 890 /* BOOL does callout have accent bar */ -#define ESCHER_Prop_fCalloutTextBorder 891 /* BOOL does callout have a text border */ -#define ESCHER_Prop_fCalloutMinusX 892 /* BOOL */ -#define ESCHER_Prop_fCalloutMinusY 893 /* BOOL */ -#define ESCHER_Prop_fCalloutDropAuto 894 /* BOOL If true, then we occasionally invert the drop distance */ -#define ESCHER_Prop_fCalloutLengthSpecified 895 /* BOOL if true, we look at dxyCalloutLengthSpecified */ -// GroupShape -#define ESCHER_Prop_wzName 896 /* WCHAR* Shape Name (present only if explicitly set) */ -#define ESCHER_Prop_wzDescription 897 /* WCHAR* alternate text */ -#define ESCHER_Prop_pihlShape 898 /* IHlink* The hyperlink in the shape. */ -#define ESCHER_Prop_pWrapPolygonVertices 899 /* IMsoArray The polygon that text will be wrapped around (Word) */ -#define ESCHER_Prop_dxWrapDistLeft 900 /* LONG Left wrapping distance from text (Word) */ -#define ESCHER_Prop_dyWrapDistTop 901 /* LONG Top wrapping distance from text (Word) */ -#define ESCHER_Prop_dxWrapDistRight 902 /* LONG Right wrapping distance from text (Word) */ -#define ESCHER_Prop_dyWrapDistBottom 903 /* LONG Bottom wrapping distance from text (Word) */ -#define ESCHER_Prop_lidRegroup 904 /* LONG Regroup ID */ -#define ESCHER_Prop_tableProperties 927 -#define ESCHER_Prop_tableRowProperties 928 -#define ESCHER_Prop_fEditedWrap 953 /* BOOL Has the wrap polygon been edited? */ -#define ESCHER_Prop_fBehindDocument 954 /* BOOL Word-only (shape is behind text) */ -#define ESCHER_Prop_fOnDblClickNotify 955 /* BOOL Notify client on a double click */ -#define ESCHER_Prop_fIsButton 956 /* BOOL A button shape (i.e., clicking performs an action). Set for shapes with attached hyperlinks or macros. */ -#define ESCHER_Prop_fOneD 957 /* BOOL 1D adjustment */ -#define ESCHER_Prop_fHidden 958 /* BOOL Do not display */ -#define ESCHER_Prop_fPrint 959 /* BOOL Print this shape */ - -#define ESCHER_PERSISTENTRY_PREALLOCATE 64 - -#define ESCHER_Persist_PrivateEntry 0x80000000 -#define ESCHER_Persist_Dgg 0x00010000 -#define ESCHER_Persist_Dgg_FIDCL 0x00010001 -#define ESCHER_Persist_Dg 0x00020000 -#define ESCHER_Persist_BlibStoreContainer 0x00030000 -#define ESCHER_Persist_CurrentPosition 0x00040000 -#define ESCHER_Persist_Grouping_Snap 0x00050000 -#define ESCHER_Persist_Grouping_Logic 0x00060000 - -// --------------------------------------------------------------------------------------------- - -namespace com { namespace sun { namespace star { - namespace awt { - struct Gradient; - } - namespace drawing { - struct EnhancedCustomShapeAdjustmentValue; - class XShape; - } -}}} - -struct SVX_DLLPUBLIC EscherConnectorListEntry -{ - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mXConnector; - ::com::sun::star::awt::Point maPointA; - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mXConnectToA; - ::com::sun::star::awt::Point maPointB; - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mXConnectToB; - - sal_uInt32 GetConnectorRule( sal_Bool bFirst ); - - EscherConnectorListEntry( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rC, - const ::com::sun::star::awt::Point& rPA, - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rSA , - const ::com::sun::star::awt::Point& rPB, - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rSB ) : - mXConnector ( rC ), - maPointA ( rPA ), - mXConnectToA( rSA ), - maPointB ( rPB ), - mXConnectToB( rSB ) {} - - sal_uInt32 GetClosestPoint( const Polygon& rPoly, const ::com::sun::star::awt::Point& rP ); -}; - -struct SVX_DLLPUBLIC EscherExContainer -{ - sal_uInt32 nContPos; - SvStream& rStrm; - - EscherExContainer( SvStream& rSt, const sal_uInt16 nRecType, const sal_uInt16 nInstance = 0 ); - ~EscherExContainer(); -}; -struct SVX_DLLPUBLIC EscherExAtom -{ - sal_uInt32 nContPos; - SvStream& rStrm; - - EscherExAtom( SvStream& rSt, const sal_uInt16 nRecType, const sal_uInt16 nInstance = 0, const sal_uInt8 nVersion = 0 ); - ~EscherExAtom(); -}; - -struct EscherPropertyValueHelper -{ - static sal_Bool GetPropertyValue( - ::com::sun::star::uno::Any& rAny, - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, - const String& rPropertyName, - sal_Bool bTestPropertyAvailability = sal_False ); - - static ::com::sun::star::beans::PropertyState GetPropertyState( - const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > &, - const String& rPropertyName ); -}; - -// --------------------------------------------------------------------------------------------- - -struct EscherPersistEntry -{ - UINT32 mnID; - UINT32 mnOffset; - EscherPersistEntry( UINT32 nId, UINT32 nOffset ) { mnID = nId; mnOffset = nOffset; }; - -}; - -// --------------------------------------------------------------------------------------------- - -class SvMemoryStream; -class EscherBlibEntry -{ - - friend class EscherGraphicProvider; - friend class EscherEx; - friend class _EscherEx; - - protected: - - UINT32 mnIdentifier[ 4 ]; - UINT32 mnPictureOffset; // offset auf die grafik im PictureStreams - UINT32 mnSize; // size of real graphic - - UINT32 mnRefCount; // !! reference count - UINT32 mnSizeExtra; // !! size of preceding header - - ESCHER_BlibType meBlibType; - - Size maPrefSize; - MapMode maPrefMapMode; - - sal_Bool mbIsEmpty; - sal_Bool mbIsNativeGraphicPossible; - - public: - - EscherBlibEntry( sal_uInt32 nPictureOffset, const GraphicObject& rObj, - const ByteString& rId, const GraphicAttr* pAttr = NULL ); - - ~EscherBlibEntry(); - - void WriteBlibEntry( SvStream& rSt, sal_Bool bWritePictureOffset, sal_uInt32 nResize = 0 ); - sal_Bool IsEmpty() const { return mbIsEmpty; }; - - BOOL operator==( const EscherBlibEntry& ) const; -}; - -// --------------------------------------------------------------------------------------------- - -#define _E_GRAPH_PROV_USE_INSTANCES 1 -#define _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES 2 - -class SVX_DLLPUBLIC EscherGraphicProvider -{ - sal_uInt32 mnFlags; - - EscherBlibEntry** mpBlibEntrys; - sal_uInt32 mnBlibBufSize; - sal_uInt32 mnBlibEntrys; - - protected : - - UINT32 ImplInsertBlib( EscherBlibEntry* p_EscherBlibEntry ); - - public : - - sal_uInt32 GetBlibStoreContainerSize( SvStream* pMergePicStreamBSE = NULL ) const; - void WriteBlibStoreContainer( SvStream& rStrm, SvStream* pMergePicStreamBSE = NULL ); - sal_Bool WriteBlibStoreEntry(SvStream& rStrm, sal_uInt32 nBlipId, - sal_Bool bWritePictureOffset, sal_uInt32 nResize = 0); - sal_uInt32 GetBlibID( SvStream& rPicOutStream, const ByteString& rGraphicId, const Rectangle& rBoundRect, - const com::sun::star::awt::Rectangle* pVisArea = NULL, const GraphicAttr* pGrafikAttr = NULL ); - sal_Bool HasGraphics() const { return mnBlibEntrys != 0; }; - - void SetNewBlipStreamOffset( sal_Int32 nOffset ); - - sal_Bool GetPrefSize( const sal_uInt32 nBlibId, Size& rSize, MapMode& rMapMode ); - - EscherGraphicProvider( sal_uInt32 nFlags = _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES ); - ~EscherGraphicProvider(); - -}; - -class SVX_DLLPUBLIC EscherSolverContainer -{ - List maShapeList; - List maConnectorList; - -public: - - sal_uInt32 GetShapeId( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rShape ) const; - - void AddShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, sal_uInt32 nId ); - void AddConnector( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, - const ::com::sun::star::awt::Point& rA, - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, - const ::com::sun::star::awt::Point& rB, - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rConB ); - - void WriteSolver( SvStream& ); - - EscherSolverContainer(){}; - ~EscherSolverContainer(); -}; - -// --------------------------------------------------------------------------------------------- - -#define ESCHER_CREATEPOLYGON_LINE 1 -#define ESCHER_CREATEPOLYGON_POLYLINE 2 -#define ESCHER_CREATEPOLYGON_POLYPOLYGON 4 - -class GraphicAttr; -class SdrObjCustomShape; - -struct EscherPropSortStruct -{ - sal_uInt8* pBuf; - sal_uInt32 nPropSize; - sal_uInt32 nPropValue; - sal_uInt16 nPropId; -}; - -typedef std::vector< EscherPropSortStruct > EscherProperties; - -class SVX_DLLPUBLIC EscherPropertyContainer -{ - EscherGraphicProvider* pGraphicProvider; - SvStream* pPicOutStrm; - Rectangle* pShapeBoundRect; - - EscherPropSortStruct* pSortStruct; - - sal_uInt32 nSortCount; - sal_uInt32 nSortBufSize; - sal_uInt32 nCountCount; - sal_uInt32 nCountSize; - - sal_Bool bHasComplexData; - sal_Bool bSuppressRotation; - - - sal_uInt32 ImplGetColor( const sal_uInt32 rColor, sal_Bool bSwap = sal_True ); - void ImplCreateGraphicAttributes( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - sal_uInt32 nBlibId, sal_Bool bCreateCroppingAttributes ); - sal_Bool ImplCreateEmbeddedBmp( const ByteString& rUniqueId ); - void ImplInit(); - - public : - - EscherPropertyContainer(); - EscherPropertyContainer( - EscherGraphicProvider& rGraphicProvider, // the PropertyContainer needs to know - SvStream* pPicOutStrm, // the GraphicProvider to be able to write - Rectangle& rShapeBoundRect ); // FillBitmaps or GraphicObjects. - // under some cirumstances the ShapeBoundRect is adjusted - // this will happen when rotated GraphicObjects - // are saved to PowerPoint - ~EscherPropertyContainer(); - - void AddOpt( sal_uInt16 nPropertyID, const rtl::OUString& rString ); - - void AddOpt( sal_uInt16 nPropertyID, sal_uInt32 nPropValue, - sal_Bool bBlib = sal_False ); - - void AddOpt( sal_uInt16 nPropertyID, sal_Bool bBlib, sal_uInt32 nPropValue, - sal_uInt8* pProp, sal_uInt32 nPropSize ); - - sal_Bool GetOpt( sal_uInt16 nPropertyID, sal_uInt32& rPropValue ) const; - - sal_Bool GetOpt( sal_uInt16 nPropertyID, EscherPropSortStruct& rPropValue ) const; - - EscherProperties GetOpts() const; - - void Commit( SvStream& rSt, sal_uInt16 nVersion = 3, sal_uInt16 nRecType = ESCHER_OPT ); - - sal_Bool CreateOLEGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXOleObject ); - - /** Creates a complex ESCHER_Prop_fillBlip containing the BLIP directly (for Excel charts). */ - sal_Bool CreateEmbeddedBitmapProperties( const ::rtl::OUString& rBitmapUrl, - ::com::sun::star::drawing::BitmapMode eBitmapMode ); - /** Creates a complex ESCHER_Prop_fillBlip containing a hatch style (for Excel charts). */ - sal_Bool CreateEmbeddedHatchProperties( const ::com::sun::star::drawing::Hatch& rHatch, - const Color& rBackColor, bool bFillBackground ); - - // the GraphicProperties will only be created if a GraphicProvider and PicOutStrm is known - // DR: #99897# if no GraphicProvider is present, a complex ESCHER_Prop_fillBlip - // will be created, containing the BLIP directly (e.g. for Excel charts). - sal_Bool CreateGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - const String& rSource, const sal_Bool bCreateFillBitmap, const sal_Bool bCreateCroppingAttributes = sal_False, - const sal_Bool bFillBitmapModeAllowed = sal_True ); - - sal_Bool CreatePolygonProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - sal_uInt32 nFlags, sal_Bool bBezier, ::com::sun::star::awt::Rectangle& rGeoRect, Polygon* pPolygon = NULL ); - - static sal_uInt32 GetGradientColor( const ::com::sun::star::awt::Gradient* pGradient, sal_uInt32 nStartColor ); - - void CreateGradientProperties( const ::com::sun::star::awt::Gradient & rGradient ); - void CreateGradientProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & ); - void CreateLineProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_Bool bEdge ); - void CreateFillProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_Bool bEdge ); - void CreateTextProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_uInt32 nText, - const sal_Bool bIsCustomShape = sal_False, const sal_Bool bIsTextFrame = sal_True ); - - sal_Bool CreateConnectorProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, - EscherSolverContainer& rSolver, ::com::sun::star::awt::Rectangle& rGeoRect, - sal_uInt16& rShapeType, sal_uInt16& rShapeFlags ); - - // Because shadow properties depends to the line and fillstyle, the CreateShadowProperties method should be called at last. - // It activ only when at least a FillStyle or LineStyle is set. - sal_Bool CreateShadowProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & ); - - // creates all necessary CustomShape properties, this includes also Text-, Shadow-, Fill-, and LineProperties - void CreateCustomShapeProperties( const MSO_SPT eShapeType, const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & ); - sal_Bool IsFontWork() const; - - // helper functions which are also used by the escher import - static PolyPolygon GetPolyPolygon( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape ); - static PolyPolygon GetPolyPolygon( const ::com::sun::star::uno::Any& rSource ); - static MSO_SPT GetCustomShapeType( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, sal_uInt32& nMirrorFlags ); - static MSO_SPT GetCustomShapeType( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, sal_uInt32& nMirrorFlags, rtl::OUString& rShapeType ); - - // helper functions which are also used in ooxml export - static sal_Bool GetLineArrow( const sal_Bool bLineStart, - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - ESCHER_LineEnd& reLineEnd, sal_Int32& rnArrowLength, sal_Int32& rnArrowWidth ); - static sal_Bool IsDefaultObject( SdrObjCustomShape* pCustoShape ); - static void LookForPolarHandles( const MSO_SPT eShapeType, sal_Int32& nAdjustmentsWhichNeedsToBeConverted ); - static sal_Bool GetAdjustmentValue( const com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue & rkProp, sal_Int32 nIndex, sal_Int32 nAdjustmentsWhichNeedsToBeConverted, sal_Int32& nValue ); -}; - -// --------------------------------------------------------------------------------------------- - -class SVX_DLLPUBLIC EscherPersistTable -{ - - public: - List maPersistTable; - - BOOL PtIsID( UINT32 nID ); - void PtInsert( UINT32 nID, UINT32 nOfs ); - UINT32 PtDelete( UINT32 nID ); - UINT32 PtGetOffsetByID( UINT32 nID ); - UINT32 PtReplace( UINT32 nID, UINT32 nOfs ); - UINT32 PtReplaceOrInsert( UINT32 nID, UINT32 nOfs ); - UINT32 PtGetCount() const { return maPersistTable.Count(); }; - - EscherPersistTable(); - virtual ~EscherPersistTable(); -}; - -// --------------------------------------------------------------------------------------------- - -class EscherEx; - -/// abstract base class for ESCHER_ClientTextbox, ESCHER_ClientData -class SVX_DLLPUBLIC EscherExClientRecord_Base -{ -public: - EscherExClientRecord_Base() {} - virtual ~EscherExClientRecord_Base(); - - /// Application writes the record header - /// using rEx.AddAtom(...) followed by - /// record data written to rEx.GetStream() - virtual void WriteData( EscherEx& rEx ) const = 0; -}; - - -/// abstract base class for ESCHER_ClientAnchor -class SVX_DLLPUBLIC EscherExClientAnchor_Base -{ -public: - EscherExClientAnchor_Base() {} - virtual ~EscherExClientAnchor_Base(); - - /// Application writes the record header - /// using rEx.AddAtom(...) followed by - /// record data written to rEx.GetStream() - virtual void WriteData( EscherEx& rEx, - const Rectangle& rRect ) = 0; -}; - - -class EscherExHostAppData -{ -private: - EscherExClientAnchor_Base* pClientAnchor; - EscherExClientRecord_Base* pClientData; - EscherExClientRecord_Base* pClientTextbox; - // ignore single shape if entire pages are written - BOOL bDontWriteShape; - -public: - EscherExHostAppData() : pClientAnchor(0), pClientData(0), - pClientTextbox(0), bDontWriteShape(FALSE) - {} - - void SetClientAnchor( EscherExClientAnchor_Base* p ) - { pClientAnchor = p; } - void SetClientData( EscherExClientRecord_Base* p ) - { pClientData = p; } - void SetClientTextbox( EscherExClientRecord_Base* p ) - { pClientTextbox = p; } - void SetDontWriteShape( BOOL b ) - { bDontWriteShape = b; } - EscherExClientAnchor_Base* GetClientAnchor() const - { return pClientAnchor; } - EscherExClientRecord_Base* GetClientData() const - { return pClientData; } - EscherExClientRecord_Base* GetClientTextbox() const - { return pClientTextbox; } - - void WriteClientAnchor( EscherEx& rEx, const Rectangle& rRect ) - { if( pClientAnchor ) pClientAnchor->WriteData( rEx, rRect ); } - void WriteClientData( EscherEx& rEx ) - { if( pClientData ) pClientData->WriteData( rEx ); } - void WriteClientTextbox( EscherEx& rEx ) - { if( pClientTextbox ) pClientTextbox->WriteData( rEx ); } - - BOOL DontWriteShape() const { return bDontWriteShape; } -}; - - -// --------------------------------------------------------------------------------------------- - -class SdrObject; -class SdrPage; -class ImplEscherExSdr; -class Color; - -class Graphic; -class SvMemoryStream; -class SvStream; - -class SVX_DLLPUBLIC EscherEx : public EscherPersistTable, public EscherGraphicProvider -{ - protected : - - SvStream* mpOutStrm; - ImplEscherExSdr* mpImplEscherExSdr; - UINT32 mnStrmStartOfs; - std::vector< sal_uInt32 > mOffsets; - std::vector< sal_uInt16 > mRecTypes; - - UINT32 mnDrawings; - UINT32 mnFIDCLs; // anzahl der cluster ID's - - UINT32 mnCurrentDg; - UINT32 mnCurrentShapeID; // die naechste freie ID - UINT32 mnCurrentShapeMaximumID; // die hoechste und auch benutzte ID - UINT32 mnTotalShapesDg; // anzahl der shapes im Dg - UINT32 mnTotalShapeIdUsedDg; // anzahl der benutzten shape Id's im Dg - UINT32 mnTotalShapesDgg; // anzahl der shapes im Dgg - UINT32 mnCountOfs; - - UINT32 mnGroupLevel; - UINT16 mnHellLayerId; - - BOOL mbEscherSpgr; - BOOL mbEscherDgg; - BOOL mbEscherDg; - BOOL mbOleEmf; // OLE is EMF instead of WMF - - - virtual BOOL DoSeek( UINT32 nKey ); - - public: - - EscherEx( SvStream& rOut, UINT32 nDrawings ); - - /// Fuegt in den EscherStream interne Daten ein, dieser Vorgang - /// darf und muss nur einmal ausgefuehrt werden. - /// Wenn pPicStreamMergeBSE angegeben ist, werden die BLIPs - /// aus diesem Stream in die MsofbtBSE Records des EscherStream - /// gemerged, wie es fuer Excel (und Word?) benoetigt wird. - virtual void Flush( SvStream* pPicStreamMergeBSE = NULL ); - - virtual ~EscherEx(); - - // Application may overload this function to maintain an offset - // table for specific regions but MUST call this function too. - virtual void InsertAtCurrentPos( UINT32 nBytes, BOOL bCont = FALSE );// es werden nBytes an der aktuellen Stream Position eingefuegt, - // die PersistantTable und interne Zeiger angepasst - - void InsertPersistOffset( UINT32 nKey, UINT32 nOffset ); // Es wird nicht geprueft, ob sich jener schluessel schon in der PersistantTable befindet - BOOL SeekToPersistOffset( UINT32 nKey ); - virtual BOOL InsertAtPersistOffset( UINT32 nKey, UINT32 nValue );// nValue wird im Stream an entrsprechender Stelle eingefuegt(overwrite modus), ohne dass sich die - // aktuelle StreamPosition aendert - - SvStream& GetStream() const { return *mpOutStrm; } - ULONG GetStreamPos() const { return mpOutStrm->Tell(); } - - virtual BOOL SeekBehindRecHeader( UINT16 nRecType ); // der stream muss vor einem gueltigen Record Header oder Atom stehen - - // features beim erzeugen folgender Container: - // - // ESCHER_DggContainer: ein EscherDgg Atom wird automatisch erzeugt und verwaltet - // ESCHER_DgContainer: ein EscherDg Atom wird automatisch erzeugt und verwaltet - // ESCHER_SpgrContainer: - // ESCHER_SpContainer: - - virtual void OpenContainer( UINT16 nEscherContainer, int nRecInstance = 0 ); - virtual void CloseContainer(); - - virtual void BeginAtom(); - virtual void EndAtom( UINT16 nRecType, int nRecVersion = 0, int nRecInstance = 0 ); - virtual void AddAtom( UINT32 nAtomSitze, UINT16 nRecType, int nRecVersion = 0, int nRecInstance = 0 ); - virtual void AddChildAnchor( const Rectangle& rRectangle ); - virtual void AddClientAnchor( const Rectangle& rRectangle ); - - virtual UINT32 EnterGroup( const String& rShapeName, const Rectangle* pBoundRect = 0 ); - UINT32 EnterGroup( const Rectangle* pBoundRect = NULL ); - UINT32 GetGroupLevel() const { return mnGroupLevel; }; - virtual BOOL SetGroupSnapRect( UINT32 nGroupLevel, const Rectangle& rRect ); - virtual BOOL SetGroupLogicRect( UINT32 nGroupLevel, const Rectangle& rRect ); - virtual void LeaveGroup(); - - // ein ESCHER_Sp wird geschrieben ( Ein ESCHER_DgContainer muss dazu geoeffnet sein !!) - virtual void AddShape( UINT32 nShpInstance, UINT32 nFlagIds, UINT32 nShapeID = 0 ); - // reserviert eine ShapeId - UINT32 GetShapeID(); - - virtual void Commit( EscherPropertyContainer& rProps, const Rectangle& rRect ); - - UINT32 GetColor( const UINT32 nColor, BOOL bSwap = TRUE ); - UINT32 GetColor( const Color& rColor, BOOL bSwap = TRUE ); - - // OLE is written as EMF instead of WMF (default WMF) - void SetOleEmf( BOOL bVal ) { mbOleEmf = bVal; } - BOOL IsOleEmf() const { return mbOleEmf; } - - // ...Sdr... implemented in eschesdo.cxx - - void AddSdrPage( const SdrPage& rPage ); - - /// returns the ShapeID - UINT32 AddSdrObject( const SdrObject& rObj ); - - /// If objects are written through AddSdrObject the - /// SolverContainer has to be written, and maybe some - /// maintenance to be done. - void EndSdrObjectPage(); - - /// Called before a shape is written, application supplies - /// ClientRecords. May set AppData::bDontWriteShape so the - /// shape is ignored. - virtual EscherExHostAppData* StartShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& rShape ); - - /// Called after a shape is written to inform the application - /// of the resulted shape type and ID. - virtual void EndShape( UINT16 nShapeType, UINT32 nShapeID ); - - /// Called before an AdditionalText EnterGroup occurs. - /// The current shape will be written in three parts: - /// a group shape, the shape itself, and an extra textbox shape. - /// The complete flow is: - /// StartShape sets HostData1. - /// EnterAdditionalTextGroup sets HostData2, App may modify - /// HostData1 and keep track of the change. - /// The group shape is written with HostData2. - /// Another StartShape with the same (!) object sets HostData3. - /// The current shape is written with HostData3. - /// EndShape is called for the current shape. - /// Another StartShape with the same (!) object sets HostData4. - /// The textbox shape is written with HostData4. - /// EndShape is called for the textbox shape. - /// EndShape is called for the group shape, this provides - /// the same functionality as an ordinary recursive group. - virtual EscherExHostAppData* EnterAdditionalTextGroup(); - - /// Called if a picture shall be written and no PicStream is - /// set at ImplEscherExSdr - virtual SvStream* QueryPicStream(); - - /// Called if an ESCHER_Prop_lTxid shall be written - virtual UINT32 QueryTextID( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >&, UINT32 nShapeId ); - // add an dummy rectangle shape into the escher stream - UINT32 AddDummyShape(); - - static const SdrObject* GetSdrObject( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& rXShape ); - - void SetHellLayerId( UINT16 nId ) { mnHellLayerId = nId; } - UINT16 GetHellLayerId() const { return mnHellLayerId; } -}; - - -#endif // _SVX_ESCHEREX_HXX diff --git a/svx/inc/svx/msdffdef.hxx b/svx/inc/svx/msdffdef.hxx index 442f751ad95e..400eb4be9e54 100644 --- a/svx/inc/svx/msdffdef.hxx +++ b/svx/inc/svx/msdffdef.hxx @@ -1223,97 +1223,4 @@ BYTE m_bTag; void *m_pvBits; // raster bits of the blip. #endif -class SVX_DLLPUBLIC DffRecordHeader -{ - -public: - BYTE nRecVer; // may be DFF_PSFLAG_CONTAINER - UINT16 nRecInstance; - UINT16 nImpVerInst; - UINT16 nRecType; - UINT32 nRecLen; - ULONG nFilePos; -public: - DffRecordHeader() : nRecVer(0), nRecInstance(0), nImpVerInst(0), nRecType(0), nRecLen(0), nFilePos(0) {} - FASTBOOL IsContainer() const { return nRecVer == DFF_PSFLAG_CONTAINER; } - ULONG GetRecBegFilePos() const { return nFilePos; } - ULONG GetRecEndFilePos() const { return nFilePos + DFF_COMMON_RECORD_HEADER_SIZE + nRecLen; } - void SeekToEndOfRecord(SvStream& rIn) const { rIn.Seek(nFilePos + DFF_COMMON_RECORD_HEADER_SIZE + nRecLen ); } - void SeekToContent( SvStream& rIn) const { rIn.Seek(nFilePos + DFF_COMMON_RECORD_HEADER_SIZE ); } - void SeekToBegOfRecord(SvStream& rIn) const { rIn.Seek( nFilePos ); } - - SVX_DLLPUBLIC friend SvStream& operator>>(SvStream& rIn, DffRecordHeader& rRec); - -}; - -struct DffPropFlags -{ - BYTE bSet : 1; - BYTE bComplex : 1; - BYTE bBlip : 1; - BYTE bSoftAttr : 1; -}; - -class SvxMSDffManager; - -class SVX_DLLPUBLIC DffPropSet : public Table -{ - protected : - - UINT32 mpContents[ 1024 ]; - DffPropFlags mpFlags[ 1024 ]; - - public : - - DffPropSet( BOOL bInitialize = FALSE ){ if ( bInitialize ) - memset( mpFlags, 0, 0x400 * sizeof( DffPropFlags ) ); }; - - inline BOOL IsProperty( UINT32 nRecType ) const { return ( mpFlags[ nRecType & 0x3ff ].bSet ); }; - BOOL IsHardAttribute( UINT32 nId ) const; - UINT32 GetPropertyValue( UINT32 nId, UINT32 nDefault = 0 ) const; - /** Returns a boolean property by its real identifier. */ - bool GetPropertyBool( UINT32 nId, bool bDefault = false ) const; - /** Returns a string property. */ - ::rtl::OUString GetPropertyString( UINT32 nId, SvStream& rStrm ) const; - void SetPropertyValue( UINT32 nId, UINT32 nValue ) const; - BOOL SeekToContent( UINT32 nRecType, SvStream& rSt ) const; - void Merge( DffPropSet& rMasterPropSet ) const; - void InitializePropSet() const; - friend SvStream& operator>>( SvStream& rIn, DffPropSet& rPropSet ); -}; - -class SfxItemSet; -class SdrObject; -struct DffObjData; - -class SVX_DLLPUBLIC DffPropertyReader : public DffPropSet -{ - const SvxMSDffManager& rManager; - DffPropSet* pDefaultPropSet; - - void ApplyCustomShapeTextAttributes( SfxItemSet& rSet ) const; - void ApplyCustomShapeAdjustmentAttributes( SfxItemSet& rSet ) const; - void ApplyCustomShapeGeometryAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const; - void ApplyLineAttributes( SfxItemSet& rSet, const MSO_SPT eShapeType ) const; // #i28269# - void ApplyFillAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const; - -public: - - INT32 mnFix16Angle; - - DffPropertyReader( const SvxMSDffManager& rManager ); - ~DffPropertyReader(); - INT32 Fix16ToAngle( INT32 nAngle ) const; - -#ifdef DBG_CUSTOMSHAPE - void ReadPropSet( SvStream& rIn, void* pClientData, UINT32 nShapeType = 0 ) const; -#else - void ReadPropSet( SvStream& rIn, void* pClientData ) const; -#endif - - void SetDefaultPropSet( SvStream& rIn, UINT32 nOffDgg ) const; - void ApplyAttributes( SvStream& rIn, SfxItemSet& rSet ) const; - void ApplyAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const; -}; - #endif diff --git a/svx/inc/svx/msdffimp.hxx b/svx/inc/svx/msdffimp.hxx deleted file mode 100644 index 38f28b1cabad..000000000000 --- a/svx/inc/svx/msdffimp.hxx +++ /dev/null @@ -1,773 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: msdffimp.hxx,v $ - * $Revision: 1.4.214.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. - * - ************************************************************************/ - -#ifndef _MSDFFIMP_HXX -#define _MSDFFIMP_HXX - -#include <com/sun/star/uno/Reference.h> -#include <com/sun/star/embed/XEmbeddedObject.hpp> -#include <tools/solar.h> // UINTXX -#include <svl/svarray.hxx> - -#include <tools/color.hxx> -#include <tools/gen.hxx> -#include <tools/table.hxx> -#include <svx/msdffdef.hxx> -#include <svx/msfiltertracer.hxx> -#include <vcl/graph.hxx> -#include <string.h> - -#include <map> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <svx/svxdllapi.h> - -#include <sot/storage.hxx> - -class Graphic; -class SvStream; -class SdrObject; -class SdrOle2Obj; -class SotStorageRef; -class Polygon; -class PolyPolygon; -class FmFormModel; -class SdrModel; -class DffRecordHeader; - -class SwFlyFrmFmt; - -struct SvxMSDffBLIPInfo; -struct SvxMSDffShapeInfo; -struct SvxMSDffShapeOrder; - -#define COL_DEFAULT RGB_COLORDATA( 0xFA, 0xFB, 0xFC ) - -typedef SvxMSDffBLIPInfo* SvxMSDffBLIPInfo_Ptr; - -typedef SvxMSDffShapeInfo* SvxMSDffShapeInfo_Ptr; - -typedef SvxMSDffShapeOrder* SvxMSDffShapeOrder_Ptr; - -typedef ::std::map< sal_Int32, SdrObject* > SvxMSDffShapeIdContainer; - -#define SVEXT_PERSIST_STREAM "\002OlePres000" - -// nach der Reihenfolge des Auftretens sortiert werden: -// -SV_DECL_PTRARR_DEL(SvxMSDffBLIPInfos, SvxMSDffBLIPInfo_Ptr, 16,16) - -SV_DECL_PTRARR_DEL(SvxMSDffShapeOrders, SvxMSDffShapeOrder_Ptr, 16,16) - -// explizit sortiert werden: -// -SV_DECL_PTRARR_SORT_DEL_VISIBILITY(SvxMSDffShapeInfos, SvxMSDffShapeInfo_Ptr, 16,16, SVX_DLLPUBLIC) - -SV_DECL_PTRARR_SORT_VISIBILITY(SvxMSDffShapeTxBxSort, SvxMSDffShapeOrder_Ptr, 16,16, SVX_DLLPUBLIC) - -#define SVXMSDFF_SETTINGS_CROP_BITMAPS 1 -#define SVXMSDFF_SETTINGS_IMPORT_PPT 2 -#define SVXMSDFF_SETTINGS_IMPORT_EXCEL 4 - -#define SP_FGROUP 0x001 // This shape is a group shape -#define SP_FCHILD 0x002 // Not a top-level shape -#define SP_FPATRIARCH 0x004 // This is the topmost group shape. - // Exactly one of these per drawing. -#define SP_FDELETED 0x008 // The shape has been deleted -#define SP_FOLESHAPE 0x010 // The shape is an OLE object -#define SP_FHAVEMASTER 0x020 // Shape has a hspMaster property -#define SP_FFLIPH 0x040 // Shape is flipped horizontally -#define SP_FFLIPV 0x080 // Shape is flipped vertically -#define SP_FCONNECTOR 0x100 // Connector type of shape -#define SP_FHAVEANCHOR 0x200 // Shape has an anchor of some kind -#define SP_FBACKGROUND 0x400 // Background shape -#define SP_FHAVESPT 0x800 // Shape has a shape type property - -// for the CreateSdrOLEFromStorage we need the information, how we handle -// convert able OLE-Objects - this ist stored in -#define OLE_MATHTYPE_2_STARMATH 0x0001 -#define OLE_WINWORD_2_STARWRITER 0x0002 -#define OLE_EXCEL_2_STARCALC 0x0004 -#define OLE_POWERPOINT_2_STARIMPRESS 0x0008 - -struct SvxMSDffConnectorRule -{ - sal_uInt32 nRuleId; - sal_uInt32 nShapeA; // SPID of shape A - - sal_uInt32 nShapeB; // SPID of shape B - sal_uInt32 nShapeC; // SPID of connector shape - sal_uInt32 ncptiA; // Connection site Index of shape A - sal_uInt32 ncptiB; // Connection site Index of shape B - sal_uInt32 nSpFlagsA; // SpFlags of shape A ( the original mirror flags must be known when solving the Solver Container ) - sal_uInt32 nSpFlagsB; // SpFlags of shape A - - SdrObject* pAObj; // pPtr of object ( corresponding to shape A ) - SdrObject* pBObj; // " - SdrObject* pCObj; // " of connector object - - SvxMSDffConnectorRule() : nSpFlagsA( 0 ), nSpFlagsB( 0 ), pAObj( NULL ), pBObj( NULL ), pCObj( NULL ) {}; - - friend SvStream& operator>>( SvStream& rIn, SvxMSDffConnectorRule& rAtom ); -}; -struct SVX_DLLPUBLIC SvxMSDffSolverContainer -{ - List aCList; - - SvxMSDffSolverContainer(); - ~SvxMSDffSolverContainer(); - - SVX_DLLPUBLIC friend SvStream& operator>>( SvStream& rIn, SvxMSDffSolverContainer& rAtom ); -}; - -struct FIDCL -{ - UINT32 dgid; // DG owning the SPIDs in this cluster - UINT32 cspidCur; // number of SPIDs used so far -}; - -//--------------------------------------------------------------------------- -// von SvxMSDffManager fuer jedes in der Gruppe enthaltene Shape geliefert -//--------------------------------------------------------------------------- -struct MSDffTxId -{ - USHORT nTxBxS; - USHORT nSequence; - MSDffTxId(USHORT nTxBxS_, USHORT nSequence_ ) - : nTxBxS( nTxBxS_ ), - nSequence( nSequence_ ){} - MSDffTxId(const MSDffTxId& rCopy) - : nTxBxS( rCopy.nTxBxS ), - nSequence( rCopy.nSequence ){} -}; - -struct SVX_DLLPUBLIC SvxMSDffImportRec -{ - SdrObject* pObj; - Polygon* pWrapPolygon; - char* pClientAnchorBuffer; - UINT32 nClientAnchorLen; - char* pClientDataBuffer; - UINT32 nClientDataLen; - UINT32 nXAlign; - UINT32 nXRelTo; - UINT32 nYAlign; - UINT32 nYRelTo; - UINT32 nLayoutInTableCell; - UINT32 nFlags; - long nTextRotationAngle; - long nDxTextLeft; // Abstand der Textbox vom umgebenden Shape - long nDyTextTop; - long nDxTextRight; - long nDyTextBottom; - long nDxWrapDistLeft; - long nDyWrapDistTop; - long nDxWrapDistRight; - long nDyWrapDistBottom; - long nCropFromTop; - long nCropFromBottom; - long nCropFromLeft; - long nCropFromRight; - MSDffTxId aTextId; // Kennungen fuer Textboxen - ULONG nNextShapeId; // fuer verlinkte Textboxen - ULONG nShapeId; - MSO_SPT eShapeType; - MSO_LineStyle eLineStyle; // Umrandungs-Arten - BOOL bDrawHell :1; - BOOL bHidden :1; - BOOL bReplaceByFly :1; - BOOL bLastBoxInChain :1; - BOOL bHasUDefProp :1; - BOOL bVFlip :1; - BOOL bHFlip :1; - BOOL bAutoWidth :1; - - SvxMSDffImportRec(); - SvxMSDffImportRec(const SvxMSDffImportRec& rCopy); - ~SvxMSDffImportRec(); - BOOL operator==( const SvxMSDffImportRec& rEntry ) const - { return nShapeId == rEntry.nShapeId; } - BOOL operator<( const SvxMSDffImportRec& rEntry ) const - { return nShapeId < rEntry.nShapeId; } -}; -typedef SvxMSDffImportRec* MSDffImportRec_Ptr; - -// Liste aller SvxMSDffImportRec fuer eine Gruppe -SV_DECL_PTRARR_SORT_DEL_VISIBILITY(MSDffImportRecords, MSDffImportRec_Ptr, 16,16, SVX_DLLPUBLIC) - -//--------------------------------------------------------------------------- -// Import-/Export-Parameterblock fuer 1 x ImportObjAtCurrentStreamPos() -//--------------------------------------------------------------------------- -struct SvxMSDffImportData -{ - MSDffImportRecords aRecords; // Shape-Pointer, -Ids und private Daten - Rectangle aParentRect;// Rectangle der umgebenden Gruppe - // bzw. von aussen reingegebenes Rect - Rectangle aNewRect; // mit diesem Shape definiertes Rectangle - - SvxMSDffImportData() - {} - SvxMSDffImportData(const Rectangle& rParentRect) - :aParentRect( rParentRect ) - {} - void SetNewRect(INT32 l, INT32 o, - INT32 r, INT32 u ){ aNewRect = Rectangle(l,o, r,u); } - BOOL HasParRect() const { return aParentRect.IsEmpty(); } - BOOL HasNewRect() const { return aNewRect.IsEmpty() ; } - BOOL HasRecords() const { return 0 != aRecords.Count(); } - USHORT GetRecCount() const { return aRecords.Count(); } - SvxMSDffImportRec* GetRecord(USHORT iRecord) const - { return aRecords.GetObject( iRecord ); } -}; - -struct DffObjData -{ - const DffRecordHeader& rSpHd; - - Rectangle aBoundRect; - Rectangle aChildAnchor; - - UINT32 nShapeId; - UINT32 nSpFlags; - MSO_SPT eShapeType; - - BOOL bShapeType : 1; - BOOL bClientAnchor : 1; - BOOL bClientData : 1; - BOOL bChildAnchor : 1; - BOOL bOpt : 1; - BOOL bIsAutoText : 1; - - int nCalledByGroup; - - DffObjData( const DffRecordHeader& rObjHd, - const Rectangle& rBoundRect, - int nClByGroup ) : - rSpHd( rObjHd ), - aBoundRect( rBoundRect ), - nShapeId( 0 ), - nSpFlags( 0 ), - eShapeType( mso_sptNil ), - bShapeType( FALSE ), - bClientAnchor( FALSE ), - bClientData( FALSE ), - bChildAnchor( FALSE ), - bOpt( FALSE ), - bIsAutoText( FALSE ), - nCalledByGroup( nClByGroup ){} -}; - -#define DFF_RECORD_MANAGER_BUF_SIZE 64 - -struct DffRecordList -{ - UINT32 nCount; - UINT32 nCurrent; - DffRecordList* pPrev; - DffRecordList* pNext; - - DffRecordHeader mHd[ DFF_RECORD_MANAGER_BUF_SIZE ]; - - DffRecordList( DffRecordList* pList ); - ~DffRecordList(); -}; - -enum DffSeekToContentMode -{ - SEEK_FROM_BEGINNING, - SEEK_FROM_CURRENT, - SEEK_FROM_CURRENT_AND_RESTART -}; - -class SVX_DLLPUBLIC DffRecordManager : public DffRecordList -{ - public : - - DffRecordList* pCList; - - void Clear(); - void Consume( SvStream& rIn, BOOL bAppend = FALSE, UINT32 nStOfs = 0 ); - - BOOL SeekToContent( SvStream& rIn, UINT16 nRecType, DffSeekToContentMode eMode = SEEK_FROM_BEGINNING ); - DffRecordHeader* GetRecordHeader( UINT16 nRecType, DffSeekToContentMode eMode = SEEK_FROM_BEGINNING ); - - DffRecordManager(); - DffRecordManager( SvStream& rIn ); - ~DffRecordManager(); - - DffRecordHeader* Current(); - DffRecordHeader* First(); - DffRecordHeader* Next(); - DffRecordHeader* Prev(); - DffRecordHeader* Last(); -}; - -/* - SvxMSDffManager - abstrakte Basis-Klasse fuer Escher-Import - =============== - Zweck: Zugriff auf Objekte im Drawing File Format - Stand: Zugriff nur auf BLIPs (wird spaeter erweitert) - - Beachte: in der zwecks PowerPoint-, ODER Word- ODER Excel-Import - ======== abgeleiteten Klasse - MUSS jeweils die Methode ProcessUserDefinedRecord() - implementiert werden! -*/ -class SVX_DLLPUBLIC SvxMSDffManager : public DffPropertyReader -{ - FmFormModel* pFormModel; - SvxMSDffBLIPInfos* pBLIPInfos; - SvxMSDffShapeInfos* pShapeInfos; - SvxMSDffShapeOrders* pShapeOrders; - ULONG nDefaultFontHeight; - long nOffsDgg; - USHORT nBLIPCount; - USHORT nShapeCount; - sal_uInt32 nGroupShapeFlags; - - void CheckTxBxStoryChain(); - void GetFidclData( long nOffsDgg ); - -protected : - - String maBaseURL; - UINT32 mnCurMaxShapeId; // we need this information to - UINT32 mnDrawingsSaved; // access the right drawing - UINT32 mnIdClusters; // while only knowing the shapeid - FIDCL* mpFidcls; - Table maDgOffsetTable; // array of fileoffsets - - friend class DffPropertyReader; - - SvStream& rStCtrl; - SvStream* pStData; - SvStream* pStData2; - SdrModel* pSdrModel; - - long nMapMul; - long nMapDiv; - long nMapXOfs; - long nMapYOfs; - long nEmuMul; - long nEmuDiv; - long nPntMul; - long nPntDiv; - FASTBOOL bNeedMap; - UINT32 nSvxMSDffSettings; - UINT32 nSvxMSDffOLEConvFlags; - - /** stores a reference to an imported SdrObject with its shape id if - it has one - */ - SvxMSDffShapeIdContainer maShapeIdContainer; - - void GetCtrlData( long nOffsDgg ); - void GetDrawingGroupContainerData( SvStream& rSt, - ULONG nLenDgg ); - // --> OD 2008-08-01 #156763# - // Add internal drawing container id as parameter to the sub methods of - // reading the control information about the drawing objects. - // The drawing container id is used to distinguish the text ids of drawing - // objects in different drawing containers. - void GetDrawingContainerData( SvStream& rSt, - ULONG nLenDg, - const unsigned long nDrawingContainerId ); - BOOL GetShapeGroupContainerData( SvStream& rSt, - ULONG nLenShapeGroupCont, - BOOL bPatriarch, - const unsigned long nDrawingContainerId ); - BOOL GetShapeContainerData( SvStream& rSt, - ULONG nLenShapeCont, - ULONG nPosGroup, - const unsigned long nDrawingContainerId ); - // <-- - - FASTBOOL ReadGraphic( SvStream& rSt, ULONG nIndex, Graphic& rGraphic ) const; - SdrObject* ImportFontWork( SvStream&, SfxItemSet&, Rectangle& rBoundRect ) const; - SdrObject* ImportGraphic( SvStream&, SfxItemSet&, const DffObjData& ) const; - // --> OD 2004-12-14 #i32596# - pass <nCalledByGroup> to method - // Needed in the Writer Microsoft Word import to avoid import of OLE objects - // inside groups. Instead a graphic object is created. - virtual SdrObject* ImportOLE( long nOLEId, - const Graphic& rGraf, - const Rectangle& rBoundRect, - const Rectangle& rVisArea, - const int _nCalledByGroup, - sal_Int64 nAspect ) const; - // <-- - SdrObject* GetAutoForm( MSO_SPT eTyp ) const; - static const GDIMetaFile* lcl_GetMetaFileFromGrf_Impl( const Graphic& rGrf, GDIMetaFile& rMtf ); -#ifndef SVX_LIGHT - static com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > CheckForConvertToSOObj( - UINT32 nConvertFlags, SotStorage& rSrcStg, - const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xDestStg, - const Graphic& rGrf, - const Rectangle& rVisArea ); -#endif - -/* - folgende Methoden sind zum Excel-Import zu ueberschreiben: -*/ - virtual BOOL ProcessClientAnchor(SvStream& rStData, ULONG nDatLen, char*& rpBuff, UINT32& rBuffLen ) const; - virtual void ProcessClientAnchor2( SvStream& rStData, DffRecordHeader& rHd, void* pData, DffObjData& ); - virtual BOOL ProcessClientData( SvStream& rStData, ULONG nDatLen, char*& rpBuff, UINT32& rBuffLen ) const; - virtual SdrObject* ProcessObj( SvStream& rSt, DffObjData& rData, void* pData, Rectangle& rTextRect, SdrObject* pObj = NULL); - virtual ULONG Calc_nBLIPPos( ULONG nOrgVal, ULONG nStreamPos ) const; - virtual FASTBOOL GetColorFromPalette(USHORT nNum, Color& rColor) const; - - // ----------------------------------------------------------------------- - - FASTBOOL ReadDffString(SvStream& rSt, String& rTxt) const; - FASTBOOL ReadObjText(SvStream& rSt, SdrObject* pObj) const; - - // SJ: New implementation of ReadObjText is used by Fontwork objects, because - // the old one does not properly import multiple paragraphs - void ReadObjText( const String& rText, SdrObject* pObj ) const; - // ----------------------------------------------------------------------- - - /* - folgende Methode ist von allen zu ueberschreiben, die OLE-Objecte - importieren moechten: - */ - virtual BOOL GetOLEStorageName( long nOLEId, String& rStorageName, - SotStorageRef& rSrcStorage, - com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xDestStg - ) const; - - /* - folgende Methode ist von allen zu ueberschreiben, die verhindern - moechten, dass (abgerundete) Rechtecke mit umgebrochenem Text - immer in SdrRectObj( OBJ_TEXT ) umgewandelt werden: - TRUE bedeutet umwandeln. - */ - virtual BOOL ShapeHasText(ULONG nShapeId, ULONG nFilePos) const; - -public: - - void* pSvxMSDffDummy1; - void* pSvxMSDffDummy2; - void* pSvxMSDffDummy3; - List* pEscherBlipCache; - - DffRecordManager maShapeRecords; - ColorData mnDefaultColor; - - MSFilterTracer* mpTracer; - sal_Bool mbTracing; - - Color MSO_TEXT_CLR_ToColor( sal_uInt32 nColorCode ) const; - Color MSO_CLR_ToColor( sal_uInt32 nColorCode, sal_uInt16 nContextProperty = DFF_Prop_lineColor ) const; - virtual BOOL SeekToShape( SvStream& rSt, void* pClientData, UINT32 nId ) const; - FASTBOOL SeekToRec( SvStream& rSt, USHORT nRecId, ULONG nMaxFilePos, DffRecordHeader* pRecHd = NULL, ULONG nSkipCount = 0 ) const; - FASTBOOL SeekToRec2( USHORT nRecId1, USHORT nRecId2, ULONG nMaxFilePos, DffRecordHeader* pRecHd = NULL, ULONG nSkipCount = 0 ) const; - - // ----------------------------------------------------------------------- - static void MSDFFReadZString( SvStream& rIn, String& rStr, ULONG nMaxLen, FASTBOOL bUniCode = FALSE ); - - static BOOL ReadCommonRecordHeader( DffRecordHeader& rRec, SvStream& rIn ); - static BOOL ReadCommonRecordHeader( SvStream& rSt, - BYTE& rVer, - USHORT& rInst, - USHORT& rFbt, - UINT32& rLength ); -/* - Konstruktor - =========== - Input: rStCtrl - Verwaltungsstream mit Containern, - FBSE Objekten und Shapes - ( muss immer uebergeben werden; - Stream muss bereits offen sein ) - - nOffsDgg - Offset im rStCtrl: Beginn des Drawing Group Containers - - pStData - Datenstream, in dem die BLIPs gespeichert sind - ( falls Null, wird angenommen, dass die - BLIPs ebenfalls im rStCtrl gespeichert sind; - dieser Stream muss ebenfalls bereits offen sein ) - pSdrModel_ kann beim Ctor-Aufruf leer bleiben, muss dann aber - spaeter ueber SetModel() gesetzt werden! - - setzt nBLIPCount -*/ - SvxMSDffManager( SvStream& rStCtrl, - const String& rBaseURL, - long nOffsDgg, - SvStream* pStData, - SdrModel* pSdrModel_ = 0, - long nApplicationScale = 0, - ColorData mnDefaultColor_ = COL_DEFAULT, - ULONG nDefaultFontHeight_ = 24, - SvStream* pStData2_ = 0, - MSFilterTracer* pTracer = NULL ); - - // in PPT werden die Parameter DGGContainerOffset und PicStream - // mit Hilfe einer Init Routine Uebergeben. - SvxMSDffManager( SvStream& rStCtrl, const String& rBaseURL, MSFilterTracer* pTracer ); - void InitSvxMSDffManager( long nOffsDgg_, SvStream* pStData_, sal_uInt32 nSvxMSDffOLEConvFlags ); - void SetDgContainer( SvStream& rSt ); - - virtual ~SvxMSDffManager(); - - UINT32 GetSvxMSDffSettings() const { return nSvxMSDffSettings; }; - void SetSvxMSDffSettings( UINT32 nSettings ) { nSvxMSDffSettings = nSettings; }; - - static BOOL MakeContentStream( SotStorage * pStor, const GDIMetaFile & ); - static BOOL ConvertToOle2( SvStream& rStm, UINT32 nLen, const GDIMetaFile*, - const SotStorageRef & rDest ); - - void SetModel(SdrModel* pModel, long nApplicationScale); - SdrModel* GetModel() const { return pSdrModel; } - void Scale(sal_Int32& rVal) const; - void Scale(Point& rPos) const; - void Scale(Size& rSiz) const; - void Scale(Rectangle& rRect) const; - void Scale(Polygon& rPoly) const; - void Scale(PolyPolygon& rPoly) const; - void ScaleEmu(sal_Int32& rVal) const; - UINT32 ScalePt( UINT32 nPt ) const; - INT32 ScalePoint( INT32 nVal ) const; - -/* - GetBLIP() - Anforderung eines bestimmten BLIP - ========= - Input: nIdx - Nummer des angeforderten BLIP - ( muss immer uebergeben werden ) - - Output: rData - bereits fertig konvertierte Daten - ( direkt als Grafik in unsere Dokumente einzusetzen ) - - Rueckgabewert: TRUE, im Erfolgsfalls, FALSE bei Fehler -*/ - BOOL GetBLIP( ULONG nIdx, Graphic& rData, Rectangle* pVisArea = NULL ) const; - -/* - GetBLIPDirect() -Einlesen eines BLIP aus schon positioniertem Stream - =============== - Input: rBLIPStream -bereits korrekt positionierter Stream - ( muss immer uebergeben werden ) - - Output: rData -bereits fertig konvertierte Daten - ( direkt als Grafik in unsere Dokumente einzusetzen ) - - Rueckgabewert: TRUE, im Erfolgsfalls, FALSE bei Fehler -*/ - BOOL GetBLIPDirect(SvStream& rBLIPStream, Graphic& rData, Rectangle* pVisArea = NULL ) const; - - BOOL GetShape(ULONG nId, - SdrObject*& rpData, SvxMSDffImportData& rData); - -/* - GetBLIPCount() - Abfrage der verwalteten BLIP Anzahl - ============== - Input: ./. - Output: ./. - Rueckgabewert: nBLIPCount - Anzahl der im pStData (bzw. rStCtrl) enthaltenen BLIPs - ( sprich: Anzahl der FBSEs im Drawing Group Container ) - - Werte: 0 - Struktur Ok, jedoch keine BLIPs vorhanden - 1.. - Anzahl der BLIPs - USHRT_MAX - Fehler: kein korrektes Drawing File Format -*/ - USHORT GetBLIPCount() const{ return nBLIPCount; } - -/* - ZCodecDecompressed() - Dekomprimierung eines komp. WMF oder Enhanced WMF - ==================== - Input: rIn -bereits korrekt positionierter Stream, - der das komprimierte Bild enthaelt - rOut -bereits korrekt positionierter Ausgabe-Stream, - - bLookForEnd -Flag, ob das komp. Bild bis zum Stream-Ende reicht. - Falls TRUE, wird jeweils geprueft, ob das gelesene noch - zum Bild gehoert. - Falls FALSE, wird bis zum Stream-Ende gelesen. - - Output: rIn -Der Stream steht hinter dem Ende des komp. Bildes. - (es kann aber noch eine Ende-Kennung und CRC-Sum folgen) - rOut -Der Stream enthaelt das dekomprimierte Bild. - Der Stream wird auf den Anfang des Bildes positioniert. - (also dorthin, wo der Stream vor der Verarbeitung stand) - - Rueckgabewert: TRUE, im Erfolgsfall - FALSE bei Fehler oder Null Bytes geschrieben -*/ -// static BOOL ZCodecDecompressed( SvStream& rIn, -// SvStream& rOut, -// BOOL bLookForEnd ); -// - SdrObject* ImportObj(SvStream& rSt, void* pData, - Rectangle& rClientRect, const Rectangle& rGlobalChildRect, int nCalledByGroup = 0, sal_Int32* pShapeId = NULL); - - SdrObject* ImportGroup( const DffRecordHeader& rHd, SvStream& rSt, void* pData, - Rectangle& rClientRect, const Rectangle& rGlobalChildRect, int nCalledByGroup = 0, sal_Int32* pShapeId = NULL ); - - SdrObject* ImportShape( const DffRecordHeader& rHd, SvStream& rSt, void* pData, - Rectangle& rClientRect, const Rectangle& rGlobalChildRect, int nCalledByGroup = 0, sal_Int32* pShapeId = NULL); - - Rectangle GetGlobalChildAnchor( const DffRecordHeader& rHd, SvStream& rSt, Rectangle& aClientRect ); - void GetGroupAnchors( const DffRecordHeader& rHd, SvStream& rSt, - Rectangle& rGroupClientAnchor, Rectangle& rGroupChildAnchor, - const Rectangle& rClientRect, const Rectangle& rGlobalChildRect ); - - inline const SvxMSDffShapeInfos* GetShapeInfos( void ) const - { - return pShapeInfos; - } - - inline const SvxMSDffShapeOrders* GetShapeOrders( void ) const - { - return pShapeOrders; - } - - void StoreShapeOrder(ULONG nId, - ULONG nTxBx, - SdrObject* pObject, - SwFlyFrmFmt* pFly = 0, - short nHdFtSection = 0) const; - - void ExchangeInShapeOrder(SdrObject* pOldObject, - ULONG nTxBx, - SwFlyFrmFmt* pFly, - SdrObject* pObject) const; - - void RemoveFromShapeOrder( SdrObject* pObject ) const; - - UINT32 GetConvertFlags() const { return nSvxMSDffOLEConvFlags; } - - static SdrOle2Obj* CreateSdrOLEFromStorage( const String& rStorageName, - SotStorageRef& rSrcStorage, - const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xDestStg, - const Graphic& rGraf, - const Rectangle& rBoundRect, - const Rectangle& rVisArea, - SvStream* pDataStrrm, - ErrCode& rError, - UINT32 nConvertFlags, - sal_Int64 nAspect ); - - /* the method SolveSolver will create connections between shapes, it should be called after a page is imported. - The SvxMSDffSolverContainer is containing necessary data data that is collected during the import of each shape - */ - void SolveSolver( const SvxMSDffSolverContainer& rSolver ); - - static sal_Bool SetPropValue( - const ::com::sun::star::uno::Any& rAny, - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - const String& rPropertyName, - sal_Bool bTestPropertyAvailability = sal_False ); - - void insertShapeId( sal_Int32 nShapeId, SdrObject* pShape ); - void removeShapeId( SdrObject* pShape ); - SdrObject* getShapeForId( sal_Int32 nShapeId ); -}; - -struct SvxMSDffBLIPInfo -{ - USHORT nBLIPType; // Art des BLIP: z.B. 6 fuer PNG - ULONG nFilePos; // Offset des BLIP im Daten-Stream - ULONG nBLIPSize; // Anzahl Bytes, die der BLIP im Stream einnimmt - SvxMSDffBLIPInfo(USHORT nBType, ULONG nFPos, ULONG nBSize): - nBLIPType( nBType ), nFilePos( nFPos ), nBLIPSize( nBSize ){} -}; - -struct SvxMSDffShapeInfo -{ - sal_uInt32 nShapeId; // Shape Id, verwendet im PLCF SPA und im mso_fbtSp (FSP) - ULONG nFilePos; // Offset des Shape im Kontroll-Stream fuer eventuelle - // erneute Zugriffe auf dieses Shape - sal_uInt32 nTxBxComp; - - BOOL bReplaceByFly :1; // Shape darf im Writer durch Rahmen ersetzt werden. - BOOL bSortByShapeId :1; - BOOL bLastBoxInChain:1; - - SvxMSDffShapeInfo(ULONG nFPos, sal_uInt32 nId=0, // ULONG nBIdx=0, - USHORT nSeqId=0, USHORT nBoxId=0): - nShapeId( nId ), - nFilePos( nFPos ), - nTxBxComp( (nSeqId << 16) + nBoxId ) - { - bReplaceByFly = FALSE; - bSortByShapeId = FALSE; - bLastBoxInChain = TRUE; - } - SvxMSDffShapeInfo(SvxMSDffShapeInfo& rInfo): - nShapeId( rInfo.nShapeId ), - nFilePos( rInfo.nFilePos ), - nTxBxComp( rInfo.nTxBxComp ) - { - bReplaceByFly = rInfo.bReplaceByFly; - bSortByShapeId = rInfo.bSortByShapeId; - bLastBoxInChain = rInfo.bLastBoxInChain; - } - BOOL operator==( const SvxMSDffShapeInfo& rEntry ) const - { - return bSortByShapeId ? (nShapeId == rEntry.nShapeId) - : (nTxBxComp == rEntry.nTxBxComp && this == &rEntry); - } - BOOL operator<( const SvxMSDffShapeInfo& rEntry ) const - { - return bSortByShapeId ? (nShapeId < rEntry.nShapeId) - : (nTxBxComp < rEntry.nTxBxComp); - } -}; - -struct SvxMSDffShapeOrder -{ - ULONG nShapeId; // Shape Id, verwendet im PLCF SPA und im mso_fbtSp (FSP) - - ULONG nTxBxComp; // Ketten- und Boxnummer in der Text-Box-Story (bzw. Null) - - SwFlyFrmFmt* pFly; // Frame-Format eines statt des Sdr-Text-Objektes im - // Writer eingefuegten Rahmens: zur Verkettung benoetigt! - - short nHdFtSection; // used by Writer to find out if linked frames are in the - // same header or footer of the same section - - SdrObject* pObj; // Zeiger auf das Draw-Objekt (bzw. Null, falls nicht verwendet) - - // Vorgehensweise: im Ctor des SvxMSDffManager werden im der Shape-Order-Array - // nur die Shape-Ids vermerkt, - // Text-Box-Nummer und der Objekt-Pointer werden nur dann - // gespeichert, wenn das Shape tatsaechlich importiert wird! - SvxMSDffShapeOrder( ULONG nId ): - nShapeId( nId ), nTxBxComp( 0 ), pFly( 0 ), nHdFtSection( 0 ), pObj( 0 ){} - - BOOL operator==( const SvxMSDffShapeOrder& rEntry ) const - { - return (nTxBxComp == rEntry.nTxBxComp); - } - BOOL operator<( const SvxMSDffShapeOrder& rEntry ) const - { - return (nTxBxComp < rEntry.nTxBxComp); - } -}; - -#endif - diff --git a/svx/inc/svx/msfiltertracer.hxx b/svx/inc/svx/msfiltertracer.hxx deleted file mode 100644 index 5cd3079e1587..000000000000 --- a/svx/inc/svx/msfiltertracer.hxx +++ /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: msfiltertracer.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 _MS_FILTERTRACER_HXX -#define _MS_FILTERTRACER_HXX - -#include <rtl/ustring.hxx> -#include <tools/stream.hxx> -#include <xmloff/attrlist.hxx> -#include <com/sun/star/uno/Any.h> -#include <com/sun/star/uno/Reference.h> -#include <com/sun/star/util/XTextSearch.hpp> -#include <com/sun/star/util/SearchResult.hpp> -#include <com/sun/star/util/logging/XLogger.hpp> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <com/sun/star/xml/sax/XAttributeList.hpp> -#include <com/sun/star/xml/sax/XDocumentHandler.hpp> -#include "svx/svxdllapi.h" - -class FilterConfigItem; -class SVX_DLLPUBLIC MSFilterTracer -{ - FilterConfigItem* mpCfgItem; - SvXMLAttributeList* mpAttributeList; - SvStream* mpStream; - sal_Bool mbEnabled; - - ::com::sun::star::util::SearchOptions maSearchOptions; - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxFilterTracer; - ::com::sun::star::uno::Reference< ::com::sun::star::util::XTextSearch > mxTextSearch; - - ::com::sun::star::uno::Reference< ::com::sun::star::util::logging::XLogger > mxLogger; - ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > mxHandler; - - public : - - /* The first parameter is expecting the path of the configuration file. - The second parameter can be used to override properties of the configuration - file. A "DocumentURL" property can be set in the property - sequence to provide the current url of the document. - If the "Path" property is not set in the configuration file, then the path - of the "DocumentURL" property is used instead. If both are not set, the - application path is used instead. - If the "Name" property is not set in the configuration file, then the name - of the "DocumentURL" property is used instead. If both are not set, the - name "tracer* is used. - The file extension will always be "log" */ - - MSFilterTracer( const ::rtl::OUString& rConfigurationPath, - ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >* pConfigData = NULL ); - ~MSFilterTracer(); - - void StartTracing(); - void EndTracing(); - - inline sal_Bool IsEnabled() const { return mbEnabled; } - - void StartElement( const ::rtl::OUString& rName, ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > xAttribs ); - void EndElement( const ::rtl::OUString& rName ); - - void Trace( const ::rtl::OUString& rElementID, const ::rtl::OUString& rMessage ); - void AddAttribute( const ::rtl::OUString &sName , const ::rtl::OUString &sValue ); - void RemoveAttribute( const ::rtl::OUString& sName ); - void ClearAttributes(); - - /* initially all properties of the configuration file and the - properties which are given to the c'tor can be retrieved */ - ::com::sun::star::uno::Any GetProperty( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Any* pDefault = NULL ) const; - void SetProperty( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Any& rProperty ); -}; - -#endif diff --git a/svx/inc/svx/msocximex.hxx b/svx/inc/svx/msocximex.hxx deleted file mode 100644 index a32179a43eb4..000000000000 --- a/svx/inc/svx/msocximex.hxx +++ /dev/null @@ -1,1423 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: msocximex.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 _MSOCXIMEX_HXX -#define _MSOCXIMEX_HXX - -#include <sot/storage.hxx> -#include <tools/debug.hxx> - -//!! no such defines in global namespaces - it will break other existing code that uses the same define!! -//#ifndef C2U -//#define C2U(cChar) rtl::OUString::createFromAscii(cChar) -//#endif -#include "svx/svxdllapi.h" -#include <vector> -#include <hash_map> - -namespace com{namespace sun{namespace star{ - namespace drawing{ - class XDrawPage; - class XShape; - class XShapes; - } - namespace form{ - class XFormComponent; - } - namespace lang{ - class XMultiServiceFactory; - } - namespace container{ - class XIndexContainer; - class XNameContainer; - } - namespace beans{ - class XPropertySet; - } - namespace text{ - class XText; - } - namespace awt{ - struct Size; - class XControlModel; - } - namespace uno{ - class XComponentContext; - } - -}}} - -class OCX_Control; -class SfxObjectShell; -class SwPaM; - -class TypeName -{ -public: - String msName; - sal_uInt16 mnType; - sal_Int32 mnLeft; - sal_Int32 mnTop; - sal_Int32 mnStoreId; - TypeName(sal_Char *pName, sal_uInt32 nStoreId, sal_uInt32 nLen, sal_uInt16 nType, - sal_Int32 nLeft, sal_Int32 nTop); -}; - - -class SVX_DLLPUBLIC SvxMSConvertOCXControls -{ -public: - SvxMSConvertOCXControls( SfxObjectShell *pDSh,SwPaM *pP ); - virtual ~SvxMSConvertOCXControls(); - - //Reads a control from the given storage, constructed shape in pShapeRef - sal_Bool ReadOCXStream( SotStorageRef& rSrc1, - com::sun::star::uno::Reference< - com::sun::star::drawing::XShape > *pShapeRef=0, - BOOL bFloatingCtrl=FALSE ); - - - //Excel has a nasty kludged mechanism for this, read - //the comments in the source to follow it - sal_Bool ReadOCXExcelKludgeStream(SotStorageStreamRef& rSrc1, - com::sun::star::uno::Reference < - com::sun::star::drawing::XShape > *pShapeRef,BOOL bFloatingCtrl); - - - //Writes the given Uno Control into the given storage - - static sal_Bool WriteOCXStream(SotStorageRef &rSrc1, - const com::sun::star::uno::Reference< - com::sun::star::awt::XControlModel > &rControlModel, - const com::sun::star::awt::Size& rSize,String &rName); - - //Excel has a nasty kludged mechanism for this, read - //the comments in the source to follow it - static sal_Bool WriteOCXExcelKludgeStream(SotStorageStreamRef& rContents, - const com::sun::star::uno::Reference< - com::sun::star::awt::XControlModel > &rControlModel, - const com::sun::star::awt::Size &rSize, String &rName); - - //Generate an OCX converter based on the OLE2 name - static OCX_Control *OCX_Factory(const String &rId); - - //Generate an OCX converter based on the StarOffice UNO id - static OCX_Control *OCX_Factory( const com::sun::star::uno::Reference< - com::sun::star::awt::XControlModel > &rControlModel, - String &rId,String &rName); - - virtual sal_Bool InsertControl( - const com::sun::star::uno::Reference< - com::sun::star::form::XFormComponent >& /*rFComp*/, - const com::sun::star::awt::Size& /*rSize*/, - com::sun::star::uno::Reference< - com::sun::star::drawing::XShape >* /*pShape*/, - BOOL /*bFloatingCtrl*/ ) {return sal_False;} - - /*begin: Backwards compatability with office 95 import, modify later*/ - const com::sun::star::uno::Reference< - com::sun::star::lang::XMultiServiceFactory > & GetServiceFactory(); - - sal_uInt16 GetEditNum() { return ++nEdit; } - sal_uInt16 GetCheckboxNum() { return ++nCheckbox; } - /*end: Backwards compatability*/ -protected: - const com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > & - GetShapes(); - - const com::sun::star::uno::Reference< - com::sun::star::container::XIndexContainer > & GetFormComps(); - - SfxObjectShell *pDocSh; - SwPaM *pPaM; - - // gecachte Interfaces - com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage > - xDrawPage; - com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > - xShapes; - com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > xServiceFactory; - - // das einzige Formular - com::sun::star::uno::Reference< com::sun::star::container::XIndexContainer > - xFormComps; - - sal_uInt16 nEdit; - sal_uInt16 nCheckbox; - - virtual const com::sun::star::uno::Reference< - com::sun::star::drawing::XDrawPage > & GetDrawPage(); -}; - -class OCX_FontData -{ -public: - OCX_FontData() : nFontNameLen(0), fBold(0), fItalic(0), fUnderline(0), - fStrike(0), nFontSize(12), nJustification(1), pFontName(0), - bHasAlign(FALSE), bHasFont(TRUE) {} - ~OCX_FontData() { - if (pFontName) - delete [] pFontName; - } - sal_Bool Read(SotStorageStream *pS); - void Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet > &rPropSet); - - sal_Bool Export(SotStorageStreamRef &rContent, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - - sal_uInt16 nIdentifier; - sal_uInt16 nFixedAreaLen; - sal_uInt8 pBlockFlags[4]; - - sal_uInt32 nFontNameLen; - - sal_uInt8 fBold:1; - sal_uInt8 fItalic:1; - sal_uInt8 fUnderline:1; - sal_uInt8 fStrike:1; - sal_uInt8 fUnknown1:4; - - sal_uInt8 nUnknown2; - sal_uInt8 nUnknown3; - sal_uInt8 nUnknown4; - - sal_uInt32 nFontSize; - sal_uInt16 nLanguageID; - sal_uInt8 nJustification; - sal_uInt16 nFontWeight; - - char *pFontName; - void SetHasAlign(sal_Bool bIn) {bHasAlign=bIn;} - void SetHasFont(sal_Bool bIn) {bHasFont=bIn;} -protected: - static sal_uInt16 nStandardId; - sal_uInt8 ExportAlign(sal_Int16 nAlign) const; - sal_Int16 ImportAlign(sal_uInt8 nJustification) const; -private: - sal_Bool bHasAlign; - sal_Bool bHasFont; -}; - -class SVX_DLLPUBLIC OCX_Control -{ -public: - OCX_Control(UniString sN, OCX_Control* parent = NULL ) : nWidth( 0 ), nHeight( 0 ), mnLeft(0), mnTop(0), - mnStep(0), mnBackColor(0x8000000FL), mnForeColor(0), mnTabPos(0), mbVisible(true), sName(sN), pDocSh(0), - bSetInDialog(FALSE), mpParent( parent ) {} - sal_Bool FullRead(SotStorageStream *pS) - { - return Read(pS) && ReadFontData(pS); - }; - virtual sal_Bool Read(SotStorageStream *pS); - virtual sal_Bool ReadFontData(SotStorageStream *pS); - virtual sal_Bool Import(const com::sun::star::uno::Reference< - com::sun::star::lang::XMultiServiceFactory > &rServiceFactory, - com::sun::star::uno::Reference< - com::sun::star::form::XFormComponent > &rFComp, - com::sun::star::awt::Size &rSz); - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::container::XNameContainer> - &rDialog); - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet>& /*rPropSet*/) - {return sal_False;} - //Export exports a control as an OLE style storage stream tree - virtual sal_Bool Export(SotStorageRef& /*rObj*/, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet>& /*rPropSet*/, - const com::sun::star::awt::Size& /*rSize*/) {return sal_False;} - - //WriteContents writes the contents of a contents stream, for - //the Excel export you cannot use Export, only WriteContents instead - virtual sal_Bool WriteContents(SotStorageStreamRef& /*rObj*/, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet>& /*rPropSet*/, - const com::sun::star::awt::Size& /*rSize*/) {return sal_False;} - void SetInDialog(bool bState) { bSetInDialog = bState; } - bool GetInDialog() { return bSetInDialog; } - - sal_Bool ReadAndImport(SotStorageStream *pS, - com::sun::star::uno::Reference< - com::sun::star::lang::XMultiServiceFactory > &rSF, - com::sun::star::uno::Reference< - com::sun::star::form::XFormComponent > &rFComp, - com::sun::star::awt::Size &rSz) - { - if (Read(pS)) - return Import(rSF,rFComp,rSz); - return sal_False; - } - virtual ~OCX_Control() {} - - static void FillSystemColors(); - - sal_uInt32 nWidth; - sal_uInt32 nHeight; - sal_Int32 mnLeft; - sal_Int32 mnTop; - sal_Int32 mnStep; - sal_Int32 mnBackColor; - sal_Int32 mnForeColor; - sal_uInt16 mnTabPos; - bool mbVisible; - UniString sName; - UniString msToolTip; - OCX_FontData aFontData; - SfxObjectShell *pDocSh; -protected: - - sal_uInt32 ImportColor(sal_uInt32 nColorCode) const; - sal_uInt32 ExportColor(sal_uInt32 nColorCode) const; - sal_uInt32 SwapColor(sal_uInt32 nColorCode) const; - sal_Int16 ImportBorder(sal_uInt16 nSpecialEffect,sal_uInt16 nBorderStyle) - const; - sal_uInt8 ExportBorder(sal_uInt16 nBorder,sal_uInt8 &rBorderStyle) const; - bool bSetInDialog; - sal_Int16 ImportSpecEffect( sal_uInt8 nSpecialEffect ) const; - sal_uInt8 ExportSpecEffect( sal_Int16 nApiEffect ) const; - static sal_uInt16 nStandardId; - static sal_uInt8 __READONLY_DATA aObjInfo[4]; - rtl::OUString msFormType; - rtl::OUString msDialogType; - OCX_Control* mpParent; -private: - static sal_uInt32 pColor[25]; -}; - -class OCX_ModernControl : public OCX_Control -{ -public: - OCX_ModernControl(UniString sN) : OCX_Control(sN), - fEnabled(1), fLocked(0), fBackStyle(1), fColumnHeads(0), fIntegralHeight(1), - fMatchRequired(0), fAlignment(1), fDragBehaviour(0), fEnterKeyBehaviour(0), - fEnterFieldBehaviour(0), fTabKeyBehaviour(0), fWordWrap(1), - fSelectionMargin(1), fAutoWordSelect(1), fAutoSize(0), fHideSelection(1), - fAutoTab(0), fMultiLine(1), nMaxLength(0), nBorderStyle(0), nScrollBars(0), - nStyle(0), nMousePointer(0), nPasswordChar(0), nListWidth(0), - nBoundColumn(1), nTextColumn(-1), nColumnCount(1), nListRows(8), - nMatchEntry(2), nListStyle(0), nShowDropButtonWhen(0), nDropButtonStyle(1), - nMultiState(0), nValueLen(0), nCaptionLen(0), nVertPos(1), nHorzPos(7), - nSpecialEffect(2), nIcon(0), nPicture(0), nAccelerator(0), nGroupNameLen(0), - pValue(0), pCaption(0), pGroupName(0), nIconLen(0), pIcon(0), - nPictureLen(0), pPicture(0) {} - - ~OCX_ModernControl() { - if (pValue) delete[] pValue; - if (pCaption) delete[] pCaption; - if (pGroupName) delete[] pGroupName; - if (pIcon) delete[] pIcon; - if (pPicture) delete[] pPicture; - } - sal_Bool Read(SotStorageStream *pS); - - - /*sal_uInt8 for sal_uInt8 Word Struct*/ - sal_uInt16 nIdentifier; - sal_uInt16 nFixedAreaLen; - sal_uInt8 pBlockFlags[8]; - - sal_uInt8 fUnknown1:1; - sal_uInt8 fEnabled:1; - sal_uInt8 fLocked:1; - sal_uInt8 fBackStyle:1; - sal_uInt8 fUnknown2:4; - - sal_uInt8 fUnknown3:2; - sal_uInt8 fColumnHeads:1; - sal_uInt8 fIntegralHeight:1; - sal_uInt8 fMatchRequired:1; - sal_uInt8 fAlignment:1; - sal_uInt8 fUnknown4:2; - - sal_uInt8 fUnknown5:3; - sal_uInt8 fDragBehaviour:1; - sal_uInt8 fEnterKeyBehaviour:1; - sal_uInt8 fEnterFieldBehaviour:1; - sal_uInt8 fTabKeyBehaviour:1; - sal_uInt8 fWordWrap:1; - - sal_uInt8 fUnknown6:2; - sal_uInt8 fSelectionMargin:1; - sal_uInt8 fAutoWordSelect:1; - sal_uInt8 fAutoSize:1; - sal_uInt8 fHideSelection:1; - sal_uInt8 fAutoTab:1; - sal_uInt8 fMultiLine:1; - - sal_uInt32 nMaxLength; - sal_uInt8 nBorderStyle; - sal_uInt8 nScrollBars; - sal_uInt8 nStyle; - sal_uInt8 nMousePointer; - sal_uInt8 nUnknown7; - sal_uInt8 nPasswordChar; - sal_uInt32 nListWidth; - sal_uInt16 nBoundColumn; - sal_Int16 nTextColumn; - sal_uInt16 nColumnCount; - sal_uInt16 nListRows; - sal_uInt16 nUnknown8; - sal_uInt8 nMatchEntry; - sal_uInt8 nListStyle; - sal_uInt8 nShowDropButtonWhen; - sal_uInt8 nDropButtonStyle; - sal_uInt8 nMultiState; - sal_uInt32 nValueLen; - sal_uInt32 nCaptionLen; - - sal_uInt16 nVertPos; - sal_uInt16 nHorzPos; - - sal_uInt32 nBorderColor; - sal_uInt8 nSpecialEffect; - sal_uInt16 nIcon; - sal_uInt16 nPicture; - sal_uInt8 nAccelerator; - sal_uInt8 nUnknown9; - sal_uInt32 nGroupNameLen; - sal_uInt32 nUnknown10; - - char *pValue; - char *pCaption; - char *pGroupName; - - sal_uInt8 pIconHeader[20]; - sal_uInt32 nIconLen; - sal_uInt8 *pIcon; - - sal_uInt8 pPictureHeader[20]; - sal_uInt32 nPictureLen; - sal_uInt8 *pPicture; - -}; - -class OCX_TabStrip : public OCX_Control -{ -public: - OCX_TabStrip() : OCX_Control( rtl::OUString::createFromAscii("TabStrip")) {} - virtual sal_Bool ReadFontData(SotStorageStream *pS); - virtual sal_Bool Read(SotStorageStream *pS); - - sal_uInt16 nIdentifier; - sal_uInt16 nFixedAreaLen; - sal_uInt8 pBlockFlags[4]; - sal_uInt16 nNumTabs; -}; - -class OCX_Image : public OCX_Control -{ -public: - OCX_Image() : OCX_Control(rtl::OUString::createFromAscii("Image")), fEnabled(1), fBackStyle(0), bPictureTiling(false), bAutoSize(false) { - msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.DatabaseImageControl"); - msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlImageControlModel"); - } - - ~OCX_Image() { } - /*sal_uInt8 for sal_uInt8 Word Struct*/ - sal_uInt16 nIdentifier; - sal_uInt16 nFixedAreaLen; - sal_uInt8 pBlockFlags[4]; - - sal_uInt32 nBorderColor; - sal_uInt8 nBorderStyle; - sal_uInt8 nMousePointer; - sal_uInt8 nPictureSizeMode; - - - sal_uInt8 fUnknown1:1; - sal_uInt8 fEnabled:1; - sal_uInt8 fUnknown2:2; - sal_uInt8 fBackStyle:1; - sal_uInt8 fUnknown3:3; - - sal_uInt8 nPictureAlignment; - bool bPictureTiling; - sal_uInt8 nSpecialEffect; - - bool bAutoSize; - ::rtl::OUString sImageUrl; - sal_Bool Read(SotStorageStream *pS); - - using OCX_Control::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet>& rPropSet); - sal_Bool Export(SotStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SotStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - // No Font record - virtual sal_Bool ReadFontData(SvStorageStream* /*pS*/) { return sal_True; } - - static OCX_Control *Create() { return new OCX_Image;} -}; -struct ContainerRecord -{ - ContainerRecord():nTop(0), nLeft(0), nSubStorageId(0), nSubStreamLen(0), nTabPos(0), nTypeIdent(0), bVisible( true ) {} - - ::rtl::OUString cName; - ::rtl::OUString controlTip; - - sal_uInt32 nTop; - sal_uInt32 nLeft; - sal_uInt32 nSubStorageId; - sal_uInt32 nSubStreamLen; - sal_uInt16 nTabPos; - sal_uInt16 nTypeIdent; - bool bVisible; -}; - -typedef std::vector<OCX_Control*>::iterator CtrlIterator; -typedef std::vector<OCX_Control*>::const_iterator CtrlIteratorConst; -typedef std::vector<OCX_Control*> CtrlList; - - - -class RBGroup -{ - public: - RBGroup():mRBGroupPos(0){} - RBGroup(sal_uInt16& groupPos ):mRBGroupPos(groupPos){} - sal_Int16 tabPos() const { return mRBGroupPos; } - std::vector<OCX_Control*>::size_type numControls() - { return mpControls.size(); } - std::vector<OCX_Control*>& controls() { return mpControls; } - - void add(OCX_Control* pRB); - private: - sal_uInt16 mRBGroupPos; - std::vector<OCX_Control*> mpControls; -}; - -typedef ::std::hash_map < ::rtl::OUString, RBGroup*, ::rtl::OUStringHash, - ::std::equal_to< ::rtl::OUString > > RBGroupHash; -typedef std::vector<RBGroup*>::iterator GroupIterator; - -class OCX_OptionButton; - -class RBGroupManager -{ -public: - RBGroupManager( String& defaultName ); - ~RBGroupManager(); - - CtrlList insertGroupsIntoControlList( const CtrlList& sourceList ); - void addRadioButton( OCX_OptionButton* pRButton ); -private: - - void addSeperator( std::vector< OCX_Control* >& dest ); - void copyList( std::vector< OCX_Control* >& src, - std::vector< OCX_Control* >& dest, - bool addGroupSeperator ); - - RBGroupHash rbGroups; - String mSDefaultName; - std::vector< RBGroup* > groupList; - sal_uInt16 numRadioButtons; -}; - - - - -class OCX_ContainerControl : public OCX_Control -{ -public: - virtual ~OCX_ContainerControl(); - // sub class will process the control specific information - // e.g frame or userform ( maybe tab, mulipage in the future ) - // Base (this) class will process the container specific information - // e.g. the controls contained by this container - // will - // a) create the controls - // b) read the controls - // c) store these controls in a list for post processing - // e.g. import - // - virtual sal_Bool Read(SvStorageStream *pS); - // No Font record - virtual sal_Bool ReadFontData(SvStorageStream* /*pS*/) { return sal_True; } - - using OCX_Control::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - - SotStorageStreamRef getContainerStream() { return mContainerStream; } - - virtual void ProcessControl( OCX_Control* pControl, SvStorageStream* pS, ContainerRecord& rec ); - bool createFromContainerRecord( const ContainerRecord& record, - OCX_Control*& ); -protected: - // This class not meant to be instantiated - // needs to be subclassed - OCX_ContainerControl( SotStorageRef& parent, - const ::rtl::OUString& storageName, - const ::rtl::OUString& sN, - const com::sun::star::uno::Reference< - com::sun::star::container::XNameContainer > &rParent, - OCX_Control* pParent = NULL ); - rtl::OUString createSubStreamName( const sal_uInt32& subStorageID ); - - RBGroupManager rbGroupMgr; - com::sun::star::uno::Reference< - com::sun::star::container::XNameContainer > mxParent; - std::vector<OCX_Control*> mpControls; - SotStorageRef mContainerStorage; - SotStorageStreamRef mContainerStream; - SotStorageStreamRef mContainedControlsStream; - sal_uInt32 nNoRecords; - sal_uInt32 nTotalLen; - sal_uInt32 containerType; - -private: - OCX_ContainerControl(); // not implemented - OCX_ContainerControl(const OCX_ContainerControl&); // not implemented -}; - - -class OCX_MultiPage : public OCX_ContainerControl -{ -public: - OCX_MultiPage( SotStorageRef& parent, - const ::rtl::OUString& storageName, - const ::rtl::OUString& sN, - const com::sun::star::uno::Reference< - com::sun::star::container::XNameContainer > &rDialog, OCX_Control* pParent = NULL); - virtual ~OCX_MultiPage() - { - delete[] pCaption; - delete[] pIcon; - delete[] pPicture; - } - virtual sal_Bool Read(SvStorageStream *pS); - - using OCX_ContainerControl::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::container::XNameContainer> - &rDialog); - virtual void ProcessControl( OCX_Control* pControl, SvStorageStream* pS, ContainerRecord& rec ); - /*sal_uInt8 for sal_uInt8 Word Struct*/ - sal_uInt16 nIdentifier; - sal_uInt16 nFixedAreaLen; - sal_uInt8 pBlockFlags[4]; - - sal_uInt32 fUnknown1; - - sal_uInt8 fUnknown2:1; - sal_uInt8 fEnabled:1; - sal_uInt8 fLocked:1; - sal_uInt8 fBackStyle:1; - sal_uInt8 fUnknown3:4; - - sal_uInt8 fUnknown4:8; - - sal_uInt8 fUnknown5:7; - sal_uInt8 fWordWrap:1; - - sal_uInt8 fUnknown6:4; - sal_uInt8 fAutoSize:1; - sal_uInt8 fUnknown7:3; - - sal_uInt32 nCaptionLen; - sal_uInt16 nVertPos; - sal_uInt16 nHorzPos; - sal_uInt8 nMousePointer; - sal_uInt32 nBorderColor; - sal_uInt32 fUnknown8; - sal_uInt32 fUnknown9; - sal_uInt8 nKeepScrollBarsVisible; - sal_uInt8 nCycle; - sal_uInt16 nBorderStyle; - sal_uInt16 nSpecialEffect; - sal_uInt16 nPicture; - sal_uInt8 nPictureAlignment; - sal_uInt8 nPictureSizeMode; - bool bPictureTiling; - sal_uInt16 nAccelerator; - sal_uInt16 nIcon; - - char *pCaption; - - sal_uInt32 nScrollWidth; - sal_uInt32 nScrollHeight; - - - sal_uInt8 pIconHeader[20]; - sal_uInt32 nIconLen; - sal_uInt8 *pIcon; - - sal_uInt8 pPictureHeader[20]; - sal_uInt32 nPictureLen; - sal_uInt8 *pPicture; -private: - sal_Int32 mnCurrentPageStep; -}; - - - -class OCX_Page : public OCX_ContainerControl -{ -public: - OCX_Page( SotStorageRef& parentStorage, - const ::rtl::OUString& storageName, - const ::rtl::OUString& sN, - const com::sun::star::uno::Reference< - com::sun::star::container::XNameContainer > &rDialog, OCX_Control* parent = NULL); - virtual ~OCX_Page() - { - delete[] pCaption; - delete[] pIcon; - delete[] pPicture; - } - virtual sal_Bool Read(SvStorageStream *pS); - - using OCX_ContainerControl::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::container::XNameContainer> - &rDialog); -/* virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); -*/ - /*sal_uInt8 for sal_uInt8 Word Struct*/ - sal_uInt16 nIdentifier; - sal_uInt16 nFixedAreaLen; - sal_uInt8 pBlockFlags[4]; - - sal_uInt32 fUnknown1; - - sal_uInt8 fUnknown2:1; - sal_uInt8 fEnabled:1; - sal_uInt8 fLocked:1; - sal_uInt8 fBackStyle:1; - sal_uInt8 fUnknown3:4; - - sal_uInt8 fUnknown4:8; - - sal_uInt8 fUnknown5:7; - sal_uInt8 fWordWrap:1; - - sal_uInt8 fUnknown6:4; - sal_uInt8 fAutoSize:1; - sal_uInt8 fUnknown7:3; - - sal_uInt32 nCaptionLen; - sal_uInt16 nVertPos; - sal_uInt16 nHorzPos; - sal_uInt8 nMousePointer; - sal_uInt32 nBorderColor; - sal_uInt32 fUnknown8; - sal_uInt32 fUnknown9; - sal_uInt8 nKeepScrollBarsVisible; - sal_uInt8 nCycle; - sal_uInt16 nBorderStyle; - sal_uInt16 nSpecialEffect; - sal_uInt16 nPicture; - sal_uInt8 nPictureAlignment; - sal_uInt8 nPictureSizeMode; - bool bPictureTiling; - sal_uInt16 nAccelerator; - sal_uInt16 nIcon; - - char *pCaption; - - sal_uInt32 nScrollWidth; - sal_uInt32 nScrollHeight; - - - sal_uInt8 pIconHeader[20]; - sal_uInt32 nIconLen; - sal_uInt8 *pIcon; - - sal_uInt8 pPictureHeader[20]; - sal_uInt32 nPictureLen; - sal_uInt8 *pPicture; -private: -}; - - -class OCX_Frame : public OCX_ContainerControl -{ -public: - OCX_Frame( SotStorageRef& parent, - const ::rtl::OUString& storageName, - const ::rtl::OUString& sN, - const com::sun::star::uno::Reference< - com::sun::star::container::XNameContainer > &rDialog, OCX_Control* pParent = NULL); - virtual ~OCX_Frame() - { - delete[] pCaption; - delete[] pIcon; - delete[] pPicture; - } - virtual sal_Bool Read(SvStorageStream *pS); - - using OCX_ContainerControl::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - - /*sal_uInt8 for sal_uInt8 Word Struct*/ - sal_uInt16 nIdentifier; - sal_uInt16 nFixedAreaLen; - sal_uInt8 pBlockFlags[4]; - - sal_uInt32 fUnknown1; - - sal_uInt8 fUnknown2:1; - sal_uInt8 fEnabled:1; - sal_uInt8 fLocked:1; - sal_uInt8 fBackStyle:1; - sal_uInt8 fUnknown3:4; - - sal_uInt8 fUnknown4:8; - - sal_uInt8 fUnknown5:7; - sal_uInt8 fWordWrap:1; - - sal_uInt8 fUnknown6:4; - sal_uInt8 fAutoSize:1; - sal_uInt8 fUnknown7:3; - - sal_uInt32 nCaptionLen; - sal_uInt16 nVertPos; - sal_uInt16 nHorzPos; - sal_uInt8 nMousePointer; - sal_uInt32 nBorderColor; - sal_uInt32 fUnknown8; - sal_uInt32 fUnknown9; - sal_uInt8 nKeepScrollBarsVisible; - sal_uInt8 nCycle; - sal_uInt16 nBorderStyle; - sal_uInt16 nSpecialEffect; - sal_uInt16 nPicture; - sal_uInt8 nPictureAlignment; - sal_uInt8 nPictureSizeMode; - bool bPictureTiling; - sal_uInt16 nAccelerator; - sal_uInt16 nIcon; - - char *pCaption; - - sal_uInt32 nScrollWidth; - sal_uInt32 nScrollHeight; - sal_uInt32 nScrollLeft; - sal_uInt32 nScrollTop; - - - sal_uInt8 pIconHeader[20]; - sal_uInt32 nIconLen; - sal_uInt8 *pIcon; - - sal_uInt8 pPictureHeader[20]; - sal_uInt32 nPictureLen; - sal_uInt8 *pPicture; -private: -}; - -class OCX_UserForm : public OCX_ContainerControl -{ -public: - OCX_UserForm( SotStorageRef& parent, - const ::rtl::OUString& storageName, - const ::rtl::OUString& sN, - const com::sun::star::uno::Reference< - com::sun::star::container::XNameContainer > &rDialog, - const com::sun::star::uno::Reference< - com::sun::star::lang::XMultiServiceFactory >& rMsf); - ~OCX_UserForm() - { - delete[] pCaption; - delete[] pIcon; - delete[] pPicture; - } - - virtual sal_Bool Read(SvStorageStream *pS); - - using OCX_ContainerControl::Import; // to not hide the other two import methods - virtual sal_Bool Import( com::sun::star::uno::Reference< - com::sun::star::container::XNameContainer> - &rDialog); - - /*sal_uInt8 for sal_uInt8 Word Struct*/ - sal_uInt16 nIdentifier; - sal_uInt16 nFixedAreaLen; - sal_uInt8 pBlockFlags[4]; - - sal_uInt32 nChildrenA; - - sal_uInt8 fUnknown1:1; - sal_uInt8 fEnabled:1; - sal_uInt8 fLocked:1; - sal_uInt8 fBackStyle:1; - sal_uInt8 fUnknown2:4; - - sal_uInt8 fUnknown3:8; - - sal_uInt8 fUnknown4:7; - sal_uInt8 fWordWrap:1; - - sal_uInt8 fUnknown5:4; - sal_uInt8 fAutoSize:1; - sal_uInt8 fUnknown6:3; - - sal_uInt32 nCaptionLen; - sal_uInt16 nVertPos; - sal_uInt16 nHorzPos; - sal_uInt8 nMousePointer; - sal_uInt32 nBorderColor; - sal_uInt32 nDrawBuffer; - sal_uInt32 nChildrenB; - sal_uInt8 nKeepScrollBarsVisible; - sal_uInt8 nCycle; - sal_uInt16 nBorderStyle; - sal_uInt8 nSpecialEffect; - sal_uInt16 nPicture; - sal_uInt8 nPictureAlignment; - sal_uInt8 nPictureSizeMode; - bool bPictureTiling; - sal_uInt16 nAccelerator; - sal_uInt16 nIcon; - sal_uInt16 fUnknown7; - - char *pCaption; - - sal_uInt32 nScrollWidth; - sal_uInt32 nScrollHeight; - sal_uInt32 nScrollLeft; - sal_uInt32 nScrollTop; - - sal_uInt8 pIconHeader[20]; - sal_uInt32 nIconLen; - sal_uInt8 *pIcon; - - sal_uInt8 pPictureHeader[20]; - sal_uInt32 nPictureLen; - sal_uInt8 *pPicture; -private: - com::sun::star::uno::Reference< - com::sun::star::uno::XComponentContext> mxCtx; -}; - - - -class OCX_CheckBox : public OCX_ModernControl -{ -public: - OCX_CheckBox() : OCX_ModernControl(rtl::OUString::createFromAscii("CheckBox")){ - msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.CheckBox"); - msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlCheckBoxModel"); - mnBackColor = 0x80000005L; - mnForeColor = 0x80000008L; - aFontData.SetHasAlign(TRUE); - } - - using OCX_ModernControl::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - sal_Bool Export(SotStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SotStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - static OCX_Control *Create() { return new OCX_CheckBox;} -}; - -class OCX_OptionButton : public OCX_ModernControl -{ -public: - OCX_OptionButton() : OCX_ModernControl(rtl::OUString::createFromAscii("OptionButton")) - { - msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.RadioButton"); - msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlRadioButtonModel"); - mnBackColor = 0x80000005L; - mnForeColor = 0x80000008L; - aFontData.SetHasAlign(TRUE); - } - - using OCX_ModernControl::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - sal_Bool Export(SotStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SotStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - - - static OCX_Control *Create() { return new OCX_OptionButton;} -}; - -class OCX_TextBox : public OCX_ModernControl -{ -public: - OCX_TextBox() : OCX_ModernControl(rtl::OUString::createFromAscii("TextBox")) { - msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.TextField"); - msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlEditModel"); - mnBackColor = 0x80000005L; - mnForeColor = 0x80000008L; - nBorderColor = 0x80000006L; - aFontData.SetHasAlign(TRUE); - } - - using OCX_ModernControl::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - - sal_Bool Export(SotStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SotStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - static OCX_Control *Create() { return new OCX_TextBox;} -}; - -class OCX_FieldControl: public OCX_ModernControl -{ -public: - OCX_FieldControl() : OCX_ModernControl(rtl::OUString::createFromAscii("TextBox")) { - mnBackColor = 0x80000005L; - mnForeColor = 0x80000008L; - nBorderColor = 0x80000006L; - } - sal_Bool Export(SotStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SotStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - static OCX_Control *Create() { return new OCX_FieldControl;} -}; - - -class OCX_ToggleButton : public OCX_ModernControl -{ -public: - OCX_ToggleButton() : OCX_ModernControl(rtl::OUString::createFromAscii("ToggleButton")) { - msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.CommandButton"); - msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlButtonModel"); - - mnBackColor = 0x8000000F; - mnForeColor = 0x80000012; - aFontData.SetHasAlign(TRUE); - aFontData.nJustification = 3; // centered by default - } - static OCX_Control *Create() { return new OCX_ToggleButton;} - - using OCX_ModernControl::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - sal_Bool Export(SvStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SvStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); -}; - -class OCX_ComboBox : public OCX_ModernControl -{ -public: - OCX_ComboBox() : OCX_ModernControl(rtl::OUString::createFromAscii("ComboBox")){ - msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.ComboBox"); - msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlComboBoxModel"); - mnBackColor = 0x80000005; - mnForeColor = 0x80000008; - nBorderColor = 0x80000006; - aFontData.SetHasAlign(TRUE); - } - static OCX_Control *Create() { return new OCX_ComboBox;} - using OCX_ModernControl::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - sal_Bool Export(SotStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SotStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); -}; - -class OCX_ListBox : public OCX_ModernControl -{ -public: - OCX_ListBox() : OCX_ModernControl(rtl::OUString::createFromAscii("ListBox")){ - msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.ListBox"); - msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlListBoxModel"); - mnBackColor = 0x80000005; - mnForeColor = 0x80000008; - nBorderColor = 0x80000006; - aFontData.SetHasAlign(TRUE); - } - static OCX_Control *Create() { return new OCX_ListBox;} - using OCX_ModernControl::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - sal_Bool Export(SotStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SotStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - -}; - -class OCX_CommandButton : public OCX_Control -{ -public: - OCX_CommandButton() : OCX_Control(String::CreateFromAscii("CommandButton")), - fEnabled(1), fLocked(0), fBackStyle(1), fWordWrap(0), fAutoSize(0), - nCaptionLen(0), nVertPos(1), nHorzPos(7), nMousePointer(0), nPicture(0), - nAccelerator(0), nIcon(0), pCaption(0), nIconLen(0), pIcon(0), nPictureLen(0), - pPicture(0), mbTakeFocus( true ) - { - msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.CommandButton"); - msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlButtonModel"); - mnForeColor = 0x80000012L; - mnBackColor = 0x8000000FL; - } - - ~OCX_CommandButton() { - if (pCaption) delete[] pCaption; - if (pIcon) delete[] pIcon; - if (pPicture) delete[] pPicture; - } - sal_Bool Read(SotStorageStream *pS); - - /*sal_uInt8 for sal_uInt8 Word Struct*/ - sal_uInt16 nIdentifier; - sal_uInt16 nFixedAreaLen; - sal_uInt8 pBlockFlags[4]; - - - sal_uInt8 fUnknown1:1; - sal_uInt8 fEnabled:1; - sal_uInt8 fLocked:1; - sal_uInt8 fBackStyle:1; - sal_uInt8 fUnknown2:4; - - sal_uInt8 fUnknown3:8; - - sal_uInt8 fUnknown4:7; - sal_uInt8 fWordWrap:1; - - sal_uInt8 fUnknown5:4; - sal_uInt8 fAutoSize:1; - sal_uInt8 fUnknown6:3; - - sal_uInt32 nCaptionLen; - - sal_uInt16 nVertPos; - sal_uInt16 nHorzPos; - - sal_uInt16 nMousePointer; - sal_uInt16 nPicture; - sal_uInt16 nAccelerator; - sal_uInt16 nIcon; - - char *pCaption; - - sal_uInt8 pIconHeader[20]; - sal_uInt32 nIconLen; - sal_uInt8 *pIcon; - - sal_uInt8 pPictureHeader[20]; - sal_uInt32 nPictureLen; - sal_uInt8 *pPicture; - - bool mbTakeFocus; - - static OCX_Control *Create() { return new OCX_CommandButton;} - using OCX_Control::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - sal_Bool Export(SotStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SotStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - -}; - -class OCX_ImageButton: public OCX_CommandButton -{ -public: - OCX_ImageButton() { - aFontData.SetHasAlign(FALSE); - aFontData.SetHasFont(FALSE); - } - static OCX_Control *Create() { return new OCX_ImageButton;} - sal_Bool Export(SotStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SotStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - -}; - -class OCX_GroupBox: public OCX_Control -{ -public: - OCX_GroupBox() : OCX_Control(String::CreateFromAscii("GroupBox")) {} - static OCX_Control *Create() { return new OCX_GroupBox;} - sal_Bool Export(SotStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SotStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - -}; - -class OCX_Label : public OCX_Control -{ -public: - OCX_Label(OCX_Control* pParent = NULL ) : OCX_Control(rtl::OUString::createFromAscii("Label"), pParent ), fEnabled(1), - fLocked(0),fBackStyle(1),fWordWrap(1), - fAutoSize(0),nCaptionLen(0),nVertPos(1),nHorzPos(7),nMousePointer(0), - nBorderColor(0x80000006),nBorderStyle(0),nSpecialEffect(0), - nPicture(0),nAccelerator(0),nIcon(0),pCaption(0),nIconLen(0),pIcon(0), - nPictureLen(0),pPicture(0) - { - msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.FixedText"); - msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFixedTextModel"); - mnForeColor = 0x80000008; - mnBackColor = 0x80000005; - aFontData.SetHasAlign(TRUE); - } - - ~OCX_Label() { - if (pCaption) delete[] pCaption; - if (pIcon) delete[] pIcon; - if (pPicture) delete[] pPicture; - } - sal_Bool Read(SotStorageStream *pS); - - /*sal_uInt8 for sal_uInt8 Word Struct*/ - sal_uInt16 nIdentifier; - sal_uInt16 nFixedAreaLen; - sal_uInt8 pBlockFlags[4]; - - - sal_uInt8 fUnknown1:1; - sal_uInt8 fEnabled:1; - sal_uInt8 fLocked:1; - sal_uInt8 fBackStyle:1; - sal_uInt8 fUnknown2:4; - - sal_uInt8 fUnknown3:8; - - sal_uInt8 fUnknown4:7; - sal_uInt8 fWordWrap:1; - - sal_uInt8 fUnknown5:4; - sal_uInt8 fAutoSize:1; - sal_uInt8 fUnknown6:3; - - sal_uInt32 nCaptionLen; - sal_uInt16 nVertPos; - sal_uInt16 nHorzPos; - sal_uInt8 nMousePointer; - sal_uInt32 nBorderColor; - sal_uInt16 nBorderStyle; - sal_uInt16 nSpecialEffect; - sal_uInt16 nPicture; - sal_uInt16 nAccelerator; - sal_uInt16 nIcon; - - char *pCaption; - - sal_uInt8 pIconHeader[20]; - sal_uInt32 nIconLen; - sal_uInt8 *pIcon; - - sal_uInt8 pPictureHeader[20]; - sal_uInt32 nPictureLen; - sal_uInt8 *pPicture; - - static OCX_Control *Create() { return new OCX_Label;} - - using OCX_Control::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - - sal_Bool Export(SotStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - sal_Bool WriteContents(SotStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize); - -}; - - -class OCX_ProgressBar : public OCX_Control -{ -public: - explicit OCX_ProgressBar(); - - static OCX_Control* Create(); - - virtual sal_Bool Read( SvStorageStream *pS ); - using OCX_Control::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - // No Font record - virtual sal_Bool ReadFontData(SvStorageStream* /*pS*/) { return sal_True; } -private: - sal_Int32 nMin; - sal_Int32 nMax; - bool bFixedSingle; - bool bEnabled; - bool b3d; -}; - -class OCX_SpinButton : public OCX_Control -{ -public: - explicit OCX_SpinButton(); - - static OCX_Control* Create(); - - virtual sal_Bool Read( SvStorageStream *pS ); - - virtual sal_Bool ReadFontData( SvStorageStream *pS ); - - using OCX_Control::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - //Export exports a control as an OLE style storage stream tree - virtual sal_Bool Export( SvStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize ); - - //WriteContents writes the contents of a contents stream, for - //the Excel export you cannot use Export, only WriteContents instead - virtual sal_Bool WriteContents( SvStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize ); - -protected: - void UpdateInt32Property( - sal_Int32& rnCoreValue, sal_Int32 nNewValue, - sal_Int32 nBlockFlag ); - - void GetInt32Property( - sal_Int32& rnCoreValue, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet >& rxPropSet, - const rtl::OUString& rPropName, - sal_Int32 nBlockFlag ); - - void UpdateBoolProperty( - bool& rbCoreValue, bool bNewValue, - sal_Int32 nBlockFlag ); - - void GetBoolProperty( - bool& rbCoreValue, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet >& rxPropSet, - const rtl::OUString& rPropName, - sal_Int32 nBlockFlag ); - - /** Writes the data from own members to stream. */ - sal_Bool WriteData( SvStream& rStrm ) const; - - sal_Int32 mnBlockFlags; - sal_Int32 mnValue; - sal_Int32 mnMin; - sal_Int32 mnMax; - sal_Int32 mnSmallStep; - sal_Int32 mnPageStep; - sal_Int32 mnOrient; - sal_Int32 mnDelay; - bool mbEnabled; - bool mbLocked; - bool mbPropThumb; -}; - -class OCX_ScrollBar : public OCX_SpinButton -{ -public: - explicit OCX_ScrollBar(); - - static OCX_Control* Create(); - - using OCX_Control::Import; // to not hide the other two import methods - virtual sal_Bool Import(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet); - - //Export exports a control as an OLE style storage stream tree - virtual sal_Bool Export( SvStorageRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize ); - - //WriteContents writes the contents of a contents stream, for - //the Excel export you cannot use Export, only WriteContents instead - virtual sal_Bool WriteContents( SvStorageStreamRef &rObj, - const com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> &rPropSet, - const com::sun::star::awt::Size& rSize ); -}; - -#endif diff --git a/svx/inc/svx/svdfppt.hxx b/svx/inc/svx/svdfppt.hxx deleted file mode 100644 index 845e1696b5ae..000000000000 --- a/svx/inc/svx/svdfppt.hxx +++ /dev/null @@ -1,1445 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: svdfppt.hxx,v $ - * $Revision: 1.7.6.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. - * - ************************************************************************/ - -#ifndef _SVDFPPT_HXX -#define _SVDFPPT_HXX - -#ifndef SVX_LIGHT - -#include <tools/solar.h> -#include <svl/svarray.hxx> -#include <tools/string.hxx> -#include <tools/gen.hxx> -#ifndef _SV_COLOR_HXX -#include <tools/color.hxx> -#endif -#include <svx/svdobj.hxx> -#include <svx/numitem.hxx> -#include <svx/editdata.hxx> -#include <svx/msdffimp.hxx> // Escher-Grafikimport -#include <svx/msocximex.hxx> -#include <svx/msfiltertracer.hxx> -#include <svx/eeitem.hxx> -#define ITEMID_FIELD EE_FEATURE_FIELD -#include <svx/flditem.hxx> -#undef ITEMID_FIELD -#include "svx/svxdllapi.h" -#include <vcl/font.hxx> -#include <vector> -#include <boost/optional.hpp> -//////////////////////////////////////////////////////////////////////////////////////////////////// - -class SdrModel; -class SdPage; -class SdrPage; -class SdrObject; -class SvStream; -class Polygon; -class PolyPolygon; -class SfxItemSet; -class Outliner; -class Graphic; -class SvxMSDffManager; -class PptTextMetaCharList; -class PPTTextObj; -class DffRecordHeader; -struct PptCharAttrSet; -class SvxBulletItem; - -#define PPT_IMPORTFLAGS_NO_TEXT_ASSERT 1 - -struct SVX_DLLPUBLIC PptCurrentUserAtom -{ - sal_uInt32 nMagic; - sal_uInt32 nCurrentUserEdit; - sal_uInt16 nDocFileVersion; - sal_uInt8 nMajorVersion; - sal_uInt8 nMinorVersion; - String aCurrentUser; - -public: - - PptCurrentUserAtom() : nMagic ( 0 ), - nCurrentUserEdit ( 0 ), - nDocFileVersion ( 0 ), - nMajorVersion ( 0 ), - nMinorVersion ( 0 ) {} - - SVX_DLLPUBLIC friend SvStream& operator>>( SvStream& rIn, PptCurrentUserAtom& rAtom ); -}; - -struct SVX_DLLPUBLIC PowerPointImportParam -{ - SvStream& rDocStream; - sal_uInt32 nImportFlags; - MSFilterTracer* pTracer; - PptCurrentUserAtom aCurrentUserAtom; - - PowerPointImportParam( SvStream& rDocStream, sal_uInt32 nImportFlags, MSFilterTracer* pTracer ); -}; - -struct SdHyperlinkEntry -{ - sal_uInt32 nIndex; - sal_Int32 nPrivate1; - sal_Int32 nPrivate2; - sal_Int32 nPrivate3; - sal_Int32 nInfo; - String aTarget; - String aSubAdress; - - sal_Int32 nStartPos; - sal_Int32 nEndPos; - - String aConvSubString; - ESelection aESelection; - sal_Bool bSelection; -}; - -// Hilfsklasse zum Einlesen der PPT InteractiveInfoAtom -struct SVX_DLLPUBLIC PptInteractiveInfoAtom -{ - UINT32 nSoundRef; - UINT32 nExHyperlinkId; - UINT8 nAction; - UINT8 nOleVerb; - UINT8 nJump; - UINT8 nFlags; - UINT8 nHyperlinkType; - - // unknown, da Gesamtgroesse 16 ist - UINT8 nUnknown1; - UINT8 nUnknown2; - UINT8 nUnknown3; - -public: - - SVX_DLLPUBLIC friend SvStream& operator>>( SvStream& rIn, PptInteractiveInfoAtom& rAtom ); -}; - -enum PptPageKind { PPT_MASTERPAGE, PPT_SLIDEPAGE, PPT_NOTEPAGE }; - -enum PptPageFormat -{ PPTPF_SCREEN, // - PPTPF_USLETTER, // 8.5x11" - PPTPF_A4, // 210x297mm - PPTPF_35MMDIA, // DIA - PPTPF_OVERHEAD, // - PPTPF_CUSTOM -}; - -// Werte fuer den ULONG im PPT_PST_TextHeaderAtom -enum PPT_TextHeader -{ - PPTTH_TITLE, - PPTTH_BODY, - PPTTH_NOTES, - PPTTH_NOTUSED, - PPTTH_OTHER, // Text in a Shape - PPTTH_CENTERBODY, // Subtitle in Title-Slide - PPTTH_CENTERTITLE, // Title in Title-Slide - PPTTH_HALFBODY, // Body in two-column slide - PPTTH_QUARTERBODY // Body in four-body slide -}; - -#define TSS_TYPE_PAGETITLE (0) -#define TSS_TYPE_BODY (1) -#define TSS_TYPE_NOTES (2) -#define TSS_TYPE_UNUSED (3) -#define TSS_TYPE_TEXT_IN_SHAPE (4) -#define TSS_TYPE_SUBTITLE (5) -#define TSS_TYPE_TITLE (6) -#define TSS_TYPE_HALFBODY (7) -#define TSS_TYPE_QUARTERBODY (8) - -// Inventor-Id fuer PPT UserData -const UINT32 PPTInventor =UINT32('P')*0x00000001+ - UINT32('P')*0x00000100+ - UINT32('T')*0x00010000+ - UINT32('0')*0x01000000; - -// Object-Ids fuer StarDraw UserData -#define PPT_OBJECTINFO_ID (1) - -struct SVX_DLLPUBLIC PptDocumentAtom -{ - Size aSlidesPageSize; // Seitengroesse der Slides in 576DPI - Size aNotesPageSize; // Seitengroesse der Notes in 576DPI - // RatioAtom erstmal weggelassen - UINT32 nNotesMasterPersist; // 0=nicht vorhanden - UINT32 nHandoutMasterPersist; // 0=nicht vorhanden - UINT16 n1stPageNumber; // Seitennummer des ersten Slides - PptPageFormat eSlidesPageFormat; // Seitenformat der Slides - sal_Bool bEmbeddedTrueType : 1; // TrueType direkt im File? - sal_Bool bTitlePlaceholdersOmitted : 1; - sal_Bool bRightToLeft : 1; - sal_Bool bShowComments : 1; - -public: - - Size GetPageSize( const Size& rSiz ) const; - Size GetSlidesPageSize() const { return GetPageSize( aSlidesPageSize ); } - Size GetNotesPageSize() const { return GetPageSize( aNotesPageSize ); } - - friend SvStream& operator>>( SvStream& rIn, PptDocumentAtom& rAtom ); -}; - -struct PptSlideLayoutAtom -{ - INT32 eLayout; // 0..18 - BYTE aPlaceholderId[ 8 ]; - ULONG aPlacementId[ 8 ]; - -public: - - PptSlideLayoutAtom() { Clear(); } - void Clear(); - - // Das SlideLayoutAtom wird ohne Header eingelesen! - friend SvStream& operator>>( SvStream& rIn, PptSlideLayoutAtom& rAtom ); -}; - -struct PptSlideAtom -{ - PptSlideLayoutAtom aLayout; - UINT32 nMasterId; - UINT32 nNotesId; - UINT16 nFlags; - -public: - - PptSlideAtom() { Clear(); } - void Clear(); - - friend SvStream& operator>>(SvStream& rIn, PptSlideAtom& rAtom); -}; - -struct PptSlidePersistAtom -{ - UINT32 nPsrReference; - UINT32 nFlags; - UINT32 nNumberTexts; - UINT32 nSlideId; - UINT32 nReserved; // we will use nReserved temporarly to set the offset to SSSlideInfoAtom ( if possible ) - -public: - - PptSlidePersistAtom() { Clear(); } - void Clear(); - - friend SvStream& operator>>(SvStream& rIn, PptSlidePersistAtom& rAtom); -}; - -struct PptNotesAtom -{ - UINT32 nSlideId; - UINT16 nFlags; - -public: - - PptNotesAtom() { Clear(); } - void Clear(); - - friend SvStream& operator>>(SvStream& rIn, PptNotesAtom& rAtom); -}; - -struct PptColorSchemeAtom -{ - BYTE aData[32]; - -public: - PptColorSchemeAtom () { Clear(); } - void Clear(); - Color GetColor( USHORT nNum ) const; - - friend SvStream& operator>>(SvStream& rIn, PptColorSchemeAtom& rAtom); -}; - -struct PptFontEntityAtom -{ - String aName; - double fScaling; - sal_uInt8 lfClipPrecision; - sal_uInt8 lfQuality; - - sal_uInt32 nUniqueFontId; // not used anymore - CharSet eCharSet; - FontFamily eFamily; - FontPitch ePitch; - sal_Bool bAvailable; - - friend SvStream& operator>>(SvStream& rIn, PptFontEntityAtom& rAtom); -}; - -class PptFontCollection; -struct PptUserEditAtom -{ - DffRecordHeader aHd; - INT32 nLastSlideID; // ID of last visible slide - UINT32 nVersion; // This is major/minor/build which did the edit - UINT32 nOffsetLastEdit; // File offset of prev PptUserEditAtom - UINT32 nOffsetPersistDirectory; // Offset to PersistPtrs for this file version. - UINT32 nDocumentRef; - UINT32 nMaxPersistWritten; // Gesamtanzahl der Persisteintraege bis hierher. - INT16 eLastViewType; // enum view type - -public: - - PptUserEditAtom() : nOffsetPersistDirectory( 0 ) {} - - friend SvStream& operator>>( SvStream& rIn, PptUserEditAtom& rAtom ); -}; - -struct PptOEPlaceholderAtom -{ - UINT32 nPlacementId; - BYTE nPlaceholderId; - BYTE nPlaceholderSize; // 0=Full size, 1=Half size, 2=Quarter of Slide - -public: - - PptOEPlaceholderAtom() { Clear(); } - void Clear(); - - friend SvStream& operator>>( SvStream& rIn, PptOEPlaceholderAtom& rAtom ); -}; - -struct ProcessData; -struct PPTStyleSheet; -struct HeaderFooterEntry; -struct PptSlidePersistEntry -{ - PptSlidePersistAtom aPersistAtom; - PptSlideAtom aSlideAtom; - PptNotesAtom aNotesAtom; - PptColorSchemeAtom aColorScheme; // each slide includes this colorscheme atom - PPTStyleSheet* pStyleSheet; // stylesheet of this page ( only in masterpages ), since XP supports more than one masterpage - - sal_uInt32 HeaderFooterOfs[ 4 ]; // containing the ofs to the placeholder (only masterpage) - HeaderFooterEntry* pHeaderFooterEntry; - SvxMSDffSolverContainer* pSolverContainer; - sal_uInt32 nSlidePersistStartOffset;// is an array to the end of the SlidePersistAtom of this page, TextHeaderAtom is following - sal_uInt32 nSlidePersistEndOffset; - sal_uInt32 nBackgroundOffset; // fileoffset - sal_uInt32 nDrawingDgId; // valid, if not -1 - sal_uInt32* pPresentationObjects; // if valid, this is a pointer to an array that includes the offsets to the presentation objects - // on this masterpage for each instance ( 0 - 8 ); - SdrObject* pBObj; - sal_Bool bBObjIsTemporary; - - void* pDummy2; - PptPageKind ePageKind; // - - sal_Bool bNotesMaster : 1; // fuer NotesMaster - sal_Bool bHandoutMaster : 1; // fuer HandoutMaster - sal_Bool bStarDrawFiller : 1; // speziell fuer StarDraw -public: - PptSlidePersistEntry(); - ~PptSlidePersistEntry(); - UINT32 GetSlideId() const { return aPersistAtom.nSlideId; } -}; - -SV_DECL_PTRARR_DEL(_PptSlidePersistList,PptSlidePersistEntry*,16,16) - -#define PPTSLIDEPERSIST_ENTRY_NOTFOUND 0xFFFF - -class SVX_DLLPUBLIC PptSlidePersistList: public _PptSlidePersistList -{ - - public: - - USHORT FindPage( UINT32 nId ) const; -}; - -class SfxObjectShell; -struct PPTOleEntry -{ - sal_uInt32 nId; // OleId - sal_uInt32 nPersistPtr; // PersistPtr - sal_uInt32 nRecHdOfs; // points to the record header: ExObjListHd - SfxObjectShell* pShell; - sal_uInt16 nType; // maybe PPT_PST_ExEmbed or PPT_PST_ExControl - sal_uInt32 nAspect; // the aspect of the OLE object - - PPTOleEntry( sal_uInt32 nid, sal_uInt32 nOfs, SfxObjectShell* pSh, sal_uInt16 nT, sal_uInt32 nAsp ) : - nId ( nid ), - nRecHdOfs ( nOfs ), - pShell ( pSh ), - nType ( nT ), - nAspect ( nAsp ) {} -}; - -struct PptExOleObjAtom -{ - UINT32 nAspect; - UINT32 nDummy1; - UINT32 nId; - UINT32 nDummy2; - UINT32 nPersistPtr; - UINT32 nDummy4; - -public: - - friend SvStream& operator>>( SvStream& rIn, PptExOleObjAtom& rAtom ); -}; - -class PPTExtParaProv; -class SVX_DLLPUBLIC SdrEscherImport : public SvxMSDffManager -{ - -protected: - - friend class PPTTextObj; - friend class PPTPortionObj; - friend struct PPTStyleTextPropReader; - friend class ImplSdPPTImport; - - PptDocumentAtom aDocAtom; - DffRecordManager aDocRecManager; // contains all first level container and atoms of the document container - - List aHFMasterList; - List aOleObjectList; // contains PPTOleEntrys - - PptFontCollection* pFonts; - - sal_uInt32 nStreamLen; - sal_uInt16 nTextStylesIndex; - - CharSet eCharSetSystem; - - sal_Bool bWingdingsChecked : 1; - sal_Bool bWingdingsAvailable : 1; - sal_Bool bMonotypeSortsChecked : 1; - sal_Bool bMonotypeSortsAvailable : 1; - sal_Bool bTimesNewRomanChecked : 1; - sal_Bool bTimesNewRomanAvailable : 1; - - sal_Bool ReadString( String& rStr ) const; - // nur fuer PowerPoint-Filter: - virtual const PptSlideLayoutAtom* GetSlideLayoutAtom() const; - void CheckWingdings() const; - void CheckMonotypeSorts() const; - void CheckTimesNewRoman() const; - -public: - - PowerPointImportParam& rImportParam; - - void* pSdrEscherDummy1; - void* pSdrEscherDummy2; - void* pSdrEscherDummy3; - void* pSdrEscherDummy4; - - SdrEscherImport( PowerPointImportParam&, const String& rBaseURL ); - virtual ~SdrEscherImport(); - virtual FASTBOOL GetColorFromPalette( USHORT nNum, Color& rColor ) const; - virtual BOOL SeekToShape( SvStream& rSt, void* pClientData, UINT32 nId ) const; - PptFontEntityAtom* GetFontEnityAtom( UINT32 nNum ) const; - CharSet GetCharSet( UINT32 nNum ) const; - BOOL IsFontAvailable( UINT32 nNum ) const; - void RecolorGraphic( SvStream& rSt, sal_uInt32 nRecLen, Graphic& rGraph ); - using SvxMSDffManager::ReadObjText; - virtual SdrObject* ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPage* pPage ) const; - virtual SdrObject* ProcessObj( SvStream& rSt, DffObjData& rData, void* pData, Rectangle& rTextRect, SdrObject* pObj ); - virtual void ProcessClientAnchor2( SvStream& rSt, DffRecordHeader& rHd, void* pData, DffObjData& rObj ); - void ImportHeaderFooterContainer( DffRecordHeader& rHeader, HeaderFooterEntry& rEntry ); -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -#define SD_HEADERFOOTER_DATE 1 -#define SD_HEADERFOOTER_TODAYDATE 2 -#define SD_HEADERFOOTER_USERDATE 4 -#define SD_HEADERFOOTER_SLIDENUMBER 8 -#define SD_HEADERFOOTER_HEADER 16 -#define SD_HEADERFOOTER_FOOTER 32 - -class SvxFieldItem; -struct SVX_DLLPUBLIC PPTFieldEntry -{ - UINT16 nPos; - UINT16 nTextRangeEnd; - SvxFieldItem* pField1; - SvxFieldItem* pField2; - String* pString; - - PPTFieldEntry() : nPos( 0 ), nTextRangeEnd( 0 ), pField1( NULL ), pField2( NULL ), pString( NULL ) {}; - ~PPTFieldEntry(); - - void SetDateTime( UINT32 nType ); - - // converting PPT date time format: - static void GetDateTime( const sal_uInt32 nVal, SvxDateFormat& eDateFormat, SvxTimeFormat& eTimeFormat ); -}; - -struct SVX_DLLPUBLIC HeaderFooterEntry -{ - const PptSlidePersistEntry* pMasterPersist; - String pPlaceholder[ 4 ]; - sal_uInt32 nAtom; - - sal_uInt32 GetMaskForInstance( UINT32 nInstance ); - sal_uInt32 IsToDisplay( UINT32 nInstance ); - sal_uInt32 NeedToImportInstance( const sal_uInt32 nInstance, const PptSlidePersistEntry& rSlidePersist ); - - HeaderFooterEntry( const PptSlidePersistEntry* pMaster = NULL ); - ~HeaderFooterEntry(); -}; - -struct ProcessData -{ - PptSlidePersistEntry& rPersistEntry; - SdPage* pPage; - List* pBackgroundColoredObjects; - sal_uInt32* pTableRowProperties; - - ProcessData( PptSlidePersistEntry& rP, SdPage* pP ) : - rPersistEntry ( rP ), - pPage ( pP ), - pBackgroundColoredObjects ( NULL ), - pTableRowProperties ( NULL ) {}; - ~ProcessData() { delete pBackgroundColoredObjects; delete[] pTableRowProperties; }; -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -class SdrTextObj; -class SfxObjectShell; -class SVX_DLLPUBLIC SdrPowerPointImport : public SdrEscherImport -{ - -protected: - - friend class PPTTextObj; - friend class PPTExtParaProv; - friend struct PPTStyleSheet; - friend class PPTNumberFormatCreator; - - BOOL bOk; - PptUserEditAtom aUserEditAtom; - PptColorSchemeAtom aPageColors; - List aHyperList; - UINT32* pPersistPtr; - ULONG nPersistPtrAnz; - - const PPTStyleSheet* pPPTStyleSheet; // this is the current stylesheet; - const PPTStyleSheet* pDefaultSheet; // this is a sheet we are using if no masterpage can be found, but that should - // never happen just preventing a crash - PptSlidePersistList* pMasterPages; - PptSlidePersistList* pSlidePages; - PptSlidePersistList* pNotePages; - USHORT nAktPageNum; - ULONG nDocStreamPos; - USHORT nPageColorsNum; - PptPageKind ePageColorsKind; - PptPageKind eAktPageKind; - -protected: - - sal_Bool SeekToAktPage(DffRecordHeader* pRecHd=NULL) const; - sal_Bool SeekToDocument(DffRecordHeader* pRecHd=NULL) const; - sal_Bool SeekToContentOfProgTag( sal_Int32 nVersion, SvStream& rSt, const DffRecordHeader& rProgTagBinaryDataHd, - DffRecordHeader& rContentHd ); - virtual SdrObject* ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pText, SdPage* pPage, SfxStyleSheet*, SfxStyleSheet** ) const; - using SdrEscherImport::ReadObjText; - virtual SdrObject* ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPage* pPage ) const; - // --> OD 2004-12-14 #i32596# - new parameter <_nCalledByGroup>, which - // indicates, if the OLE object is imported inside a group object. - virtual SdrObject* ImportOLE( long nOLEId, - const Graphic& rGraf, - const Rectangle& rBoundRect, - const Rectangle& rVisArea, - const int _nCalledByGroup, - sal_Int64 nAspect ) const; - // <-- - SvMemoryStream* ImportExOleObjStg( UINT32 nPersistPtr, UINT32& nOleId ) const; - SdrPage* MakeBlancPage(sal_Bool bMaster) const; - sal_Bool ReadFontCollection(); - sal_Bool ForceFontCollection() const { return pFonts!=NULL?TRUE:((SdrPowerPointImport*)this)->ReadFontCollection(); } - PptSlidePersistList* GetPageList(PptPageKind ePageKind) const; - UINT32 GetAktPageId(); - UINT32 GetMasterPageId(USHORT nPageNum, PptPageKind ePageKind) const; - UINT32 GetNotesPageId(USHORT nPageNum ) const; - SdrOutliner* GetDrawOutliner( SdrTextObj* pSdrText ) const; - void SeekOle( SfxObjectShell* pShell, sal_uInt32 nFilterOptions ); - -public: - SdrPowerPointImport( PowerPointImportParam&, const String& rBaseURL ); - virtual ~SdrPowerPointImport(); - USHORT GetPageCount( PptPageKind eKind = PPT_SLIDEPAGE ) const; - void SetPageNum( USHORT nPageNum, PptPageKind = PPT_SLIDEPAGE ); - USHORT GetPageNum() const { return nAktPageNum; } - PptPageKind GetPageKind() const { return eAktPageKind; } - Size GetPageSize() const; - SdrObject* ImportPageBackgroundObject( const SdrPage& rPage, sal_uInt32& nBgFileOffset, sal_Bool bForce ); - sal_Bool IsNoteOrHandout( USHORT nPageNum, PptPageKind ePageKind ) const; - sal_Bool HasMasterPage( USHORT nPageNum, PptPageKind ePageKind = PPT_SLIDEPAGE ) const; - USHORT GetMasterPageIndex( USHORT nPageNum, PptPageKind ePageKind = PPT_SLIDEPAGE ) const; - - void ImportPage( SdrPage* pPage, const PptSlidePersistEntry* pMasterPersist = NULL ); - virtual FASTBOOL GetColorFromPalette(USHORT nNum, Color& rColor) const; - virtual BOOL SeekToShape( SvStream& rSt, void* pClientData, UINT32 nId ) const; - sal_Unicode PPTSubstitute( UINT16 nFont, sal_Unicode nChar, - UINT32& nMappedFontId, Font& rFont, char nDefault ) const; - const PptDocumentAtom& GetDocumentAtom() const { return aDocAtom; } - virtual const PptSlideLayoutAtom* GetSlideLayoutAtom() const; - SdrObject* CreateTable( SdrObject* pGroupObject, sal_uInt32* pTableArry, SvxMSDffSolverContainer* ) const; -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -struct PPTTextCharacterStyleAtomInterpreter -{ - sal_uInt16 nFlags1; - sal_uInt16 nFlags2; - sal_uInt16 nFlags3; - sal_Int32 n1; - sal_uInt16 nFontHeight; - sal_Int32 nFontColor; - - PPTTextCharacterStyleAtomInterpreter(); - ~PPTTextCharacterStyleAtomInterpreter(); - - sal_Bool Read( SvStream& rIn, const DffRecordHeader& rRecHd ); - - sal_uInt32 GetColor( sal_uInt32 nDefault ); -}; - -struct PPTTextParagraphStyleAtomInterpreter -{ - sal_Bool bValid; - sal_Bool bForbiddenRules; - sal_Bool bHangingPunctuation; - sal_Bool bLatinTextWrap; - - PPTTextParagraphStyleAtomInterpreter(); - ~PPTTextParagraphStyleAtomInterpreter(); - - sal_Bool Read( SvStream& rIn, const DffRecordHeader& rRecHd ); -}; - -struct PPTTextSpecInfo -{ - sal_uInt32 nCharIdx; - sal_uInt16 nLanguage[ 3 ]; - sal_uInt16 nDontKnow; - - PPTTextSpecInfo( sal_uInt32 nCharIdx ); - ~PPTTextSpecInfo(); -}; - -struct PPTTextSpecInfoAtomInterpreter -{ - sal_Bool bValid; - List aList; - - PPTTextSpecInfoAtomInterpreter(); - ~PPTTextSpecInfoAtomInterpreter(); - - sal_Bool Read( SvStream& rIn, const DffRecordHeader& rRecHd, - sal_uInt16 nRecordType, const PPTTextSpecInfo* pTextSpecDefault = NULL ); - -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -#define PPT_STYLESHEETENTRYS 9 - -struct PPTExtParaLevel -{ - sal_uInt32 mnExtParagraphMask; - sal_uInt16 mnBuBlip; - sal_uInt16 mnHasAnm; - sal_uInt32 mnAnmScheme; - sal_uInt32 mpfPP10Ext; - sal_uInt32 mnExtCharacterMask; - sal_uInt32 mcfPP10Ext; - sal_Bool mbSet; - - PPTExtParaLevel(); - friend SvStream& operator>>( SvStream& rIn, PPTExtParaLevel& rL ); -}; - -struct PPTExtParaSheet -{ - PPTExtParaLevel aExtParaLevel[ 5 ]; -}; - -struct PPTBuGraEntry -{ - UINT32 nInstance; - Graphic aBuGra; - - PPTBuGraEntry( Graphic& rGraphic, UINT32 nInstance ); -}; - -class PPTExtParaProv -{ - List aBuGraList; - - public : - BOOL bStyles; - BOOL bGraphics; - DffRecordManager aExtendedPresRules; - - PPTExtParaSheet aExtParaSheet[ PPT_STYLESHEETENTRYS ]; - - BOOL GetGraphic( UINT32 nInstance, Graphic& rGraphic ) const; - - PPTExtParaProv( SdrPowerPointImport& rManager, SvStream& rSt, - const DffRecordHeader* pMainMasterHd ); - ~PPTExtParaProv(); -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -struct PPTCharLevel -{ - Color mnFontColorInStyleSheet; - sal_uInt32 mnFontColor; - sal_uInt16 mnFlags; - sal_uInt16 mnFont; - sal_uInt16 mnAsianOrComplexFont; - sal_uInt16 mnFontHeight; - sal_uInt16 mnEscapement; -}; - -struct PPTCharSheet -{ - PPTCharLevel maCharLevel[ 5 ]; - - PPTCharSheet( sal_uInt32 nInstance ); - PPTCharSheet( const PPTCharSheet& rCharSheet ); - - void Read( SvStream& rIn, sal_Bool bMasterStyle, sal_uInt32 nLevel, sal_Bool bFirst ); -}; - -struct PPTParaLevel -{ - sal_uInt16 mnBuFlags; - sal_uInt16 mnBulletChar; - sal_uInt16 mnBulletFont; - sal_uInt16 mnBulletHeight; - sal_uInt32 mnBulletColor; - - sal_uInt16 mnAdjust; - sal_uInt16 mnLineFeed; - sal_uInt16 mnUpperDist; - sal_uInt16 mnLowerDist; - sal_uInt16 mnTextOfs; - sal_uInt16 mnBulletOfs; - sal_uInt16 mnDefaultTab; - sal_uInt16 mnAsianLineBreak; // bit0: use asian rules for first and last character - // 1: do not wrap latin text in the middle of the word - // 2: allow hanging punctuation - sal_uInt16 mnBiDi; -}; - -struct PPTParaSheet -{ - public: - - PPTParaLevel maParaLevel[ 5 ]; - - PPTParaSheet( sal_uInt32 nInstance ); - PPTParaSheet( const PPTParaSheet& rParaSheet ); - - void Read( SdrPowerPointImport& rMan, SvStream& rIn, sal_Bool bMasterStyle, - sal_uInt32 nLevel, sal_Bool bFirst ); -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -class PPTParagraphObj; -class PPTNumberFormatCreator -{ - UINT32 nIsBullet; - UINT32 nBulletChar; - UINT32 nBulletFont; - UINT32 nBulletHeight; - UINT32 nBulletColor; - UINT32 nTextOfs; - UINT32 nBulletOfs; - - void ImplGetNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat, UINT32 nLevel ); - BOOL ImplGetExtNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat, UINT32 nLevel, - UINT32 nInstance, UINT32 nInstanceInSheet, boost::optional< sal_Int16 >& rStartNumbering, - UINT32 nFontHeight, PPTParagraphObj* pPara ); - - protected : - - PPTNumberFormatCreator( PPTExtParaProv* ); - ~PPTNumberFormatCreator(); - - public : - - PPTExtParaProv* pExtParaProv; - - void GetNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat, UINT32 nLevel, - const PPTParaLevel& rParaLevel, const PPTCharLevel& rCharLevel, UINT32 nInstance ); - - BOOL GetNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat, - PPTParagraphObj* pPara, UINT32 nInstanceInSheet, boost::optional< sal_Int16 >& rStartNumbering ); -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -class SvxNumBulletItem; -struct PPTStyleSheet : public PPTNumberFormatCreator -{ - PPTTextSpecInfo maTxSI; - PPTCharSheet* mpCharSheet[ PPT_STYLESHEETENTRYS ]; - PPTParaSheet* mpParaSheet[ PPT_STYLESHEETENTRYS ]; - SvxNumBulletItem* mpNumBulletItem[ PPT_STYLESHEETENTRYS ]; - void* mpDummy; - - PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rSt, SdrPowerPointImport&, - const PPTTextCharacterStyleAtomInterpreter&, const PPTTextParagraphStyleAtomInterpreter&, const PPTTextSpecInfo& ); - ~PPTStyleSheet(); -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -struct ImplPPTParaPropSet -{ - sal_uInt32 mnRefCount; - - sal_uInt16 mnDepth; - sal_uInt32 mnAttrSet; - sal_uInt32 mnBulletColor; - sal_uInt16 mpArry[ 22 ]; - - sal_uInt32 mnExtParagraphMask; - sal_uInt32 mnAnmScheme; - sal_uInt16 mnHasAnm; - sal_uInt16 mnBuBlip; - - sal_uInt32 nDontKnow1; - sal_uInt32 nDontKnow2; - sal_uInt16 nDontKnow2bit06; - - ImplPPTParaPropSet(){ mnRefCount = 1; mnAttrSet = 0; mnExtParagraphMask = 0; mnDepth = 0; }; -}; - -struct PPTParaPropSet -{ - sal_uInt32 mnOriginalTextPos; - ImplPPTParaPropSet* pParaSet; - - PPTParaPropSet(); - PPTParaPropSet( PPTParaPropSet& rParaPropSet ); - ~PPTParaPropSet(); - - PPTParaPropSet& operator=( PPTParaPropSet& rParaPropSet ); -}; - -struct ImplPPTCharPropSet -{ - sal_uInt32 mnRefCount; - - sal_uInt32 mnAttrSet; - sal_uInt16 mnFlags; - sal_uInt32 mnColor; - sal_uInt16 mnFont; - sal_uInt16 mnAsianOrComplexFont; - sal_uInt16 mnANSITypeface; - sal_uInt16 mnFontHeight; - sal_uInt16 mnEscapement; - sal_uInt16 mnSymbolFont; - - ImplPPTCharPropSet(){ mnRefCount = 1; mnAttrSet = 0; }; -}; - -struct PPTCharPropSet -{ - - sal_uInt32 mnOriginalTextPos; - sal_uInt32 mnParagraph; - String maString; - SvxFieldItem* mpFieldItem; - sal_uInt16 mnLanguage[ 3 ]; - - ImplPPTCharPropSet* pCharSet; - - void SetFont( UINT16 nFont ); - void SetColor( sal_uInt32 nColor ); - - PPTCharPropSet( sal_uInt32 nParagraph ); - PPTCharPropSet( PPTCharPropSet& rCharPropSet ); - PPTCharPropSet( PPTCharPropSet& rCharPropSet, sal_uInt32 nParagraph ); - ~PPTCharPropSet(); - - PPTCharPropSet& operator=( PPTCharPropSet& rCharPropSet ); - - private : - - void ImplMakeUnique(); -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -struct PPTTabEntry -{ - sal_uInt16 nOffset; - sal_uInt16 nStyle; -}; - -struct PPTRuler -{ - UINT32 nRefCount; - - INT32 nFlags; - UINT16 nDefaultTab; - UINT16 nTextOfs[ 5 ]; - UINT16 nBulletOfs[ 5 ]; - PPTTabEntry* pTab; - UINT16 nTabCount; - - PPTRuler(); - ~PPTRuler(); -}; - -struct PPTTextRulerInterpreter -{ - PPTRuler *mpImplRuler; - - PPTTextRulerInterpreter(); - PPTTextRulerInterpreter( PPTTextRulerInterpreter& rRuler ); - PPTTextRulerInterpreter( UINT32 nFileOfs, SdrPowerPointImport&, DffRecordHeader& rHd, SvStream& rIn ); - ~PPTTextRulerInterpreter(); - - sal_uInt16 GetTabOffsetByIndex( sal_uInt16 nIndex ) const { return mpImplRuler->pTab[ nIndex ].nOffset; }; - sal_uInt16 GetTabStyleByIndex( sal_uInt16 nIndex ) const { return mpImplRuler->pTab[ nIndex ].nStyle; }; - UINT16 GetTabCount() const { return mpImplRuler->nTabCount; }; - BOOL GetDefaultTab( UINT32 nLevel, UINT16& nValue ) const; - BOOL GetTextOfs( UINT32 nLevel, UINT16& nValue ) const; - BOOL GetBulletOfs( UINT32 nLevel, UINT16& nValue ) const; - - PPTTextRulerInterpreter& operator=( PPTTextRulerInterpreter& rRuler ); -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -#define PPT_SPEC_NEWLINE 0x10000 -#define PPT_SPEC_SYMBOL 0x20000 -#define PPT_SPEC_USE_STARBATS 0x40000 - -struct StyleTextProp9 -{ - sal_uInt32 mnExtParagraphMask; - sal_uInt16 mnBuBlip; - sal_uInt16 mnHasAnm; - sal_uInt32 mnAnmScheme; - sal_uInt32 mpfPP10Ext; - sal_uInt32 mnExtCharacterMask; - sal_uInt32 mncfPP10Ext; - sal_uInt32 mnSpecialInfoMask; - sal_uInt32 mnPP10Ext; - sal_uInt16 mfBidi; - - StyleTextProp9() - : mnExtParagraphMask( 0 ) - , mnBuBlip( 0 ) - , mnHasAnm( 0 ) - , mnAnmScheme( 0 ) - , mpfPP10Ext( 0 ) - , mnExtCharacterMask( 0 ) - , mncfPP10Ext( 0 ) - , mnSpecialInfoMask( 0 ) - , mnPP10Ext( 0 ) - , mfBidi( 0 ) - { - } - void Read( SvStream& rSt ); -}; - -struct PPTStyleTextPropReader -{ - List aSpecMarkerList; // hiword -> Flags, loword -> Position - List aParaPropList; - List aCharPropList; - - PPTStyleTextPropReader( SvStream& rIn, SdrPowerPointImport&, const DffRecordHeader& rClientTextBoxHd, - PPTTextRulerInterpreter& rInterpreter, const DffRecordHeader& rExtParaHd, sal_uInt32 nTextInstance ); - - void Init( SvStream& rIn, SdrPowerPointImport&, const DffRecordHeader& rClientTextBoxHd, - PPTTextRulerInterpreter& rInterpreter, const DffRecordHeader& rExtParaHd, sal_uInt32 nTextInstance ); - void ReadParaProps( SvStream& rIn, SdrPowerPointImport& rMan, const DffRecordHeader& rTextHeader, - const String& aString, PPTTextRulerInterpreter& rRuler, - sal_uInt32& nCharCount, sal_Bool& bTextPropAtom ); - void ReadCharProps( SvStream& rIn, PPTCharPropSet& aCharPropSet, const String& aString, - sal_uInt32& nCharCount, sal_uInt32 nCharAnzRead, - sal_Bool& bTextPropAtom, sal_uInt32 nExtParaPos, - const std::vector< StyleTextProp9 >& aStyleTextProp9, - sal_uInt32& nExtParaFlags, sal_uInt16& nBuBlip, - sal_uInt16& nHasAnm, sal_uInt32& nAnmScheme ); - - ~PPTStyleTextPropReader(); -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -class SvxFieldItem; -class SVX_DLLPUBLIC PPTPortionObj : public PPTCharPropSet -{ - - friend class PPTParagraphObj; - - const PPTStyleSheet& mrStyleSheet; - UINT32 mnInstance; - UINT32 mnDepth; - - public : - - BOOL GetAttrib( UINT32 nAttr, UINT32& nVal, UINT32 nInstanceInSheet ); - SvxFieldItem* GetTextField(); - - PPTPortionObj( const PPTStyleSheet&, UINT32 nInstance, UINT32 nDepth ); - PPTPortionObj( PPTCharPropSet&, const PPTStyleSheet&, UINT32 nInstance, UINT32 nDepth ); - PPTPortionObj( PPTPortionObj& ); - ~PPTPortionObj(); - - // the following function should be removed during next full update - void ApplyTo( SfxItemSet& rSet, SdrPowerPointImport& rManager, UINT32 nInstanceInSheet ); - void ApplyTo( SfxItemSet& rSet, SdrPowerPointImport& rManager, UINT32 nInstanceInSheet, const PPTTextObj* pTextObj ); - UINT32 Count() const { return ( mpFieldItem ) ? 1 : maString.Len(); }; - BOOL HasTabulator(); -}; - -class SVX_DLLPUBLIC PPTParagraphObj : public PPTParaPropSet, public PPTNumberFormatCreator, public PPTTextRulerInterpreter -{ - friend class PPTTextObj; - friend class PPTNumberFormatCreator; - - const PPTStyleSheet& mrStyleSheet; - UINT32 mnInstance; - - protected : - - void ImplClear(); - - public : - - BOOL mbTab; // if true, this paragraph has tabulators in text - - UINT32 mnCurrentObject; - UINT32 mnPortionCount; - PPTPortionObj** mpPortionList; - - void UpdateBulletRelSize( sal_uInt32& nBulletRelSize ) const; - BOOL GetAttrib( UINT32 nAttr, UINT32& nVal, UINT32 nInstanceInSheet ); - - PPTParagraphObj( const PPTStyleSheet&, UINT32 nInstance, UINT16 nDepth ); - PPTParagraphObj( PPTStyleTextPropReader&, const PPTStyleSheet&, UINT32 nInstance, PPTTextRulerInterpreter& rRuler ); - ~PPTParagraphObj(); - - UINT32 GetTextSize(); - PPTPortionObj* First(); - PPTPortionObj* Next(); - - void AppendPortion( PPTPortionObj& rPortion ); - void ApplyTo( SfxItemSet& rSet, boost::optional< sal_Int16 >& rStartNumbering, SdrPowerPointImport& rManager, UINT32 nInstanceInSheet, const PPTParagraphObj* pPrev ); -}; - -#define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT 1 -#define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_CENTER 2 -#define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT 4 -#define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_BLOCK 8 -#define PPT_TEXTOBJ_FLAGS_VERTICAL 16 - -struct ImplPPTTextObj -{ - UINT32 mnRefCount; - UINT32 mnShapeId; - UINT32 mnShapeMaster; - PptOEPlaceholderAtom* mpPlaceHolderAtom; - UINT16 mnInstance; - UINT16 mnDestinationInstance; - MSO_SPT meShapeType; - - UINT32 mnCurrentObject; - UINT32 mnParagraphCount; - PPTParagraphObj** mpParagraphList; - PptSlidePersistEntry& mrPersistEntry; - - sal_uInt32 mnTextFlags; - - ImplPPTTextObj( PptSlidePersistEntry& rPersistEntry ) : mrPersistEntry ( rPersistEntry ) {}; -}; - -class PPTTextObj -{ - ImplPPTTextObj* mpImplTextObj; - void ImplClear(); - - PPTTextObj(){}; - public : - PPTTextObj( SvStream& rSt, SdrPowerPointImport&, PptSlidePersistEntry&, DffObjData* ); - PPTTextObj( PPTTextObj& rTextObj ); - ~PPTTextObj(); - - UINT32 GetCurrentIndex() const { return mpImplTextObj->mnCurrentObject; }; - UINT32 Count() const { return mpImplTextObj->mnParagraphCount; }; - PPTParagraphObj* First(); - PPTParagraphObj* Next(); - MSO_SPT GetShapeType() const { return mpImplTextObj->meShapeType; }; - UINT32 GetInstance() const { return mpImplTextObj->mnInstance; }; - void SetInstance( UINT16 nInstance ) { mpImplTextObj->mnInstance = nInstance; }; - UINT32 GetDestinationInstance() const { return mpImplTextObj->mnDestinationInstance; }; - void SetDestinationInstance( UINT16 nInstance ) { mpImplTextObj->mnDestinationInstance = nInstance; }; - PptOEPlaceholderAtom* GetOEPlaceHolderAtom() const { return mpImplTextObj->mpPlaceHolderAtom; }; - sal_uInt32 GetTextFlags() const { return mpImplTextObj->mnTextFlags; }; - void SetVertical( sal_Bool bVertical ) - { - if ( bVertical ) - mpImplTextObj->mnTextFlags |= PPT_TEXTOBJ_FLAGS_VERTICAL; - else - mpImplTextObj->mnTextFlags &= ~PPT_TEXTOBJ_FLAGS_VERTICAL; - } - sal_Bool GetVertical() const { return ( mpImplTextObj->mnTextFlags & PPT_TEXTOBJ_FLAGS_VERTICAL ) != 0; }; - const SfxItemSet* GetBackground() const; - - PPTTextObj& operator=( PPTTextObj& rTextObj ); -}; - -class PPTConvertOCXControls : public SvxMSConvertOCXControls -{ - virtual const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > & GetDrawPage(); - PptPageKind ePageKind; - public : - - PPTConvertOCXControls( SfxObjectShell* pDSh, PptPageKind ePKind ) : - SvxMSConvertOCXControls ( pDSh, NULL ), - ePageKind ( ePKind ){}; - - virtual sal_Bool InsertControl( - const com::sun::star::uno::Reference< - com::sun::star::form::XFormComponent > &rFComp, - const com::sun::star::awt::Size& rSize, - com::sun::star::uno::Reference< com::sun::star::drawing::XShape > *pShape, - BOOL bFloatingCtrl ); -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -// Powerpoint Recordtypen -#define PPT_PST_Unknown 0 -#define PPT_PST_SubContainerCompleted 1 -#define PPT_PST_IRRAtom 2 -#define PPT_PST_PSS 3 -#define PPT_PST_SubContainerException 4 -#define PPT_PST_ClientSignal1 6 -#define PPT_PST_ClientSignal2 7 -#define PPT_PST_PowerPointStateInfoAtom 10 -#define PPT_PST_Document 1000 -#define PPT_PST_DocumentAtom 1001 -#define PPT_PST_EndDocument 1002 -#define PPT_PST_SlidePersist 1003 -#define PPT_PST_SlideBase 1004 -#define PPT_PST_SlideBaseAtom 1005 -#define PPT_PST_Slide 1006 -#define PPT_PST_SlideAtom 1007 -#define PPT_PST_Notes 1008 -#define PPT_PST_NotesAtom 1009 -#define PPT_PST_Environment 1010 -#define PPT_PST_SlidePersistAtom 1011 -#define PPT_PST_Scheme 1012 -#define PPT_PST_SchemeAtom 1013 -#define PPT_PST_DocViewInfo 1014 -#define PPT_PST_SslideLayoutAtom 1015 -#define PPT_PST_MainMaster 1016 -#define PPT_PST_SSSlideInfoAtom 1017 -#define PPT_PST_SlideViewInfo 1018 -#define PPT_PST_GuideAtom 1019 -#define PPT_PST_ViewInfo 1020 -#define PPT_PST_ViewInfoAtom 1021 -#define PPT_PST_SlideViewInfoAtom 1022 -#define PPT_PST_VBAInfo 1023 -#define PPT_PST_VBAInfoAtom 1024 -#define PPT_PST_SSDocInfoAtom 1025 -#define PPT_PST_Summary 1026 -#define PPT_PST_Texture 1027 -#define PPT_PST_VBASlideInfo 1028 -#define PPT_PST_VBASlideInfoAtom 1029 -#define PPT_PST_DocRoutingSlip 1030 -#define PPT_PST_OutlineViewInfo 1031 -#define PPT_PST_SorterViewInfo 1032 -#define PPT_PST_ExObjList 1033 -#define PPT_PST_ExObjListAtom 1034 -#define PPT_PST_PPDrawingGroup 1035 -#define PPT_PST_PPDrawing 1036 -#define PPT_PST_NewlyAddedAtomByXP1037 1037 -#define PPT_PST_NamedShows 1040 -#define PPT_PST_NamedShow 1041 -#define PPT_PST_NamedShowSlides 1042 -#define PPT_PST_List 2000 -#define PPT_PST_FontCollection 2005 -#define PPT_PST_ListPlaceholder 2017 -#define PPT_PST_BookmarkCollection 2019 -#define PPT_PST_SoundCollection 2020 -#define PPT_PST_SoundCollAtom 2021 -#define PPT_PST_Sound 2022 -#define PPT_PST_SoundData 2023 -#define PPT_PST_BookmarkSeedAtom 2025 -#define PPT_PST_GuideList 2026 -#define PPT_PST_RunArray 2028 -#define PPT_PST_RunArrayAtom 2029 -#define PPT_PST_ArrayElementAtom 2030 -#define PPT_PST_Int4ArrayAtom 2031 -#define PPT_PST_ColorSchemeAtom 2032 - -// these atoms first was seen in ppt2000 in a private Tag atom -#define PPT_PST_ExtendedBuGraContainer 2040 // consist of 4041 -#define PPT_PST_ExtendedBuGraAtom 2041 // the instance of this atom indices the current graphic - -#define PPT_PST_OEShape 3008 -#define PPT_PST_ExObjRefAtom 3009 -#define PPT_PST_OEPlaceholderAtom 3011 -#define PPT_PST_GrColor 3020 -#define PPT_PST_GrectAtom 3025 -#define PPT_PST_GratioAtom 3031 -#define PPT_PST_Gscaling 3032 -#define PPT_PST_GpointAtom 3034 -#define PPT_PST_OEShapeAtom 3035 -#define PPT_PST_OutlineTextRefAtom 3998 -#define PPT_PST_TextHeaderAtom 3999 -#define PPT_PST_TextCharsAtom 4000 -#define PPT_PST_StyleTextPropAtom 4001 -#define PPT_PST_BaseTextPropAtom 4002 -#define PPT_PST_TxMasterStyleAtom 4003 -#define PPT_PST_TxCFStyleAtom 4004 -#define PPT_PST_TxPFStyleAtom 4005 -#define PPT_PST_TextRulerAtom 4006 -#define PPT_PST_TextBookmarkAtom 4007 -#define PPT_PST_TextBytesAtom 4008 -#define PPT_PST_TxSIStyleAtom 4009 -#define PPT_PST_TextSpecInfoAtom 4010 -#define PPT_PST_DefaultRulerAtom 4011 - -// these atoms first was seen in ppt2000 in a private Tag atom -#define PPT_PST_ExtendedParagraphAtom 4012 -#define PPT_PST_ExtendedParagraphMasterAtom 4013 -#define PPT_PST_ExtendedPresRuleContainer 4014 // consist of 4012, 4015, -#define PPT_PST_ExtendedParagraphHeaderAtom 4015 // the instance of this atom indices the current presobj - // the first UINT32 in this atom indices the current slideId -#define PPT_PST_NewlyAddedAtom4016 4016 - -#define PPT_PST_FontEntityAtom 4023 -#define PPT_PST_FontEmbedData 4024 -#define PPT_PST_TypeFace 4025 -#define PPT_PST_CString 4026 -#define PPT_PST_ExternalObject 4027 -#define PPT_PST_MetaFile 4033 -#define PPT_PST_ExOleObj 4034 -#define PPT_PST_ExOleObjAtom 4035 -#define PPT_PST_ExPlainLinkAtom 4036 -#define PPT_PST_CorePict 4037 -#define PPT_PST_CorePictAtom 4038 -#define PPT_PST_ExPlainAtom 4039 -#define PPT_PST_SrKinsoku 4040 -#define PPT_PST_Handout 4041 -#define PPT_PST_ExEmbed 4044 -#define PPT_PST_ExEmbedAtom 4045 -#define PPT_PST_ExLink 4046 -#define PPT_PST_ExLinkAtom_old 4047 -#define PPT_PST_BookmarkEntityAtom 4048 -#define PPT_PST_ExLinkAtom 4049 -#define PPT_PST_SrKinsokuAtom 4050 -#define PPT_PST_ExHyperlinkAtom 4051 -#define PPT_PST_ExPlain 4053 -#define PPT_PST_ExPlainLink 4054 -#define PPT_PST_ExHyperlink 4055 -#define PPT_PST_SlideNumberMCAtom 4056 -#define PPT_PST_HeadersFooters 4057 -#define PPT_PST_HeadersFootersAtom 4058 -#define PPT_PST_RecolorEntryAtom 4062 -#define PPT_PST_TxInteractiveInfoAtom 4063 -#define PPT_PST_EmFormatAtom 4065 -#define PPT_PST_CharFormatAtom 4066 -#define PPT_PST_ParaFormatAtom 4067 -#define PPT_PST_MasterText 4068 -#define PPT_PST_RecolorInfoAtom 4071 -#define PPT_PST_ExQuickTime 4073 -#define PPT_PST_ExQuickTimeMovie 4074 -#define PPT_PST_ExQuickTimeMovieData 4075 -#define PPT_PST_ExSubscription 4076 -#define PPT_PST_ExSubscriptionSection 4077 -#define PPT_PST_ExControl 4078 -#define PPT_PST_ExControlAtom 4091 -#define PPT_PST_SlideListWithText 4080 -#define PPT_PST_AnimationInfoAtom 4081 -#define PPT_PST_InteractiveInfo 4082 -#define PPT_PST_InteractiveInfoAtom 4083 -#define PPT_PST_SlideList 4084 -#define PPT_PST_UserEditAtom 4085 -#define PPT_PST_CurrentUserAtom 4086 -#define PPT_PST_DateTimeMCAtom 4087 -#define PPT_PST_GenericDateMCAtom 4088 -#define PPT_PST_HeaderMCAtom 4089 -#define PPT_PST_FooterMCAtom 4090 -#define PPT_PST_ExMediaAtom 4100 -#define PPT_PST_ExVideo 4101 -#define PPT_PST_ExAviMovie 4102 -#define PPT_PST_ExMCIMovie 4103 -#define PPT_PST_ExMIDIAudio 4109 -#define PPT_PST_ExCDAudio 4110 -#define PPT_PST_ExWAVAudioEmbedded 4111 -#define PPT_PST_ExWAVAudioLink 4112 -#define PPT_PST_ExOleObjStg 4113 -#define PPT_PST_ExCDAudioAtom 4114 -#define PPT_PST_ExWAVAudioEmbeddedAtom 4115 -#define PPT_PST_AnimationInfo 4116 -#define PPT_PST_RTFDateTimeMCAtom 4117 -#define PPT_PST_ProgTags 5000 -#define PPT_PST_ProgStringTag 5001 -#define PPT_PST_ProgBinaryTag 5002 -#define PPT_PST_BinaryTagData 5003 -#define PPT_PST_PrintOptions 6000 -#define PPT_PST_PersistPtrFullBlock 6001 -#define PPT_PST_PersistPtrIncrementalBlock 6002 - -// these atoms first was seen in ppt2000 in a private Tag atom -#define PPT_PST_NewlyAddedAtomByPPT2000_6010 6010 -#define PPT_PST_NewlyAddedAtomByPPT2000_6011 6011 - -#define PPT_PST_RulerIndentAtom 10000 -#define PPT_PST_GscalingAtom 10001 -#define PPT_PST_GrColorAtom 10002 -#define PPT_PST_GLPointAtom 10003 -#define PPT_PST_GlineAtom 10004 - -#define PPT_PST_NewlyAddedAtomByXP11008 11008 -#define PPT_PST_NewlyAddedAtomByXP11010 11010 -#define PPT_PST_Comment10 12000 -#define PPT_PST_CommentAtom10 12001 -#define PPT_PST_NewlyAddedAtomByXP12004 12004 -#define PPT_PST_NewlyAddedAtomByXP12010 12010 -#define PPT_PST_NewlyAddedAtomByXP12011 12011 -#define PPT_PST_NewlyAddedAtomByXP14001 14001 - -// Attribute fuer PptTextStyleSheet -#define PPT_ParaAttr_BulletOn 0 //00000001 -#define PPT_ParaAttr_BuHardFont 1 //00000002 -#define PPT_ParaAttr_BuHardColor 2 //00000004 -#define PPT_ParaAttr_BuHardHeight 3 //00000008 -#define PPT_ParaAttr_BulletFont 4 //00000010 -#define PPT_ParaAttr_BulletColor 5 //00000020 -#define PPT_ParaAttr_BulletHeight 6 //00000040 -#define PPT_ParaAttr_BulletChar 7 //00000080 - -#define PPT_ParaAttr_DontKnow1 8 //00000100 -#define PPT_ParaAttr_DontKnow2 9 //00000200 -#define PPT_ParaAttr_DontKnow3 10 //00000400 -#define PPT_ParaAttr_Adjust 11 //00000800 0000=Left, 0001=Center, 0002=Right, 0003=Block - -#define PPT_ParaAttr_LineFeed 12 //00001000 -#define PPT_ParaAttr_UpperDist 13 //00002000 ist bei Textframes default immer auf 0032 gesetzt -#define PPT_ParaAttr_LowerDist 14 //00004000 -#define PPT_ParaAttr_TextOfs 15 //00008000 - -#define PPT_ParaAttr_BulletOfs 16 //00010000 -#define PPT_ParaAttr_DefaultTab 17 //00020000 -#define PPT_ParaAttr_AsianLB_1 18 -#define PPT_ParaAttr_AsianLB_2 19 -#define PPT_ParaAttr_AsianLB_3 20 -#define PPT_ParaAttr_BiDi 21 //00200000 - -#define PPT_CharAttr_Bold 0 //00000001 -#define PPT_CharAttr_Italic 1 //00000002 -#define PPT_CharAttr_Underline 2 //00000004 -#define PPT_CharAttr_Shadow 4 //00000010 -#define PPT_CharAttr_Strikeout 8 //00000100 -#define PPT_CharAttr_Embossed 9 //00000200 -#define PPT_CharAttr_ResetNumbering 10 //00000400 -#define PPT_CharAttr_EnableNumbering1 11 //00000800 -#define PPT_CharAttr_EnableNumbering2 12 //00001000 -#define PPT_CharAttr_Font 16 //00010000 -#define PPT_CharAttr_AsianOrComplexFont 21 //00200000 -#define PPT_CharAttr_ANSITypeface 22 //00400000 -#define PPT_CharAttr_Symbol 23 //00800000 -#define PPT_CharAttr_FontHeight 17 //00020000 -#define PPT_CharAttr_FontColor 18 //00040000 -#define PPT_CharAttr_Escapement 19 //00080000 - -// Werte fuer PptSlideLayoutAtom.eLayout -#define PPT_LAYOUT_TITLESLIDE 0 // The slide is a title slide -#define PPT_LAYOUT_TITLEANDBODYSLIDE 1 // Title and body slide -#define PPT_LAYOUT_TITLEMASTERSLIDE 2 // Title master slide -#define PPT_LAYOUT_MASTERSLIDE 3 // Master slide layout -#define PPT_LAYOUT_MASTERNOTES 4 // Master notes layout -#define PPT_LAYOUT_NOTESTITLEBODY 5 // Notes title/body layout -#define PPT_LAYOUT_HANDOUTLAYOUT 6 // Handout layout, therefore it doesn't have placeholders except header, footer, and date -#define PPT_LAYOUT_ONLYTITLE 7 // Only title placeholder -#define PPT_LAYOUT_2COLUMNSANDTITLE 8 // Body of the slide has 2 columns and a title -#define PPT_LAYOUT_2ROWSANDTITLE 9 // Slide's body has 2 rows and a title -#define PPT_LAYOUT_RIGHTCOLUMN2ROWS 10 // Body contains 2 columns, right column has 2 rows -#define PPT_LAYOUT_LEFTCOLUMN2ROWS 11 // Body contains 2 columns, left column has 2 rows -#define PPT_LAYOUT_BOTTOMROW2COLUMNS 12 // Body contains 2 rows, bottom row has 2 columns -#define PPT_LAYOUT_TOPROW2COLUMN 13 // Body contains 2 rows, top row has 2 columns -#define PPT_LAYOUT_4OBJECTS 14 // 4 objects -#define PPT_LAYOUT_BIGOBJECT 15 // Big object -#define PPT_LAYOUT_BLANCSLIDE 16 // Blank slide -#define PPT_LAYOUT_TITLERIGHTBODYLEFT 17 // Vertical title on the right, body on the left -#define PPT_LAYOUT_TITLERIGHT2BODIESLEFT 18 // Vertical title on the right, body on the left split into 2 rows - -// the following table describes the placeholder id's (values from reality followed by values taken from the documentation) -#define PPT_PLACEHOLDER_NONE 0 // 0 None -#define PPT_PLACEHOLDER_MASTERTITLE 1 // 1 Master title -#define PPT_PLACEHOLDER_MASTERBODY 2 // 2 Master body -#define PPT_PLACEHOLDER_MASTERCENTEREDTITLE 3 // 3 Master centered title -#define PPT_PLACEHOLDER_MASTERSUBTITLE 4 // 10 Master subtitle -#define PPT_PLACEHOLDER_MASTERNOTESSLIDEIMAGE 5 // 4 Master notes slide image -#define PPT_PLACEHOLDER_MASTERNOTESBODYIMAGE 6 // 5 Master notes body image -#define PPT_PLACEHOLDER_MASTERDATE 7 // 6 Master date -#define PPT_PLACEHOLDER_MASTERSLIDENUMBER 8 // 7 Master slide number -#define PPT_PLACEHOLDER_MASTERFOOTER 9 // 8 Master footer -#define PPT_PLACEHOLDER_MASTERHEADER 10 // 9 Master header -#define PPT_PLACEHOLDER_GENERICTEXTOBJECT // 11 Generic text object -#define PPT_PLACEHOLDER_TITLE 13 // 12 Title -#define PPT_PLACEHOLDER_BODY 14 // 13 Body -#define PPT_PLACEHOLDER_NOTESBODY 12 // 14 Notes body -#define PPT_PLACEHOLDER_CENTEREDTITLE 15 // 15 Centered title -#define PPT_PLACEHOLDER_SUBTITLE 16 // 16 Subtitle -#define PPT_PLACEHOLDER_VERTICALTEXTTITLE 17 // 17 Vertical text title -#define PPT_PLACEHOLDER_VERTICALTEXTBODY 18 // 18 Vertical text body -#define PPT_PLACEHOLDER_NOTESSLIDEIMAGE 11 // 19 Notes slide image -#define PPT_PLACEHOLDER_OBJECT 19 // 20 Object (no matter the size) -#define PPT_PLACEHOLDER_GRAPH 20 // 21 Graph -#define PPT_PLACEHOLDER_TABLE 21 // 22 Table -#define PPT_PLACEHOLDER_CLIPART 22 // 23 Clip Art -#define PPT_PLACEHOLDER_ORGANISZATIONCHART 23 // 24 Organization Chart -#define PPT_PLACEHOLDER_MEDIACLIP 24 // 25 Media Clip - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -#endif // SVX_LIGHT - -#endif //_SVDFPPT_HXX - diff --git a/svx/inc/svxmsbas.hxx b/svx/inc/svxmsbas.hxx deleted file mode 100644 index cb0b0c607d42..000000000000 --- a/svx/inc/svxmsbas.hxx +++ /dev/null @@ -1,97 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: svxmsbas.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 _SVXMSBAS_HXX -#define _SVXMSBAS_HXX - -#include <tools/solar.h> -#include "svx/svxdllapi.h" - -#include <sot/storage.hxx> - -class SfxObjectShell; - -/* Construct with the root storage of the MS document, with bImportCode - * set the visual basic code will be imported into the stardocument when Import - * is called, with bCopyStorage set, the visual basic storage tree will be - * copied completely into staroffice, so that any future export to a msoffice - * format will retain the vba code, allowing a lossless roundtrip from - * msoffice to staroffice and back. - * - * Setting bAsComment to true in Import will import the visual basic as a - * starbasic comment. Which is currently necessary, as vb is not valid sb. - * - * Setting bStripped will remove the "Attribute" lines from the vb, msoffice - * does this itself when it shows the vb code in the vbeditor, so this is - * probably what the user expects to see when viewing the code - */ - -class SVX_DLLPUBLIC SvxImportMSVBasic -{ -public: - SvxImportMSVBasic( SfxObjectShell &rDocS, SotStorage &rRoot, - BOOL bImportCode = TRUE, BOOL bCopyStorage = TRUE ) - : xRoot(&rRoot), rDocSh(rDocS), - bImport(bImportCode), bCopy(bCopyStorage) - {} - // returns the status of import: - // 0 - nothing has done - // bit 0 = 1 -> any code is imported to the SO-Basic - // bit 1 = 1 -> the VBA - storage is copy to the ObjectShell storage - int Import( const String& rStorageName, const String &rSubStorageName, - BOOL bAsComment=TRUE, BOOL bStripped=TRUE ); - - // only for the export - copy or delete the saved VBA-macro-storage - // form the ObjectShell - // - returns a warning code if a modified basic exist, in all other - // cases return ERRCODE_NONE. - ULONG SaveOrDelMSVBAStorage( BOOL bSaveInto, const String& rStorageName ); - - // check if the MS-VBA-Storage exist in the RootStorage of the DocShell. - // If it exist, then return the WarningId for loosing the information. - static ULONG GetSaveWarningOfMSVBAStorage( SfxObjectShell &rDocS ); - - static String GetMSBasicStorageName(); -private: - SotStorageRef xRoot; - SfxObjectShell &rDocSh; - BOOL bImport; - BOOL bCopy; - - SVX_DLLPRIVATE BOOL ImportCode_Impl( const String& rStorageName, - const String &rSubStorageName, - BOOL bAsComment, BOOL bStripped); - SVX_DLLPRIVATE bool ImportForms_Impl(const String& rStorageName, - const String &rSubStorageName); - SVX_DLLPRIVATE BOOL CopyStorage_Impl( const String& rStorageName, - const String &rSubStorageName); -}; - -#endif |