00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifdef __GNUG__
00021 #pragma implementation "ia.h"
00022 #endif
00023
00024
00025 #include "wx/wxprec.h"
00026
00027 #if defined(__BORLANDC__)
00028 #pragma hdrstop
00029 #endif
00030
00031 #ifndef WX_PRECOMP
00032 #include "wx/wx.h"
00033 #endif
00034
00035 #include "wx/image.h"
00036
00037 #include "wx/ia/ia.h"
00038
00039 #ifdef __WXMSW__
00040 #include "wx/ia/twainbase.h"
00041 #include "wx/ia/twainmsw.h"
00042 #include "wx/ia/iatwainmsw.h"
00043 #endif
00044
00045 #ifdef __WXGTK__
00046 #include "wx/ia/sane.h"
00047 #include "wx/ia/iasane.h"
00048 #endif
00049
00050
00051
00052
00053
00054 wxIASourceInfo::wxIASourceInfo()
00055 {
00056 m_type = wxIA_SOURCE_UNKNOWN;
00057 }
00058
00059 wxIASourceInfo::wxIASourceInfo(const wxString& name, const wxString& model,
00060 const wxString& vendor, wxIASourceType type)
00061 {
00062 m_name = name;
00063 m_model = model;
00064 m_vendor = vendor;
00065 m_type = type;
00066 }
00067
00068 void
00069 wxIASourceInfo::SetName(const wxString& name)
00070 {
00071 m_name = name;
00072 }
00073
00074 wxString
00075 wxIASourceInfo::GetName() const
00076 {
00077 return m_name;
00078 }
00079
00080 void
00081 wxIASourceInfo::SetModel(const wxString& model)
00082 {
00083 m_model = model;
00084 }
00085
00086 wxString
00087 wxIASourceInfo::GetModel() const
00088 {
00089 return m_model;
00090 }
00091
00092 void
00093 wxIASourceInfo::SetVendor(const wxString& vendor)
00094 {
00095 m_vendor = vendor;
00096 }
00097
00098 wxString
00099 wxIASourceInfo::GetVendor() const
00100 {
00101 return m_vendor;
00102 }
00103
00104 void
00105 wxIASourceInfo::SetType(wxIASourceType type)
00106 {
00107 m_type = type;
00108 }
00109
00110 wxIASourceType
00111 wxIASourceInfo::GetType() const
00112 {
00113 return m_type;
00114 }
00115
00116 wxIASourceInfo wxNullIASourceInfo;
00117
00118 IMPLEMENT_CLASS(wxIAProvider, wxObject)
00119
00120 wxIAProvider::wxIAProvider()
00121 {
00122 m_evtHandler = NULL;
00123 m_transferMode = wxIA_TRANSFERMODE_NATIVE;
00124 m_transferFileType = wxIA_FILETYPE_TIFF;
00125 }
00126
00127 wxIAProvider::~wxIAProvider()
00128 {
00129 }
00130
00131 bool
00132 wxIAProvider::Ok()
00133 {
00134 return FALSE;
00135 }
00136
00137 wxString
00138 wxIAProvider::GetName()
00139 {
00140 return _T("");
00141 }
00142
00143 int
00144 wxIAProvider::GetSourceCount()
00145 {
00146 return 0;
00147 }
00148
00149 wxIASourceInfo
00150 wxIAProvider::GetSourceInfo(int i)
00151 {
00152 return wxNullIASourceInfo;
00153 }
00154
00155 wxIAReturnCode
00156 wxIAProvider::SelectSource(const wxString& name, wxIAUIMode uiMode,
00157 wxWindow* parent)
00158 {
00159 return wxIA_RC_NOTSUPPORTED;
00160 }
00161
00162 wxIAReturnCode
00163 wxIAProvider::SelectDefaultSource()
00164 {
00165 return wxIA_RC_NOTSUPPORTED;
00166 }
00167
00168 bool
00169 wxIAProvider::IsSourceSelected()
00170 {
00171 return FALSE;
00172 }
00173
00174 wxIASourceInfo
00175 wxIAProvider::GetSelSourceInfo()
00176 {
00177 return wxNullIASourceInfo;
00178 }
00179
00180 wxIAReturnCode
00181 wxIAProvider::SetSelSourceConfig(const wxString& configString)
00182 {
00183 return wxIA_RC_NOTSUPPORTED;
00184 }
00185
00186 wxString
00187 wxIAProvider::GetSelSourceConfig()
00188 {
00189 return _T("");
00190 }
00191
00192 wxIAReturnCode
00193 wxIAProvider::AcquireImage(wxIAUIMode uiMode, wxWindow* parent,
00194 wxIAMonitor *mon)
00195 {
00196 return AcquireImages(1, uiMode, parent, mon);
00197 }
00198
00199 wxIAReturnCode
00200 wxIAProvider::AcquireImages(int numImages, wxIAUIMode uiMode, wxWindow *parent,
00201 wxIAMonitor* mon)
00202 {
00203 return wxIA_RC_NOTSUPPORTED;
00204 }
00205
00206 void
00207 wxIAProvider::SetEvtHandler(wxEvtHandler* evtHandler)
00208 {
00209 m_evtHandler = evtHandler;
00210 }
00211
00212 wxEvtHandler*
00213 wxIAProvider::GetEvtHandler()
00214 {
00215 return m_evtHandler;
00216 }
00217
00218 wxImage
00219 wxIAProvider::GetImage()
00220 {
00221 return wxNullImage;
00222 }
00223
00224 wxBitmap
00225 wxIAProvider::GetBitmap()
00226 {
00227 return wxNullBitmap;
00228 }
00229
00230 bool
00231 wxIAProvider::SaveSettings(wxConfigBase* config)
00232 {
00233 return TRUE;
00234 }
00235
00236 bool
00237 wxIAProvider::LoadSettings(wxConfigBase* config)
00238 {
00239 return TRUE;
00240 }
00241
00242 wxIAReturnCode
00243 wxIAProvider::SetTransferMode(wxIATransferMode mode)
00244 {
00245 m_transferMode = mode;
00246 return wxIA_RC_SUCCESS;
00247 }
00248
00249 wxIATransferMode
00250 wxIAProvider::GetTransferMode()
00251 {
00252 return m_transferMode;
00253 }
00254
00255 wxIAReturnCode
00256 wxIAProvider::SetTransferFilename(const wxString& filename,
00257 wxIATransferFileType type)
00258 {
00259 m_transferFilename = filename;
00260 m_transferFileType = type;
00261 return wxIA_RC_SUCCESS;
00262 }
00263
00264 wxString
00265 wxIAProvider::GetTransferFilename()
00266 {
00267 return m_transferFilename;
00268 }
00269
00270 wxIATransferFileType
00271 wxIAProvider::GetTransferFileType()
00272 {
00273 return m_transferFileType;
00274 }
00275
00276 wxIAReturnCode
00277 wxIAProvider::SetTransferBuffer(void* buffer, size_t size)
00278 {
00279 m_transferBuffer = buffer;
00280 m_transferBufferSize = size;
00281 return wxIA_RC_SUCCESS;
00282 }
00283
00284 void*
00285 wxIAProvider::GetTransferBuffer()
00286 {
00287 return m_transferBuffer;
00288 }
00289
00290 size_t
00291 wxIAProvider::GetTransferBufferSize()
00292 {
00293 return m_transferBufferSize;
00294 }
00295
00296 IMPLEMENT_CLASS(wxIAManager, wxObject)
00297
00298 bool wxIAManager::s_init = FALSE;
00299
00300 wxIAProvider* wxIAManager::s_defaultProvider = NULL;
00301
00302 wxIAManager&
00303 wxIAManager::Get()
00304 {
00305 static wxIAManager manager;
00306
00307 if(!s_init)
00308 {
00309 #ifdef __WXMSW__
00310 manager.AddProvider(s_defaultProvider = new wxIATwainMSWProvider());
00311 #endif
00312
00313 #ifdef __WXGTK__
00314 manager.AddProvider(s_defaultProvider = new wxIASaneProvider());
00315 #endif
00316 s_init = TRUE;
00317 }
00318
00319 return manager;
00320 }
00321
00322 void
00323 wxIAManager::AddProvider(wxIAProvider* provider)
00324 {
00325 m_providers.Add(provider);
00326 }
00327
00328 wxIAProviderPtrArray&
00329 wxIAManager::GetProviders()
00330 {
00331 return m_providers;
00332 }
00333
00334 wxIAProvider*
00335 wxIAManager::GetDefaultProvider()
00336 {
00337 return s_defaultProvider;
00338 }
00339
00340 wxString
00341 wxIAManager::GetReturnCodeDesc(wxIAReturnCode rc)
00342 {
00343 static wxString
00344 desc[] =
00345 {
00346 _("Success"),
00347 _("Unknown error"),
00348 _("Operation not supported"),
00349 _("Operation cancelled by user"),
00350 _("Device not ready"),
00351 _("Device busy"),
00352 _("Invalid data or argument"),
00353 _("Document feeder jammed"),
00354 _("Document feeder out of documents"),
00355 _("Scanner cover is open"),
00356 _("Error during device I/O"),
00357 _("Out of memory"),
00358 _("Access denied"),
00359 _("No source selected"),
00360 _("Not initialized")
00361 };
00362
00363 if(rc >= 0 && rc < (int)wxIA_RC_NOTINITIALIZED)
00364 return(desc[(int)rc]);
00365
00366 return wxEmptyString;
00367 }
00368
00369 wxIAManager::wxIAManager()
00370 {
00371 }
00372
00373 wxIAManager::~wxIAManager()
00374 {
00375 size_t i;
00376
00377 for(i = 0; i < m_providers.GetCount(); i++)
00378 delete m_providers[i];
00379 }
00380
00381 DEFINE_EVENT_TYPE(wxEVT_IA_GETIMAGE)
00382 DEFINE_EVENT_TYPE(wxEVT_IA_UPDATE)
00383
00384 wxIAEvent::wxIAEvent(wxEventType type, wxIAProvider* provider) :
00385 wxEvent(-1, type)
00386 {
00387 m_provider = provider;
00388 m_abort = FALSE;
00389 }
00390
00391 wxIAEvent::wxIAEvent(wxEventType type, wxIAProvider* provider,
00392 const wxString& text, size_t quantum, size_t span) :
00393 wxEvent(-1, type)
00394 {
00395 m_provider = provider;
00396 m_text = text;
00397 m_quantum = quantum;
00398 m_span = span;
00399 m_abort = FALSE;
00400 }
00401
00402 wxIAEvent::wxIAEvent(const wxIAEvent& event) :
00403 wxEvent(event)
00404 {
00405 m_provider = event.m_provider;
00406 m_text = event.m_text;
00407 m_quantum = event.m_quantum;
00408 m_span = event.m_span;
00409 m_abort = event.m_abort;
00410 }
00411