| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the 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 "filter/msfilter/msfilterdllapi.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 MSFILTER_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, |
| sal_Bool bFloatingCtrl=sal_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,sal_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*/, |
| sal_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), nDefaultAlign(0), pFontName(0), |
| bHasAlign(sal_False), bHasFont(sal_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; |
| sal_Int16 nDefaultAlign; |
| 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 MSFILTER_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(sal_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(sal_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(sal_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(sal_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(sal_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(sal_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(sal_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; |
| aFontData.SetHasAlign(sal_True); |
| } |
| |
| ~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(sal_False); |
| aFontData.SetHasFont(sal_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(sal_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 |