xref: /AOO41X/main/extensions/source/scanner/sanedlg.hxx (revision 46dbaceef8c12a09e4905feda473ecab36e10d03)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef _SVT_SANEDLG_HXX
24 #define _SVT_SANEDLG_HXX
25 
26 #include <vcl/dialog.hxx>
27 #include <tools/config.hxx>
28 #include <vcl/lstbox.hxx>
29 #ifndef _SV_BUTTON_HXX
30 #include <vcl/button.hxx>
31 #endif
32 #include <vcl/fixed.hxx>
33 #include <vcl/group.hxx>
34 #include <vcl/field.hxx>
35 #include <vcl/edit.hxx>
36 #include <svtools/svtreebx.hxx>
37 
38 #include <sane.hxx>
39 
40 class SaneDlg : public ModalDialog
41 {
42 private:
43     enum DragDirection { TopLeft, Top, TopRight, Right, BottomRight, Bottom,
44                          BottomLeft, Left };
45 
46     Sane&           mrSane;
47     Bitmap          maPreviewBitmap;
48     Rectangle       maPreviewRect;
49     Point           maTopLeft, maBottomRight;
50     Point           maMinTopLeft, maMaxBottomRight;
51     sal_Bool            mbDragEnable;
52     sal_Bool            mbIsDragging;
53     int             mnDragMode;
54     sal_Bool            mbDragDrawn;
55     DragDirection   meDragDirection;
56 
57     MapMode         maMapMode;
58 
59     Link            maOldLink;
60 
61     OKButton        maOKButton;
62     CancelButton    maCancelButton;
63     PushButton      maDeviceInfoButton;
64     PushButton      maPreviewButton;
65     PushButton      maButtonOption;
66 
67     FixedText       maOptionsTxt;
68     FixedText       maOptionTitle;
69     FixedText       maOptionDescTxt;
70     FixedText       maVectorTxt;
71 
72     FixedText       maScanLeftTxt;
73     MetricField     maLeftField;
74     FixedText       maScanTopTxt;
75     MetricField     maTopField;
76     FixedText       maRightTxt;
77     MetricField     maRightField;
78     FixedText       maBottomTxt;
79     MetricField     maBottomField;
80 
81     FixedText       maDeviceBoxTxt;
82     ListBox         maDeviceBox;
83     FixedText       maReslTxt;
84     NumericBox      maReslBox;
85     FixedText       maAdvancedTxt;
86     CheckBox        maAdvancedBox;
87 
88     NumericField    maVectorBox;
89     ListBox         maQuantumRangeBox;
90     ListBox         maStringRangeBox;
91 
92     FixedLine       maPreviewBox;
93     FixedLine       maAreaBox;
94 
95     CheckBox        maBoolCheckBox;
96 
97     Edit            maStringEdit;
98     Edit            maNumericEdit;
99 
100     SvTreeListBox   maOptionBox;
101 
102     int             mnCurrentOption;
103     int             mnCurrentElement;
104     double*         mpRange;
105     double          mfMin, mfMax;
106 
107     DECL_LINK( ClickBtnHdl, Button* );
108     DECL_LINK( SelectHdl, ListBox* );
109     DECL_LINK( ModifyHdl, Edit* );
110     DECL_LINK( ReloadSaneOptionsHdl, Sane* );
111     DECL_LINK( OptionsBoxSelectHdl, SvTreeListBox* );
112 
113     void SaveState();
114     sal_Bool LoadState();
115 
116     void InitDevices();
117     void InitFields();
118     void AcquirePreview();
119     void DisableOption();
120     void EstablishBoolOption();
121     void EstablishStringOption();
122     void EstablishStringRange();
123     void EstablishQuantumRange();
124     void EstablishNumericOption();
125     void EstablishButtonOption();
126 
127     void DrawRectangles( Point&, Point& );
128     void DrawDrag();
129     Point GetPixelPos( const Point& );
130     Point GetLogicPos( const Point& );
131     void UpdateScanArea( sal_Bool );
132 
133     // helper
134     sal_Bool SetAdjustedNumericalValue( const char* pOption, double fValue, int nElement = 0 );
135 
136     virtual void Paint( const Rectangle& );
137     virtual void MouseMove( const MouseEvent& rMEvt );
138     virtual void MouseButtonDown( const MouseEvent& rMEvt );
139     virtual void MouseButtonUp( const MouseEvent& rMEvt );
140 public:
141     SaneDlg( Window*, Sane& );
142     ~SaneDlg();
143 
144     virtual short Execute();
145 };
146 
147 
148 #endif
149