LCOV - code coverage report
Current view: top level - include/svx - dlgctrl.hxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 3 35 8.6 %
Date: 2015-06-13 12:38:46 Functions: 3 40 7.5 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : #ifndef INCLUDED_SVX_DLGCTRL_HXX
      20             : #define INCLUDED_SVX_DLGCTRL_HXX
      21             : 
      22             : #include <svtools/ctrlbox.hxx>
      23             : #include <sfx2/tabdlg.hxx>
      24             : #include <svx/svxdllapi.h>
      25             : #include <svx/rectenum.hxx>
      26             : #include <vcl/graph.hxx>
      27             : #include <svx/xtable.hxx>
      28             : #include <o3tl/typed_flags_set.hxx>
      29             : 
      30             : class XOBitmap;
      31             : class XOutdevItemPool;
      32             : 
      33             : namespace com { namespace sun { namespace star { namespace awt {
      34             :     struct Point;
      35             : } } } }
      36             : 
      37             : /*************************************************************************
      38             : |* Derived from SfxTabPage for being able to get notified through the
      39             : |* virtual method from the control.
      40             : \************************************************************************/
      41             : 
      42           0 : class SAL_WARN_UNUSED SvxTabPage : public SfxTabPage
      43             : {
      44             : 
      45             : public:
      46           0 :     SvxTabPage(vcl::Window *pParent, const OString& rID, const OUString& rUIXMLDescription, const SfxItemSet &rAttrSet)
      47           0 :         : SfxTabPage(pParent, rID, rUIXMLDescription, &rAttrSet)
      48             :     {
      49           0 :     }
      50             :     virtual void PointChanged( vcl::Window* pWindow, RECT_POINT eRP ) = 0;
      51             : };
      52             : 
      53             : /*************************************************************************
      54             : |* Control for display and selection of the corner and center points of
      55             : |* an object
      56             : \************************************************************************/
      57             : 
      58             : enum class CTL_STATE
      59             : {
      60             :     NONE     = 0,
      61             :     NOHORZ   = 1,       // no horizontal input information is used
      62             :     NOVERT   = 2,       // no vertical input information is used
      63             : };
      64             : namespace o3tl
      65             : {
      66             :     template<> struct typed_flags<CTL_STATE> : is_typed_flags<CTL_STATE, 0x03> {};
      67             : }
      68             : 
      69             : class SvxRectCtlAccessibleContext;
      70             : class SvxPixelCtlAccessible;
      71             : 
      72             : class SVX_DLLPUBLIC SAL_WARN_UNUSED SvxRectCtl : public Control
      73             : {
      74             : private:
      75             :     SVX_DLLPRIVATE void             InitSettings(vcl::RenderContext& rRenderContext);
      76             :     SVX_DLLPRIVATE void             InitRectBitmap();
      77             :     SVX_DLLPRIVATE Bitmap&          GetRectBitmap();
      78             :     SVX_DLLPRIVATE void             Resize_Impl();
      79             : 
      80             : protected:
      81             :     SvxRectCtlAccessibleContext* pAccContext;
      82             :     sal_uInt16 nBorderWidth;
      83             :     sal_uInt16 nRadius;
      84             :     Size aSize;
      85             :     Point aPtLT, aPtMT, aPtRT;
      86             :     Point aPtLM, aPtMM, aPtRM;
      87             :     Point aPtLB, aPtMB, aPtRB;
      88             :     Point aPtNew;
      89             :     RECT_POINT eRP, eDefRP;
      90             :     CTL_STYLE eCS;
      91             :     Bitmap* pBitmap;
      92             :     CTL_STATE m_nState;
      93             : 
      94             :     bool mbCompleteDisable : 1;
      95             :     bool mbUpdateForeground : 1;
      96             :     bool mbUpdateBackground : 1;
      97             : 
      98             :     void MarkToResetSettings(bool bUpdateForeground, bool bUpdateBackground);
      99             : 
     100             :     RECT_POINT          GetRPFromPoint( Point, bool bRTL = false ) const;
     101             :     Point               GetPointFromRP( RECT_POINT ) const;
     102             :     void                SetFocusRect( const Rectangle* pRect = NULL );      // pRect == NULL -> calculate rectangle in method
     103             :     Point               SetActualRPWithoutInvalidate( RECT_POINT eNewRP );  // returns the last point
     104             : 
     105             :     virtual void        GetFocus() SAL_OVERRIDE;
     106             :     virtual void        LoseFocus() SAL_OVERRIDE;
     107             : 
     108             :     Point               GetApproxLogPtFromPixPt( const Point& rRoughPixelPoint ) const;
     109             : public:
     110             :     SvxRectCtl( vcl::Window* pParent, RECT_POINT eRpt = RP_MM,
     111             :                 sal_uInt16 nBorder = 200, sal_uInt16 nCircle = 80, CTL_STYLE eStyle = CS_RECT );
     112             :     void SetControlSettings(RECT_POINT eRpt = RP_MM, sal_uInt16 nBorder = 200,
     113             :         sal_uInt16 nCircle = 80, CTL_STYLE eStyle = CS_RECT);
     114             :     virtual ~SvxRectCtl();
     115             :     virtual void dispose() SAL_OVERRIDE;
     116             : 
     117             :     virtual void        Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect ) SAL_OVERRIDE;
     118             :     virtual void        MouseButtonDown( const MouseEvent& rMEvt ) SAL_OVERRIDE;
     119             :     virtual void        KeyInput( const KeyEvent& rKeyEvt ) SAL_OVERRIDE;
     120             :     virtual void        StateChanged( StateChangedType nStateChange ) SAL_OVERRIDE;
     121             :     virtual void        DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
     122             :     virtual void        Resize() SAL_OVERRIDE;
     123             :     virtual Size        GetOptimalSize() const SAL_OVERRIDE;
     124             : 
     125             :     void                Reset();
     126           0 :     RECT_POINT          GetActualRP() const { return eRP;}
     127             :     void                SetActualRP( RECT_POINT eNewRP );
     128             : 
     129             :     void                SetState( CTL_STATE nState );
     130             : 
     131             :     sal_uInt8               GetNumOfChildren() const;   // returns number of usable radio buttons
     132             : 
     133             :     Rectangle           CalculateFocusRectangle() const;
     134             :     Rectangle           CalculateFocusRectangle( RECT_POINT eRectPoint ) const;
     135             : 
     136             :     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible() SAL_OVERRIDE;
     137             : 
     138             :     RECT_POINT          GetApproxRPFromPixPt( const ::com::sun::star::awt::Point& rPixelPoint ) const;
     139             : 
     140           0 :     bool IsCompletelyDisabled() const { return mbCompleteDisable; }
     141             :     void DoCompletelyDisable(bool bNew);
     142             :     void SetCS(CTL_STYLE eNew);
     143             : };
     144             : 
     145             : /*************************************************************************
     146             : |* Preview control for the display of bitmaps
     147             : \************************************************************************/
     148             : 
     149             : class SVX_DLLPUBLIC SAL_WARN_UNUSED SvxBitmapCtl
     150             : {
     151             : protected:
     152             :     Size            aSize;
     153             :     sal_uInt16      nLines;
     154             :     Color           aPixelColor, aBackgroundColor;
     155             :     const sal_uInt16*   pBmpArray;
     156             : 
     157             : public:
     158             :             SvxBitmapCtl( vcl::Window* pParent, const Size& rSize );
     159             :             ~SvxBitmapCtl();
     160             : 
     161             :     BitmapEx GetBitmapEx();
     162             : 
     163           0 :     void    SetBmpArray( const sal_uInt16* pPixel ) { pBmpArray = pPixel; }
     164           0 :     void    SetLines( sal_uInt16 nLns ) { nLines = nLns; }
     165           0 :     void    SetPixelColor( Color aColor ) { aPixelColor = aColor; }
     166           0 :     void    SetBackgroundColor( Color aColor ) { aBackgroundColor = aColor; }
     167             : };
     168             : 
     169             : /*************************************************************************
     170             : |* Control for editing bitmaps
     171             : \************************************************************************/
     172             : 
     173             : class SVX_DLLPUBLIC SAL_WARN_UNUSED SvxPixelCtl : public Control
     174             : {
     175             : private:
     176             :     using OutputDevice::SetLineColor;
     177             : 
     178             : protected:
     179             :     sal_uInt16      nLines, nSquares;
     180             :     Color       aPixelColor;
     181             :     Color       aBackgroundColor;
     182             :     Color       aLineColor;
     183             :     Size        aRectSize;
     184             :     sal_uInt16* pPixel;
     185             :     bool        bPaintable;
     186             :     //Add member identifying position
     187             :     Point       aFocusPosition;
     188             :     Rectangle   implCalFocusRect( const Point& aPosition );
     189             :     void    ChangePixel( sal_uInt16 nPixel );
     190             : 
     191             : public:
     192             :     SvxPixelCtl( vcl::Window* pParent, sal_uInt16 nNumber = 8 );
     193             : 
     194             :     virtual ~SvxPixelCtl();
     195             :     virtual void dispose() SAL_OVERRIDE;
     196             : 
     197             :     virtual void Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect ) SAL_OVERRIDE;
     198             :     virtual void MouseButtonDown( const MouseEvent& rMEvt ) SAL_OVERRIDE;
     199             :     virtual void Resize() SAL_OVERRIDE;
     200             :     virtual Size GetOptimalSize() const SAL_OVERRIDE;
     201             : 
     202             :     void    SetXBitmap( const BitmapEx& rBitmapEx );
     203             : 
     204           0 :     void    SetPixelColor( const Color& rCol ) { aPixelColor = rCol; }
     205           0 :     void    SetBackgroundColor( const Color& rCol ) { aBackgroundColor = rCol; }
     206           0 :     void    SetLineColor( const Color& rCol ) { aLineColor = rCol; }
     207             : 
     208           0 :     sal_uInt16  GetLineCount() const { return nLines; }
     209             :     Color   GetPixelColor() const { return aPixelColor; }
     210             :     Color   GetBackgroundColor() const { return aBackgroundColor; }
     211             : 
     212             :     sal_uInt16  GetBitmapPixel( const sal_uInt16 nPixelNumber );
     213           0 :     sal_uInt16* GetBitmapPixelPtr() { return pPixel; }
     214             : 
     215           0 :     void    SetPaintable( bool bTmp ) { bPaintable = bTmp; }
     216             :     void    Reset();
     217             :     SvxPixelCtlAccessible*  m_pAccess;
     218             :     ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >        m_xAccess;
     219             :     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible() SAL_OVERRIDE;
     220           0 :     long GetSquares() const { return nSquares ; }
     221           0 :     long GetWidth() const { return aRectSize.getWidth() ; }
     222           0 :     long GetHeight() const { return aRectSize.getHeight() ; }
     223             : 
     224             :     //Device Pixel .
     225             :     long ShowPosition( const Point &pt);
     226             : 
     227             :     long PointToIndex(const Point &pt) const;
     228             :     Point IndexToPoint(long nIndex) const ;
     229             :     long GetFoucsPosIndex() const ;
     230             :     //Keyboard function for key input and focus handling function
     231             :     virtual void        KeyInput( const KeyEvent& rKEvt ) SAL_OVERRIDE;
     232             :     virtual void        GetFocus() SAL_OVERRIDE;
     233             :     virtual void        LoseFocus() SAL_OVERRIDE;
     234             : };
     235             : 
     236             : /************************************************************************/
     237             : 
     238           0 : class SVX_DLLPUBLIC SAL_WARN_UNUSED ColorLB : public ColorListBox
     239             : {
     240             : 
     241             : public:
     242             :          ColorLB( vcl::Window* pParent, ResId Id ) : ColorListBox( pParent, Id ) {}
     243           0 :          ColorLB( vcl::Window* pParent, WinBits aWB ) : ColorListBox( pParent, aWB ) {}
     244             : 
     245             :     void Fill( const XColorListRef &pTab );
     246             : 
     247             :     void Append( const XColorEntry& rEntry );
     248             :     void Modify( const XColorEntry& rEntry, sal_Int32 nPos );
     249             : };
     250             : 
     251             : /************************************************************************/
     252             : 
     253           0 : class SVX_DLLPUBLIC SAL_WARN_UNUSED HatchingLB : public ListBox
     254             : {
     255             :     XHatchListRef mpList;
     256             : public:
     257             :     explicit HatchingLB(vcl::Window* pParent, WinBits aWB);
     258             : 
     259             :     void Fill( const XHatchListRef &pList );
     260             : 
     261             :     void    Append( const XHatchEntry& rEntry, const Bitmap& rBitmap );
     262             :     void    Modify( const XHatchEntry& rEntry, sal_Int32 nPos, const Bitmap& rBitmap );
     263             : };
     264             : 
     265             : /************************************************************************/
     266             : 
     267           0 : class SVX_DLLPUBLIC SAL_WARN_UNUSED GradientLB : public ListBox
     268             : {
     269             :     XGradientListRef mpList;
     270             : public:
     271             :     explicit GradientLB(vcl::Window* pParent, WinBits aWB);
     272             : 
     273             :     void Fill( const XGradientListRef &pList );
     274             : 
     275             :     void    Append( const XGradientEntry& rEntry, const Bitmap& rBitmap );
     276             :     void    Modify( const XGradientEntry& rEntry, sal_Int32 nPos, const Bitmap& rBitmap );
     277             :     void    SelectEntryByList( const XGradientListRef &pList, const OUString& rStr,
     278             :                                const XGradient& rXGradient, sal_uInt16 nDist = 0 );
     279             : };
     280             : 
     281             : /************************************************************************/
     282             : 
     283           0 : class SVX_DLLPUBLIC SAL_WARN_UNUSED BitmapLB : public ListBox
     284             : {
     285             : public:
     286             :     explicit BitmapLB(vcl::Window* pParent, WinBits aWB);
     287             : 
     288             :     void Fill(const XBitmapListRef &pList);
     289             : 
     290             :     void Append(const Size& rSize, const XBitmapEntry& rEntry);
     291             :     void Modify(const Size& rSize, const XBitmapEntry& rEntry, sal_Int32 nPos);
     292             :     void SelectEntryByList(const XBitmapList* pList, const OUString& rStr);
     293             : 
     294             : private:
     295             :     BitmapEx        maBitmapEx;
     296             : 
     297             :     XBitmapListRef  mpList;
     298             : };
     299             : 
     300             : /************************************************************************/
     301             : 
     302          51 : class SVX_DLLPUBLIC SAL_WARN_UNUSED FillAttrLB : public ColorListBox
     303             : {
     304             : private:
     305             :     BitmapEx        maBitmapEx;
     306             : 
     307             : public:
     308             :     FillAttrLB( vcl::Window* pParent, WinBits aWB );
     309             : 
     310             :     void Fill( const XHatchListRef    &pList );
     311             :     void Fill( const XGradientListRef &pList );
     312             :     void Fill( const XBitmapListRef   &pList );
     313             : };
     314             : 
     315             : /************************************************************************/
     316             : 
     317          51 : class SVX_DLLPUBLIC SAL_WARN_UNUSED FillTypeLB : public ListBox
     318             : {
     319             : 
     320             : public:
     321             :          FillTypeLB( vcl::Window* pParent, ResId Id ) : ListBox( pParent, Id ) {}
     322          51 :          FillTypeLB( vcl::Window* pParent, WinBits aWB ) : ListBox( pParent, aWB ) {}
     323             : 
     324             :     void Fill();
     325             : };
     326             : 
     327             : /************************************************************************/
     328             : 
     329           0 : class SVX_DLLPUBLIC SAL_WARN_UNUSED LineLB : public ListBox
     330             : {
     331             : private:
     332             :     /// bitfield
     333             :     /// defines if standard fields (none, solid) are added, default is true
     334             :     bool        mbAddStandardFields : 1;
     335             : 
     336             : public:
     337             :     LineLB(vcl::Window* pParent, WinBits aWB);
     338             : 
     339             :     void Fill(const XDashListRef &pList);
     340           0 :     bool getAddStandardFields() const { return mbAddStandardFields; }
     341             :     void setAddStandardFields(bool bNew);
     342             : 
     343             :     void Append(const XDashEntry& rEntry, const Bitmap& rBitmap );
     344             :     void Modify(const XDashEntry& rEntry, sal_Int32 nPos, const Bitmap& rBitmap );
     345             :     void SelectEntryByList(const XDashList* pList, const OUString& rStr, const XDash& rDash, sal_uInt16 nDist = 0);
     346             : };
     347             : 
     348             : 
     349             : /************************************************************************/
     350             : 
     351           0 : class SVX_DLLPUBLIC SAL_WARN_UNUSED LineEndLB : public ListBox
     352             : {
     353             : 
     354             : public:
     355             :     LineEndLB( vcl::Window* pParent, WinBits aWB );
     356             : 
     357             :     void Fill( const XLineEndListRef &pList, bool bStart = true );
     358             : 
     359             :     void    Append( const XLineEndEntry& rEntry, const Bitmap& rBitmap, bool bStart = true );
     360             :     void    Modify( const XLineEndEntry& rEntry, sal_Int32 nPos, const Bitmap& rBitmap, bool bStart = true );
     361             : };
     362             : 
     363             : 
     364             : class SdrObject;
     365             : class SdrPathObj;
     366             : class SdrModel;
     367             : 
     368             : class SAL_WARN_UNUSED SvxPreviewBase : public Control
     369             : {
     370             : private:
     371             :     SdrModel*             mpModel;
     372             :     VclPtr<VirtualDevice> mpBufferDevice;
     373             : 
     374             : protected:
     375             :     void InitSettings(bool bForeground, bool bBackground);
     376             : 
     377             :     // prepare buffered paint
     378             :     void LocalPrePaint(vcl::RenderContext& rRenderContext);
     379             : 
     380             :     // end and output buffered paint
     381             :     void LocalPostPaint(vcl::RenderContext& rRenderContext);
     382             : 
     383             : public:
     384             :     SvxPreviewBase(vcl::Window* pParent);
     385             :     virtual ~SvxPreviewBase();
     386             :     virtual void dispose() SAL_OVERRIDE;
     387             : 
     388             :     // change support
     389             :     virtual void StateChanged(StateChangedType nStateChange) SAL_OVERRIDE;
     390             :     virtual void DataChanged(const DataChangedEvent& rDCEvt) SAL_OVERRIDE;
     391             : 
     392             :     // dada read access
     393           0 :     SdrModel& getModel() const
     394             :     {
     395           0 :         return *mpModel;
     396             :     }
     397           0 :     OutputDevice& getBufferDevice() const
     398             :     {
     399           0 :         return *mpBufferDevice;
     400             :     }
     401             : };
     402             : 
     403             : /*************************************************************************
     404             : |*
     405             : |* SvxLinePreview
     406             : |*
     407             : \************************************************************************/
     408             : 
     409             : class SVX_DLLPUBLIC SAL_WARN_UNUSED SvxXLinePreview : public SvxPreviewBase
     410             : {
     411             : private:
     412             :     SdrPathObj*                                     mpLineObjA;
     413             :     SdrPathObj*                                     mpLineObjB;
     414             :     SdrPathObj*                                     mpLineObjC;
     415             : 
     416             :     Graphic*                                        mpGraphic;
     417             :     bool                                            mbWithSymbol;
     418             :     Size                                            maSymbolSize;
     419             : 
     420             : public:
     421             :     SvxXLinePreview( vcl::Window* pParent );
     422             :     virtual ~SvxXLinePreview();
     423             :     virtual void dispose() SAL_OVERRIDE;
     424             : 
     425             :     void SetLineAttributes(const SfxItemSet& rItemSet);
     426             : 
     427           0 :     void ShowSymbol( bool b ) { mbWithSymbol = b; };
     428             :     void SetSymbol( Graphic* p, const Size& s );
     429             :     void ResizeSymbol( const Size& s );
     430             : 
     431             :     virtual void Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect ) SAL_OVERRIDE;
     432             :     virtual void Resize() SAL_OVERRIDE;
     433             :     virtual Size GetOptimalSize() const SAL_OVERRIDE;
     434             : };
     435             : 
     436             : /*************************************************************************
     437             : |*
     438             : |* SvxXRectPreview
     439             : |*
     440             : \************************************************************************/
     441             : 
     442             : class SVX_DLLPUBLIC SAL_WARN_UNUSED SvxXRectPreview : public SvxPreviewBase
     443             : {
     444             : private:
     445             :     SdrObject*                                      mpRectangleObject;
     446             : 
     447             : public:
     448             :     SvxXRectPreview(vcl::Window* pParent);
     449             :     virtual ~SvxXRectPreview();
     450             :     virtual void dispose() SAL_OVERRIDE;
     451             : 
     452             :     void SetAttributes(const SfxItemSet& rItemSet);
     453             : 
     454             :     virtual void    Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect ) SAL_OVERRIDE;
     455             :     virtual void Resize() SAL_OVERRIDE;
     456             : };
     457             : 
     458             : /*************************************************************************
     459             : |*
     460             : |* SvxXShadowPreview
     461             : |*
     462             : \************************************************************************/
     463             : 
     464             : class SVX_DLLPUBLIC SAL_WARN_UNUSED SvxXShadowPreview : public SvxPreviewBase
     465             : {
     466             : private:
     467             :     Point maShadowOffset;
     468             : 
     469             :     SdrObject* mpRectangleObject;
     470             :     SdrObject* mpRectangleShadow;
     471             : 
     472             : public:
     473             :     SvxXShadowPreview(vcl::Window *pParent);
     474             : 
     475             :     virtual ~SvxXShadowPreview();
     476             :     virtual void dispose() SAL_OVERRIDE;
     477             : 
     478             :     void SetRectangleAttributes(const SfxItemSet& rItemSet);
     479             :     void SetShadowAttributes(const SfxItemSet& rItemSet);
     480             :     void SetShadowPosition(const Point& rPos);
     481             : 
     482             :     virtual void    Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect ) SAL_OVERRIDE;
     483             : };
     484             : 
     485             : #endif // INCLUDED_SVX_DLGCTRL_HXX
     486             : 
     487             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11