xref: /aoo4110/main/svx/inc/svx/charmap.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski #ifndef _SVX_CHARMAP_HXX
24*b1cdbd2cSJim Jagielski #define _SVX_CHARMAP_HXX
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski // include ---------------------------------------------------------------
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski #include <vcl/ctrl.hxx>
29*b1cdbd2cSJim Jagielski #include <vcl/metric.hxx>
30*b1cdbd2cSJim Jagielski #include <vcl/scrbar.hxx>
31*b1cdbd2cSJim Jagielski #include <map>
32*b1cdbd2cSJim Jagielski #include <tools/shl.hxx> //add CHINA001
33*b1cdbd2cSJim Jagielski #include <tools/debug.hxx> //add CHINA001
34*b1cdbd2cSJim Jagielski #include "svx/svxdllapi.h"
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski // define ----------------------------------------------------------------
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski #define COLUMN_COUNT    16
39*b1cdbd2cSJim Jagielski #define ROW_COUNT        8
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski namespace svx
42*b1cdbd2cSJim Jagielski {
43*b1cdbd2cSJim Jagielski 	struct SvxShowCharSetItem;
44*b1cdbd2cSJim Jagielski 	class SvxShowCharSetVirtualAcc;
45*b1cdbd2cSJim Jagielski }
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski // class SvxShowCharSet --------------------------------------------------
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski class SVX_DLLPUBLIC SvxShowCharSet : public Control
50*b1cdbd2cSJim Jagielski {
51*b1cdbd2cSJim Jagielski public:
52*b1cdbd2cSJim Jagielski 					SvxShowCharSet( Window* pParent, const ResId& rResId );
53*b1cdbd2cSJim Jagielski 					~SvxShowCharSet();
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski 	void            SetFont( const Font& rFont );
56*b1cdbd2cSJim Jagielski 
57*b1cdbd2cSJim Jagielski 	void            SelectCharacter( sal_uInt32 cNew, sal_Bool bFocus = sal_False );
58*b1cdbd2cSJim Jagielski 	sal_UCS4        GetSelectCharacter() const;
59*b1cdbd2cSJim Jagielski 
GetDoubleClickHdl() const60*b1cdbd2cSJim Jagielski 	Link            GetDoubleClickHdl() const { return aDoubleClkHdl; }
SetDoubleClickHdl(const Link & rLink)61*b1cdbd2cSJim Jagielski 	void			SetDoubleClickHdl( const Link& rLink ) { aDoubleClkHdl = rLink; }
GetSelectHdl() const62*b1cdbd2cSJim Jagielski 	Link            GetSelectHdl() const { return aSelectHdl; }
SetSelectHdl(const Link & rHdl)63*b1cdbd2cSJim Jagielski 	void            SetSelectHdl( const Link& rHdl ) { aSelectHdl = rHdl; }
GetHighlightHdl() const64*b1cdbd2cSJim Jagielski 	Link            GetHighlightHdl() const { return aHighHdl; }
SetHighlightHdl(const Link & rHdl)65*b1cdbd2cSJim Jagielski 	void            SetHighlightHdl( const Link& rHdl )	{ aHighHdl = rHdl; }
GetPreSelectHdl() const66*b1cdbd2cSJim Jagielski 	Link            GetPreSelectHdl() const { return aHighHdl; }
SetPreSelectHdl(const Link & rHdl)67*b1cdbd2cSJim Jagielski 	void            SetPreSelectHdl( const Link& rHdl )	{ aPreSelectHdl = rHdl; }
68*b1cdbd2cSJim Jagielski 	static sal_uInt32& getSelectedChar();
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski #ifdef _SVX_CHARMAP_CXX_
71*b1cdbd2cSJim Jagielski 	::svx::SvxShowCharSetItem*	ImplGetItem( int _nPos );
72*b1cdbd2cSJim Jagielski 	int							FirstInView( void) const;
73*b1cdbd2cSJim Jagielski 	int							LastInView( void) const;
74*b1cdbd2cSJim Jagielski 	int							PixelToMapIndex( const Point&) const;
75*b1cdbd2cSJim Jagielski 	void						SelectIndex( int index, sal_Bool bFocus = sal_False );
76*b1cdbd2cSJim Jagielski 	void						DeSelect();
IsSelected(sal_uInt16 _nPos) const77*b1cdbd2cSJim Jagielski 	inline sal_Bool				IsSelected(sal_uInt16 _nPos) const { return _nPos == nSelectedIndex; }
GetSelectIndexId() const78*b1cdbd2cSJim Jagielski 	inline sal_uInt16				GetSelectIndexId() const { return sal::static_int_cast<sal_uInt16>(nSelectedIndex); }
79*b1cdbd2cSJim Jagielski 	sal_uInt16						GetRowPos(sal_uInt16 _nPos) const;
80*b1cdbd2cSJim Jagielski 	sal_uInt16						GetColumnPos(sal_uInt16 _nPos) const;
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski 	void						ImplFireAccessibleEvent( short nEventId,
83*b1cdbd2cSJim Jagielski 														 const ::com::sun::star::uno::Any& rOldValue,
84*b1cdbd2cSJim Jagielski 														 const ::com::sun::star::uno::Any& rNewValue );
85*b1cdbd2cSJim Jagielski 	ScrollBar*					getScrollBar();
86*b1cdbd2cSJim Jagielski 	void						ReleaseAccessible();
87*b1cdbd2cSJim Jagielski 	sal_Int32					getMaxCharCount() const;
88*b1cdbd2cSJim Jagielski #endif // _SVX_CHARMAP_CXX_
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski protected:
91*b1cdbd2cSJim Jagielski 	virtual void    Paint( const Rectangle& );
92*b1cdbd2cSJim Jagielski 	virtual void    MouseButtonDown( const MouseEvent& rMEvt );
93*b1cdbd2cSJim Jagielski 	virtual void    MouseButtonUp( const MouseEvent& rMEvt );
94*b1cdbd2cSJim Jagielski 	virtual void    MouseMove( const MouseEvent& rMEvt );
95*b1cdbd2cSJim Jagielski 	virtual void    Command( const CommandEvent& rCEvt );
96*b1cdbd2cSJim Jagielski 	virtual void    KeyInput( const KeyEvent& rKEvt );
97*b1cdbd2cSJim Jagielski 	virtual void    GetFocus();
98*b1cdbd2cSJim Jagielski 	virtual void    LoseFocus();
99*b1cdbd2cSJim Jagielski 	virtual void	StateChanged( StateChangedType nStateChange );
100*b1cdbd2cSJim Jagielski 	virtual void	DataChanged( const DataChangedEvent& rDCEvt );
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski 
103*b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski private:
108*b1cdbd2cSJim Jagielski 	typedef ::std::map<sal_Int32, ::svx::SvxShowCharSetItem*> ItemsMap;
109*b1cdbd2cSJim Jagielski 	ItemsMap		m_aItems;
110*b1cdbd2cSJim Jagielski 	Link            aDoubleClkHdl;
111*b1cdbd2cSJim Jagielski 	Link            aSelectHdl;
112*b1cdbd2cSJim Jagielski 	Link            aHighHdl;
113*b1cdbd2cSJim Jagielski 	Link			aPreSelectHdl;
114*b1cdbd2cSJim Jagielski 	::svx::SvxShowCharSetVirtualAcc*	m_pAccessible;
115*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xAccessible;
116*b1cdbd2cSJim Jagielski 	long	        nX;
117*b1cdbd2cSJim Jagielski 	long			nY;
118*b1cdbd2cSJim Jagielski 	sal_Bool            bDrag;
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski 	sal_Int32		nSelectedIndex;
121*b1cdbd2cSJim Jagielski 
122*b1cdbd2cSJim Jagielski     FontCharMap     maFontCharMap;
123*b1cdbd2cSJim Jagielski     ScrollBar       aVscrollSB;
124*b1cdbd2cSJim Jagielski     Size            aOrigSize;
125*b1cdbd2cSJim Jagielski     Point           aOrigPos;
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski private:
128*b1cdbd2cSJim Jagielski     void            DrawChars_Impl( int n1, int n2);
129*b1cdbd2cSJim Jagielski     void            InitSettings( sal_Bool bForeground, sal_Bool bBackground);
130*b1cdbd2cSJim Jagielski     // abstraction layers are: Unicode<->MapIndex<->Pixel
131*b1cdbd2cSJim Jagielski     Point           MapIndexToPixel( int) const;
132*b1cdbd2cSJim Jagielski 	DECL_LINK( VscrollHdl, ScrollBar* );
133*b1cdbd2cSJim Jagielski };
134*b1cdbd2cSJim Jagielski 
135*b1cdbd2cSJim Jagielski #endif
136*b1cdbd2cSJim Jagielski 
137