summaryrefslogtreecommitdiffstats
path: root/include/svx/dlgctrl.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'include/svx/dlgctrl.hxx')
-rw-r--r--include/svx/dlgctrl.hxx449
1 files changed, 449 insertions, 0 deletions
diff --git a/include/svx/dlgctrl.hxx b/include/svx/dlgctrl.hxx
new file mode 100644
index 000000000000..7297bd559bb5
--- /dev/null
+++ b/include/svx/dlgctrl.hxx
@@ -0,0 +1,449 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+#ifndef _SVX_DLG_CTRL_HXX
+#define _SVX_DLG_CTRL_HXX
+
+#include <svtools/ctrlbox.hxx>
+#include <sfx2/tabdlg.hxx>
+#include "svx/svxdllapi.h"
+#include <svx/rectenum.hxx>
+#include <vcl/graph.hxx>
+#include <svx/xtable.hxx>
+
+class XOBitmap;
+class XOutdevItemPool;
+
+namespace com { namespace sun { namespace star { namespace awt {
+ struct Point;
+} } } }
+
+/*************************************************************************
+|* Derived from SfxTabPage for being able to get notified through the
+|* virtual method from the control.
+\************************************************************************/
+
+class SvxTabPage : public SfxTabPage
+{
+
+public:
+ SvxTabPage(Window* pParent, ResId Id, const SfxItemSet& rInAttrs)
+ : SfxTabPage(pParent, Id, rInAttrs)
+ {
+ }
+ SvxTabPage(Window *pParent, const OString& rID, const OUString& rUIXMLDescription, const SfxItemSet &rAttrSet)
+ : SfxTabPage(pParent, rID, rUIXMLDescription, rAttrSet)
+ {
+ }
+ virtual void PointChanged( Window* pWindow, RECT_POINT eRP ) = 0;
+};
+
+/*************************************************************************
+|* Control for display and selection of the corner and center points of
+|* an object
+\************************************************************************/
+
+typedef sal_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( sal_Bool bForeground, sal_Bool bBackground );
+ SVX_DLLPRIVATE void InitRectBitmap( void );
+ SVX_DLLPRIVATE Bitmap& GetRectBitmap( void );
+ SVX_DLLPRIVATE void Resize_Impl();
+
+protected:
+ SvxRectCtlAccessibleContext* pAccContext;
+ sal_uInt16 nBorderWidth;
+ sal_uInt16 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;
+
+ 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,
+ sal_uInt16 nBorder = 200, sal_uInt16 nCircle = 80, CTL_STYLE eStyle = CS_RECT );
+ SvxRectCtl( Window* pParent, RECT_POINT eRpt = RP_MM,
+ sal_uInt16 nBorder = 200, sal_uInt16 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 );
+
+ sal_uInt8 GetNumOfChildren( 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;
+
+ sal_Bool IsCompletelyDisabled() const { return mbCompleteDisable; }
+ void DoCompletelyDisable(sal_Bool bNew);
+};
+
+/*************************************************************************
+|* Preview control for the display of bitmaps
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxBitmapCtl
+{
+protected:
+ Size aSize;
+ sal_uInt16 nLines;
+ Color aPixelColor, aBackgroundColor;
+ const sal_uInt16* pBmpArray;
+
+public:
+ SvxBitmapCtl( Window* pParent, const Size& rSize );
+ ~SvxBitmapCtl();
+
+ BitmapEx GetBitmapEx();
+
+ void SetBmpArray( const sal_uInt16* pPixel ) { pBmpArray = pPixel; }
+ void SetLines( sal_uInt16 nLns ) { nLines = nLns; }
+ void SetPixelColor( Color aColor ) { aPixelColor = aColor; }
+ void SetBackgroundColor( Color aColor ) { aBackgroundColor = aColor; }
+};
+
+/*************************************************************************
+|* Control for editing bitmaps
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxPixelCtl : public Control
+{
+private:
+ using OutputDevice::SetLineColor;
+
+protected:
+ sal_uInt16 nLines, nSquares;
+ Color aPixelColor;
+ Color aBackgroundColor;
+ Color aLineColor;
+ Size aRectSize;
+ sal_uInt16* pPixel;
+ sal_Bool bPaintable;
+
+ void ChangePixel( sal_uInt16 nPixel );
+
+public:
+ SvxPixelCtl( Window* pParent, const ResId& rResId,
+ sal_uInt16 nNumber = 8 );
+ ~SvxPixelCtl();
+
+ virtual void Paint( const Rectangle& rRect );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+
+ void SetXBitmap( const BitmapEx& rBitmapEx );
+
+ void SetPixelColor( const Color& rCol ) { aPixelColor = rCol; }
+ void SetBackgroundColor( const Color& rCol ) { aBackgroundColor = rCol; }
+ void SetLineColor( const Color& rCol ) { aLineColor = rCol; }
+
+ sal_uInt16 GetLineCount() const { return nLines; }
+ Color GetPixelColor() const { return aPixelColor; }
+ Color GetBackgroundColor() const { return aBackgroundColor; }
+
+ sal_uInt16* GetBitmapPixelPtr() { return pPixel; }
+
+ void SetPaintable( sal_Bool bTmp ) { bPaintable = bTmp; }
+ void Reset();
+};
+
+/************************************************************************/
+
+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 XColorListRef &pTab );
+
+ void Append( XColorEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XColorEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp = NULL );
+};
+
+/************************************************************************/
+
+class SVX_DLLPUBLIC HatchingLB : public ListBox
+{
+ XHatchListRef mpList;
+ sal_Bool mbUserDraw;
+public:
+ HatchingLB( Window* pParent, ResId Id, sal_Bool bUserDraw = sal_True );
+
+ virtual void Fill( const XHatchListRef &pList );
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+
+ void Append( XHatchEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XHatchEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp = NULL );
+};
+
+/************************************************************************/
+
+class SVX_DLLPUBLIC GradientLB : public ListBox
+{
+ XGradientListRef mpList;
+ sal_Bool mbUserDraw;
+public:
+ GradientLB( Window* pParent, ResId Id, sal_Bool bUserDraw = sal_True );
+ GradientLB( Window* pParent, WinBits aWB, sal_Bool bUserDraw = sal_True );
+
+ virtual void Fill( const XGradientListRef &pList );
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+
+ void Append( XGradientEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XGradientEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp = NULL );
+ void SelectEntryByList( const XGradientListRef &pList, const String& rStr,
+ const XGradient& rXGradient, sal_uInt16 nDist = 0 );
+};
+
+/************************************************************************/
+
+class SVX_DLLPUBLIC BitmapLB : public ListBox
+{
+public:
+ BitmapLB(Window* pParent, ResId Id, bool bUserDraw = true);
+
+ virtual void Fill(const XBitmapListRef &pList);
+ virtual void UserDraw(const UserDrawEvent& rUDEvt);
+
+ void Append(XBitmapEntry* pEntry, BitmapEx* pBmpEx = NULL);
+ void Modify(XBitmapEntry* pEntry, sal_uInt16 nPos, BitmapEx* pBmpEx = NULL);
+
+private:
+ VirtualDevice maVD;
+ BitmapEx maBitmapEx;
+
+ XBitmapListRef mpList;
+ bool mbUserDraw;
+
+ SVX_DLLPRIVATE void SetVirtualDevice();
+};
+
+/************************************************************************/
+
+class FillAttrLB : public ColorListBox
+{
+private:
+ VirtualDevice maVD;
+ BitmapEx maBitmapEx;
+
+ void SetVirtualDevice();
+
+public:
+ FillAttrLB( Window* pParent, WinBits aWB );
+
+ virtual void Fill( const XColorListRef &pList );
+ virtual void Fill( const XHatchListRef &pList );
+ virtual void Fill( const XGradientListRef &pList );
+ virtual void Fill( const XBitmapListRef &pList );
+};
+
+/************************************************************************/
+
+class FillTypeLB : public ListBox
+{
+
+public:
+ FillTypeLB( Window* pParent, ResId Id ) : ListBox( pParent, Id ) {}
+ FillTypeLB( Window* pParent, WinBits aWB ) : ListBox( pParent, aWB ) {}
+
+ virtual void Fill();
+};
+
+/************************************************************************/
+
+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 XDashListRef &pList );
+
+ void Append( XDashEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XDashEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp = NULL );
+ void FillStyles();
+};
+
+/************************************************************************/
+
+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 XLineEndListRef &pList, sal_Bool bStart = sal_True );
+
+ void Append( XLineEndEntry* pEntry, Bitmap* pBmp = NULL,
+ sal_Bool bStart = sal_True );
+ void Modify( XLineEndEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp = NULL,
+ sal_Bool bStart = sal_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);
+ SvxPreviewBase(Window* pParent);
+ 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;
+
+ Graphic* mpGraphic;
+ sal_Bool mbWithSymbol;
+ Size maSymbolSize;
+
+public:
+ SvxXLinePreview( Window* pParent, const ResId& rResId );
+ virtual ~SvxXLinePreview();
+
+ void SetLineAttributes(const SfxItemSet& rItemSet);
+
+ void ShowSymbol( sal_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);
+ SvxXRectPreview(Window* pParent);
+ virtual ~SvxXRectPreview();
+
+ void SetAttributes(const SfxItemSet& rItemSet);
+
+ virtual void Paint( const Rectangle& rRect );
+ virtual void Resize();
+};
+
+/*************************************************************************
+|*
+|* 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
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */