summaryrefslogtreecommitdiff
path: root/svx/inc/svx/bmpmask.hxx
blob: 8eb8d9bffd18ad7409f8e3d86e19cfeb12d83a43 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
 *
 * 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 _BMPMASK_HXX_
#define _BMPMASK_HXX_

#include <sfx2/ctrlitem.hxx>
#include <sfx2/dockwin.hxx>
#include <vcl/toolbox.hxx>
#include <vcl/fixed.hxx>
#include <vcl/group.hxx>
#include <vcl/graph.hxx>
#include "svx/svxdllapi.h"

#include <svx/dlgctrl.hxx>

/*************************************************************************
|*
|*	class SvxBmpMaskSelectItem
|*
\************************************************************************/
class SvxBmpMask;

class SvxBmpMaskSelectItem : public SfxControllerItem
{
private:
    SvxBmpMask  &rBmpMask;

protected:
    virtual void StateChanged( USHORT nSID, SfxItemState eState,
                               const SfxPoolItem* pState );

public:
    SvxBmpMaskSelectItem( USHORT nId, SvxBmpMask& rMask,
                          SfxBindings& rBindings );
};

/*************************************************************************
|*
|* Derivative from SfxChildWindow as 'container' for Float
|*
\************************************************************************/

class SVX_DLLPUBLIC SvxBmpMaskChildWindow : public SfxChildWindow
{
 public:
                            SvxBmpMaskChildWindow( Window*,
                                                   USHORT, SfxBindings*,
                                                   SfxChildWinInfo* );

    SFX_DECL_CHILDWINDOW(SvxBmpMaskChildWindow);
};

/*************************************************************************
|*
|*  class SvxBmpMask
|*
\************************************************************************/

class MaskData;
class MaskSet;
class ColorWindow;

class SVX_DLLPUBLIC SvxBmpMask : public SfxDockingWindow
{
    friend class MaskData;
    friend class MaskSet;

    Window* 			pParentWin;
    Size				aLastSize;
    ToolBox				aTbxPipette;
    ColorWindow*		pCtlPipette;
    PushButton			aBtnExec;
    FixedLine           aGrpQ;

    CheckBox			aCbx1;
    MaskSet*			pQSet1;
    MetricField			aSp1;
    ColorLB				aLbColor1;

    CheckBox			aCbx2;
    MaskSet*			pQSet2;
    MetricField			aSp2;
    ColorLB				aLbColor2;

    CheckBox			aCbx3;
    MaskSet*			pQSet3;
    MetricField			aSp3;
    ColorLB				aLbColor3;

    CheckBox			aCbx4;
    MaskSet*			pQSet4;
    MetricField			aSp4;
    ColorLB				aLbColor4;

    MaskData*			pData;
    CheckBox			aCbxTrans;
    ColorLB				aLbColorTrans;
    FixedText			aFt1;
    FixedText			aFt2;
    FixedText			aFt3;
    const XColorTable* 	pColTab;
    Color				aPipetteColor;
    SvxBmpMaskSelectItem aSelItem;

    Image				maImgPipette;
    Image				maImgPipetteH;

    virtual BOOL 		Close();

#ifdef BMPMASK_PRIVATE

    USHORT				InitColorArrays( Color* pSrcCols, Color* pDstCols,
                                         ULONG* pTols );

    Bitmap 				ImpMask( const Bitmap& rBitmap );
    BitmapEx			ImpMask( const BitmapEx& rBitmapEx );
    GDIMetaFile 		ImpMask( const GDIMetaFile& rMtf );
    Animation 			ImpMask( const Animation& rAnimation );
    BitmapEx			ImpMaskTransparent( const BitmapEx& rBitmapEx,
                                            const Color& rColor,
                                            const long nTol );
    BitmapEx			ImpReplaceTransparency( const BitmapEx& rBmpEx,
                                                const Color& rColor );
    Animation			ImpReplaceTransparency( const Animation& rAnim,
                                                const Color& rColor );
    GDIMetaFile			ImpReplaceTransparency( const GDIMetaFile& rMtf,
                                                const Color& rColor );

#endif // BMPMASK_PRIVATE

public:

                        SvxBmpMask( SfxBindings *pBindinx,
                                    SfxChildWindow *pCW,
                                    Window* pParent,
                                    const ResId& rResId );
                        ~SvxBmpMask();

    void				SetColor( const Color& rColor );
    void				PipetteClicked();

    BOOL				NeedsColorTable() const;
    void 				SetColorTable( const XColorTable* pColorTable );

    void				SetExecState( BOOL bEnable );

    Graphic 			Mask( const Graphic& rGraphic );

    BOOL				IsEyedropping() const;

    void				onSelect( MaskSet* pSet );

    virtual void DataChanged( const DataChangedEvent& rDCEvt );
    void ApplyStyle();

private:

    /** Set names for accessible objects.  This is necessary for objects
        like the source color checkboxes which initially have no name and
        for which the description would be read by AT.
    */
    SVX_DLLPRIVATE void SetAccessibleNames (void);
};

/*************************************************************************
|*
|* Defines
|*
\************************************************************************/

#define SVXBMPMASK() ( (SvxBmpMask*) ( SfxViewFrame::Current()->GetChildWindow( 	\
                     SvxBmpMaskChildWindow::GetChildWindowId() )-> 	\
                     GetWindow() ) )

#endif // _BMPMASK_HXX_

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */