summaryrefslogtreecommitdiff
path: root/svx/inc/svx/dlgctrl.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/inc/svx/dlgctrl.hxx')
-rw-r--r--svx/inc/svx/dlgctrl.hxx539
1 files changed, 539 insertions, 0 deletions
diff --git a/svx/inc/svx/dlgctrl.hxx b/svx/inc/svx/dlgctrl.hxx
new file mode 100644
index 000000000000..28b1bf1b9b6f
--- /dev/null
+++ b/svx/inc/svx/dlgctrl.hxx
@@ -0,0 +1,539 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General 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_DLG_CTRL_HXX
+#define _SVX_DLG_CTRL_HXX
+
+// include ---------------------------------------------------------------
+
+#include <svtools/ctrlbox.hxx>
+#include <sfx2/tabdlg.hxx>
+#include "svx/svxdllapi.h"
+#include <svx/rectenum.hxx>
+#include <vcl/graph.hxx>
+#ifndef _XTABLE_HXX
+class XBitmapEntry;
+class XBitmapList;
+class XColorEntry;
+class XColorTable;
+class XDash;
+class XDashEntry;
+class XDashList;
+class XGradient;
+class XGradientEntry;
+class XGradientList;
+class XHatch;
+class XHatchEntry;
+class XHatchList;
+class XLineEndEntry;
+class XLineEndList;
+class XFillAttrSetItem;
+#endif
+
+class XOBitmap;
+class XOutdevItemPool;
+
+namespace com { namespace sun { namespace star { namespace awt {
+ struct Point;
+} } } }
+
+/*************************************************************************
+|*
+|* Von SfxTabPage abgeleitet, um vom Control ueber virtuelle Methode
+|* benachrichtigt werden zu koennen.
+|*
+\************************************************************************/
+class SvxTabPage : public SfxTabPage
+{
+
+public:
+ SvxTabPage( Window* pParent, ResId Id, const SfxItemSet& rInAttrs ) :
+ SfxTabPage( pParent, Id, rInAttrs ) {}
+
+ virtual void PointChanged( Window* pWindow, RECT_POINT eRP ) = 0;
+};
+
+/*************************************************************************
+|*
+|* Control zur Darstellung und Auswahl der Eckpunkte (und Mittelpunkt)
+|* eines Objekts
+|*
+\************************************************************************/
+typedef UINT16 CTL_STATE;
+#define CS_NOHORZ 1 // no horizontal input information is used
+#define CS_NOVERT 2 // no vertikal input information is used
+
+class SvxRectCtlAccessibleContext;
+
+class SVX_DLLPUBLIC SvxRectCtl : public Control
+{
+private:
+ SVX_DLLPRIVATE void InitSettings( BOOL bForeground, BOOL bBackground );
+ SVX_DLLPRIVATE void InitRectBitmap( void );
+ SVX_DLLPRIVATE Bitmap& GetRectBitmap( void );
+ SVX_DLLPRIVATE void Resize_Impl();
+
+protected:
+ SvxRectCtlAccessibleContext* pAccContext;
+ USHORT nBorderWidth;
+ USHORT nRadius;
+ Size aSize;
+ Point aPtLT, aPtMT, aPtRT;
+ Point aPtLM, aPtMM, aPtRM;
+ Point aPtLB, aPtMB, aPtRB;
+ Point aPtNew;
+ RECT_POINT eRP, eDefRP;
+ CTL_STYLE eCS;
+ Bitmap* pBitmap;
+ CTL_STATE m_nState;
+
+ // #103516# Added a possibility to completely disable this control
+ sal_Bool mbCompleteDisable;
+
+ RECT_POINT GetRPFromPoint( Point ) const;
+ Point GetPointFromRP( RECT_POINT ) const;
+ void SetFocusRect( const Rectangle* pRect = NULL ); // pRect == NULL -> calculate rectangle in method
+ Point SetActualRPWithoutInvalidate( RECT_POINT eNewRP ); // returns the last point
+
+ virtual void GetFocus();
+ virtual void LoseFocus();
+
+ Point GetApproxLogPtFromPixPt( const Point& rRoughPixelPoint ) const;
+public:
+ SvxRectCtl( Window* pParent, const ResId& rResId, RECT_POINT eRpt = RP_MM,
+ USHORT nBorder = 200, USHORT nCircle = 80, CTL_STYLE eStyle = CS_RECT );
+ virtual ~SvxRectCtl();
+
+ virtual void Paint( const Rectangle& rRect );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void KeyInput( const KeyEvent& rKeyEvt );
+ virtual void StateChanged( StateChangedType nStateChange );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ virtual void Resize();
+
+ void Reset();
+ RECT_POINT GetActualRP() const;
+ void SetActualRP( RECT_POINT eNewRP );
+
+ void SetState( CTL_STATE nState );
+
+ UINT8 GetNumOfChilds( void ) const; // returns number of usable radio buttons
+
+ Rectangle CalculateFocusRectangle( void ) const;
+ Rectangle CalculateFocusRectangle( RECT_POINT eRectPoint ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
+
+ RECT_POINT GetApproxRPFromPixPt( const ::com::sun::star::awt::Point& rPixelPoint ) const;
+
+ // #103516# Added a possibility to completely disable this control
+ sal_Bool IsCompletelyDisabled() const { return mbCompleteDisable; }
+ void DoCompletelyDisable(sal_Bool bNew);
+};
+
+/*************************************************************************
+|*
+|* Control zur Darstellung und Auswahl des Winkels der Eckpunkte
+|* eines Objekts
+|*
+\************************************************************************/
+class SvxAngleCtl : public SvxRectCtl
+{
+private:
+ void Initialize();
+
+protected:
+ Font aFont;
+ Size aFontSize;
+ BOOL bPositive;
+
+public:
+ SvxAngleCtl( Window* pParent, const ResId& rResId );
+ SvxAngleCtl( Window* pParent, const ResId& rResId, Size aSize );
+
+ void ChangeMetric()
+ { bPositive = !bPositive; }
+ virtual void Paint( const Rectangle& rRect );
+};
+
+/*************************************************************************
+|*
+|* Preview-Control zur Darstellung von Bitmaps
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxBitmapCtl
+{
+protected:
+ Size aSize;
+ USHORT nLines;
+ Color aPixelColor, aBackgroundColor;
+ const USHORT* pBmpArray;
+
+public:
+ SvxBitmapCtl( Window* pParent, const Size& rSize );
+ ~SvxBitmapCtl();
+
+ XOBitmap GetXBitmap();
+
+ void SetBmpArray( const USHORT* pPixel ) { pBmpArray = pPixel; }
+ void SetLines( USHORT nLns ) { nLines = nLns; }
+ void SetPixelColor( Color aColor ) { aPixelColor = aColor; }
+ void SetBackgroundColor( Color aColor ) { aBackgroundColor = aColor; }
+};
+
+/*************************************************************************
+|*
+|* Control zum Editieren von Bitmaps
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC SvxPixelCtl : public Control
+{
+private:
+ using OutputDevice::SetLineColor;
+
+protected:
+ USHORT nLines, nSquares;
+ Color aPixelColor;
+ Color aBackgroundColor;
+ Color aLineColor;
+ Size aRectSize;
+ USHORT* pPixel;
+ BOOL bPaintable;
+
+ void ChangePixel( USHORT nPixel );
+
+public:
+ SvxPixelCtl( Window* pParent, const ResId& rResId,
+ USHORT nNumber = 8 );
+ ~SvxPixelCtl();
+
+ virtual void Paint( const Rectangle& rRect );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+
+ void SetXBitmap( const XOBitmap& rXOBitmap );
+
+ void SetPixelColor( const Color& rCol ) { aPixelColor = rCol; }
+ void SetBackgroundColor( const Color& rCol ) { aBackgroundColor = rCol; }
+ void SetLineColor( const Color& rCol ) { aLineColor = rCol; }
+
+ USHORT GetLineCount() const { return nLines; }
+ Color GetPixelColor() const { return aPixelColor; }
+ Color GetBackgroundColor() const { return aBackgroundColor; }
+
+ USHORT GetBitmapPixel( const USHORT nPixelNumber );
+ USHORT* GetBitmapPixelPtr() { return pPixel; }
+
+ void SetPaintable( BOOL bTmp ) { bPaintable = bTmp; }
+ void Reset();
+};
+
+/*************************************************************************
+|*
+|* ColorLB kann mit Farben und Namen gefuellt werden
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC ColorLB : public ColorListBox
+{
+
+public:
+ ColorLB( Window* pParent, ResId Id ) : ColorListBox( pParent, Id ) {}
+ ColorLB( Window* pParent, WinBits aWB ) : ColorListBox( pParent, aWB ) {}
+
+ virtual void Fill( const XColorTable* pTab );
+
+ void Append( XColorEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XColorEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL );
+};
+
+/*************************************************************************
+|*
+|* HatchingLB
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC HatchingLB : public ListBox
+{
+
+public:
+ HatchingLB( Window* pParent, ResId Id, BOOL bUserDraw = TRUE );
+ HatchingLB( Window* pParent, WinBits aWB, BOOL bUserDraw = TRUE );
+
+ virtual void Fill( const XHatchList* pList );
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+
+ void Append( XHatchEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XHatchEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL );
+ void SelectEntryByList( const XHatchList* pList, const String& rStr,
+ const XHatch& rXHatch, USHORT nDist = 0 );
+
+private:
+ XHatchList* mpList;
+ BOOL mbUserDraw;
+};
+
+/*************************************************************************
+|*
+|* GradientLB
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC GradientLB : public ListBox
+{
+public:
+ GradientLB( Window* pParent, ResId Id, BOOL bUserDraw = TRUE );
+ GradientLB( Window* pParent, WinBits aWB, BOOL bUserDraw = TRUE );
+
+ virtual void Fill( const XGradientList* pList );
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+
+ void Append( XGradientEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XGradientEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL );
+ void SelectEntryByList( const XGradientList* pList, const String& rStr,
+ const XGradient& rXGradient, USHORT nDist = 0 );
+
+private:
+ XGradientList* mpList;
+ BOOL mbUserDraw;
+};
+
+/*************************************************************************
+|*
+|* BitmapLB
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC BitmapLB : public ListBox
+{
+public:
+ BitmapLB( Window* pParent, ResId Id, BOOL bUserDraw = TRUE );
+
+ virtual void Fill( const XBitmapList* pList );
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+
+ void Append( XBitmapEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XBitmapEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL );
+ void SelectEntryByList( const XBitmapList* pList, const String& rStr,
+ const Bitmap& rBmp);
+
+private:
+ VirtualDevice aVD;
+ Bitmap aBitmap;
+
+ XBitmapList* mpList;
+ BOOL mbUserDraw;
+
+ SVX_DLLPRIVATE void SetVirtualDevice();
+};
+
+/*************************************************************************
+|*
+|* FillAttrLB vereint alle Fuellattribute in einer ListBox
+|*
+\************************************************************************/
+class FillAttrLB : public ColorListBox
+{
+private:
+ VirtualDevice aVD;
+ Bitmap aBitmap;
+
+ void SetVirtualDevice();
+
+public:
+ FillAttrLB( Window* pParent, ResId Id );
+ FillAttrLB( Window* pParent, WinBits aWB );
+
+ virtual void Fill( const XColorTable* pTab );
+ virtual void Fill( const XHatchList* pList );
+ virtual void Fill( const XGradientList* pList );
+ virtual void Fill( const XBitmapList* pList );
+
+ void SelectEntryByList( const XBitmapList* pList, const String& rStr,
+ const Bitmap& rBmp);
+};
+
+/*************************************************************************
+|*
+|* FillTypeLB
+|*
+\************************************************************************/
+class FillTypeLB : public ListBox
+{
+
+public:
+ FillTypeLB( Window* pParent, ResId Id ) : ListBox( pParent, Id ) {}
+ FillTypeLB( Window* pParent, WinBits aWB ) : ListBox( pParent, aWB ) {}
+
+ virtual void Fill();
+};
+
+/*************************************************************************
+|*
+|* LineLB
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC LineLB : public ListBox
+{
+
+public:
+ LineLB( Window* pParent, ResId Id ) : ListBox( pParent, Id ) {}
+ LineLB( Window* pParent, WinBits aWB ) : ListBox( pParent, aWB ) {}
+
+ virtual void Fill( const XDashList* pList );
+
+ void Append( XDashEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XDashEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL );
+ void SelectEntryByList( const XDashList* pList, const String& rStr,
+ const XDash& rDash, USHORT nDist = 0 );
+ void FillStyles();
+};
+
+/*************************************************************************
+|*
+|* LineEndsLB
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC LineEndLB : public ListBox
+{
+
+public:
+ LineEndLB( Window* pParent, ResId Id ) : ListBox( pParent, Id ) {}
+ LineEndLB( Window* pParent, WinBits aWB ) : ListBox( pParent, aWB ) {}
+
+ virtual void Fill( const XLineEndList* pList, BOOL bStart = TRUE );
+
+ void Append( XLineEndEntry* pEntry, Bitmap* pBmp = NULL,
+ BOOL bStart = TRUE );
+ void Modify( XLineEndEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL,
+ BOOL bStart = TRUE );
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SdrObject;
+class SdrModel;
+
+class SvxPreviewBase : public Control
+{
+private:
+ SdrModel* mpModel;
+ VirtualDevice* mpBufferDevice;
+
+protected:
+ void InitSettings(bool bForeground, bool bBackground);
+
+ // prepare buffered paint
+ void LocalPrePaint();
+
+ // end and output buffered paint
+ void LocalPostPaint();
+
+public:
+ SvxPreviewBase( Window* pParent, const ResId& rResId );
+ virtual ~SvxPreviewBase();
+
+ // change support
+ virtual void StateChanged(StateChangedType nStateChange);
+ virtual void DataChanged(const DataChangedEvent& rDCEvt);
+
+ // dada read access
+ SdrModel& getModel() const { return *mpModel; }
+ OutputDevice& getBufferDevice() const { return *mpBufferDevice; }
+};
+
+/*************************************************************************
+|*
+|* SvxLinePreview
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxXLinePreview : public SvxPreviewBase
+{
+private:
+ SdrObject* mpLineObjA;
+ SdrObject* mpLineObjB;
+ SdrObject* mpLineObjC;
+
+ //#58425# Symbole auf einer Linie (z.B. StarChart)
+ Graphic* mpGraphic;
+ sal_Bool mbWithSymbol;
+ Size maSymbolSize;
+
+public:
+ SvxXLinePreview( Window* pParent, const ResId& rResId );
+ virtual ~SvxXLinePreview();
+
+ void SetLineAttributes(const SfxItemSet& rItemSet);
+
+ void ShowSymbol( BOOL b ) { mbWithSymbol = b; };
+ void SetSymbol( Graphic* p, const Size& s );
+ void ResizeSymbol( const Size& s );
+
+ virtual void Paint( const Rectangle& rRect );
+};
+
+/*************************************************************************
+|*
+|* SvxXRectPreview
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxXRectPreview : public SvxPreviewBase
+{
+private:
+ SdrObject* mpRectangleObject;
+
+public:
+ SvxXRectPreview( Window* pParent, const ResId& rResId );
+ virtual ~SvxXRectPreview();
+
+ void SetAttributes(const SfxItemSet& rItemSet);
+
+ virtual void Paint( const Rectangle& rRect );
+};
+
+/*************************************************************************
+|*
+|* SvxXShadowPreview
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxXShadowPreview : public SvxPreviewBase
+{
+private:
+ SdrObject* mpRectangleObject;
+ SdrObject* mpRectangleShadow;
+
+public:
+ SvxXShadowPreview( Window* pParent, const ResId& rResId );
+ virtual ~SvxXShadowPreview();
+
+ void SetRectangleAttributes(const SfxItemSet& rItemSet);
+ void SetShadowAttributes(const SfxItemSet& rItemSet);
+ void SetShadowPosition(const Point& rPos);
+
+ virtual void Paint( const Rectangle& rRect );
+};
+
+#endif // _SVX_DLG_CTRL_HXX
+