You can subscribe to this list here.
2008 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
(6) |
Oct
(3) |
Nov
(1) |
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(3) |
Feb
|
Mar
(2) |
Apr
|
May
(3) |
Jun
(4) |
Jul
(3) |
Aug
(2) |
Sep
(4) |
Oct
(1) |
Nov
(12) |
Dec
(11) |
2010 |
Jan
(3) |
Feb
(6) |
Mar
(2) |
Apr
(6) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(8) |
Oct
(4) |
Nov
(1) |
Dec
|
From: <jh...@us...> - 2010-11-06 20:09:46
|
Revision: 101 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=101&view=rev Author: jharju Date: 2010-11-06 20:09:40 +0000 (Sat, 06 Nov 2010) Log Message: ----------- Added some more strings. Experimenting with collapsible panes. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/main.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.ui trunk/TWAIN-Samples/common/TwainString.cpp trunk/TWAIN-Samples/common/TwainString.h Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-10-07 15:48:22 UTC (rev 100) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-11-06 20:09:40 UTC (rev 101) @@ -20,8 +20,8 @@ <Configurations> <Configuration Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" + OutputDirectory="$(ConfigurationName)\$(PlatformName)" + IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" ConfigurationType="1" CharacterSet="1" > @@ -48,7 +48,7 @@ TreatWChar_tAsBuiltInType="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="stdafx.h" - PrecompiledHeaderFile=".\$(ConfigurationName)/TWAIN_App_QT.pch" + PrecompiledHeaderFile="$(IntDir)\$(TargetName).pch" DebugInformationFormat="0" /> <Tool @@ -93,8 +93,8 @@ </Configuration> <Configuration Name="Release|x64" - OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" - IntermediateDirectory="$(PlatformName)\$(ConfigurationName)64" + OutputDirectory="$(ConfigurationName)\$(PlatformName)" + IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" ConfigurationType="1" CharacterSet="1" > @@ -122,7 +122,7 @@ TreatWChar_tAsBuiltInType="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="stdafx.h" - PrecompiledHeaderFile=".\$(ConfigurationName)/TWAIN_App_QT.pch" + PrecompiledHeaderFile="$(IntDir)\$(TargetName).pch" DebugInformationFormat="0" /> <Tool @@ -168,8 +168,8 @@ </Configuration> <Configuration Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" + OutputDirectory="$(ConfigurationName)\$(PlatformName)" + IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" ConfigurationType="1" CharacterSet="1" > @@ -197,7 +197,7 @@ TreatWChar_tAsBuiltInType="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="stdafx.h" - PrecompiledHeaderFile=".\$(ConfigurationName)/TWAIN_App_QT.pch" + PrecompiledHeaderFile="$(IntDir)\$(TargetName).pch" DebugInformationFormat="3" /> <Tool @@ -242,8 +242,8 @@ </Configuration> <Configuration Name="Debug|x64" - OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" - IntermediateDirectory="$(PlatformName)\$(ConfigurationName)64" + OutputDirectory="$(ConfigurationName)\$(PlatformName)" + IntermediateDirectory="$(ConfigurationName)\$(PlatformName)" ConfigurationType="1" CharacterSet="1" > @@ -272,7 +272,7 @@ TreatWChar_tAsBuiltInType="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="stdafx.h" - PrecompiledHeaderFile=".\$(ConfigurationName)/TWAIN_App_QT.pch" + PrecompiledHeaderFile="$(IntDir)\$(TargetName).pch" DebugInformationFormat="3" /> <Tool @@ -1260,26 +1260,6 @@ SourceControlFiles="false" > <File - RelativePath=".\GeneratedFiles\Debug\moc_enumset.cpp" - > - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|x64" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - </File> - <File RelativePath=".\GeneratedFiles\Release\moc_enumset.cpp" > <FileConfiguration @@ -1300,7 +1280,7 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_extimageinfosel.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_enumset.cpp" > <FileConfiguration Name="Release|Win32" @@ -1340,7 +1320,7 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_meterdlg.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_extimageinfosel.cpp" > <FileConfiguration Name="Release|Win32" @@ -1380,10 +1360,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_setstate.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_meterdlg.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1391,7 +1371,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1420,7 +1400,7 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_structureedit.cpp" + RelativePath=".\GeneratedFiles\Release\moc_setstate.cpp" > <FileConfiguration Name="Debug|Win32" @@ -1440,10 +1420,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_structureedit.cpp" + RelativePath=".\GeneratedFiles\Release\moc_structureedit.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1451,7 +1431,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1460,10 +1440,11 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_twain_app_qt.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_structureedit.cpp" > <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1471,27 +1452,12 @@ </FileConfiguration> <FileConfiguration Name="Release|x64" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32" ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" /> </FileConfiguration> - <FileConfiguration - Name="Debug|x64" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> </File> <File RelativePath=".\GeneratedFiles\Debug\moc_twain_app_qt.cpp" @@ -1512,8 +1478,13 @@ Name="VCCLCompilerTool" /> </FileConfiguration> + </File> + <File + RelativePath=".\GeneratedFiles\Release\moc_twain_app_qt.cpp" + > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1521,6 +1492,7 @@ </FileConfiguration> <FileConfiguration Name="Debug|x64" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/main.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/main.cpp 2010-10-07 15:48:22 UTC (rev 100) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/main.cpp 2010-11-06 20:09:40 UTC (rev 101) @@ -8,6 +8,8 @@ CQTWAINApp a(argc, argv); //Instantiate the scripting engine QScriptEngine qsEngine; + + QString strStr = QLibraryInfo::location(QLibraryInfo::PluginsPath); //Create the main window TWAIN_App_QT w(&qsEngine); a.m_pMainWnd = &w; Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-10-07 15:48:22 UTC (rev 100) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-11-06 20:09:40 UTC (rev 101) @@ -88,6 +88,9 @@ SSTRCPY(m_twAppIdentity.ProductFamily, sizeof(m_twAppIdentity.ProductFamily), "Sample Applications"); SSTRCPY(m_twAppIdentity.ProductName, sizeof(m_twAppIdentity.ProductName), "QT Sample App"); + //QMotifStyle + ui.splConfigAcquire->setStyle(new QCDEStyle()); + //Populate the triplet list, this never changes and only needs to be done once PopulateTripletList(); //Populate the capability list with all known capabilities, only needs to be done once @@ -1680,9 +1683,15 @@ void TWAIN_App_QT::OnPendingXfers(TW_UINT16 twMsg) { - TraceMessage("OnPendingXfers / %s not implemented yet", convertMessage_toString(twMsg)); switch(twMsg) { + case MSG_GET: + case MSG_STOPFEEDER: + if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_PENDINGXFERS, twMsg, &m_twPendingXfers, &m_twSourceIdentity)) + { + TraceStruct(m_twSetupMemXfer); + } + break; } return; } @@ -1692,7 +1701,7 @@ switch(twMsg) { case MSG_GET: - if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_SETUPMEMXFER, MSG_GET, &m_twSetupMemXfer, &m_twSourceIdentity)) + if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_SETUPMEMXFER, twMsg, &m_twSetupMemXfer, &m_twSourceIdentity)) { TraceStruct(m_twSetupMemXfer); } @@ -2017,6 +2026,7 @@ void TWAIN_App_QT::TraceStruct(const TW_PENDINGXFERS &twData) { + TraceMessage("Count = %d, EOJ = %s", twData.Count, convertEOJ_toString(twData.EOJ)); return; } Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.ui =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.ui 2010-10-07 15:48:22 UTC (rev 100) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.ui 2010-11-06 20:09:40 UTC (rev 101) @@ -155,8 +155,11 @@ <property name="opaqueResize"> <bool>true</bool> </property> + <property name="handleWidth"> + <number>10</number> + </property> <property name="childrenCollapsible"> - <bool>false</bool> + <bool>true</bool> </property> <widget class="QGroupBox" name="groupBox_2"> <property name="sizePolicy"> Modified: trunk/TWAIN-Samples/common/TwainString.cpp =================================================================== --- trunk/TWAIN-Samples/common/TwainString.cpp 2010-10-07 15:48:22 UTC (rev 100) +++ trunk/TWAIN-Samples/common/TwainString.cpp 2010-11-06 20:09:40 UTC (rev 101) @@ -6935,3 +6935,44 @@ { return CapabilityValueToString(ICAP_IMAGEFILEFORMAT, TWTY_UINT16, &_nItem); } + +const char *convertEOJ_toString(const TW_UINT16 _nItem) +{ + const char *strRet = NULL; + switch(_nItem) + { + case TWEJ_NONE: + strRet = "TWEJ_NONE"; + break; + case TWEJ_MIDSEPARATOR: + strRet = "TWEJ_MIDSEPARATOR"; + break; + case TWEJ_PATCH1: + strRet = "TWEJ_PATCH1"; + break; + case TWEJ_PATCH2: + strRet = "TWEJ_PATCH2"; + break; + case TWEJ_PATCH3: + strRet = "TWEJ_PATCH3"; + break; + case TWEJ_PATCH4: + strRet = "TWEJ_PATCH4"; + break; + case TWEJ_PATCH6: + strRet = "TWEJ_PATCH6"; + break; + case TWEJ_PATCHT: + strRet = "TWEJ_PATCHT"; + break; + default: + { + char * buff = nextTempBuffer(); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Un-recognized FileType 0x%04X", _nItem); + strRet = buff; + } + break; + } + return strRet; +} + Modified: trunk/TWAIN-Samples/common/TwainString.h =================================================================== --- trunk/TWAIN-Samples/common/TwainString.h 2010-10-07 15:48:22 UTC (rev 100) +++ trunk/TWAIN-Samples/common/TwainString.h 2010-11-06 20:09:40 UTC (rev 101) @@ -482,12 +482,18 @@ * @param[in] _unItem the value * @return the equivalent string */ -const char *convertFileType_toString(const TW_UINT16 _nItem); +const char *convertFileType_toString(const TW_UINT16 _unItem); /** * converts the TWAIN TWFF_ value to string form * @param[in] _unItem the value * @return the equivalent string */ const char *convertFileFormat_toString(const TW_UINT16 _unItem); +/** +* converts the TWAIN TWEJ_ value to string form +* @param[in] _unItem the value +* @return the equivalent string +*/ +const char *convertEOJ_toString(const TW_UINT16 _unItem); #endif // __TWAINSTRING_H__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jh...@us...> - 2010-10-07 15:48:28
|
Revision: 100 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=100&view=rev Author: jharju Date: 2010-10-07 15:48:22 +0000 (Thu, 07 Oct 2010) Log Message: ----------- Fixed 32bit debug configuration Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj.user Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj.user =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj.user 2010-10-07 15:44:52 UTC (rev 99) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj.user 2010-10-07 15:48:22 UTC (rev 100) @@ -9,8 +9,8 @@ Name="Release|Win32" > <DebugSettings - Command="$(TargetPath)" - WorkingDirectory="" + Command=""$(ProjectDir)..\..\..\pub\bin\$(TargetFileName)"" + WorkingDirectory=""$(ProjectDir)..\..\..\pub\bin"" CommandArguments="" Attach="false" DebuggerType="3" @@ -65,8 +65,8 @@ Name="Debug|Win32" > <DebugSettings - Command="$(TargetPath)" - WorkingDirectory="" + Command=""$(ProjectDir)..\..\..\pub\bin\$(TargetFileName)"" + WorkingDirectory=""$(ProjectDir)..\..\..\pub\bin"" CommandArguments="" Attach="false" DebuggerType="3" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jh...@us...> - 2010-10-07 15:44:58
|
Revision: 99 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=99&view=rev Author: jharju Date: 2010-10-07 15:44:52 +0000 (Thu, 07 Oct 2010) Log Message: ----------- Added a vcproj.user file containing the correct debug options for a starter Added Paths: ----------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj.user Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj.user =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj.user (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj.user 2010-10-07 15:44:52 UTC (rev 99) @@ -0,0 +1,121 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioUserFile + ProjectType="Visual C++" + Version="9.00" + ShowAllFiles="false" + > + <Configurations> + <Configuration + Name="Release|Win32" + > + <DebugSettings + Command="$(TargetPath)" + WorkingDirectory="" + CommandArguments="" + Attach="false" + DebuggerType="3" + Remote="1" + RemoteMachine="JONHOME-PC" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="PATH=$(QTDIR)\bin;$(QTDIR)\lib;$(PATH)" + EnvironmentMerge="true" + DebuggerFlavor="0" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + </Configuration> + <Configuration + Name="Release|x64" + > + <DebugSettings + Command=""$(ProjectDir)..\..\..\pub\bin\$(TargetFileName)"" + WorkingDirectory=""$(ProjectDir)..\..\..\pub\bin"" + CommandArguments="" + Attach="false" + DebuggerType="3" + Remote="1" + RemoteMachine="JONHOME-PC" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="PATH=$(QTDIR_64)\bin;$(QTDIR_64)\lib;$(PATH)" + EnvironmentMerge="true" + DebuggerFlavor="0" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + </Configuration> + <Configuration + Name="Debug|Win32" + > + <DebugSettings + Command="$(TargetPath)" + WorkingDirectory="" + CommandArguments="" + Attach="false" + DebuggerType="3" + Remote="1" + RemoteMachine="JONHOME-PC" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="PATH=$(QTDIR)\bin;$(QTDIR)\lib;$(PATH)" + EnvironmentMerge="true" + DebuggerFlavor="0" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + </Configuration> + <Configuration + Name="Debug|x64" + > + <DebugSettings + Command=""$(ProjectDir)..\..\..\pub\bin\$(TargetFileName)"" + WorkingDirectory=""$(ProjectDir)..\..\..\pub\bin"" + CommandArguments="" + Attach="false" + DebuggerType="3" + Remote="1" + RemoteMachine="JONHOME-PC" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="PATH=$(QTDIR_64)\bin;$(QTDIR_64)\lib;$(PATH)" + EnvironmentMerge="true" + DebuggerFlavor="0" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + </Configuration> + </Configurations> +</VisualStudioUserFile> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jh...@us...> - 2010-10-07 12:21:39
|
Revision: 98 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=98&view=rev Author: jharju Date: 2010-10-07 12:21:33 +0000 (Thu, 07 Oct 2010) Log Message: ----------- Fixed several solution and project issues. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT.sln Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-10-04 19:11:32 UTC (rev 97) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-10-07 12:21:33 UTC (rev 98) @@ -88,13 +88,13 @@ /> <Tool Name="VCPostBuildEventTool" - CommandLine="copy "$(TargetPath)" "$(ProjectDir)\..\pub\bin" & copy "$(ProjectDir)\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)\..\pub\bin"" + CommandLine="copy "$(TargetPath)" "$(ProjectDir)..\..\..\pub\bin"
copy "$(ProjectDir)..\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)..\..\..\pub\bin"
" /> </Configuration> <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" - IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)64" ConfigurationType="1" CharacterSet="1" > @@ -163,7 +163,7 @@ /> <Tool Name="VCPostBuildEventTool" - CommandLine="copy "$(TargetPath)" "$(ProjectDir)\..\pub\bin" & copy "$(ProjectDir)\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)\..\pub\bin"" + CommandLine="copy "$(TargetPath)" "$(ProjectDir)..\..\..\pub\bin" & copy "$(ProjectDir)..\..\..\pub\external\bin\FreeImagex64.dll" "$(ProjectDir)..\..\..\pub\bin"" /> </Configuration> <Configuration @@ -237,13 +237,13 @@ /> <Tool Name="VCPostBuildEventTool" - CommandLine="copy "$(TargetPath)" "$(ProjectDir)\..\..\pub\bin"
copy "$(ProjectDir)\..\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)\..\..\pub\bin"
" + CommandLine="copy "$(TargetPath)" "$(ProjectDir)..\..\..\pub\bin"
copy "$(ProjectDir)..\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)..\..\..\pub\bin"
" /> </Configuration> <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" - IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)64" ConfigurationType="1" CharacterSet="1" > @@ -313,7 +313,7 @@ /> <Tool Name="VCPostBuildEventTool" - CommandLine="copy "$(TargetPath)" "$(ProjectDir)\..\..\pub\bin"
copy "$(ProjectDir)\..\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)\..\..\pub\bin"
" + CommandLine="copy "$(TargetPath)" "$(ProjectDir)..\..\..\pub\bin"
copy "$(ProjectDir)..\..\..\pub\external\bin\FreeImagedx64.dll" "$(ProjectDir)..\..\..\pub\bin"
" /> </Configuration> </Configurations> @@ -1260,10 +1260,10 @@ SourceControlFiles="false" > <File - RelativePath=".\GeneratedFiles\Release\moc_enumset.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_enumset.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1271,7 +1271,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1280,10 +1280,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_enumset.cpp" + RelativePath=".\GeneratedFiles\Release\moc_enumset.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1291,7 +1291,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1300,10 +1300,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_extimageinfosel.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_extimageinfosel.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1311,7 +1311,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1320,10 +1320,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_extimageinfosel.cpp" + RelativePath=".\GeneratedFiles\Release\moc_extimageinfosel.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1331,7 +1331,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1340,10 +1340,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_meterdlg.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_meterdlg.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1351,7 +1351,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1360,10 +1360,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_meterdlg.cpp" + RelativePath=".\GeneratedFiles\Release\moc_meterdlg.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1371,7 +1371,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1380,10 +1380,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_setstate.cpp" + RelativePath=".\GeneratedFiles\Release\moc_setstate.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1391,7 +1391,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1400,10 +1400,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_setstate.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_setstate.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1411,7 +1411,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1460,11 +1460,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_twain_app_qt.cpp" + RelativePath=".\GeneratedFiles\Release\moc_twain_app_qt.cpp" > <FileConfiguration Name="Release|Win32" - ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1472,7 +1471,6 @@ </FileConfiguration> <FileConfiguration Name="Release|x64" - ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1480,6 +1478,7 @@ </FileConfiguration> <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1487,6 +1486,7 @@ </FileConfiguration> <FileConfiguration Name="Debug|x64" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1494,10 +1494,11 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_twain_app_qt.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_twain_app_qt.cpp" > <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1505,6 +1506,7 @@ </FileConfiguration> <FileConfiguration Name="Release|x64" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1512,7 +1514,6 @@ </FileConfiguration> <FileConfiguration Name="Debug|Win32" - ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1520,7 +1521,6 @@ </FileConfiguration> <FileConfiguration Name="Debug|x64" - ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1612,7 +1612,7 @@ /> <Global Name="QtVersion Win32" - Value="4.6.3" + Value="$(DefaultQtVersion)" /> <Global Name="RccDir" Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT.sln =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT.sln 2010-10-04 19:11:32 UTC (rev 97) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT.sln 2010-10-07 12:21:33 UTC (rev 98) @@ -24,6 +24,6 @@ HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - QtVersion = 4.6.3 + QtVersion = $(DefaultQtVersion) EndGlobalSection EndGlobal This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jh...@us...> - 2010-10-04 19:11:39
|
Revision: 97 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=97&view=rev Author: jharju Date: 2010-10-04 19:11:32 +0000 (Mon, 04 Oct 2010) Log Message: ----------- Added some tracing for features not yet implemented. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-09-22 19:51:10 UTC (rev 96) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-10-04 19:11:32 UTC (rev 97) @@ -92,9 +92,9 @@ /> </Configuration> <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" + Name="Release|x64" + OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" CharacterSet="1" > @@ -112,18 +112,18 @@ /> <Tool Name="VCMIDLTool" + TargetEnvironment="3" /> <Tool Name="VCCLCompilerTool" - Optimization="0" AdditionalIncludeDirectories=".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.;.\..;.\..\..\..\pub\external\include;.\..\..\..\Common;$(QTDIR)\include\QtScript" - PreprocessorDefinitions="UNICODE,WIN32,QT_THREAD_SUPPORT,QT_CORE_LIB,QT_GUI_LIB,QT_SCRIPT_LIB" - RuntimeLibrary="3" + PreprocessorDefinitions="UNICODE,WIN32,QT_THREAD_SUPPORT,QT_NO_DEBUG,NDEBUG,QT_CORE_LIB,QT_GUI_LIB,QT_SCRIPT_LIB" + RuntimeLibrary="2" TreatWChar_tAsBuiltInType="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="stdafx.h" PrecompiledHeaderFile=".\$(ConfigurationName)/TWAIN_App_QT.pch" - DebugInformationFormat="3" + DebugInformationFormat="0" /> <Tool Name="VCManagedResourceCompilerTool" @@ -136,11 +136,12 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies=" qtmaind.lib QtCored4.lib QtGuid4.lib FreeImage.lib QtScriptd4.lib" - OutputFile="$(OutDir)\$(ProjectName)32d.exe" - AdditionalLibraryDirectories="$(QTDIR)\lib;..\..\..\pub\external\lib;..\..\..\pub\lib" - GenerateDebugInformation="true" + AdditionalDependencies=" qtmain.lib QtCore4.lib QtGui4.lib FreeImagex64.lib QtScript4.lib" + OutputFile="$(OutDir)\$(ProjectName)64.exe" + AdditionalLibraryDirectories="$(QTDIR_64)\lib;..\..\..\pub\external\lib;..\..\..\pub\lib" + GenerateDebugInformation="false" SubSystem="2" + TargetMachine="17" /> <Tool Name="VCALinkTool" @@ -162,13 +163,13 @@ /> <Tool Name="VCPostBuildEventTool" - CommandLine="copy "$(TargetPath)" "$(ProjectDir)\..\..\pub\bin"
copy "$(ProjectDir)\..\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)\..\..\pub\bin"
" + CommandLine="copy "$(TargetPath)" "$(ProjectDir)\..\pub\bin" & copy "$(ProjectDir)\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)\..\pub\bin"" /> </Configuration> <Configuration - Name="Release|x64" - OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" - IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" ConfigurationType="1" CharacterSet="1" > @@ -186,18 +187,18 @@ /> <Tool Name="VCMIDLTool" - TargetEnvironment="3" /> <Tool Name="VCCLCompilerTool" + Optimization="0" AdditionalIncludeDirectories=".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.;.\..;.\..\..\..\pub\external\include;.\..\..\..\Common;$(QTDIR)\include\QtScript" - PreprocessorDefinitions="UNICODE,WIN32,QT_THREAD_SUPPORT,QT_NO_DEBUG,NDEBUG,QT_CORE_LIB,QT_GUI_LIB,QT_SCRIPT_LIB" - RuntimeLibrary="2" + PreprocessorDefinitions="UNICODE,WIN32,QT_THREAD_SUPPORT,QT_CORE_LIB,QT_GUI_LIB,QT_SCRIPT_LIB" + RuntimeLibrary="3" TreatWChar_tAsBuiltInType="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="stdafx.h" PrecompiledHeaderFile=".\$(ConfigurationName)/TWAIN_App_QT.pch" - DebugInformationFormat="0" + DebugInformationFormat="3" /> <Tool Name="VCManagedResourceCompilerTool" @@ -210,12 +211,11 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies=" qtmain.lib QtCore4.lib QtGui4.lib FreeImagex64.lib QtScript4.lib" - OutputFile="$(OutDir)\$(ProjectName)64.exe" - AdditionalLibraryDirectories="$(QTDIR_64)\lib;..\..\..\pub\external\lib;..\..\..\pub\lib" - GenerateDebugInformation="false" + AdditionalDependencies=" qtmaind.lib QtCored4.lib QtGuid4.lib FreeImage.lib QtScriptd4.lib" + OutputFile="$(OutDir)\$(ProjectName)32d.exe" + AdditionalLibraryDirectories="$(QTDIR)\lib;..\..\..\pub\external\lib;..\..\..\pub\lib" + GenerateDebugInformation="true" SubSystem="2" - TargetMachine="17" /> <Tool Name="VCALinkTool" @@ -237,7 +237,7 @@ /> <Tool Name="VCPostBuildEventTool" - CommandLine="copy "$(TargetPath)" "$(ProjectDir)\..\pub\bin" & copy "$(ProjectDir)\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)\..\pub\bin"" + CommandLine="copy "$(TargetPath)" "$(ProjectDir)\..\..\pub\bin"
copy "$(ProjectDir)\..\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)\..\..\pub\bin"
" /> </Configuration> <Configuration @@ -337,7 +337,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCLCompilerTool" @@ -345,7 +345,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" @@ -377,7 +377,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCLCompilerTool" @@ -385,7 +385,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" @@ -413,7 +413,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCLCompilerTool" @@ -421,7 +421,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" @@ -469,7 +469,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCLCompilerTool" @@ -477,7 +477,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" @@ -517,7 +517,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCLCompilerTool" @@ -525,7 +525,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" @@ -553,7 +553,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCLCompilerTool" @@ -561,7 +561,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" @@ -612,29 +612,29 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\enumset.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\enumset.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\enumset.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\enumset.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\enumset.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\enumset.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\enumset.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\enumset.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\enumset.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\enumset.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\enumset.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\enumset.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -645,7 +645,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\enumset.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\enumset.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\enumset.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\enumset.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -660,29 +660,29 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -693,7 +693,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -708,29 +708,29 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\meterdlg.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\meterdlg.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\meterdlg.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\meterdlg.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\meterdlg.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\meterdlg.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\meterdlg.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\meterdlg.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\meterdlg.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\meterdlg.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\meterdlg.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\meterdlg.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -741,7 +741,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\meterdlg.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\meterdlg.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\meterdlg.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\meterdlg.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -756,29 +756,29 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\setstate.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\setstate.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\setstate.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\setstate.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\setstate.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\setstate.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\setstate.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\setstate.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\setstate.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\setstate.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\setstate.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\setstate.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -789,7 +789,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\setstate.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\setstate.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\setstate.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\setstate.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -808,29 +808,29 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -841,7 +841,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -856,29 +856,29 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\twain_app_qt.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\twain_app_qt.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\twain_app_qt.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\twain_app_qt.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\twain_app_qt.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\twain_app_qt.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\twain_app_qt.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\twain_app_qt.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\twain_app_qt.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\twain_app_qt.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\twain_app_qt.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\twain_app_qt.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -889,7 +889,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\twain_app_qt.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\twain_app_qt.h"
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." -I"$(QTDIR)\include\QtScript\." ".\twain_app_qt.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\twain_app_qt.h"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -924,7 +924,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" @@ -935,7 +935,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" @@ -972,7 +972,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" @@ -983,7 +983,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" @@ -1020,7 +1020,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" @@ -1031,7 +1031,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" @@ -1068,7 +1068,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" @@ -1079,7 +1079,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" @@ -1116,7 +1116,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" @@ -1127,7 +1127,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" @@ -1164,7 +1164,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" @@ -1175,7 +1175,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" @@ -1219,7 +1219,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCustomBuildTool" @@ -1230,7 +1230,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCustomBuildTool" @@ -1260,10 +1260,10 @@ SourceControlFiles="false" > <File - RelativePath=".\GeneratedFiles\Debug\moc_enumset.cpp" + RelativePath=".\GeneratedFiles\Release\moc_enumset.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1271,7 +1271,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1280,10 +1280,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_enumset.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_enumset.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1291,7 +1291,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1300,10 +1300,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_extimageinfosel.cpp" + RelativePath=".\GeneratedFiles\Release\moc_extimageinfosel.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1311,7 +1311,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1320,10 +1320,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_extimageinfosel.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_extimageinfosel.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1331,7 +1331,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1340,10 +1340,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_meterdlg.cpp" + RelativePath=".\GeneratedFiles\Release\moc_meterdlg.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1351,7 +1351,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1360,10 +1360,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_meterdlg.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_meterdlg.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1371,7 +1371,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1380,10 +1380,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_setstate.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_setstate.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1391,7 +1391,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1400,10 +1400,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_setstate.cpp" + RelativePath=".\GeneratedFiles\Release\moc_setstate.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1411,7 +1411,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1460,17 +1460,18 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_twain_app_qt.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_twain_app_qt.cpp" > <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1478,7 +1479,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" @@ -1486,7 +1487,6 @@ </FileConfiguration> <FileConfiguration Name="Debug|x64" - ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1494,25 +1494,24 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_twain_app_qt.cpp" + RelativePath=".\GeneratedFiles\Release\moc_twain_app_qt.cpp" > <FileConfiguration Name="Release|Win32" - ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCLCompilerTool" /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1521,6 +1520,7 @@ </FileConfiguration> <FileConfiguration Name="Debug|x64" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1539,7 +1539,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" > <Tool Name="VCCLCompilerTool" @@ -1547,7 +1547,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-09-22 19:51:10 UTC (rev 96) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-10-04 19:11:32 UTC (rev 97) @@ -1680,6 +1680,7 @@ void TWAIN_App_QT::OnPendingXfers(TW_UINT16 twMsg) { + TraceMessage("OnPendingXfers / %s not implemented yet", convertMessage_toString(twMsg)); switch(twMsg) { } @@ -1745,6 +1746,7 @@ void TWAIN_App_QT::OnXferGroup(TW_UINT16 twMsg) { + TraceMessage("OnXferGroup / %s not implemented yet", convertMessage_toString(twMsg)); switch(twMsg) { } @@ -1891,6 +1893,7 @@ void TWAIN_App_QT::OnPassThru(TW_UINT16 twMsg) { + TraceMessage("OnPassThru / %s not implemented yet", convertMessage_toString(twMsg)); switch(twMsg) { } @@ -1899,6 +1902,7 @@ void TWAIN_App_QT::OnStatusUTF8(TW_UINT16 twMsg) { + TraceMessage("OnStatusUTF8 / %s not implemented yet", convertMessage_toString(twMsg)); switch(twMsg) { } @@ -1931,6 +1935,7 @@ void TWAIN_App_QT::OnCIEColor(TW_UINT16 twMsg) { + TraceMessage("OnCIEColor / %s not implemented yet", convertMessage_toString(twMsg)); switch(twMsg) { } @@ -1939,6 +1944,7 @@ void TWAIN_App_QT::OnGrayResponse(TW_UINT16 twMsg) { + TraceMessage("OnGrayResponse / %s not implemented yet", convertMessage_toString(twMsg)); switch(twMsg) { } @@ -1947,6 +1953,7 @@ void TWAIN_App_QT::OnRGBResponse(TW_UINT16 twMsg) { + TraceMessage("OnRGBResponse / %s not implemented yet", convertMessage_toString(twMsg)); switch(twMsg) { } @@ -1955,6 +1962,7 @@ void TWAIN_App_QT::OnJPEGCompression(TW_UINT16 twMsg) { + TraceMessage("OnJPEGCompression / %s not implemented yet", convertMessage_toString(twMsg)); switch(twMsg) { } @@ -1963,6 +1971,7 @@ void TWAIN_App_QT::OnPalette8(TW_UINT16 twMsg) { + TraceMessage("OnPalette8 / %s not implemented yet", convertMessage_toString(twMsg)); switch(twMsg) { } @@ -1999,6 +2008,7 @@ void TWAIN_App_QT::OnICCProfile(TW_UINT16 twMsg) { + TraceMessage("OnICCProfile / %s not implemented yet", convertMessage_toString(twMsg)); switch(twMsg) { } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jh...@us...> - 2010-09-22 19:51:18
|
Revision: 96 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=96&view=rev Author: jharju Date: 2010-09-22 19:51:10 +0000 (Wed, 22 Sep 2010) Log Message: ----------- Added x64 build configurations. Broke TWAINSession DoTransfer method into 2 methods, DoTransfer and DoEndXfer to accomodate adhoc operation testing while in state 7. Using built-in QT technology, application was enhanced to including some rudimentary scripting capability using Java script. Stubbed out some future functionality (script recording) Completed UNDEFINEDIMAGESIZE implementation of TWSX_MEMORY to file. Implemented DAT_EXTIMAGEINFO/MSG_GET operation. Added 'Next' button to manual transfer process. Fixed EnableDS radio buttons so they are enabled in State 4 and 5 Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/main.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/stdafx.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.ui trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT.sln Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp 2010-09-22 19:43:44 UTC (rev 95) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp 2010-09-22 19:51:10 UTC (rev 96) @@ -75,6 +75,7 @@ memset(&m_twAppIdentity, 0, sizeof(m_twAppIdentity)); memset(&m_twLastStatus, 0, sizeof(m_twLastStatus)); memset(&m_twSourceIdentity, 0, sizeof(m_twSourceIdentity)); + memset(&m_twPendingXfers, 0, sizeof(m_twPendingXfers)); TW_UINT16 m_uiState = 1; //Start with some default Application information @@ -757,15 +758,13 @@ //signal the derived class (opportunity to call DAT_EXTIMAGEINFO/MSG_GET) OnImageEnd(twInfo,m_twXferMech); - //transition a state - TW_PENDINGXFERS twPendingXfers = {0}; - twRC = DSM_Entry(DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, &twPendingXfers, &m_twSourceIdentity); - if(TWRC_SUCCESS==twRC) - { - //signal the derived class - OnEndXfer(twPendingXfers); - } } + + if(TWRC_XFERDONE==twRC) + { + //transfer was successful + twRC = TWRC_SUCCESS; + } return twRC; } @@ -1340,3 +1339,15 @@ { return DSM_Entry(DG_CONTROL, DAT_CAPABILITY, twMsg, &twCap, &m_twSourceIdentity); } + +TW_UINT16 CTWAINSession::DoEndXfer() +{ + //transition a state + TW_UINT16 twRC = DSM_Entry(DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, &m_twPendingXfers, &m_twSourceIdentity); + if(TWRC_SUCCESS==twRC) + { + //signal the derived class + OnEndXfer(m_twPendingXfers); + } + return twRC; +} Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h 2010-09-22 19:43:44 UTC (rev 95) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h 2010-09-22 19:51:10 UTC (rev 96) @@ -345,8 +345,13 @@ * Examines the current value of CAP_XFERMECH and invokes the appropriate transfer methods and signals */ TW_UINT16 DoTransfer(); - /** + * Method to manually invoke a transfer + * Must be called in State 6 + * Examines the current value of CAP_XFERMECH and invokes the appropriate transfer methods and signals + */ + TW_UINT16 DoEndXfer(); + /** * Optional Implementation specific handler called when an event is signaled from the DS. * Do very little on this method as it may be in the context of a thread other than the TWAIN session. */ @@ -435,6 +440,7 @@ TW_UINT32 m_twInstID; /**< ID assigned to the current class instance */ CRITICAL_SECTION m_csProtectRequestQueue; /**< critical section used to control access to the DataSource request queue */ queue<TW_UINT16> m_twDSRequestQueue; /**< Queue of DataSource requests */ + TW_PENDINGXFERS m_twPendingXfers; /**< when transferring several images, this contains the last MSG_ENDXEER result */ bool m_bStartOfStack; /**< flag is set to true on each state 5-6 transition and false on each 6 to 7 transition */ /** Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-09-22 19:43:44 UTC (rev 95) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-09-22 19:51:10 UTC (rev 96) @@ -11,6 +11,9 @@ <Platform Name="Win32" /> + <Platform + Name="x64" + /> </Platforms> <ToolFiles> </ToolFiles> @@ -39,8 +42,8 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories=".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.;.\..;.\..\..\..\pub\external\include;.\..\..\..\Common" - PreprocessorDefinitions="UNICODE,WIN32,QT_THREAD_SUPPORT,QT_NO_DEBUG,NDEBUG,QT_CORE_LIB,QT_GUI_LIB" + AdditionalIncludeDirectories=".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.;.\..;.\..\..\..\pub\external\include;.\..\..\..\Common;$(QTDIR)\include\QtScript" + PreprocessorDefinitions="UNICODE,WIN32,QT_THREAD_SUPPORT,QT_NO_DEBUG,NDEBUG,QT_CORE_LIB,QT_GUI_LIB,QT_SCRIPT_LIB" RuntimeLibrary="2" TreatWChar_tAsBuiltInType="true" UsePrecompiledHeader="2" @@ -59,8 +62,8 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies=" qtmain.lib QtCore4.lib QtGui4.lib FreeImage.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" + AdditionalDependencies=" qtmain.lib QtCore4.lib QtGui4.lib FreeImage.lib QtScript4.lib" + OutputFile="$(OutDir)\$(ProjectName)32.exe" AdditionalLibraryDirectories="$(QTDIR)\lib;..\..\..\pub\external\lib;..\..\..\pub\lib" GenerateDebugInformation="false" SubSystem="2" @@ -113,8 +116,8 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories=".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.;.\..;.\..\..\..\pub\external\include;.\..\..\..\Common" - PreprocessorDefinitions="UNICODE,WIN32,QT_THREAD_SUPPORT,QT_CORE_LIB,QT_GUI_LIB" + AdditionalIncludeDirectories=".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.;.\..;.\..\..\..\pub\external\include;.\..\..\..\Common;$(QTDIR)\include\QtScript" + PreprocessorDefinitions="UNICODE,WIN32,QT_THREAD_SUPPORT,QT_CORE_LIB,QT_GUI_LIB,QT_SCRIPT_LIB" RuntimeLibrary="3" TreatWChar_tAsBuiltInType="true" UsePrecompiledHeader="2" @@ -133,8 +136,8 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies=" qtmaind.lib QtCored4.lib QtGuid4.lib FreeImage.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" + AdditionalDependencies=" qtmaind.lib QtCored4.lib QtGuid4.lib FreeImage.lib QtScriptd4.lib" + OutputFile="$(OutDir)\$(ProjectName)32d.exe" AdditionalLibraryDirectories="$(QTDIR)\lib;..\..\..\pub\external\lib;..\..\..\pub\lib" GenerateDebugInformation="true" SubSystem="2" @@ -162,6 +165,157 @@ CommandLine="copy "$(TargetPath)" "$(ProjectDir)\..\..\pub\bin"
copy "$(ProjectDir)\..\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)\..\..\pub\bin"
" /> </Configuration> + <Configuration + Name="Release|x64" + OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories=".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.;.\..;.\..\..\..\pub\external\include;.\..\..\..\Common;$(QTDIR)\include\QtScript" + PreprocessorDefinitions="UNICODE,WIN32,QT_THREAD_SUPPORT,QT_NO_DEBUG,NDEBUG,QT_CORE_LIB,QT_GUI_LIB,QT_SCRIPT_LIB" + RuntimeLibrary="2" + TreatWChar_tAsBuiltInType="true" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="stdafx.h" + PrecompiledHeaderFile=".\$(ConfigurationName)/TWAIN_App_QT.pch" + DebugInformationFormat="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies=" qtmain.lib QtCore4.lib QtGui4.lib FreeImagex64.lib QtScript4.lib" + OutputFile="$(OutDir)\$(ProjectName)64.exe" + AdditionalLibraryDirectories="$(QTDIR_64)\lib;..\..\..\pub\external\lib;..\..\..\pub\lib" + GenerateDebugInformation="false" + SubSystem="2" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy "$(TargetPath)" "$(ProjectDir)\..\pub\bin" & copy "$(ProjectDir)\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)\..\pub\bin"" + /> + </Configuration> + <Configuration + Name="Debug|x64" + OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories=".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.;.\..;.\..\..\..\pub\external\include;.\..\..\..\Common;$(QTDIR)\include\QtScript" + PreprocessorDefinitions="UNICODE,WIN32,QT_THREAD_SUPPORT,QT_CORE_LIB,QT_GUI_LIB,QT_SCRIPT_LIB" + RuntimeLibrary="3" + TreatWChar_tAsBuiltInType="true" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="stdafx.h" + PrecompiledHeaderFile=".\$(ConfigurationName)/TWAIN_App_QT.pch" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies=" qtmaind.lib QtCored4.lib QtGuid4.lib FreeImagedx64.lib QtScriptd4.lib" + OutputFile="$(OutDir)\$(ProjectName)64d.exe" + AdditionalLibraryDirectories="$(QTDIR_64)\lib;..\..\..\pub\external\lib;..\..\..\pub\lib" + GenerateDebugInformation="true" + SubSystem="2" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy "$(TargetPath)" "$(ProjectDir)\..\..\pub\bin"
copy "$(ProjectDir)\..\..\..\pub\external\bin\FreeImage.dll" "$(ProjectDir)\..\..\pub\bin"
" + /> + </Configuration> </Configurations> <References> </References> @@ -190,6 +344,22 @@ UsePrecompiledHeader="0" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> </File> <File RelativePath=".\ContainerWrapper.cpp" @@ -214,6 +384,22 @@ UsePrecompiledHeader="0" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> </File> <File RelativePath="..\..\src\DSMInterface.cpp" @@ -234,6 +420,22 @@ UsePrecompiledHeader="0" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> </File> <File RelativePath=".\enumset.cpp" @@ -274,6 +476,22 @@ UsePrecompiledHeader="1" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> </File> <File RelativePath=".\structureedit.cpp" @@ -306,6 +524,22 @@ UsePrecompiledHeader="0" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> </File> <File RelativePath="..\..\src\VerifySignature.cpp" @@ -326,6 +560,22 @@ UsePrecompiledHeader="0" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> </File> </Filter> <Filter @@ -378,6 +628,28 @@ Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\enumset.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\enumset.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\enumset.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\enumset.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> </File> <File RelativePath=".\extimageinfosel.h" @@ -404,6 +676,28 @@ Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> </File> <File RelativePath=".\meterdlg.h" @@ -430,6 +724,28 @@ Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\meterdlg.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\meterdlg.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\meterdlg.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\meterdlg.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> </File> <File RelativePath=".\setstate.h" @@ -456,6 +772,28 @@ Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\setstate.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\setstate.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\setstate.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\setstate.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> </File> <File RelativePath=".\stdafx.h" @@ -486,6 +824,28 @@ Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> </File> <File RelativePath=".\twain_app_qt.h" @@ -512,6 +872,28 @@ Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\twain_app_qt.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\twain_app_qt.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\twain_app_qt.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\twain_app_qt.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> </File> <File RelativePath=".\TWAINSession.h" @@ -552,6 +934,28 @@ Outputs="".\GeneratedFiles\ui_$(InputName).h"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> </File> <File RelativePath=".\extimageinfosel.ui" @@ -578,6 +982,28 @@ Outputs="".\GeneratedFiles\ui_$(InputName).h"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> </File> <File RelativePath=".\MeterDlg.ui" @@ -604,6 +1030,28 @@ Outputs="".\GeneratedFiles\ui_$(InputName).h"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> </File> <File RelativePath=".\setstate.ui" @@ -630,6 +1078,28 @@ Outputs="".\GeneratedFiles\ui_SetState.h"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_SetState.h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_SetState.h"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_SetState.h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_SetState.h"" + /> + </FileConfiguration> </File> <File RelativePath=".\structureedit.ui" @@ -656,6 +1126,28 @@ Outputs="".\GeneratedFiles\ui_$(InputName).h"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> </File> <File RelativePath=".\twain_app_qt.ui" @@ -682,6 +1174,28 @@ Outputs="".\GeneratedFiles\ui_$(InputName).h"" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> </File> </Filter> <Filter @@ -715,6 +1229,28 @@ Outputs=".\GeneratedFiles\qrc_$(InputName).cpp" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Rcc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\rcc.exe" -name "$(InputName)" -no-compress "$(InputPath)" -o .\GeneratedFiles\qrc_$(InputName).cpp
" + AdditionalDependencies="$(InputPath)" + Outputs=".\GeneratedFiles\qrc_$(InputName).cpp" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCustomBuildTool" + Description="Rcc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\rcc.exe" -name "$(InputName)" -no-compress "$(InputPath)" -o .\GeneratedFiles\qrc_$(InputName).cpp
" + AdditionalDependencies="$(InputPath)" + Outputs=".\GeneratedFiles\qrc_$(InputName).cpp" + /> + </FileConfiguration> </File> </Filter> <Filter @@ -734,6 +1270,14 @@ Name="VCCLCompilerTool" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> </File> <File RelativePath=".\GeneratedFiles\Release\moc_enumset.cpp" @@ -746,6 +1290,14 @@ Name="VCCLCompilerTool" /> </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> </File> <File RelativePath=".\GeneratedFiles\Debug\moc_extimageinfosel.cpp" @@ -759,7 +1311,8 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -770,14 +1323,15 @@ RelativePath=".\GeneratedFiles\Release\moc_extimageinfosel.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -796,6 +1350,14 @@ Name="VCCLCompilerTool" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> </File> <File RelativePath=".\GeneratedFiles\Release\moc_meterdlg.cpp" @@ -808,6 +1370,14 @@ Name="VCCLCompilerTool" /> </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> </File> <File RelativePath=".\GeneratedFiles\Release\moc_setstate.cpp" @@ -820,6 +1390,14 @@ Name="VCCLCompilerTool" /> </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> </File> <File RelativePath=".\GeneratedFiles\Debug\moc_setstate.cpp" @@ -832,19 +1410,28 @@ Name="VCCLCompilerTool" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> </File> <File RelativePath=".\GeneratedFiles\Release\moc_structureedit.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -864,7 +1451,8 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|x64" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -889,6 +1477,21 @@ Name="VCCLCompilerTool" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> </File> <File RelativePath=".\GeneratedFiles\Debug\moc_twain_app_qt.cpp" @@ -908,6 +1511,21 @@ Name="VCCLCompilerTool" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> </File> <File RelativePath=".\GeneratedFiles\qrc_twain_app_qt.cpp" @@ -928,6 +1546,22 @@ UsePrecompiledHeader="0" /> </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="0" + /> + </FileConfiguration> </File> <File RelativePath=".\GeneratedFiles\ui_enumset.h" Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/main.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/main.cpp 2010-09-22 19:43:44 UTC (rev 95) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/main.cpp 2010-09-22 19:51:10 UTC (rev 96) @@ -4,9 +4,31 @@ int main(int argc, char *argv[]) { + //Instantiate the application CQTWAINApp a(argc, argv); - TWAIN_App_QT w; + //Instantiate the scripting engine + QScriptEngine qsEngine; + //Create the main window + TWAIN_App_QT w(&qsEngine); a.m_pMainWnd = &w; + //Make the main window visible w.show(); + //Check for scripts + if(3==argc && ("-s"==QString(argv[1]).toLower())) + { + QFile qfScript(argv[2]); + //try to load the script file + if(qfScript.open(QIODevice::ReadOnly)) + { + //submit the script to the script engine + QScriptValue qsv = qsEngine.evaluate(qfScript.readAll(), argv[2]); + qfScript.close(); + if(qsEngine.hasUncaughtException()) + { + QMessageBox::warning(&w, "Script Error", qsv.toString()); + } + } + } + //proceed with normal application execution return a.exec(); } Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/stdafx.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/stdafx.h 2010-09-22 19:43:44 UTC (rev 95) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/stdafx.h 2010-09-22 19:51:10 UTC (rev 96) @@ -1,4 +1,5 @@ #include <QtGui> +#include <QtScript\QtScript> #ifdef _WIN32 #include "windows.h" Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-09-22 19:43:44 UTC (rev 95) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-09-22 19:51:10 UTC (rev 96) @@ -48,8 +48,9 @@ return; } -TWAIN_App_QT::TWAIN_App_QT(QWidget *parent, Qt::WFlags flags) +TWAIN_App_QT::TWAIN_App_QT(QScriptEngine *pEngine, QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) + , m_pEngine(pEngine) , m_bSignalCalledInTWAIN(false) , m_nImageCount(0) , m_pMemoryFile(NULL) @@ -91,7 +92,6 @@ PopulateTripletList(); //Populate the capability list with all known capabilities, only needs to be done once PopulateCapabilityList(); - //Restore the geometry of the Window QSettings settings(QSettings::NativeFormat, QSettings::UserScope, m_twAppIdentity.Manufacturer, m_twAppIdentity.ProductName, this); int nVersion = settings.value("Version", -1).toInt(); @@ -120,6 +120,7 @@ } } + //Clear members used for operations memset(&m_twFileSystem, 0, sizeof(m_twFileSystem)); memset(&m_twCustomDSData, 0, sizeof(m_twCustomDSData)); memset(&m_twSetupMemXfer, 0, sizeof(m_twSetupMemXfer)); @@ -131,11 +132,51 @@ //Configure the GUI for startup EnableGUIByCurrentState(); + //Display the items in the edit box + FillExtImageInfoEdit(); //Make this always a queued connection to avoid re-entrancy issues connect( this, SIGNAL( customDataSourceSignal() ), this, SLOT( DataSourceSignal() ), Qt::QueuedConnection); //Make this an auto-connection so that status is updated immediately whenever possible connect( this, SIGNAL( customAppendStatusText(QString&) ), this, SLOT( AppendStatusText(QString&) ), Qt::AutoConnection); + + if(pEngine) + { + //add all the objects that are to be exposed for scripting + pEngine->globalObject().setProperty("btnLoadDSM", pEngine->newQObject(ui.btnLoadDSM)); + pEngine->globalObject().setProperty("btnUnloadDSM", pEngine->newQObject(ui.btnUnloadDSM)); + + pEngine->globalObject().setProperty("btnOpenDSM", pEngine->newQObject(ui.btnOpenDSM)); + pEngine->globalObject().setProperty("btnCloseDSM", pEngine->newQObject(ui.btnCloseDSM)); + + pEngine->globalObject().setProperty("btnSetDefault", pEngine->newQObject(ui.btnSetDefault)); + pEngine->globalObject().setProperty("btnOpen", pEngine->newQObject(ui.btnOpen)); + pEngine->globalObject().setProperty("btnClose", pEngine->newQObject(ui.btnClose)); + + pEngine->globalObject().setProperty("btnEnable", pEngine->newQObject(ui.btnEnable)); + pEngine->globalObject().setProperty("btnDisable", pEngine->newQObject(ui.btnDisable)); + + pEngine->globalObject().setProperty("radNoUI", pEngine->newQObject(ui.radNoUI)); + pEngine->globalObject().setProperty("radShowUI", pEngine->newQObject(ui.radShowUI)); + pEngine->globalObject().setProperty("radUIOnly", pEngine->newQObject(ui.radUIOnly)); + + pEngine->globalObject().setProperty("treCapability", pEngine->newQObject(ui.treCapability)); + pEngine->globalObject().setProperty("treTriplet", pEngine->newQObject(ui.treTriplet)); + + pEngine->globalObject().setProperty("chkSave", pEngine->newQObject(ui.chkSave)); + pEngine->globalObject().setProperty("edtSavePath", pEngine->newQObject(ui.edtSavePath)); + pEngine->globalObject().setProperty("chkExtImageInfo", pEngine->newQObject(ui.chkExtImageInfo)); + pEngine->globalObject().setProperty("chkSave", pEngine->newQObject(ui.chkSave)); + + pEngine->globalObject().setProperty("chkAutoDisable", pEngine->newQObject(ui.chkAutoDisable)); + pEngine->globalObject().setProperty("radAuto", pEngine->newQObject(ui.radAuto)); + pEngine->globalObject().setProperty("radManual", pEngine->newQObject(ui.radManual)); + + pEngine->globalObject().setProperty("btnTransfer", pEngine->newQObject(ui.btnTransfer)); + pEngine->globalObject().setProperty("btnAbort", pEngine->newQObject(ui.btnAbort)); + pEngine->globalObject().setProperty("edtStatus", pEngine->newQObject(ui.edtStatus)); + pEngine->globalObject().setProperty("wndMain", pEngine->newQObject(this)); + } return; } @@ -171,23 +212,28 @@ //must be in or at least state 4 for these operations ui.btnClose->setEnabled( (4==m_uiState)?true:false ); -// ui.btnSetCallback->setEnabled( (4==m_uiState)?true:false ); ui.btnEnable->setEnabled( (4==m_uiState)?true:false ); ui.radNoUI->setEnabled( (4==m_uiState)?true:false ); ui.radShowUI->setEnabled( (4==m_uiState)?true:false ); ui.radUIOnly->setEnabled( (4==m_uiState)?true:false ); ui.treCapability->setEnabled( (4<=m_uiState)?true:false ); ui.treTriplet->setEnabled( (4<=m_uiState)?true:false ); + ui.btnAllSupported->setEnabled( (4==m_uiState)?true:false ); + //must be in state 4 or 5 for this operation + ui.chkAutoDisable->setEnabled( ((4==m_uiState)||(5==m_uiState))?true:false ); + ui.radAuto->setEnabled( ((4==m_uiState)||(5==m_uiState))?true:false ); + ui.radManual->setEnabled( ((4==m_uiState)||(5==m_uiState))?true:false ); + //must be in state 5 for this operation ui.btnDisable->setEnabled( (5==m_uiState)?true:false ); - ui.chkAutoDisable->setEnabled( (5==m_uiState)?true:false ); - ui.radAuto->setEnabled( (5==m_uiState)?true:false ); - ui.radManual->setEnabled( (5==m_uiState)?true:false ); + //must be in state 6 for this operation + ui.btnTransfer->setEnabled( (ui.radManual->isChecked() && (6==m_uiState))?true:false ); //must be in at least state 6 for this operation - ui.btnTransfer->setEnabled( (ui.radManual->isChecked() && (6<=m_uiState))?true:false ); ui.btnAbort->setEnabled( (6<=m_uiState)?true:false ); + //must be in state 7 for this operation + ui.btnNext->setEnabled( (ui.radManual->isChecked() && (7==m_uiState))?true:false ); return; } @@ -478,15 +524,15 @@ void TWAIN_App_QT::OnImageEnd(const TW_IMAGEINFO &twInfo, TW_UINT16 twXferMech) { - pTW_EXTIMAGEINFO pInfo = NULL; + pTW_EXTIMAGEINFO pExtInfo = NULL; if(m_bSupportsExtImageInfo && (Qt::Checked == ui.chkExtImageInfo->checkState())) { - pInfo = CreateExtImageInfo(m_lstExtImageInfo); - if(pInfo) + pExtInfo = CreateExtImageInfo(m_lstExtImageInfo); + if(pExtInfo) { - if(TWRC_SUCCESS==DSM_Entry(DG_IMAGE, DAT_EXTIMAGEINFO, MSG_GET, pInfo, &m_twSourceIdentity)) + if(TWRC_SUCCESS==DSM_Entry(DG_IMAGE, DAT_EXTIMAGEINFO, MSG_GET, pExtInfo, &m_twSourceIdentity)) { - TraceStruct(*pInfo); + TraceStruct(*pExtInfo); } } } @@ -510,6 +556,46 @@ m_pMemoryDataStream->writeRawData(reinterpret_cast<char*>(&m_bmfhBitmap), sizeof(m_bmfhBitmap)); //dump the bitmap info header m_pMemoryDataStream->writeRawData(reinterpret_cast<char*>(&m_bmihBitmap), sizeof(m_bmihBitmap)); + if(m_bmihBitmap.biClrUsed && (TWPT_PALETTE!=twInfo.PixelType)) /*TWPT_GRAY or TWPT_BW*/ + { + RGBQUAD *pbmiColors = new RGBQUAD[m_bmihBitmap.biClrUsed]; + //for now just dump an empty palette in here + memset(pbmiColors, 0, sizeof(RGBQUAD)*m_bmihBitmap.biClrUsed); + //Get the pixelflavor + TW_UINT16 twPixelFlavor = TWPF_CHOCOLATE; + pTW_INFO pInfo = FindInfo(pExtInfo, TWEI_PIXELFLAVOR); + if(pInfo && (TWRC_SUCCESS==pInfo->ReturnCode)) + { + //we got it from the ExtendedImageInfo + twPixelFlavor = static_cast<TW_UINT16>(pInfo->Item); + } + else + { + //not found there get try the capability + GetCapabilityOneValue(ICAP_PIXELFLAVOR, twPixelFlavor); + } + //if it is not chocolate then we have to rethink the palette + if(TWPF_CHOCOLATE!=twPixelFlavor) + { + //assume our palette is TWPF_CHOCOLATE (black is zero) - can be corrected at image end if necessary + int nIncr = 0xFF / ( m_bmihBitmap.biClrUsed - 1 ); + int nVal = 0; + for (int nIndex=0; nIndex<m_bmihBitmap.biClrUsed; nIndex++) + { + //create the palette + nVal = 0xFF - nIndex * nIncr; + pbmiColors[nIndex].rgbRed = static_cast<BYTE>(nVal); + pbmiColors[nIndex].rgbGreen = static_cast<BYTE>(nVal); + pbmiColors[nIndex].rgbBlue = static_cast<BYTE>(nVal); + pbmiColors[nIndex].rgbReserved = 0; + } + //dump the palette in the file + m_pMemoryDataStream->writeRawData(reinterpret_cast<char*>(pbmiColors), sizeof(RGBQUAD)*m_bmihBitmap.biClrUsed); + } + //cleanup the variables + delete [] pbmiColors; + pbmiColors = NULL; + } break; case TWFF_TIFF: #pragma message("TODO: implement TIFF undefined image size") @@ -518,9 +604,9 @@ } } - if(pInfo) + if(pExtInfo) { - CleanupExtImageInfo(pInfo); + CleanupExtImageInfo(pExtInfo); } if(m_pMemoryDataStream) @@ -727,8 +813,12 @@ void TWAIN_App_QT::on_btnOpen_clicked(bool bChecked) { + //Display the wait cursor, this could take a while + QApplication::setOverrideCursor(Qt::WaitCursor); //Open the current DataSource OpenDS( ui.cbxSources->currentText().toAscii() ); + //Restore the cursor + QApplication::restoreOverrideCursor(); //Populate or re-populate the Capability list RefreshCapabilityList(); //Update the state of the GUI @@ -756,6 +846,7 @@ //Display a UI for selecting EXTIMAGEINFO values to read ExtImageInfoSel dlg(m_lstExtImageInfo, this); dlg.exec(); + FillExtImageInfoEdit(); return; } @@ -882,7 +973,7 @@ if(ui.radAuto->isChecked()) { //Automatically transfer all the images - while((TWRC_SUCCESS==DoTransfer())&&(6==m_uiState)); + while((TWRC_SUCCESS==DoTransfer())&&(TWRC_SUCCESS==DoEndXfer())&&(6==m_uiState)); } //Remove this signal from the queue ClearDSRequest(); @@ -1302,7 +1393,7 @@ ColLast, }; -void TWAIN_App_QT::RefreshCapabilityList() +void TWAIN_App_QT::RefreshCapabilityList(bool bUpdateAll/*=false*/) { MeterDlg dlg; @@ -1330,7 +1421,10 @@ if(true==cwSupportedCaps.ContainsItem(static_cast<TW_UINT16>(pSubItem->data(0, Qt::UserRole).toUInt()))) { pSubItem->setDisabled(false); -// FillItemFromCapability(pSubItem); + if(bUpdateAll) + { + FillItemFromCapability(pSubItem); + } } else { @@ -1879,6 +1973,26 @@ { switch(twMsg) { + case MSG_GET: + { + //make a copy of the extended info used for all operations + vector<TW_UINT16> lstExtImageInfo = m_lstExtImageInfo; + //Display a UI for selecting EXTIMAGEINFO values to read + ExtImageInfoSel dlg(lstExtImageInfo, this); + if(QDialog::Accepted==dlg.exec()) + { + pTW_EXTIMAGEINFO pInfo = CreateExtImageInfo(m_lstExtImageInfo); + if(pInfo) + { + if(TWRC_SUCCESS==DSM_Entry(DG_IMAGE, DAT_EXTIMAGEINFO, MSG_GET, pInfo, &m_twSourceIdentity)) + { + TraceStruct(*pInfo); + } + CleanupExtImageInfo(pInfo); + } + } + } + break; } return; } @@ -2017,6 +2131,23 @@ return pRet; } +pTW_INFO TWAIN_App_QT::FindInfo(pTW_EXTIMAGEINFO pInfo, TW_UINT16 twInfoID) +{ + pTW_INFO pRet = NULL; + if(pInfo) + { + for(int nIndex = 0; nIndex < pInfo->NumInfos; nIndex++) + { + if(twInfoID==pInfo->Info[nIndex].InfoID) + { + pRet = &pInfo->Info[nIndex]; + break; + } + } + } + return pRet; +} + void TWAIN_App_QT::CleanupExtImageInfo(pTW_EXTIMAGEINFO &pInfo) { if(pInfo) @@ -2026,3 +2157,134 @@ } return; } + +void TWAIN_App_QT::FillExtImageInfoEdit() +{ + QString strText; +//m_lstExtImageInfo + for(vector<TW_UINT16>::iterator iter = m_lstExtImageInfo.begin(); iter != m_lstExtImageInfo.end(); iter++) + { + strText += convertExtImageInfoName_toString(*iter); + if(m_lstExtImageInfo.end()!=(iter+1)) + { + strText += ", "; + } + } + ui.edtExtImageInfo->setText(strText); + return; +} + +void TWAIN_App_QT::on_mnuLoadFromState1_triggered(bool bChecked) +{ + //what script to execute + QString strResult = QFileDialog::getOpenFileName(this, "Load Script", "", "Scripts *.js *.qs"); + //Get the Custom DS Data + if(strResult.length() && QFile::exists(strResult)) + { + QFile qfScript(strResult); + //try to load the script file + if(qfScript.open(QIODevice::ReadOnly)) + { + //move to state 1 + ReturnToState(1); + //Update the state of the GUI + EnableGUIByCurrentState(); + //submit the script to the script engine + QScriptValue qsv = m_pEngine->evaluate(qfScript.readAll(), strResult); + qfScript.close(); + //check for errors + if(m_pEngine->hasUncaughtException()) + { + //notify the user + QMessageBox::warning(this, "Script Error", qsv.toString()); + } + } + } + return; +} + +void TWAIN_App_QT::on_mnuLoadFromCurrentState_triggered(bool bChecked) +{ + //what script to execute + QString strResult = QFileDialog::getOpenFileName(this, "Load Script", "", "Scripts *.js *.qs"); + //Get the Custom DS Data + if(strResult.length() && QFile::exists(strResult)) + { + QFile qfScript(strResult); + //try to load the script file + if(qfScript.open(QIODevice::ReadOnly)) + { + //submit the script to the script engine + QScriptValue qsv = m_pEngine->evaluate(qfScript.readAll(), strResult); + qfScript.close(); + //check for errors + if(m_pEngine->hasUncaughtException()) + { + //notify the user + QMessageBox::warning(this, "Script Error", qsv.toString()); + } + } + } + return; +} + +QStringList TWAIN_App_QT::GetSourceList() +{ + QStringList lst; + for(int nIndex = 0; nIndex < ui.cbxSources->count(); nIndex++) + { + lst.push_back(ui.cbxSources->itemText(nIndex)); + } + return lst; +} + +QString TWAIN_App_QT::GetCurrentSource() +{ + return ui.cbxSources->currentText(); +} + + +bool TWAIN_App_QT::SetCurrentSource(QString strNewSource) +{ + int nIndex = ui.cbxSources->findText(strNewSource); + if(-1!=nIndex) + { + ui.cbxSources->setCurrentIndex(nIndex); + } + return (ui.cbxSources->currentIndex()==nIndex)?true:false; +} + +bool TWAIN_App_QT::LowerStateTo(int nState) +{ + bool bRC = ReturnToState(nState); + //Update the state of the GUI + EnableGUIByCurrentState(); + return bRC; +} + +int TWAIN_App_QT::GetCurrentState() +{ + return CTWAINSession::GetCurrentState(); +} + +void TWAIN_App_QT::AppendScriptStatusText(QString strText) +{ + TraceMessage(strText.toAscii()); + return; +} + +void TWAIN_App_QT::on_btnNext_clicked(bool bChecked) +{ + //Issue the DAT_PENDINGXFERS/MSG_ENDXFER call + DoEndXfer(); + //Update the state of the GUI + EnableGUIByCurrentState(); + return; +} + +void TWAIN_App_QT::on_btnAllSupported_clicked(bool bChecked) +{ + //Iterate throught the capability list and force update the actual values + RefreshCapabilityList(true); + return; +} Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h 2010-09-22 19:43:44 UTC (rev 95) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h 2010-09-22 19:51:10 UTC (rev 96) @@ -5,17 +5,21 @@ #include "ui_twain_app_qt.h" #include "TWAINSession.h" -class TWAIN_App_QT : public QMainWindow, public CTWAINSession +class TWAIN_App_QT : public QMainWindow, public CTWAINSession, public QScriptable { Q_OBJECT public: - TWAIN_App_QT(QWidget *parent = 0, Qt::WFlags flags = 0); + TWAIN_App_QT(QScriptEngine *pEngine, QWidget *parent = 0, Qt::WFlags flags = 0); ~TWAIN_App_QT(); public slots: - void DataSourceSignal(); - void AppendStatusText(QString &strText); + QStringList GetSourceList(); + QString GetCurrentSource(); + bool SetCurrentSource(QString strNewSource); + bool LowerStateTo(int nState); + int GetCurrentState(); + void AppendScriptStatusText(QString strText); signals: void customDataSourceSignal(); @@ -87,8 +91,9 @@ void PopulateDSList(); void PopulateTripletList(); void PopulateCapabilityList(); - void RefreshCapabilityList(); + void RefreshCapabilityList(bool bUpdateAll=false); void FillItemFromCapability(QTreeWidgetItem *pItem); + void FillExtImageInfoEdit(); void OnPendingXfers(TW_UINT16 twMsg); void OnSetupMemXfer(TW_UINT16 twMsg); @@ -111,6 +116,7 @@ pTW_EXTIMAGEINFO CreateExtImageInfo(const vector<TW_UINT16> &lstExtIInfo); void CleanupExtImageInfo(pTW_EXTIMAGEINFO &pInfo); + pTW_INFO FindInfo(pTW_EXTIMAGEINFO pInfo, TW_UINT16 twInfoID); void TraceStruct(const TW_PENDINGXFERS &twData); void TraceStruct(const TW_SETUPMEMXFER &twData); @@ -151,6 +157,8 @@ TW_IMAGELAYOUT m_twImageLayout; protected slots: + void DataSourceSignal(); + void AppendStatusText(QString &strText); //void on_<widget name>_<signal name>(<signal parameters>); void on_treCapability_itemClicked(QTreeWidgetItem * item, int column); void on_treCapability_itemDoubleClicked(QTreeWidgetItem * item, int column); @@ -168,17 +176,24 @@ void on_btnRecover_clicked(bool bChecked); void on_btnSetDefault_clicked(bool bChecked); void on_btnTransfer_clicked(bool bChecked); + void on_btnNext_clicked(bool bChecked); void on_btnAbort_clicked(bool bChecked); void on_radAuto_toggled(bool bChecked); void on_radManual_toggled(bool bChecked); void on_btnSelPath_clicked(bool bChecked); + void on_mnuLoadFromState1_triggered(bool bChecked); + void on_mnuLoadFromCurrentState_triggered(boo... [truncated message content] |
From: <jh...@us...> - 2010-09-22 19:43:50
|
Revision: 95 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=95&view=rev Author: jharju Date: 2010-09-22 19:43:44 +0000 (Wed, 22 Sep 2010) Log Message: ----------- Fixed Sample DataSource ProductName, original we 33 characters long - exceeding the 32 character limitation implied by a TW_STR32. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.sln trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.vcproj Modified: trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp 2010-09-17 21:47:15 UTC (rev 94) +++ trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp 2010-09-22 19:43:44 UTC (rev 95) @@ -100,7 +100,7 @@ #ifdef __APPLE__ "\p" #endif - "TWAIN2 FreeImage Software Scanner" // TW_STR32 ProductName; Product name, e.g. "ScanJet Plus" + "TWAIN2 Software Scanner" // TW_STR32 ProductName; Product name, e.g. "ScanJet Plus" }; ////////////////////////////////////////////////////////////////////////////// Modified: trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.sln =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.sln 2010-09-17 21:47:15 UTC (rev 94) +++ trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.sln 2010-09-22 19:43:44 UTC (rev 95) @@ -24,6 +24,6 @@ HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - QtVersion = 4.6.3 + QtVersion = $(DefaultQtVersion) EndGlobalSection EndGlobal Modified: trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.vcproj =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.vcproj 2010-09-17 21:47:15 UTC (rev 94) +++ trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.vcproj 2010-09-22 19:43:44 UTC (rev 95) @@ -885,7 +885,7 @@ Name="Generated Files" > <File - RelativePath="..\src\GeneratedFiles\x64\Debug\moc_Qt_About.cpp" + RelativePath="..\src\GeneratedFiles\Win32\Release\moc_Qt_About.cpp" > <FileConfiguration Name="Debug|Win32" @@ -896,7 +896,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -913,10 +913,10 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\Win32\Release\moc_Qt_About.cpp" + RelativePath="..\src\GeneratedFiles\Win32\Debug\moc_Qt_About.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -924,7 +924,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -941,10 +941,10 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\Win32\Debug\moc_Qt_About.cpp" + RelativePath="..\src\GeneratedFiles\x64\Release\moc_Qt_About.cpp" > <FileConfiguration - Name="Debug|x64" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -952,7 +952,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -960,7 +960,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -969,7 +969,7 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\x64\Release\moc_Qt_About.cpp" + RelativePath="..\src\GeneratedFiles\x64\Debug\moc_Qt_About.cpp" > <FileConfiguration Name="Debug|Win32" @@ -980,7 +980,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -988,7 +988,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -997,10 +997,10 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\Win32\Debug\moc_Qt_MainForm.cpp" + RelativePath="..\src\GeneratedFiles\x64\Release\moc_Qt_MainForm.cpp" > <FileConfiguration - Name="Debug|x64" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1008,7 +1008,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1016,7 +1016,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1025,7 +1025,7 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\x64\Release\moc_Qt_MainForm.cpp" + RelativePath="..\src\GeneratedFiles\x64\Debug\moc_Qt_MainForm.cpp" > <FileConfiguration Name="Debug|Win32" @@ -1036,7 +1036,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1044,7 +1044,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1053,7 +1053,7 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\x64\Debug\moc_Qt_MainForm.cpp" + RelativePath="..\src\GeneratedFiles\Win32\Release\moc_Qt_MainForm.cpp" > <FileConfiguration Name="Debug|Win32" @@ -1064,7 +1064,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1081,10 +1081,10 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\Win32\Release\moc_Qt_MainForm.cpp" + RelativePath="..\src\GeneratedFiles\Win32\Debug\moc_Qt_MainForm.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1092,7 +1092,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jh...@us...> - 2010-09-17 21:47:21
|
Revision: 94 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=94&view=rev Author: jharju Date: 2010-09-17 21:47:15 +0000 (Fri, 17 Sep 2010) Log Message: ----------- Added dialog for selecting EXTENDEDIMAGEINFO attributes to query. Added Paths: ----------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.ui Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.cpp (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.cpp 2010-09-17 21:47:15 UTC (rev 94) @@ -0,0 +1,78 @@ +#include "stdafx.h" +#include "extimageinfosel.h" +#include "twainstring.h" + +bool Find(vector<TW_UINT16>lst, const TW_UINT16 twItem) +{ + for(vector<TW_UINT16>::iterator iter = lst.begin(); iter != lst.end(); iter++) + { + if(twItem == *iter) + { + return true; + } + } + return false; +} + +ExtImageInfoSel::ExtImageInfoSel(vector<TW_UINT16> &lstExtImageInfo, QWidget *parent/*=0*/) + : QDialog(parent) + , m_lstExtImageInfo(lstExtImageInfo) +{ + ui.setupUi(this); + ui.treExtImgInfo->header()->setResizeMode(0, QHeaderView::ResizeToContents); + ui.treExtImgInfo->header()->setResizeMode(1, QHeaderView::ResizeToContents); + + int nIndex = 0; + while(TWON_DONTCARE16 != kTWEI_TABLE[nIndex]) + { + QTreeWidgetItem *pItem = new QTreeWidgetItem(); + pItem->setText(0, convertExtImageInfoName_toString(kTWEI_TABLE[nIndex])); + pItem->setCheckState(1, Find(m_lstExtImageInfo, kTWEI_TABLE[nIndex])?Qt::Checked:Qt::Unchecked ); + pItem->setData(0, Qt::UserRole, kTWEI_TABLE[nIndex]); + ui.treExtImgInfo->addTopLevelItem(pItem); + nIndex++; + } + + return; +} + +ExtImageInfoSel::~ExtImageInfoSel() +{ + return; +} + +void ExtImageInfoSel::accept() +{ + m_lstExtImageInfo.clear(); + for(int nIndex = 0; nIndex < ui.treExtImgInfo->topLevelItemCount(); nIndex++) + { + QTreeWidgetItem *pItem = ui.treExtImgInfo->topLevelItem(nIndex); + if(Qt::Checked==pItem->checkState(1)) + { + m_lstExtImageInfo.push_back(pItem->data(0, Qt::UserRole).toUInt()); + } + } + QDialog::accept(); + return; +} + +void ExtImageInfoSel::on_btnAll_clicked(bool bChecked) +{ + for(int nIndex = 0; nIndex < ui.treExtImgInfo->topLevelItemCount(); nIndex++) + { + QTreeWidgetItem *pItem = ui.treExtImgInfo->topLevelItem(nIndex); + pItem->setCheckState(1, Qt::Checked); + } + return; +} + +void ExtImageInfoSel::on_btnNone_clicked(bool bChecked) +{ + for(int nIndex = 0; nIndex < ui.treExtImgInfo->topLevelItemCount(); nIndex++) + { + QTreeWidgetItem *pItem = ui.treExtImgInfo->topLevelItem(nIndex); + pItem->setCheckState(1, Qt::Unchecked); + } + return; +} + Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.h (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.h 2010-09-17 21:47:15 UTC (rev 94) @@ -0,0 +1,114 @@ +#ifndef EXTIMAGEINFOSEL_H +#define EXTIMAGEINFOSEL_H + +#include <QDialog> +#include "ui_extimageinfosel.h" + +#ifdef _WIN32 + #include "windows.h" +#endif //#ifdef _WIN32 + +#include <vector> +#include "twain.h" +#include "CommonTWAIN.h" + +class ExtImageInfoSel : public QDialog +{ + Q_OBJECT + + public: + ExtImageInfoSel(vector<TW_UINT16> &lstExtImageInfo, QWidget *parent = 0); + ~ExtImageInfoSel(); + + virtual void accept(); + + protected: + vector<TW_UINT16> &m_lstExtImageInfo; + + protected slots: + //void on_<widget name>_<signal name>(<signal parameters>); + void on_btnAll_clicked(bool bChecked); + void on_btnNone_clicked(bool bChecked); + + private: + Ui::ExtImageInfoSelClass ui; +}; + +const TW_UINT16 kTWEI_TABLE[] = +{ + TWEI_BARCODEX, + TWEI_BARCODEY, + TWEI_BARCODETEXT, + TWEI_BARCODETYPE, + TWEI_DESHADETOP, + TWEI_DESHADELEFT, + TWEI_DESHADEHEIGHT, + TWEI_DESHADEWIDTH, + TWEI_DESHADESIZE, + TWEI_SPECKLESREMOVED, + TWEI_HORZLINEXCOORD, + TWEI_HORZLINEYCOORD, + TWEI_HORZLINELENGTH, + TWEI_HORZLINETHICKNESS, + TWEI_VERTLINEXCOORD, + TWEI_VERTLINEYCOORD, + TWEI_VERTLINELENGTH, + TWEI_VERTLINETHICKNESS, + TWEI_PATCHCODE, + TWEI_ENDORSEDTEXT, + TWEI_FORMCONFIDENCE, + TWEI_FORMTEMPLATEMATCH, + TWEI_FORMTEMPLATEPAGEMATCH, + TWEI_FORMHORZDOCOFFSET, + TWEI_FORMVERTDOCOFFSET, + TWEI_BARCODECOUNT, + TWEI_BARCODECONFIDENCE, + TWEI_BARCODEROTATION, + TWEI_BARCODETEXTLENGTH, + TWEI_DESHADECOUNT, + TWEI_DESHADEBLACKCOUNTOLD, + TWEI_DESHADEBLACKCOUNTNEW, + TWEI_DESHADEBLACKRLMIN, + TWEI_DESHADEBLACKRLMAX, + TWEI_DESHADEWHITECOUNTOLD, + TWEI_DESHADEWHITECOUNTNEW, + TWEI_DESHADEWHITERLMIN, + TWEI_DESHADEWHITERLAVE, + TWEI_DESHADEWHITERLMAX, + TWEI_BLACKSPECKLESREMOVED, + TWEI_WHITESPECKLESREMOVED, + TWEI_HORZLINECOUNT, + TWEI_VERTLINECOUNT, + TWEI_DESKEWSTATUS, + TWEI_SKEWORIGINALANGLE, + TWEI_SKEWFINALANGLE, + TWEI_SKEWCONFIDENCE, + TWEI_SKEWWINDOWX1, + TWEI_SKEWWINDOWY1, + TWEI_SKEWWINDOWX2, + TWEI_SKEWWINDOWY2, + TWEI_SKEWWINDOWX3, + TWEI_SKEWWINDOWY3, + TWEI_SKEWWINDOWX4, + TWEI_SKEWWINDOWY4, + TWEI_BOOKNAME, + TWEI_CHAPTERNUMBER, + TWEI_DOCUMENTNUMBER, + TWEI_PAGENUMBER, + TWEI_CAMERA, + TWEI_FRAMENUMBER, + TWEI_FRAME, + TWEI_PIXELFLAVOR, + TWEI_ICCPROFILE, + TWEI_LASTSEGMENT, + TWEI_SEGMENTNUMBER, + TWEI_MAGDATA, + TWEI_MAGTYPE, + TWEI_PAGESIDE, + TWEI_FILESYSTEMSOURCE, + TWEI_IMAGEMERGED, + TWEI_MAGDATALENGTH, + TWON_DONTCARE16, +}; + +#endif // EXTIMAGEINFOSEL_H Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.ui =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.ui (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/extimageinfosel.ui 2010-09-17 21:47:15 UTC (rev 94) @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>ExtImageInfoSelClass</class> + <widget class="QDialog" name="ExtImageInfoSelClass"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>ExtImageInfoSel</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QTreeWidget" name="treExtImgInfo"> + <column> + <property name="text"> + <string notr="true">Item</string> + </property> + </column> + <column> + <property name="text"> + <string>Add</string> + </property> + </column> + <column> + <property name="text"> + <string>Count</string> + </property> + </column> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="btnAll"> + <property name="text"> + <string>All</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="btnNone"> + <property name="text"> + <string>None</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <layoutdefault spacing="6" margin="11"/> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>ExtImageInfoSelClass</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>353</x> + <y>149</y> + </hint> + <hint type="destinationlabel"> + <x>199</x> + <y>149</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>ExtImageInfoSelClass</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>353</x> + <y>149</y> + </hint> + <hint type="destinationlabel"> + <x>199</x> + <y>149</y> + </hint> + </hints> + </connection> + </connections> +</ui> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jh...@us...> - 2010-09-17 21:44:38
|
Revision: 93 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=93&view=rev Author: jharju Date: 2010-09-17 21:44:31 +0000 (Fri, 17 Sep 2010) Log Message: ----------- Added rudimentary support for Extended Image Info. Added key capability caching on a per-stack basis. Added support for UNDEFINEIMAGESIZE when transferring a .bmp in TWSX_MEMORY transfer mode. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h trunk/TWAIN-Samples/common/TwainString.cpp trunk/TWAIN-Samples/common/TwainString.h Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp 2010-09-15 22:28:07 UTC (rev 92) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp 2010-09-17 21:44:31 UTC (rev 93) @@ -48,6 +48,10 @@ : m_uiState(1) , m_twInstID(0) , m_bInTWAIN(false) + , m_bStartOfStack(true) + , m_bSupportsExtImageInfo(false) + , m_bUsingUndefinedImageSize(false) + , m_twXferMech(TWSX_NATIVE) { //Find out if this is the first time through if(0==m_nRefCount) @@ -267,6 +271,17 @@ { //state transition was detected TraceMessage("* State transition %d -> %d *", twPrevState, m_uiState); + + if((6==twPrevState)&&(7==m_uiState)) + { + //indicates we are no longer at the start of a transfer session + m_bStartOfStack = false; + } + else if((6>twPrevState)&&(6==m_uiState)) + { + //indicates we are just starting a transfer session + m_bStartOfStack = true; + } } } } @@ -619,127 +634,136 @@ TW_SETUPMEMXFER twSetupMemXfer = {0}; TW_IMAGEMEMXFER twImageMemXfer = {0}; - //Time to inspect and figure out a few things - TW_UINT16 twXferMech = TWSX_NATIVE; - if(TWRC_SUCCESS==GetCapabilityOneValue(ICAP_XFERMECH, twXferMech)) + if(m_bStartOfStack) { - TW_IMAGEINFO twInfo = {0}; - //This is to be called before any transfer - if(TWRC_SUCCESS==DSM_Entry(DG_IMAGE, DAT_IMAGEINFO, MSG_GET, &twInfo, &m_twSourceIdentity)) + //update key information used throughout the transfer + GetCapabilityOneValue(ICAP_XFERMECH, m_twXferMech); + GetCapabilityOneValue(ICAP_UNDEFINEDIMAGESIZE, m_bUsingUndefinedImageSize); + GetCapabilityOneValue(ICAP_EXTIMAGEINFO, m_bSupportsExtImageInfo); + } + + TW_IMAGEINFO twInfo = {0}; + //This is to be called before any transfer + if(TWRC_SUCCESS==DSM_Entry(DG_IMAGE, DAT_IMAGEINFO, MSG_GET, &twInfo, &m_twSourceIdentity)) + { + //signal the derived class + OnImageBegin(twInfo, m_twXferMech); + + bool bAbort = false; + do { - //signal the derived class - OnImageBegin(twInfo, twXferMech); - - bool bAbort = false; - do + switch(m_twXferMech) { - switch(twXferMech) - { - case TWSX_NATIVE: + case TWSX_NATIVE: + { + TW_HANDLE hImage = NULL; + //Perform a Native transfer + twRC = DSM_Entry(DG_IMAGE, DAT_IMAGENATIVEXFER, MSG_GET, &hImage, &m_twSourceIdentity); + if((TWRC_XFERDONE==twRC)||(TWRC_SUCCESS==twRC)) { - TW_HANDLE hImage = NULL; - //Perform a Native transfer - twRC = DSM_Entry(DG_IMAGE, DAT_IMAGENATIVEXFER, MSG_GET, &hImage, &m_twSourceIdentity); - if((TWRC_XFERDONE==twRC)||(TWRC_SUCCESS==twRC)) + //Assume we are to free the image + bool bFree = true; + //Notify the derived class + OnNativeTransfer(&hImage, bAbort, bFree); + if(bFree) { - //Assume we are to free the image - bool bFree = true; - //Notify the derived class - OnNativeTransfer(&hImage, bAbort, bFree); - if(bFree) - { - //Discard the result - _DSM_Free(hImage); - hImage = NULL; - } - - if(TWRC_SUCCESS==twRC) - { - TraceMessage("*** Note: DS responded with invalid TWRC_SUCCESS for DAT_IMAGENATIVEXFER/MSG_GET Expected: TWRC_XFERDONE ***"); - twRC = TWRC_XFERDONE; - } + //Discard the result + _DSM_Free(hImage); + hImage = NULL; } + + if(TWRC_SUCCESS==twRC) + { + TraceMessage("*** Note: DS responded with invalid TWRC_SUCCESS for DAT_IMAGENATIVEXFER/MSG_GET Expected: TWRC_XFERDONE ***"); + twRC = TWRC_XFERDONE; + } } - break; - case TWSX_FILE: + } + break; + case TWSX_FILE: + { + TW_SETUPFILEXFER twSetupFileXfer = {0}; + twRC = DSM_Entry(DG_CONTROL, DAT_SETUPFILEXFER, MSG_GET, &twSetupFileXfer, &m_twSourceIdentity); + if(TWRC_SUCCESS==twRC) { - TW_SETUPFILEXFER twSetupFileXfer = {0}; - twRC = DSM_Entry(DG_CONTROL, DAT_SETUPFILEXFER, MSG_GET, &twSetupFileXfer, &m_twSourceIdentity); - if(TWRC_SUCCESS==twRC) + //Perform a File transfer + twRC = DSM_Entry(DG_IMAGE, DAT_IMAGEFILEXFER, MSG_GET, NULL, &m_twSourceIdentity); + if((TWRC_XFERDONE==twRC)||(TWRC_SUCCESS==twRC)) { - //Perform a File transfer - twRC = DSM_Entry(DG_IMAGE, DAT_IMAGEFILEXFER, MSG_GET, NULL, &m_twSourceIdentity); - if((TWRC_XFERDONE==twRC)||(TWRC_SUCCESS==twRC)) + //Notify the derived class + OnFileTransfer(twSetupFileXfer, bAbort); + if(TWRC_SUCCESS==twRC) { - //Notify the derived class - OnFileTransfer(twSetupFileXfer, bAbort); - if(TWRC_SUCCESS==twRC) - { - TraceMessage("*** Note: DS responded with invalid TWRC_SUCCESS for DAT_IMAGEFILEXFER/MSG_GET Expected: TWRC_XFERDONE ***"); - twRC = TWRC_XFERDONE; - } + TraceMessage("*** Note: DS responded with invalid TWRC_SUCCESS for DAT_IMAGEFILEXFER/MSG_GET Expected: TWRC_XFERDONE ***"); + twRC = TWRC_XFERDONE; } } } - break; - case TWSX_MEMORY: - case TWSX_MEMFILE: + } + break; + case TWSX_MEMORY: + case TWSX_MEMFILE: + { + if(6==m_uiState) { - if(6==m_uiState) + //Find out how we are supposed to setup the memory + twRC = DSM_Entry(DG_CONTROL, DAT_SETUPMEMXFER, MSG_GET, &twSetupMemXfer, &m_twSourceIdentity); + if(TWRC_SUCCESS==twRC) { - //Find out how we are supposed to setup the memory - twRC = DSM_Entry(DG_CONTROL, DAT_SETUPMEMXFER, MSG_GET, &twSetupMemXfer, &m_twSourceIdentity); - if(TWRC_SUCCESS==twRC) - { - //Allocate the memory - twImageMemXfer.Memory.Flags = TWMF_APPOWNS|TWMF_POINTER; - twImageMemXfer.Memory.Length = twSetupMemXfer.Preferred; - twImageMemXfer.Memory.TheMem = new BYTE[twSetupMemXfer.Preferred]; - } + //Allocate the memory + twImageMemXfer.Memory.Flags = TWMF_APPOWNS|TWMF_POINTER; + twImageMemXfer.Memory.Length = twSetupMemXfer.Preferred; + twImageMemXfer.Memory.TheMem = new BYTE[twSetupMemXfer.Preferred]; } - if(6<=m_uiState) + } + if(6<=m_uiState) + { + //perform a Memory transfer + twRC = DSM_Entry(DG_IMAGE, DAT_IMAGEMEMXFER, MSG_GET, &twImageMemXfer, &m_twSourceIdentity); + } + if((TWRC_XFERDONE==twRC)||(TWRC_SUCCESS==twRC)) + { + if(TWSX_MEMORY==m_twXferMech) { - //perform a Memory transfer - twRC = DSM_Entry(DG_IMAGE, DAT_IMAGEMEMXFER, MSG_GET, &twImageMemXfer, &m_twSourceIdentity); + //Notify the derived class that a memory transfer occured + OnMemoryTransfer(twInfo, twImageMemXfer, twRC, bAbort); } - if((TWRC_XFERDONE==twRC)||(TWRC_SUCCESS==twRC)) + else if(TWSX_MEMFILE==m_twXferMech) { - if(TWSX_MEMORY==twXferMech) - { - //Notify the derived class that a memory transfer occured - OnMemoryTransfer(twInfo, twImageMemXfer, twRC, bAbort); - } - else if(TWSX_MEMFILE==twXferMech) - { - //Notify the derived class that a file in memory transfer occured - OnFileMemTransfer(twImageMemXfer, twRC, bAbort); - } + //Notify the derived class that a file in memory transfer occured + OnFileMemTransfer(twImageMemXfer, twRC, bAbort); + } - if(TWRC_XFERDONE==twRC) - { - //finished, discard the memory used - delete [] reinterpret_cast<BYTE*>(twImageMemXfer.Memory.TheMem); - twImageMemXfer.Memory.TheMem = NULL; - } + if(TWRC_XFERDONE==twRC) + { + //finished, discard the memory used + delete [] reinterpret_cast<BYTE*>(twImageMemXfer.Memory.TheMem); + twImageMemXfer.Memory.TheMem = NULL; } } - break; - } - }while(TWRC_SUCCESS==twRC); + } + break; + } + }while(TWRC_SUCCESS==twRC); + } + + if(7==m_uiState) + { + if(m_bUsingUndefinedImageSize) + { + //means the correct image information is available now (width and length are now known) + DSM_Entry(DG_IMAGE, DAT_IMAGEINFO, MSG_GET, &twInfo, &m_twSourceIdentity); } - - if(7==m_uiState) + + //signal the derived class (opportunity to call DAT_EXTIMAGEINFO/MSG_GET) + OnImageEnd(twInfo,m_twXferMech); + //transition a state + TW_PENDINGXFERS twPendingXfers = {0}; + twRC = DSM_Entry(DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, &twPendingXfers, &m_twSourceIdentity); + if(TWRC_SUCCESS==twRC) { //signal the derived class - OnImageEnd(twInfo, twXferMech); - //transition a state - TW_PENDINGXFERS twPendingXfers = {0}; - twRC = DSM_Entry(DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, &twPendingXfers, &m_twSourceIdentity); - if(TWRC_SUCCESS==twRC) - { - //signal the derived class - OnEndXfer(twPendingXfers); - } + OnEndXfer(twPendingXfers); } } return twRC; @@ -809,6 +833,12 @@ { //state transition was detected TraceMessage("* State transition %d -> %d *", twPrevState, m_uiState); + + if((6>twPrevState)&&(6==m_uiState)) + { + //indicates we are just starting a transfer session + m_bStartOfStack = true; + } } //Signal parent OnSignalDSRequest(); Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h 2010-09-15 22:28:07 UTC (rev 92) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h 2010-09-17 21:44:31 UTC (rev 93) @@ -435,7 +435,16 @@ TW_UINT32 m_twInstID; /**< ID assigned to the current class instance */ CRITICAL_SECTION m_csProtectRequestQueue; /**< critical section used to control access to the DataSource request queue */ queue<TW_UINT16> m_twDSRequestQueue; /**< Queue of DataSource requests */ + + bool m_bStartOfStack; /**< flag is set to true on each state 5-6 transition and false on each 6 to 7 transition */ /** + * The following are upated updated by Transfer method once per batch (once after every state 5-6 transition) + */ + bool m_bSupportsExtImageInfo; /**< indicates data source reports support for DAT_EXTIMAGEINFO, cached for use in state 7 */ + bool m_bUsingUndefinedImageSize; /** indicates the data source is using ICAP_UNDEFINEDIMAGESIZE transfer technique, cached for use in state 7 */ + TW_UINT16 m_twXferMech; /** indicates what transfer mode is currently being used, cached for use in state 7 */ + + /** * Optional method for changing the destination of trace messages * @param[in] pszFormat a printf style format string * @param[in] ... stacked printf style parameters Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-09-15 22:28:07 UTC (rev 92) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-09-17 21:44:31 UTC (rev 93) @@ -240,6 +240,10 @@ > </File> <File + RelativePath=".\extimageinfosel.cpp" + > + </File> + <File RelativePath=".\main.cpp" > </File> @@ -376,6 +380,32 @@ </FileConfiguration> </File> <File + RelativePath=".\extimageinfosel.h" + > + <FileConfiguration + Name="Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\extimageinfosel.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\extimageinfosel.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> + </File> + <File RelativePath=".\meterdlg.h" > <FileConfiguration @@ -524,6 +554,32 @@ </FileConfiguration> </File> <File + RelativePath=".\extimageinfosel.ui" + > + <FileConfiguration + Name="Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> + </File> + <File RelativePath=".\MeterDlg.ui" > <FileConfiguration @@ -668,6 +724,18 @@ SourceControlFiles="false" > <File + RelativePath=".\GeneratedFiles\Debug\moc_enumset.cpp" + > + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> + </File> + <File RelativePath=".\GeneratedFiles\Release\moc_enumset.cpp" > <FileConfiguration @@ -680,7 +748,7 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_enumset.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_extimageinfosel.cpp" > <FileConfiguration Name="Release|Win32" @@ -690,11 +758,25 @@ Name="VCCLCompilerTool" /> </FileConfiguration> + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_meterdlg.cpp" + RelativePath=".\GeneratedFiles\Release\moc_extimageinfosel.cpp" > <FileConfiguration + Name="Release|Win32" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32" ExcludedFromBuild="true" > @@ -716,10 +798,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_setstate.cpp" + RelativePath=".\GeneratedFiles\Release\moc_meterdlg.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -740,6 +822,18 @@ </FileConfiguration> </File> <File + RelativePath=".\GeneratedFiles\Debug\moc_setstate.cpp" + > + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> + </File> + <File RelativePath=".\GeneratedFiles\Release\moc_structureedit.cpp" > <FileConfiguration @@ -778,11 +872,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_twain_app_qt.cpp" + RelativePath=".\GeneratedFiles\Release\moc_twain_app_qt.cpp" > <FileConfiguration Name="Release|Win32" - ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -790,6 +883,7 @@ </FileConfiguration> <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -797,10 +891,11 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_twain_app_qt.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_twain_app_qt.cpp" > <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -808,7 +903,6 @@ </FileConfiguration> <FileConfiguration Name="Debug|Win32" - ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -840,6 +934,10 @@ > </File> <File + RelativePath=".\GeneratedFiles\ui_extimageinfosel.h" + > + </File> + <File RelativePath=".\GeneratedFiles\ui_MeterDlg.h" > </File> Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.cpp 2010-09-15 22:28:07 UTC (rev 92) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.cpp 2010-09-17 21:44:31 UTC (rev 93) @@ -285,6 +285,7 @@ free(pStruct); } } + m_pStructure = NULL; QDialog::accept(); return; } @@ -300,6 +301,7 @@ free(pStruct); } } + m_pStructure = NULL; QDialog::reject(); return; } Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-09-15 22:28:07 UTC (rev 92) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-09-17 21:44:31 UTC (rev 93) @@ -7,6 +7,7 @@ #include "EnumSet.h" #include "SetState.h" #include "StructureEdit.h" +#include "ExtImageInfoSel.h" /** * Event handler for relaying events to the TWAIN DS (required for TWAIN versions below 2.2 @@ -53,7 +54,6 @@ , m_nImageCount(0) , m_pMemoryFile(NULL) , m_pMemoryDataStream(NULL) - , m_bUpdateHeaderOnImageEnd(false) { ui.setupUi(this); @@ -363,55 +363,47 @@ { case TWFF_BMP: { - BITMAPFILEHEADER bmfh; - memset(&bmfh, 0, sizeof(bmfh)); + memset(&m_bmfhBitmap, 0, sizeof(m_bmfhBitmap)); + memset(&m_bmihBitmap, 0, sizeof(m_bmihBitmap)); - BITMAPINFOHEADER bmih; - memset(&bmih, 0, sizeof(bmih)); - //fill in the bitmap info structure - bmih.biSize = sizeof(BITMAPINFOHEADER); - bmih.biPlanes = 1; - bmih.biBitCount = twInfo.BitsPerPixel; - bmih.biXPelsPerMeter = FIX32ToFloat(twInfo.XResolution) * 39.37F + 0.5; - bmih.biYPelsPerMeter = FIX32ToFloat(twInfo.YResolution) * 39.37F + 0.5; - bmih.biCompression = BI_RGB; + m_bmihBitmap.biSize = sizeof(BITMAPINFOHEADER); + m_bmihBitmap.biPlanes = 1; + m_bmihBitmap.biBitCount = twInfo.BitsPerPixel; + m_bmihBitmap.biXPelsPerMeter = FIX32ToFloat(twInfo.XResolution) * 39.37F + 0.5; + m_bmihBitmap.biYPelsPerMeter = FIX32ToFloat(twInfo.YResolution) * 39.37F + 0.5; + m_bmihBitmap.biCompression = BI_RGB; switch(twInfo.PixelType) { case TWPT_RGB: //in the case of RGB there is no Palette in a DIB - bmih.biClrUsed = 0; + m_bmihBitmap.biClrUsed = 0; break; case TWPT_BW: case TWPT_GRAY: case TWPT_PALETTE: //compute the palette size - bmih.biClrUsed = 1<<twInfo.BitsPerPixel; + m_bmihBitmap.biClrUsed = 1<<twInfo.BitsPerPixel; m_nPaletteOffset = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); break; } //fill in the bitmap file header - bmfh.bfType = ( (WORD) ('M' << 8) | 'B'); - bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + (sizeof(RGBQUAD)*bmih.biClrUsed); - if((TWON_DONTCARE16 == twInfo.ImageWidth) - ||(TWON_DONTCARE16 == twInfo.ImageLength)) + m_bmfhBitmap.bfType = ( (WORD) ('M' << 8) | 'B'); + m_bmfhBitmap.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + (sizeof(RGBQUAD)*m_bmihBitmap.biClrUsed); + if(false==m_bUsingUndefinedImageSize) { - m_bUpdateHeaderOnImageEnd = true; + m_bmihBitmap.biWidth = twInfo.ImageWidth; + m_bmihBitmap.biHeight = -twInfo.ImageLength; + m_bmihBitmap.biSizeImage = (((m_bmihBitmap.biWidth * m_bmihBitmap.biBitCount + 31)/32) * 4) * m_bmihBitmap.biHeight; + m_bmfhBitmap.bfSize = sizeof(BITMAPFILEHEADER) + m_bmihBitmap.biSizeImage; } - else - { - bmih.biWidth = twInfo.ImageWidth; - bmih.biHeight = -twInfo.ImageLength; - bmih.biSizeImage = (((bmih.biWidth * bmih.biBitCount + 31)/32) * 4) * bmih.biHeight; - bmfh.bfSize = sizeof(BITMAPFILEHEADER) + bmih.biSizeImage; - } RGBQUAD *pbmiColors = NULL; //check if a palette is required - if(bmih.biClrUsed) + if(m_bmihBitmap.biClrUsed) { //for now just dump an empty palette in here - pbmiColors = new RGBQUAD[bmih.biClrUsed]; - memset(pbmiColors, 0, sizeof(RGBQUAD)*bmih.biClrUsed); + pbmiColors = new RGBQUAD[m_bmihBitmap.biClrUsed]; + memset(pbmiColors, 0, sizeof(RGBQUAD)*m_bmihBitmap.biClrUsed); if(TWPT_PALETTE==twInfo.PixelType) { TW_PALETTE8 twPalette = {0}; @@ -421,13 +413,13 @@ if((TWPA_RGB==twPalette.PaletteType)||(TWPA_GRAY==twPalette.PaletteType)) { //just in case the palette sizes are different - if(bmih.biClrUsed!=twPalette.NumColors) + if(m_bmihBitmap.biClrUsed!=twPalette.NumColors) { //realistically this should never happen - bmih.biClrUsed = twPalette.NumColors; + m_bmihBitmap.biClrUsed = twPalette.NumColors; delete [] pbmiColors; - pbmiColors = new RGBQUAD[bmih.biClrUsed]; - memset(pbmiColors, 0, sizeof(RGBQUAD)*bmih.biClrUsed); + pbmiColors = new RGBQUAD[m_bmihBitmap.biClrUsed]; + memset(pbmiColors, 0, sizeof(RGBQUAD)*m_bmihBitmap.biClrUsed); } //copy the palette for(int nIndex = 0; nIndex < twPalette.NumColors; nIndex++) @@ -442,9 +434,9 @@ else { //assume our palette is TWPF_CHOCOLATE (black is zero) - can be corrected at image end if necessary - int nIncr = 0xFF / ( bmih.biClrUsed - 1 ); + int nIncr = 0xFF / ( m_bmihBitmap.biClrUsed - 1 ); int nVal = 0; - for (int nIndex=0; nIndex<bmih.biClrUsed; nIndex++) + for (int nIndex=0; nIndex<m_bmihBitmap.biClrUsed; nIndex++) { //create the palette nVal = nIndex * nIncr; @@ -456,15 +448,15 @@ } } //all the colors used are important - bmih.biClrImportant = bmih.biClrUsed; + m_bmihBitmap.biClrImportant = m_bmihBitmap.biClrUsed; //dump the file header - m_pMemoryDataStream->writeRawData(reinterpret_cast<char*>(&bmfh), sizeof(bmfh)); + m_pMemoryDataStream->writeRawData(reinterpret_cast<char*>(&m_bmfhBitmap), sizeof(m_bmfhBitmap)); //dump the bitmap info header - m_pMemoryDataStream->writeRawData(reinterpret_cast<char*>(&bmih), sizeof(bmih)); + m_pMemoryDataStream->writeRawData(reinterpret_cast<char*>(&m_bmihBitmap), sizeof(m_bmihBitmap)); if(pbmiColors) { //dump the palette in the file - m_pMemoryDataStream->writeRawData(reinterpret_cast<char*>(pbmiColors), sizeof(RGBQUAD)*bmih.biClrUsed); + m_pMemoryDataStream->writeRawData(reinterpret_cast<char*>(pbmiColors), sizeof(RGBQUAD)*m_bmihBitmap.biClrUsed); //delete the palette memory delete [] pbmiColors; pbmiColors = NULL; @@ -486,11 +478,50 @@ void TWAIN_App_QT::OnImageEnd(const TW_IMAGEINFO &twInfo, TW_UINT16 twXferMech) { + pTW_EXTIMAGEINFO pInfo = NULL; + if(m_bSupportsExtImageInfo && (Qt::Checked == ui.chkExtImageInfo->checkState())) + { + pInfo = CreateExtImageInfo(m_lstExtImageInfo); + if(pInfo) + { + if(TWRC_SUCCESS==DSM_Entry(DG_IMAGE, DAT_EXTIMAGEINFO, MSG_GET, pInfo, &m_twSourceIdentity)) + { + TraceStruct(*pInfo); + } + } + } + //Construct info if((TWSX_MEMORY==twXferMech)&&ui.chkSave) { - + if(m_bUsingUndefinedImageSize) + { + //go back and update some file information + switch(m_twMemoryFileFormat) + { + case TWFF_BMP: + m_bmihBitmap.biWidth = twInfo.ImageWidth; + m_bmihBitmap.biHeight = -twInfo.ImageLength; + m_bmihBitmap.biSizeImage = (((m_bmihBitmap.biWidth * m_bmihBitmap.biBitCount + 31)/32) * 4) * m_bmihBitmap.biHeight; + m_bmfhBitmap.bfSize = sizeof(BITMAPFILEHEADER) + m_bmihBitmap.biSizeImage; + //go back to the beginning of the file + m_pMemoryFile->seek(0); + //dump the file header + m_pMemoryDataStream->writeRawData(reinterpret_cast<char*>(&m_bmfhBitmap), sizeof(m_bmfhBitmap)); + //dump the bitmap info header + m_pMemoryDataStream->writeRawData(reinterpret_cast<char*>(&m_bmihBitmap), sizeof(m_bmihBitmap)); + break; + case TWFF_TIFF: + #pragma message("TODO: implement TIFF undefined image size") + break; + } + } } + + if(pInfo) + { + CleanupExtImageInfo(pInfo); + } if(m_pMemoryDataStream) { @@ -723,6 +754,8 @@ void TWAIN_App_QT::on_btnSet_clicked(bool bChecked) { //Display a UI for selecting EXTIMAGEINFO values to read + ExtImageInfoSel dlg(m_lstExtImageInfo, this); + dlg.exec(); return; } @@ -1478,82 +1511,6 @@ } return; } -const TW_UINT16 kTWEI_TABLE[] = -{ - TWEI_BARCODEX, - TWEI_BARCODEY, - TWEI_BARCODETEXT, - TWEI_BARCODETYPE, - TWEI_DESHADETOP, - TWEI_DESHADELEFT, - TWEI_DESHADEHEIGHT, - TWEI_DESHADEWIDTH, - TWEI_DESHADESIZE, - TWEI_SPECKLESREMOVED, - TWEI_HORZLINEXCOORD, - TWEI_HORZLINEYCOORD, - TWEI_HORZLINELENGTH, - TWEI_HORZLINETHICKNESS, - TWEI_VERTLINEXCOORD, - TWEI_VERTLINEYCOORD, - TWEI_VERTLINELENGTH, - TWEI_VERTLINETHICKNESS, - TWEI_PATCHCODE, - TWEI_ENDORSEDTEXT, - TWEI_FORMCONFIDENCE, - TWEI_FORMTEMPLATEMATCH, - TWEI_FORMTEMPLATEPAGEMATCH, - TWEI_FORMHORZDOCOFFSET, - TWEI_FORMVERTDOCOFFSET, - TWEI_BARCODECOUNT, - TWEI_BARCODECONFIDENCE, - TWEI_BARCODEROTATION, - TWEI_BARCODETEXTLENGTH, - TWEI_DESHADECOUNT, - TWEI_DESHADEBLACKCOUNTOLD, - TWEI_DESHADEBLACKCOUNTNEW, - TWEI_DESHADEBLACKRLMIN, - TWEI_DESHADEBLACKRLMAX, - TWEI_DESHADEWHITECOUNTOLD, - TWEI_DESHADEWHITECOUNTNEW, - TWEI_DESHADEWHITERLMIN, - TWEI_DESHADEWHITERLAVE, - TWEI_DESHADEWHITERLMAX, - TWEI_BLACKSPECKLESREMOVED, - TWEI_WHITESPECKLESREMOVED, - TWEI_HORZLINECOUNT, - TWEI_VERTLINECOUNT, - TWEI_DESKEWSTATUS, - TWEI_SKEWORIGINALANGLE, - TWEI_SKEWFINALANGLE, - TWEI_SKEWCONFIDENCE, - TWEI_SKEWWINDOWX1, - TWEI_SKEWWINDOWY1, - TWEI_SKEWWINDOWX2, - TWEI_SKEWWINDOWY2, - TWEI_SKEWWINDOWX3, - TWEI_SKEWWINDOWY3, - TWEI_SKEWWINDOWX4, - TWEI_SKEWWINDOWY4, - TWEI_BOOKNAME, - TWEI_CHAPTERNUMBER, - TWEI_DOCUMENTNUMBER, - TWEI_PAGENUMBER, - TWEI_CAMERA, - TWEI_FRAMENUMBER, - TWEI_FRAME, - TWEI_PIXELFLAVOR, - TWEI_ICCPROFILE, - TWEI_LASTSEGMENT, - TWEI_SEGMENTNUMBER, - TWEI_MAGDATA, - TWEI_MAGTYPE, - TWEI_PAGESIDE, - TWEI_FILESYSTEMSOURCE, - TWEI_IMAGEMERGED, - TWEI_MAGDATALENGTH, - TWON_DONTCARE16, -}; void TWAIN_App_QT::on_btnSelPath_clicked(bool bChecked) { @@ -2025,6 +1982,15 @@ void TWAIN_App_QT::TraceStruct(const TW_EXTIMAGEINFO &twData) { + TraceMessage("NumInfos = %d", twData.NumInfos); + for(int nIndex = 0; nIndex < twData.NumInfos; nIndex++) + { + if(TWRC_SUCCESS==twData.Info[nIndex].ReturnCode) + { + TraceMessage("\tInfoID = %s, NumItems = %d, ItemType = %s, ReturnCode = %s, Item = %s", + convertExtImageInfoName_toString(twData.Info[nIndex].InfoID), twData.Info[nIndex].NumItems, convertTWTY_toString(twData.Info[nIndex].ItemType), convertReturnCode_toString(twData.Info[nIndex].ReturnCode), convertExtImageInfoItem_toString(twData.Info[nIndex])); + } + } return; } @@ -2032,3 +1998,31 @@ { return; } + +pTW_EXTIMAGEINFO TWAIN_App_QT::CreateExtImageInfo(const vector<TW_UINT16> &lstExtIInfo) +{ + size_t nStructSize = sizeof(TW_EXTIMAGEINFO) + (sizeof(TW_INFO) * lstExtIInfo.size()); + pTW_EXTIMAGEINFO pRet = reinterpret_cast<pTW_EXTIMAGEINFO>(new BYTE[nStructSize]); + memset(pRet, 0, nStructSize); + if(pRet) + { + pRet->NumInfos = lstExtIInfo.size(); + for(int nIndex = 0; nIndex < pRet->NumInfos; nIndex++) + { + pRet->Info[nIndex].InfoID = lstExtIInfo[nIndex]; + pRet->Info[nIndex].ItemType = TWON_DONTCARE16; + pRet->Info[nIndex].ReturnCode = TWRC_INFONOTSUPPORTED; + } + } + return pRet; +} + +void TWAIN_App_QT::CleanupExtImageInfo(pTW_EXTIMAGEINFO &pInfo) +{ + if(pInfo) + { + delete [] reinterpret_cast<BYTE*>(pInfo); + pInfo = NULL; + } + return; +} Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h 2010-09-15 22:28:07 UTC (rev 92) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h 2010-09-17 21:44:31 UTC (rev 93) @@ -109,6 +109,9 @@ void OnExtImageInfo(TW_UINT16 twMsg); void OnICCProfile(TW_UINT16 twMsg); + pTW_EXTIMAGEINFO CreateExtImageInfo(const vector<TW_UINT16> &lstExtIInfo); + void CleanupExtImageInfo(pTW_EXTIMAGEINFO &pInfo); + void TraceStruct(const TW_PENDINGXFERS &twData); void TraceStruct(const TW_SETUPMEMXFER &twData); void TraceStruct(const TW_SETUPFILEXFER &twData); @@ -134,8 +137,9 @@ QFile *m_pMemoryFile; QDataStream *m_pMemoryDataStream; TW_UINT16 m_twMemoryFileFormat; - bool m_bUpdateHeaderOnImageEnd; - int m_nPaletteOffset; + BITMAPFILEHEADER m_bmfhBitmap; /**< used when in memory transfer mode and the output format is .bmp */ + BITMAPINFOHEADER m_bmihBitmap; /**< used when in memory transfer mode and the output format is .bmp */ + int m_nPaletteOffset; /**< used when in memory transfer mode and the output format is .bmp */ TW_CUSTOMDSDATA m_twCustomDSData; TW_SETUPMEMXFER m_twSetupMemXfer; Modified: trunk/TWAIN-Samples/common/TwainString.cpp =================================================================== --- trunk/TWAIN-Samples/common/TwainString.cpp 2010-09-15 22:28:07 UTC (rev 92) +++ trunk/TWAIN-Samples/common/TwainString.cpp 2010-09-17 21:44:31 UTC (rev 93) @@ -280,7 +280,7 @@ const char* convertEI_Item_toString(const TW_UINT16 _unEI, const TW_UINT32 _unItem) { const char* pszString = NULL; - + TW_UINT16 twItem = (TW_UINT16)_unItem; switch(_unEI) { case TWEI_BARCODEROTATION: @@ -288,11 +288,11 @@ break; case TWEI_BARCODETYPE: - pszString = convertICAP_SUPPORTEDBARCODETYPES_toString((TW_UINT16)_unItem); + pszString = CapabilityValueToString(ICAP_SUPPORTEDBARCODETYPES, TWTY_UINT16, &twItem);//convertICAP_SUPPORTEDBARCODETYPES_toString((TW_UINT16)_unItem); break; - case TWEI_PAGESIDE: - pszString = convertTWEI_PAGESIDE_toString((TW_UINT16)_unItem); + case TWEI_PAGESIDE: //CAP_CAMERASIDE + pszString = CapabilityValueToString(CAP_CAMERASIDE, TWTY_UINT16, &twItem);//convertTWEI_PAGESIDE_toString((TW_UINT16)_unItem); break; case TWEI_DESKEWSTATUS: @@ -300,11 +300,11 @@ break; case TWEI_FILESYSTEMSOURCE: - pszString = convertTWEI_FILESYSTEM_toString((TW_UINT16)_unItem); + pszString = convertFileType_toString((TW_UINT16)_unItem); break; case TWEI_PIXELFLAVOR: - pszString = convertICAP_PIXELFLAVOR_toString((TW_UINT16)_unItem); + pszString = CapabilityValueToString(ICAP_PIXELFLAVOR, TWTY_UINT16, &twItem);//convertICAP_PIXELFLAVOR_toString((TW_UINT16)_unItem); break; case TWEI_MAGTYPE: @@ -1402,23 +1402,23 @@ switch(InfoID) { case TWBCOR_ROT0: - text = "Rotation 0 deg"; + text = "TWBCOR_ROT0"; break; case TWBCOR_ROT90: - text = "Rotation 90 deg"; + text = "TWBCOR_ROT90"; break; case TWBCOR_ROT180: - text = "Rotation 180 deg"; + text = "TWBCOR_ROT180"; break; case TWBCOR_ROT270: - text = "Rotation 270 deg"; + text = "TWBCOR_ROT270"; break; case TWBCOR_ROTX: - text = "Rotation x deg"; + text = "TWBCOR_ROTX"; break; default: @@ -1775,11 +1775,11 @@ switch(InfoID) { case TWCS_TOP: - text = "Front"; + text = "TWCS_TOP"; break; case TWCS_BOTTOM: - text = "Back"; + text = "TWCS_BOTTOM"; break; default: @@ -1927,19 +1927,19 @@ switch(InfoID) { case TWDSK_SUCCESS: - text = "Success"; + text = "TWDSK_SUCCESS"; break; case TWDSK_REPORTONLY: - text = "Report Only"; + text = "TWDSK_REPORTONLY"; break; case TWDSK_FAIL: - text = "Fail"; + text = "TWDSK_FAIL"; break; case TWDSK_DISABLED: - text = "Disabled"; + text = "TWDSK_DISABLED"; break; default: @@ -2786,15 +2786,15 @@ switch(InfoID) { case TWMD_MICR: - text = "MICR"; + text = "TWMD_MICR"; break; case TWMD_RAW: - text = "RAW"; + text = "TWMD_RAW"; break; case TWMD_INVALID: - text = "Invalid"; + text = "TWMD_INVALID"; break; default: @@ -2978,27 +2978,27 @@ switch(InfoID) { case TWPCH_PATCH1: - text = "Patch 1"; + text = "TWPCH_PATCH1"; break; case TWPCH_PATCH2: - text = "Patch 2"; + text = "TWPCH_PATCH2"; break; case TWPCH_PATCH3: - text = "Patch 3"; + text = "TWPCH_PATCH3"; break; case TWPCH_PATCH4: - text = "Patch 4"; + text = "TWPCH_PATCH4"; break; case TWPCH_PATCH6: - text = "Patch 6"; + text = "TWPCH_PATCH6"; break; case TWPCH_PATCHT: - text = "Patch T"; + text = "TWPCH_PATCHT"; break; default: @@ -3560,11 +3560,11 @@ } -const char* convertExtImageInfoItem_toString(TW_INFO &ImgInfo) +const char* convertExtImageInfoItem_toString(const TW_INFO &ImgInfo) { char * buff = nextTempBuffer(); - if(TWRC_SUCCESS == ImgInfo.CondCode) + if(TWRC_SUCCESS == ImgInfo.ReturnCode) { switch(ImgInfo.ItemType) { Modified: trunk/TWAIN-Samples/common/TwainString.h =================================================================== --- trunk/TWAIN-Samples/common/TwainString.h 2010-09-15 22:28:07 UTC (rev 92) +++ trunk/TWAIN-Samples/common/TwainString.h 2010-09-17 21:44:31 UTC (rev 93) @@ -418,7 +418,7 @@ * @param[in] ImgInfo the TW_INFO to retrieve the extended image info of * @return string of the extended image info value */ -const char* convertExtImageInfoItem_toString(TW_INFO &ImgInfo); +const char* convertExtImageInfoItem_toString(const TW_INFO &ImgInfo); /** * converts the TWAIN Return Code into string form This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jh...@us...> - 2010-09-15 22:28:16
|
Revision: 92 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=92&view=rev Author: jharju Date: 2010-09-15 22:28:07 +0000 (Wed, 15 Sep 2010) Log Message: ----------- Added global string conversion definition. Updated documentation. Added FileType to string method. Added FileFormat to string method. Added dialog that allows users to edit TWAIN DAT_ structures before 'set' type operations. Added support for DAT_FILESYSTEM/DAT_IMAGELAYOUT/DAT_SETUPFILEXFER Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h trunk/TWAIN-Samples/common/TwainString.cpp trunk/TWAIN-Samples/common/TwainString.h Added Paths: ----------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.ui Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp 2010-09-13 21:17:57 UTC (rev 91) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp 2010-09-15 22:28:07 UTC (rev 92) @@ -4,6 +4,9 @@ #pragma message("TODO: Fix") #include "..\..\Src\DSMInterface.h" +/** +* Private utility class for calling Pre and Post DSM calls during DSM_Entry calls +*/ class CDSMPrePostCaller { public: @@ -33,6 +36,9 @@ return; } +/** +* Static instance data for the CTWAINSession class +*/ map<TW_UINT32, CTWAINSession *> CTWAINSession::m_mapInstance; TW_UINT32 CTWAINSession::m_uiInstCount = 0; CRITICAL_SECTION CTWAINSession::m_csProtectInstanceMap; Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h 2010-09-13 21:17:57 UTC (rev 91) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h 2010-09-15 22:28:07 UTC (rev 92) @@ -168,32 +168,138 @@ * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details */ TW_UINT16 SetCallback(); - + /** + * Basic method for setting a capability + * @param[in] twCap the description of the capability and container to set + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ + TW_UINT16 SetCapability(TW_CAPABILITY &twCap); + /** + * Utility method for getting supported capability values + * @param[in] twCapId the id of the capability to get + * @param[out] hContainer container resulting from the successful operation + * @param[out] twConType type of container resulting from the successful operation + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ + TW_UINT16 GetCapabilitySupported(TW_UINT16 twCapId, TW_HANDLE &hContainer, TW_UINT16 &twConType); + /** + * Basic method for performing any 'get' capability operation + * @param[in|out] twCap the description of the capability to get and to house the result + * @param[in] twMsg must be one of MSG_GET, MSG_GETCURRENT, MSG_GETDEFAULT, MSG_RESET + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ + TW_UINT16 GetCapability(TW_CAPABILITY &twCap, TW_UINT16 twMsg=MSG_GET); + /** + * Basic method to query what MSG_' operations are supported by a particular capability + * @param[in] twCapId the id of the capability to check + * @return a combination of TWQS_ flags or 0 if no operations are supported + */ + TW_UINT32 QuerySupportCapability(TW_UINT16 twCapId); + /** + * Utility method for setting current capability values when the item type is bool + * @param[in] twCapId the id of the capability to set + * @param[in] bValue the boolean value to set + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 SetCapabilityOneValue(TW_UINT16 twCapId, const bool &bValue); + /** + * Utility method for setting current capability values when the item type is TW_INT16 + * @param[in] twCapId the id of the capability to set + * @param[in] twVal the value to set + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 SetCapabilityOneValue(TW_UINT16 twCapId, const TW_INT16 &twVal); + /** + * Utility method for setting current capability values when the item type is TW_UINT16 + * @param[in] twCapId the id of the capability to set + * @param[in] twVal the value to set + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 SetCapabilityOneValue(TW_UINT16 twCapId, const TW_UINT16 &twVal); + /** + * Utility method for setting current capability values when the item type is TW_UINT32 + * @param[in] twCapId the id of the capability to set + * @param[in] twVal the value to set + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 SetCapabilityOneValue(TW_UINT16 twCapId, const TW_UINT32 &twVal); + /** + * Utility method for setting current capability values when the item type is TW_FIX32 + * @param[in] twCapId the id of the capability to set + * @param[in] twVal the value to set + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 SetCapabilityOneValue(TW_UINT16 twCapId, const TW_FIX32 &twVal); + /** + * Utility method for setting current capability values when the item type is TW_FRAME + * @param[in] twCapId the id of the capability to set + * @param[in] twVal the value to set + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 SetCapabilityOneValue(TW_UINT16 twCapId, const TW_FRAME &twVal); - TW_UINT16 SetCapabilityAnyOneValue(TW_CAPABILITY &twCap, const void *pValue); - - TW_UINT16 SetCapability(TW_CAPABILITY &twCap); - - + /** + * Utility method for getting current or default capability values when the item type is bool + * @param[in] twCapId the id of the capability to get + * @param[in] bValue the value to get + * @param[in] twMsg must be one of MSG_GETCURRENT, MSG_GETDEFAULT, MSG_RESET + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 GetCapabilityOneValue(TW_UINT16 twCapId, bool &bValue, TW_UINT16 twMsg=MSG_GETCURRENT); + /** + * Utility method for getting current or default capability values when the item type is TW_INT16 + * @param[in] twCapId the id of the capability to get + * @param[in] twValue the value to get + * @param[in] twMsg must be one of MSG_GETCURRENT, MSG_GETDEFAULT, MSG_RESET + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 GetCapabilityOneValue(TW_UINT16 twCapId, TW_INT16 &twValue, TW_UINT16 twMsg=MSG_GETCURRENT); + /** + * Utility method for getting current or default capability values when the item type is TW_UINT16 + * @param[in] twCapId the id of the capability to get + * @param[in] twValue the value to get + * @param[in] twMsg must be one of MSG_GETCURRENT, MSG_GETDEFAULT, MSG_RESET + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 GetCapabilityOneValue(TW_UINT16 twCapId, TW_UINT16 &twValue, TW_UINT16 twMsg=MSG_GETCURRENT); + /** + * Utility method for getting current or default capability values when the item type is TW_UINT32 + * @param[in] twCapId the id of the capability to get + * @param[in] twValue the value to get + * @param[in] twMsg must be one of MSG_GETCURRENT, MSG_GETDEFAULT, MSG_RESET + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 GetCapabilityOneValue(TW_UINT16 twCapId, TW_UINT32 &twValue, TW_UINT16 twMsg=MSG_GETCURRENT); + /** + * Utility method for getting current or default capability values when the item type is TW_FIX32 + * @param[in] twCapId the id of the capability to get + * @param[in] twValue the value to get + * @param[in] twMsg must be one of MSG_GETCURRENT, MSG_GETDEFAULT, MSG_RESET + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 GetCapabilityOneValue(TW_UINT16 twCapId, TW_FIX32 &twValue, TW_UINT16 twMsg=MSG_GETCURRENT); + /** + * Utility method for getting current or default capability values when the item type is TW_FRAME + * @param[in] twCapId the id of the capability to get + * @param[in] twValue the value to get + * @param[in] twMsg must be one of MSG_GETCURRENT, MSG_GETDEFAULT, MSG_RESET + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 GetCapabilityOneValue(TW_UINT16 twCapId, TW_FRAME &twValue, TW_UINT16 twMsg=MSG_GETCURRENT); + /** + * General method for setting a capability item of any type + * @param[in] twCap structure describing the capabability to set and a pre-allocated TW_ONEVALUE container + * @param[in] pValue the value of the type described by the twCap structure to be set + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ + TW_UINT16 SetCapabilityAnyOneValue(TW_CAPABILITY &twCap, const void *pValue); + /** + * General method for getting a capability item of any type + * @param[in] twCap structure describing the capabability to get + * @param[out] pData pointer to the value to accept the resulting data + * @param[in] twMsg must be one of MSG_GETCURRENT, MSG_GETDEFAULT, MSG_RESET + * @return TWRC_SUCCESS if successful, otherwise TWRC_FAILURE, GetLastStatus for details + */ TW_UINT16 GetAnyCapabilityOneValue(TW_CAPABILITY twCap, void *pData, TW_UINT16 twMsg); - - TW_UINT16 GetCapabilitySupported(TW_UINT16 twCapId, TW_HANDLE &hContainer, TW_UINT16 &twConType); - - TW_UINT16 GetCapability(TW_CAPABILITY &twCap, TW_UINT16 twMsg=MSG_GET); - - TW_UINT32 QuerySupportCapability(TW_UINT16 twCapId); - /** * Method to Enable the DataSource with intent to transfer * Must be called in State 4 @@ -219,8 +325,7 @@ */ TW_UINT16 DisableDS(); /** - * Method called to give DataSource an opportunity to process events, examine the DataSource request queue and act on them - * An alternative to this method is calling the GetDSRequest, ClearDSRequest and DoTransfer methods manually + * Method that MUST be cranked in Windows by the thread event loop for proper UI keyboard handling and signaling events when callbacks are not used * @param twEvent a reference to a structure containing event information to be relayed to the DataSource * @return TWRC_DSEVENT if the event was consumed by the DataSource or TWRC_NOTDSEVENT if the event did not belong to the DataSource */ @@ -253,14 +358,19 @@ virtual void OnError(const TW_STATUS &twStatus) = 0; /** * Optional Implementation specifical handler that is called right before an image transfer begins (state 6) + * @param[in] twInfo contains information obtained by DAT_IMAGEINFO/MSG_GET call in State 6 + * @param[in] twXferMech contains the transfer mode being used */ inline virtual void OnImageBegin(const TW_IMAGEINFO &twInfo, TW_UINT16 twXferMech); /** * Optional Implementation specifical handler that is called after TWRC_XFERDONE is recieved (state 7) + * @param[in] twInfo contains information obtained by DAT_IMAGEINFO/MSG_GET call in State 6 (if UNDEFINEDIMAGESIZE==true then State 7) + * @param[in] twXferMech contains the transfer mode being used */ inline virtual void OnImageEnd(const TW_IMAGEINFO &twInfo, TW_UINT16 twXferMech); /** * Optional Implementation specifical handler that is called after MSG_ENDXFER is called (state 6 or 5) + * @param[in] twXfer contains information obtained during DAT_PENDINGXFERS/MSG_ENDXFER operation during State 7 */ inline virtual void OnEndXfer(const TW_PENDINGXFERS &twXfer); /** @@ -299,9 +409,15 @@ */ inline virtual void PostDSMCall(); /** - * Method used to shutdown the session from any state + * Method used to move the session down to the specified state + * @param[in] twDesiredState the state requested + * @return true if successfully transitioned to the requested state */ bool ReturnToState(TW_UINT16 twDesiredState); + /** + * Method used to transition to one state lower + * @return TWRC_SUCCESS if successful, TWRC_FAILURE on failure, GetLastStatus will contain details about the last executed Triplet + */ TW_UINT16 DownOneState(); /** @@ -330,21 +446,37 @@ * @param[in]twMsg the current DS Request */ void SignalDSRequest(TW_UINT16 twMsg); - /** + * Method used to initialize a TW_CAPABILITY structure and allocate a container of the appropriate size + * @param[in] twCapId the ID of the capability being initialized + * @param[in] twConType TWON_ type of container to use + * @param[in] twItemType TWTY_ type of items to be housed in the container + * @param[out] twCap reference to the TW_CAPABILITY structure used to house the result + * @param[in] twCount optional parameter that specifies the number of items, valid only for TWON_ENUMERATION and TWON_ARRAY containers + * @return true if successful + */ + bool FillCapability(TW_UINT16 twCapId, TW_UINT16 twConType, TW_UINT16 twItemType, TW_CAPABILITY &twCap, TW_UINT32 twCount=1); + /** + * Method to allocate a TWAIN Container that results in a handle + * @param[in] twConType TWON_ type of container to use + * @param[in] twItemType TWTY_ type of items to be housed in the container + * @param[in] twCount optional parameter that specifies the number of items, valid only for TWON_ENUMERATION and TWON_ARRAY containers + * @return NULL if un-successful, otherwise a valid handle to a TWAIN Container + */ + TW_HANDLE AllocateContainer(TW_UINT16 twConType, TW_UINT16 twItemType, TW_UINT32 twCount=1); + /** * Global callback for all instances of this class * Invokes SignalDSRequest in the appropriate class instance * @return TWRC_FAILURE if unable to signal the appropriate class instance */ static TW_UINT16 FAR PASCAL DSMCallback(pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_UINT32 uiDG, TW_UINT16 uiDAT, TW_UINT16 uiMSG, TW_MEMREF pData); + static map<TW_UINT32, CTWAINSession *> m_mapInstance; /**< contains all instances of this class mapped by unique identifiers */ static TW_UINT32 m_uiInstCount; /**< always contains the value of the next 'unique' identifier (has practical unsigned 16 bit integer limits) */ static int m_nRefCount; /**< current number of instances of this class */ static CRITICAL_SECTION m_csProtectInstanceMap; /**< critical section used to control access to the class instance map */ + bool m_bInTWAIN; /**< flag used to detect and prevent DSM re-entrancy */ - bool FillCapability(TW_UINT16 twCapId, TW_UINT16 twConType, TW_UINT16 twItemType, TW_CAPABILITY &twCap, TW_UINT32 twCount=1); - TW_HANDLE AllocateContainer(TW_UINT16 twConType, TW_UINT16 twItemType, TW_UINT32 twCount=1); - bool m_bInTWAIN; }; inline void CTWAINSession::PreDSMCall() @@ -377,6 +509,9 @@ return; } +/** +* Class to automatically manage the state of a boolean flag within the scope / existance of the object +*/ class CAutoFlag { public: @@ -408,6 +543,9 @@ return; } +/** +* Utility class to automatically manage the state of a critical section within the scope / existance of the object +*/ class CAutoCriticalSection { public: @@ -427,7 +565,7 @@ inline CAutoCriticalSection::CAutoCriticalSection(CRITICAL_SECTION *pCriticalSection) : m_pCriticalSection(pCriticalSection) { - //set the flag and keep a reference to it + //Enter the critical section if(m_pCriticalSection) { EnterCriticalSection(m_pCriticalSection); @@ -437,7 +575,7 @@ inline CAutoCriticalSection::~CAutoCriticalSection() { - //reset the flag + //Leave the critical section if(m_pCriticalSection) { LeaveCriticalSection(m_pCriticalSection); Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-09-13 21:17:57 UTC (rev 91) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-09-15 22:28:07 UTC (rev 92) @@ -272,6 +272,10 @@ </FileConfiguration> </File> <File + RelativePath=".\structureedit.cpp" + > + </File> + <File RelativePath=".\twain_app_qt.cpp" > </File> @@ -428,6 +432,32 @@ > </File> <File + RelativePath=".\structureedit.h" + > + <FileConfiguration + Name="Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Moc'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -D_UNICODE -DUNICODE -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I".\..\." -I".\..\..\..\pub\external\include\." -I".\..\..\..\Common\." ".\structureedit.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" "-fstdafx.h" "-f..\..\structureedit.h"
" + AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" + Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"" + /> + </FileConfiguration> + </File> + <File RelativePath=".\twain_app_qt.h" > <FileConfiguration @@ -546,6 +576,32 @@ </FileConfiguration> </File> <File + RelativePath=".\structureedit.ui" + > + <FileConfiguration + Name="Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Uic'ing $(InputFileName)..." + CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
" + AdditionalDependencies="$(QTDIR)\bin\uic.exe" + Outputs="".\GeneratedFiles\ui_$(InputName).h"" + /> + </FileConfiguration> + </File> + <File RelativePath=".\twain_app_qt.ui" > <FileConfiguration @@ -660,6 +716,18 @@ </FileConfiguration> </File> <File + RelativePath=".\GeneratedFiles\Debug\moc_setstate.cpp" + > + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> + </File> + <File RelativePath=".\GeneratedFiles\Release\moc_setstate.cpp" > <FileConfiguration @@ -672,10 +740,17 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_setstate.cpp" + RelativePath=".\GeneratedFiles\Release\moc_structureedit.cpp" > <FileConfiguration Name="Release|Win32" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -684,6 +759,25 @@ </FileConfiguration> </File> <File + RelativePath=".\GeneratedFiles\Debug\moc_structureedit.cpp" + > + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCLCompilerTool" + /> + </FileConfiguration> + </File> + <File RelativePath=".\GeneratedFiles\Debug\moc_twain_app_qt.cpp" > <FileConfiguration @@ -754,6 +848,10 @@ > </File> <File + RelativePath=".\GeneratedFiles\ui_structureedit.h" + > + </File> + <File RelativePath=".\GeneratedFiles\ui_twain_app_qt.h" > </File> Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.cpp (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.cpp 2010-09-15 22:28:07 UTC (rev 92) @@ -0,0 +1,373 @@ +#include "stdafx.h" +#include "structureedit.h" +#include "twainstring.h" + +class ComboDelegate : public QItemDelegate +{ + public: + ComboDelegate(QObject *pParent=0) + : QItemDelegate(pParent) + { + }; + + ~ComboDelegate() + { + }; + + virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; + virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; + virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; +}; + +QWidget *ComboDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + const TW_UINT16 *pTable = static_cast<const TW_UINT16 *>(index.model()->data(index, Qt::UserRole + 3).value<void*>()); + if(pTable) + { + pfnStringCvrtFuncType pfnCvrt = static_cast<pfnStringCvrtFuncType>(index.model()->data(index, Qt::UserRole + 4).value<void*>()); + QComboBox *pCombo = new QComboBox(parent); + int nIndex = 0; + while(TWON_DONTCARE16!=pTable[nIndex]) + { + pCombo->addItem(pfnCvrt(pTable[nIndex]), pTable[nIndex]); + if(index.model()->data(index, Qt::DisplayRole).toString()==QString(pfnCvrt(pTable[nIndex]))) + { + pCombo->setCurrentIndex(nIndex); + } + nIndex++; + } + return pCombo; + } + return QItemDelegate::createEditor(parent, option, index); +} +void ComboDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const +{ +// const TW_UINT16 *pTable = static_cast<const TW_UINT16 *>(index.model()->data(index, Qt::UserRole + 3).value<void*>()); + QComboBox *pCombo = dynamic_cast<QComboBox*>(editor); + if(pCombo) + { + //should have already been done during init + return; + } + QItemDelegate::setEditorData(editor, index); + return; +} + +void ComboDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const +{ + QComboBox *pCombo = dynamic_cast<QComboBox*>(editor); + if(pCombo) + { + pfnStringCvrtFuncType pfnCvrt = static_cast<pfnStringCvrtFuncType>(model->data(index, Qt::UserRole + 4).value<void*>()); +// model->setData(index, pfnCvrt(pCombo->itemData(pCombo->currentIndex()).toUInt()), Qt::EditRole); + QStandardItemModel *pItemModel = dynamic_cast<QStandardItemModel *>(model); + QStandardItem *pItem = pItemModel->itemFromIndex(index); + pItem->setText(pfnCvrt(pCombo->itemData(pCombo->currentIndex()).toUInt())); + void *pValue = model->data(index, Qt::UserRole + 1).value<void*>(); + TW_UINT16 twItemType = model->data(index, Qt::UserRole + 2).toUInt(); + switch(twItemType) + { + case TWTY_INT8: + *static_cast<pTW_INT8>(pValue) = pCombo->itemData(pCombo->currentIndex()).toInt(); + break; + case TWTY_UINT8: + *static_cast<pTW_UINT8>(pValue) = pCombo->itemData(pCombo->currentIndex()).toUInt(); + break; + case TWTY_UINT16: + case TWTY_BOOL: + *static_cast<pTW_UINT16>(pValue) = pCombo->itemData(pCombo->currentIndex()).toUInt(); + break; + case TWTY_INT16: + *static_cast<pTW_INT16>(pValue) = pCombo->itemData(pCombo->currentIndex()).toInt(); + break; + case TWTY_INT32: + *static_cast<pTW_INT32>(pValue) = pCombo->itemData(pCombo->currentIndex()).toInt(); + break; + case TWTY_UINT32: + *static_cast<pTW_UINT32>(pValue) = pCombo->itemData(pCombo->currentIndex()).toUInt(); + break; + //the rest should never happen + case TWTY_FIX32: + case TWTY_FRAME: + case TWTY_STR32: + case TWTY_STR64: + case TWTY_STR128: + case TWTY_STR255: + case TWTY_HANDLE: + break; + } + return; + } + QItemDelegate::setModelData(editor, model, index); + return; +} + + +StructureEdit::StructureEdit(QWidget *parent) + : QDialog(parent) +{ + ui.setupUi(this); + ui.treStructure->setModel(&m_StructureEditModel); + ui.treStructure->setItemDelegate(new ComboDelegate); + // + connect( &m_StructureEditModel, SIGNAL( itemChanged(QStandardItem *) ), this, SLOT( OnItemChanged(QStandardItem *) ), Qt::AutoConnection); + return; +} + +StructureEdit::~StructureEdit() +{ + return; +} + +const TW_UINT16 kCAMERATYPE_TABLE[] = +{ + TWFY_CAMERA, + TWFY_CAMERATOP, + TWFY_CAMERABOTTOM, + TWFY_CAMERAPREVIEW, + TWFY_DOMAIN, + TWFY_HOST, + TWFY_DIRECTORY, + TWFY_IMAGE, + TWFY_UNKNOWN, + TWON_DONTCARE16, +}; + +const TW_UINT16 kFILEFORMAT_TABLE[] = +{ + TWFF_TIFF, + TWFF_PICT, + TWFF_BMP, + TWFF_XBM, + TWFF_JFIF, + TWFF_FPX, + TWFF_TIFFMULTI, + TWFF_PNG, + TWFF_SPIFF, + TWFF_EXIF, + TWFF_PDF, + TWFF_JP2, + TWFF_JPN, + TWFF_JPX, + TWFF_DEJAVU, + TWFF_PDFA, + TWFF_PDFA2, + TWON_DONTCARE16, +}; + +void StructureEdit::SetTWAINStructure(void *pStructure, TW_UINT16 twDat) +{ + setWindowTitle(convertDataArgType_toString(twDat)); + //empty the view + m_StructureEditModel.clear(); + m_StructureEditModel.setColumnCount(2); + + m_pStructure = pStructure; + + QStringList lstHeader; + lstHeader << "Field" << "Value"; + m_StructureEditModel.setHorizontalHeaderLabels(lstHeader); + ui.treStructure->header()->setResizeMode(0, QHeaderView::ResizeToContents); + ui.treStructure->header()->setResizeMode(1, QHeaderView::ResizeToContents); + + + QStandardItem *pItem = new QStandardItem(convertDataArgType_toString(twDat)); + pItem->setFlags(Qt::ItemIsEnabled); + QStandardItem *pItem2 = new QStandardItem(""); + pItem2->setFlags(Qt::ItemIsEnabled); + + switch(twDat) + { + case DAT_FILESYSTEM: + { + m_nStructureSize = sizeof(TW_FILESYSTEM); + pTW_FILESYSTEM pStruct = static_cast<pTW_FILESYSTEM>(malloc(m_nStructureSize)); + if(pStruct) + { + memcpy(pStruct, pStructure, m_nStructureSize); + pItem->setData(QVariant::fromValue(static_cast<void*>(pStruct))); + pItem->setText("TW_FILESYSTEM"); + InsertField(pItem, "InputName", QString("%1").arg(pStruct->InputName), &pStruct->InputName, TWTY_STR255); + InsertField(pItem, "OutputName", QString("%1").arg(pStruct->OutputName), &pStruct->OutputName, TWTY_STR255); +// InsertField("Context", QString("%1").arg(pStruct->Context), &pStruct->Context, TWTY_MEMREF); + /* DG_CONTROL / DAT_FILESYSTEM / MSG_DELETE field */ + InsertField(pItem, "Recursive", QString("%1").arg(pStruct->Recursive), &pStruct->Recursive, TWTY_INT32); + /* DG_CONTROL / DAT_FILESYSTEM / MSG_GETINFO fields */ + InsertField(pItem, "FileType", QString("%1").arg(convertFileType_toString(pStruct->FileType)), &pStruct->FileType, TWTY_INT32, kCAMERATYPE_TABLE, convertFileType_toString); + InsertField(pItem, "Size", QString("%1").arg(pStruct->Size), &pStruct->Size, TWTY_UINT32); + InsertField(pItem, "CreateTimeDate", QString("%1").arg(pStruct->CreateTimeDate), &pStruct->CreateTimeDate, TWTY_STR32 ); + InsertField(pItem, "ModifiedTimeDate", QString("%1").arg(pStruct->ModifiedTimeDate), &pStruct->ModifiedTimeDate, TWTY_STR32 ); + InsertField(pItem, "FreeSpace", QString("%1").arg(pStruct->FreeSpace), &pStruct->FreeSpace, TWTY_UINT32); + InsertField(pItem, "NewImageSize", QString("%1").arg(pStruct->NewImageSize), &pStruct->NewImageSize, TWTY_INT32 ); + InsertField(pItem, "NumberOfFiles", QString("%1").arg(pStruct->NumberOfFiles), &pStruct->NumberOfFiles, TWTY_UINT32); + InsertField(pItem, "NumberOfSnippets", QString("%1").arg(pStruct->NumberOfSnippets), &pStruct->NumberOfSnippets, TWTY_UINT32); + InsertField(pItem, "DeviceGroupMask", QString("%1").arg(pStruct->DeviceGroupMask), &pStruct->DeviceGroupMask, TWTY_UINT32); +// InsertField("Reserved", QString("%1").arg(pStruct->Reserved), &pStruct->Reserved, chTYar )[ + } + } + break; + case DAT_SETUPFILEXFER: + { + m_nStructureSize = sizeof(TW_SETUPFILEXFER); + pTW_SETUPFILEXFER pStruct = static_cast<pTW_SETUPFILEXFER>(malloc(m_nStructureSize)); + if(pStruct) + { + memcpy(pStruct, pStructure, m_nStructureSize); + pItem->setData(QVariant::fromValue(static_cast<void*>(pStruct))); + pItem->setText("TW_SETUPFILEXFER"); + InsertField(pItem, "FileName", QString("%1").arg(pStruct->FileName), &pStruct->FileName, TWTY_STR255); + InsertField(pItem, "Format", QString("%1").arg(convertFileFormat_toString(pStruct->Format)), &pStruct->Format, TWTY_UINT16, kFILEFORMAT_TABLE, convertFileFormat_toString); + InsertField(pItem, "VRefNum", QString("%1").arg(pStruct->VRefNum), &pStruct->VRefNum, TWTY_INT16); + } + } + break; + case DAT_IMAGELAYOUT: + { + m_nStructureSize = sizeof(TW_IMAGELAYOUT); + pTW_IMAGELAYOUT pStruct = static_cast<pTW_IMAGELAYOUT>(malloc(m_nStructureSize)); + if(pStruct) + { + memcpy(pStruct, pStructure, m_nStructureSize); + pItem->setData(QVariant::fromValue(static_cast<void*>(pStruct))); + pItem->setText("TW_IMAGELAYOUT"); + InsertField(pItem, "Frame.Left", QString("%1").arg(FIX32ToFloat(pStruct->Frame.Left)), &pStruct->Frame.Left, TWTY_FIX32 ); + InsertField(pItem, "Frame.Top", QString("%1").arg(FIX32ToFloat(pStruct->Frame.Top)), &pStruct->Frame.Top, TWTY_FIX32 ); + InsertField(pItem, "Frame.Right", QString("%1").arg(FIX32ToFloat(pStruct->Frame.Right)), &pStruct->Frame.Right, TWTY_FIX32 ); + InsertField(pItem, "Frame.Bottom", QString("%1").arg(FIX32ToFloat(pStruct->Frame.Bottom)), &pStruct->Frame.Bottom, TWTY_FIX32 ); + InsertField(pItem, "DocumentNumber", QString("%1").arg(pStruct->DocumentNumber), &pStruct->DocumentNumber, TWTY_UINT32); + InsertField(pItem, "PageNumber", QString("%1").arg(pStruct->PageNumber), &pStruct->PageNumber, TWTY_UINT32); + InsertField(pItem, "FrameNumber", QString("%1").arg(pStruct->FrameNumber), &pStruct->FrameNumber, TWTY_UINT32); + } + } + break; + } + + QList<QStandardItem *> list; + list << pItem << pItem2; + m_StructureEditModel.appendRow(list); + + ui.treStructure->expandAll(); + return; +} + +void StructureEdit::InsertField(QStandardItem *pItem, const QString &strField, const QString &strValue, void *pValue, TW_UINT16 twItemType, const TW_UINT16 *pEnums/*=NULL*/, pfnStringCvrtFuncType pfnStringCvrtFunc/*=NULL*/) +{ + QStandardItem *pFieldItem = new QStandardItem(strField); + pFieldItem->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled); + + QStandardItem *pValueItem = new QStandardItem(strValue); + pValueItem->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled|Qt::ItemIsEditable); + pValueItem->setData(QVariant::fromValue(pValue), Qt::UserRole + 1); + pValueItem->setData(twItemType, Qt::UserRole + 2); + + if(pEnums && pfnStringCvrtFunc) + { + pValueItem->setData(QVariant::fromValue((void*)pEnums), Qt::UserRole + 3); + pValueItem->setData(QVariant::fromValue((void*)pfnStringCvrtFunc), Qt::UserRole + 4); + } + + + QList<QStandardItem *> list; + list << pFieldItem << pValueItem; + pItem->appendRow(list); + return; +} + +void StructureEdit::accept() +{ + QStandardItem *pItem = m_StructureEditModel.item(0, 0); + if(pItem) + { + void *pStruct = pItem->data().value<void*>(); + if(pStruct) + { + memcpy(m_pStructure, pStruct, m_nStructureSize); + free(pStruct); + } + } + QDialog::accept(); + return; +} + +void StructureEdit::reject() +{ + QStandardItem *pItem = m_StructureEditModel.item(0, 0); + if(pItem) + { + void *pStruct = pItem->data().value<void*>(); + if(pStruct) + { + free(pStruct); + } + } + QDialog::reject(); + return; +} + +void StructureEdit::OnItemChanged(QStandardItem *pItem) +{ + void *pValue = pItem->data().value<void*>(); + void *pfnCvrt = pItem->data(Qt::UserRole+4).value<void*>(); + TW_UINT16 twItemType = pItem->data(Qt::UserRole + 2).toUInt(); + if(NULL==pfnCvrt) + { + switch(twItemType) + { + case TWTY_INT8: + *static_cast<pTW_INT8>(pValue) = pItem->text().toInt(); + pItem->setText(QString("%1").arg(*static_cast<pTW_INT8>(pValue))); + break; + case TWTY_UINT8: + *static_cast<pTW_UINT8>(pValue) = pItem->text().toUInt(); + pItem->setText(QString("%1").arg(*static_cast<pTW_UINT8>(pValue))); + break; + case TWTY_UINT16: + case TWTY_BOOL: + *static_cast<pTW_UINT16>(pValue) = pItem->text().toUInt(); + pItem->setText(QString("%1").arg(*static_cast<pTW_UINT16>(pValue))); + break; + case TWTY_INT16: + *static_cast<pTW_INT16>(pValue) = pItem->text().toInt(); + pItem->setText(QString("%1").arg(*static_cast<pTW_INT16>(pValue))); + break; + case TWTY_INT32: + *static_cast<pTW_INT32>(pValue) = pItem->text().toInt(); + pItem->setText(QString("%1").arg(*static_cast<pTW_INT32>(pValue))); + break; + case TWTY_UINT32: + *static_cast<pTW_UINT32>(pValue) = pItem->text().toUInt(); + pItem->setText(QString("%1").arg(*static_cast<pTW_UINT32>(pValue))); + break; + case TWTY_FIX32: + *static_cast<pTW_FIX32>(pValue) = FloatToFIX32(pItem->text().toFloat()); + pItem->setText(QString("%1").arg(FIX32ToFloat(*static_cast<pTW_FIX32>(pValue)))); + break; + case TWTY_FRAME: + //should never happen - break this up into 4 rows of TW_FIX32 values + break; + case TWTY_STR32: + memset(static_cast<char *>(pValue), 0, sizeof(TW_STR32)); + SSTRCPY(static_cast<char *>(pValue), 32, pItem->text().toAscii()); + pItem->setText(static_cast<char *>(pValue)); + break; + case TWTY_STR64: + memset(static_cast<char *>(pValue), 0, sizeof(TW_STR64)); + SSTRCPY(static_cast<char *>(pValue), 64, pItem->text().toAscii()); + pItem->setText(static_cast<char *>(pValue)); + break; + case TWTY_STR128: + memset(static_cast<char *>(pValue), 0, sizeof(TW_STR128)); + SSTRCPY(static_cast<char *>(pValue), 128, pItem->text().toAscii()); + pItem->setText(static_cast<char *>(pValue)); + break; + case TWTY_STR255: + memset(static_cast<char *>(pValue), 0, sizeof(TW_STR255)); + SSTRCPY(static_cast<char *>(pValue), 255, pItem->text().toAscii()); + pItem->setText(static_cast<char *>(pValue)); + break; + case TWTY_HANDLE: + break; + } + } + return; +} \ No newline at end of file Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.h (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.h 2010-09-15 22:28:07 UTC (rev 92) @@ -0,0 +1,67 @@ +/** +* @file structureedit.h +* @brief Contains the Declaration of StructureEdit dialog +* @author JFL Peripheral Solutions Inc. +* @date September 2010 +*/ +#ifndef _inc_structureedit_h +#define _inc_structureedit_h + +#include <QDialog> +#include "ui_structureedit.h" +#include "twain.h" +#include "twainstring.h" + +/** +* Dialog designed to allow users to modify structure contents +*/ +class StructureEdit : public QDialog +{ + Q_OBJECT + + public: + /** + * Basic contructor initializes the GUI + */ + StructureEdit(QWidget *parent = 0); + /** + * Basic destructor destroys the object + */ + ~StructureEdit(); + /** + * Method for loading the dialog with a TWAIN defined structure + * @param[in] pStructure a pointer to the stucture + * @param[in] twData the correspondiung DAT_ that describes the structure + */ + void SetTWAINStructure(void *pStructure, TW_UINT16 twDat); + /** + * Applies the users changes to the original structure + */ + virtual void accept(); + /** + * Discards the users changes and preserves the original structure + */ + virtual void reject(); + + public slots: + /** + * Handles updating structure members when an item changes + * @param[in] pItem the item that changed + */ + void OnItemChanged(QStandardItem *pItem); + + protected: + void *m_pStructure; /**< pointer to the original structure */ + size_t m_nStructureSize; /**< size of the stucture */ + + /** + * Method for inserting a field into the + */ + void InsertField(QStandardItem *pItem, const QString &strField, const QString &strValue, void *pValue, TW_UINT16 twItemType, const TW_UINT16 *pEnums=NULL, pfnStringCvrtFuncType pfnStringCvrtFunc=NULL); + + private: + Ui::StructureEditClass ui; + QStandardItemModel m_StructureEditModel; +}; + +#endif //#ifndef _inc_structureedit_h Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.ui =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.ui (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/structureedit.ui 2010-09-15 22:28:07 UTC (rev 92) @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>StructureEditClass</class> + <widget class="QDialog" name="StructureEditClass"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>411</width> + <height>376</height> + </rect> + </property> + <property name="windowTitle"> + <string>StructureEdit</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QTreeView" name="treStructure"/> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + <property name="centerButtons"> + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + <layoutdefault spacing="6" margin="11"/> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>StructureEditClass</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>364</x> + <y>187</y> + </hint> + <hint type="destinationlabel"> + <x>205</x> + <y>187</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>StructureEditClass</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>364</x> + <y>187</y> + </hint> + <hint type="destinationlabel"> + <x>205</x> + <y>187</y> + </hint> + </hints> + </connection> + </connections> +</ui> Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-09-13 21:17:57 UTC (rev 91) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-09-15 22:28:07 UTC (rev 92) @@ -6,6 +6,7 @@ #include "MeterDlg.h" #include "EnumSet.h" #include "SetState.h" +#include "StructureEdit.h" /** * Event handler for relaying events to the TWAIN DS (required for TWAIN versions below 2.2 @@ -119,6 +120,15 @@ } } + memset(&m_twFileSystem, 0, sizeof(m_twFileSystem)); + memset(&m_twCustomDSData, 0, sizeof(m_twCustomDSData)); + memset(&m_twSetupMemXfer, 0, sizeof(m_twSetupMemXfer)); + memset(&m_twSetupFileXfer, 0, sizeof(m_twSetupFileXfer)); + memset(&m_twPendingXfers, 0, sizeof(m_twPendingXfers)); + memset(&m_twStatus, 0, sizeof(m_twStatus)); + memset(&m_twDeviceEvent, 0, sizeof(m_twDeviceEvent)); + memset(&m_twImageLayout, 0, sizeof(m_twImageLayout)); + //Configure the GUI for startup EnableGUIByCurrentState(); @@ -150,7 +160,6 @@ //must be in state 2 for these operations ui.btnUnloadDSM->setEnabled( (2==m_uiState)?true:false ); ui.btnOpenDSM->setEnabled( (2==m_uiState)?true:false ); - ui.treTriplet->setEnabled( (2<=m_uiState)?true:false ); ui.btnRecover->setEnabled( (2<=m_uiState)?true:false ); //must be in state 3 for these operations @@ -168,6 +177,7 @@ ui.radShowUI->setEnabled( (4==m_uiState)?true:false ); ui.radUIOnly->setEnabled( (4==m_uiState)?true:false ); ui.treCapability->setEnabled( (4<=m_uiState)?true:false ); + ui.treTriplet->setEnabled( (4<=m_uiState)?true:false ); //must be in state 5 for this operation ui.btnDisable->setEnabled( (5==m_uiState)?true:false ); @@ -951,17 +961,17 @@ DAT_CUSTOMDSDATA, MSG_GET, DAT_CUSTOMDSDATA, MSG_SET, DAT_DEVICEEVENT, MSG_GET, - DAT_FILESYSTEM, MSG_AUTOMATICCAPTUREDIRECTORY, DAT_FILESYSTEM, MSG_CHANGEDIRECTORY, - DAT_FILESYSTEM, MSG_CREATEDIRECTORY, - DAT_FILESYSTEM, MSG_DELETE, - DAT_FILESYSTEM, MSG_FORMATMEDIA, + DAT_FILESYSTEM, MSG_GETFIRSTFILE, + DAT_FILESYSTEM, MSG_GETNEXTFILE, DAT_FILESYSTEM, MSG_GETCLOSE, - DAT_FILESYSTEM, MSG_GETFIRSTFILE, DAT_FILESYSTEM, MSG_GETINFO, - DAT_FILESYSTEM, MSG_GETNEXTFILE, + DAT_FILESYSTEM, MSG_FORMATMEDIA, + DAT_FILESYSTEM, MSG_CREATEDIRECTORY, DAT_FILESYSTEM, MSG_RENAME, + DAT_FILESYSTEM, MSG_DELETE, DAT_FILESYSTEM, MSG_COPY, + DAT_FILESYSTEM, MSG_AUTOMATICCAPTUREDIRECTORY, DAT_PASSTHRU, MSG_PASSTHRU, // * DAT_CALLBACK omitted / handled by app // DAT_CALLBACK, MSG_REGISTER_CALLBACK, @@ -1632,7 +1642,7 @@ case MSG_GET: if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_SETUPMEMXFER, MSG_GET, &m_twSetupMemXfer, &m_twSourceIdentity)) { - TraceSetupMemXfer(m_twSetupMemXfer); + TraceStruct(m_twSetupMemXfer); } break; } @@ -1641,16 +1651,28 @@ void TWAIN_App_QT::OnSetupFileXfer(TW_UINT16 twMsg) { - memset(&m_twSetupFileXfer, 0, sizeof(m_twSetupFileXfer)); + StructureEdit seDialog(this); switch(twMsg) { case MSG_GET: + memset(&m_twSetupFileXfer, 0, sizeof(m_twSetupFileXfer)); if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_SETUPFILEXFER, MSG_GET, &m_twSetupFileXfer, &m_twSourceIdentity)) { - TraceSetupFileXfer(m_twSetupFileXfer); + TraceStruct(m_twSetupFileXfer); } break; case MSG_SET: + //apply the structure + seDialog.SetTWAINStructure(&m_twSetupFileXfer, DAT_SETUPFILEXFER); + if(QDialog::Accepted==seDialog.exec()) + { + //Execute the command + if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_SETUPFILEXFER, MSG_SET, &m_twSetupFileXfer, &m_twSourceIdentity)) + { + //Trace the result + TraceStruct(m_twSetupFileXfer); + } + } break; } return; @@ -1664,7 +1686,7 @@ case MSG_GET: //just pull the last known status GetLastStatus(m_twStatus); - TraceStatus(m_twStatus); + TraceStruct(m_twStatus); break; } return; @@ -1697,7 +1719,7 @@ if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_CUSTOMDSDATA, MSG_GET, &m_twCustomDSData, &m_twSourceIdentity)) { //trace the structure for the user - TraceCustomDSData(m_twCustomDSData); + TraceStruct(m_twCustomDSData); //Obtain a pointer to the custom DS Data block char *pBuffer = static_cast<char*>(_DSM_LockMemory(m_twCustomDSData.hData)); if(pBuffer) @@ -1750,7 +1772,7 @@ if(-1!=(int)m_twCustomDSData.InfoLength) { //trace the structure for the user - TraceCustomDSData(m_twCustomDSData); + TraceStruct(m_twCustomDSData); DSM_Entry(DG_CONTROL, DAT_CUSTOMDSDATA, MSG_SET, &m_twCustomDSData, &m_twSourceIdentity); } img.close(); @@ -1771,80 +1793,47 @@ { switch(twMsg) { + case MSG_GET: + memset(&m_twDeviceEvent, 0, sizeof(m_twDeviceEvent)); + if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_DEVICEEVENT, MSG_GET, &m_twDeviceEvent, &m_twSourceIdentity)) + { + TraceStruct(m_twDeviceEvent); + } + break; } return; } void TWAIN_App_QT::OnFileSystem(TW_UINT16 twMsg) { + //Allow the user to edit the structure + StructureEdit seDialog(this); switch(twMsg) { + case MSG_CREATEDIRECTORY: + case MSG_DELETE: + case MSG_FORMATMEDIA: + case MSG_RENAME: + case MSG_COPY: + case MSG_AUTOMATICCAPTUREDIRECTORY: + case MSG_CHANGEDIRECTORY: case MSG_GETINFO: - //Allow the user to edit the structure - //Execute the command - //Trace the result - break; - case MSG_CHANGEDIRECTORY: - //Allow the user to edit the structure - //Execute the command - //Trace the result - break; - case MSG_GETFIRSTFILE: - //Clear the structure - memset(&m_twFileSystem, 0, sizeof(m_twFileSystem)); - //Execute the command - if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_FILESYSTEM, MSG_GETFIRSTFILE, &m_twFileSystem, &m_twSourceIdentity)) + //apply the structure + seDialog.SetTWAINStructure(&m_twFileSystem, DAT_FILESYSTEM); + if(QDialog::Accepted!=seDialog.exec()) { - //Trace the result - TraceFileSystem(m_twFileSystem); + break; } - break; + case MSG_GETCLOSE: case MSG_GETNEXTFILE: + case MSG_GETFIRSTFILE: //Execute the command - if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_FILESYSTEM, MSG_GETNEXTFILE, &m_twFileSystem, &m_twSourceIdentity)) + if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_FILESYSTEM, twMsg, &m_twFileSystem, &m_twSourceIdentity)) { //Trace the result - TraceFileSystem(m_twFileSystem); + TraceStruct(m_twFileSystem); } break; - case MSG_GETCLOSE: - //Execute the command - if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_FILESYSTEM, MSG_GETCLOSE, &m_twFileSystem, &m_twSourceIdentity)) - { - //Trace the result - TraceFileSystem(m_twFileSystem); - } - break; - case MSG_CREATEDIRECTORY: - //Allow the user to edit the structure - //Execute the command - //Trace the result - break; - case MSG_DELETE: - //Allow the user to edit the structure - //Execute the command - //Trace the result - break; - case MSG_FORMATMEDIA: - //Allow the user to edit the structure - //Execute the command - //Trace the result - break; - case MSG_RENAME: - //Allow the user to edit the structure - //Execute the command - //Trace the result - break; - case MSG_COPY: - //Allow the user to edit the structure - //Execute the command - //Trace the result - break; - case MSG_AUTOMATICCAPTUREDIRECTORY: - //Allow the user to edit the structure - //Execute the command - //Trace the result - break; } return; } @@ -1867,8 +1856,24 @@ void TWAIN_App_QT::OnImageLayout(TW_UINT16 twMsg) { + StructureEdit seDialog(this); switch(twMsg) { + case MSG_SET: + //apply the structure + seDialog.SetTWAINStructure(&m_twImageLayout, DAT_IMAGELAYOUT); + if(QDialog::Accepted!=seDialog.exec()) + { + break; + } + case MSG_GET: + case MSG_GETDEFAULT: + case MSG_RESET: + if(TWRC_SUCCESS==DSM_Entry(DG_IMAGE, DAT_IMAGELAYOUT, twMsg, &m_twImageLayout, &m_twSourceIdentity)) + { + TraceStruct(m_twImageLayout); + } + break; } return; } @@ -1929,93 +1934,101 @@ return; } -void TWAIN_App_QT::TracePendingXfers(const TW_PENDINGXFERS &twData) +void TWAIN_App_QT::TraceStruct(const TW_PENDINGXFERS &twData) { return; } -void TWAIN_App_QT::TraceSetupMemXfer(const TW_SETUPMEMXFER &twData) +void TWAIN_App_QT::TraceStruct(const TW_SETUPMEMXFER &twData) { TraceMessage("MinBufSize = %d, MaxBufSize = %d, Preferred = %d", twData.MinBufSize, twData.MaxBufSize, twData.Preferred); return; } -void TWAIN_App_QT::TraceSetupFileXfer(const TW_SETUPFILEXFER &twData) +void TWAIN_App_QT::TraceStruct(const TW_SETUPFILEXFER &twData) { - TraceMessage("Format = %s, FileName = %s", CapabilityValueToString(ICAP_IMAGEFILEFORMAT, TWTY_UINT16, &twData.Format), twData.FileName); + TraceMessage("Format = %s, FileName = \"%s\"", CapabilityValueToString(ICAP_IMAGEFILEFORMAT, TWTY_UINT16, &twData.Format), twData.FileName); return; } -void TWAIN_App_QT::TraceStatus(const TW_STATUS &twData) +void TWAIN_App_QT::TraceStruct(const TW_STATUS &twData) { TraceMessage("ConditionCode = %s, Data = 0x%02X", convertConditionCode_toString(twData.ConditionCode), twData.Data); return; } -void TWAIN_App_QT::TraceXferGroup(const DWORD &twData) +void TWAIN_App_QT::TraceStruct(const DWORD &twData) { return; } -void TWAIN_App_QT::TraceCustomDSData(const TW_CUSTOMDSDATA &twData) +void TWAIN_App_QT::TraceStruct(const TW_CUSTOMDSDATA &twData) { TraceMessage("InfoLength = %d, hData = 0x%0X", twData.InfoLength, twData.hData); return; } -void TWAIN_App_QT::TraceDeviceEvent(const TW_DEVICEEVENT &twData) +void TWAIN_App_QT::TraceStruct(const TW_DEVICEEVENT &twData) { + TW_UINT16 twEventId = twData.Event; + TraceMessage("Event = %s, DeviceName = \"%s\", BatteryMinutes = %d, BatteryPercentage = %d, PowerSupply = %d,", + CapabilityValueToString(CAP_DEVICEEVENT, TWTY_UINT16, &twEventId), twData.DeviceName, twData.BatteryMinutes, twData.BatteryPercentage, twData.PowerSupply); + TraceMessage("\tXRes = %.2f, YRes = %.2f, FlashUsed2 = %d, AutmaticCapture = %d, TimeBeforeFirstCapture = %d, TimeBetweenCaptures = %d", + FIX32ToFloat(twData.XResolution), FIX32ToFloat(twData.YResolution), twData.FlashUsed2, twData.AutomaticCapture, twData.TimeBeforeFirstCapture, twData.TimeBetweenCaptures); return; } -void TWAIN_App_QT::TraceFileSystem(const TW_FILESYSTEM &twData) +void TWAIN_App_QT::TraceStruct(const TW_FILESYSTEM &twData) { - TraceMessage("InputName = %s, OutputName = %s, Context = 0x%04X, FileType = %s", - twData.InputName, twData.OutputName, twData.Context, convertFileType_toString(twData.FileType)); + TraceMessage("InputName = \"%s\", OutputName = \"%s\", Context = 0x%04X, FileType = %s, DeviceGroupMask = %d", + twData.InputName, twData.OutputName, twData.Context, convertFileType_toString(twData.FileType), twData.DeviceGroupMask); return; } -void TWAIN_App_QT::TracePassThru(const TW_PASSTHRU &twData) +void TWAIN_App_QT::TraceStruct(const TW_PASSTHRU &twData) { return; } -void TWAIN_App_QT::TraceStatusUTF8(const TW_STATUSUTF8 &twData) +void TWAIN_App_QT::TraceStruct(const TW_STATUSUTF8 &twData) { return; } -void TWAIN_App_QT::TraceImageLayout(const TW_IMAGELAYOUT &twData) +void TWAIN_App_QT::TraceStruct(const TW_IMAGELAYOUT &twData) { + TraceMessage("Left = %.2f, Top = %.2f, Right = %.2f, Bottom = %.2f, DocumentNumber = %d, PageNumber = %d, FrameNumber = %d", + FIX32ToFloat(twData.Frame.Left), FIX32ToFloat(twData.Frame.Top), FIX32ToFloat(twData.Frame.Right), FIX32ToFloat(twData.Frame.Bottom), + twData.DocumentNumber, twData.PageNumber, twData.FrameNumber); return; } -void TWAIN_App_QT::TraceCIEColor(const TW_CIECOLOR &twData) +void TWAIN_App_QT::TraceStruct(const TW_CIECOLOR &twData) { return; } -void TWAIN_App_QT::TraceGrayReponse(const TW_GRAYRESPONSE &twData) +void TWAIN_App_QT::TraceStruct(const TW_GRAYRESPONSE &twData) { return; } -void TWAIN_App_QT::TraceRGBResponse(const TW_RGBRESPONSE &twData) +void TWAIN_App_QT::TraceStruct(const TW_RGBRESPONSE &twData) { return; } -void TWAIN_App_QT::TracePalette8(const TW_PALETTE8 &twData) +void TWAIN_App_QT::TraceStruct(const TW_PALETTE8 &twData) { return; } -void TWAIN_App_QT::TraceExtImageInfo(const TW_EXTIMAGEINFO &twData) +void TWAIN_App_QT::TraceStruct(const TW_EXTIMAGEINFO &twData) { return; } -void TWAIN_App_QT::TraceICCProfile(const TW_MEMORY &twData) +void TWAIN_App_QT::TraceStruct(const TW_MEMORY &twData) { return; } Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h 2010-09-13 21:17:57 UTC (rev 91) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h 2010-09-15 22:28:07 UTC (rev 92) @@ -109,23 +109,23 @@ void OnExtImageInfo(TW_UINT16 twMsg); void OnICCProfile(TW_UINT16 twMsg); - void TracePendingXfers(const TW_PENDINGXFERS &twData); - void TraceSetupMemXfer(const TW_SETUPMEMXFER &twData); - void TraceSetupFileXfer(const TW_SETUPFILEXFER &twData); - void TraceStatus(const TW_STATUS &twData); - void TraceXferGroup(const DWORD &twData); - void TraceCustomDSData(const TW_CUSTOMDSDATA &twData); - void TraceDeviceEvent(const TW_DEVICEEVENT &twData); - void TraceFileSystem(const TW_FILESYSTEM &twData); - void TracePassThru(const TW_PASSTHRU &twData); - void TraceStatusUTF8(const TW_STATUSUTF8 &twData); - void TraceImageLayout(const TW_IMAGELAYOUT &twData); - void TraceCIEColor(const TW_CIECOLOR &twData); - void TraceGrayReponse(const TW_GRAYRESPONSE &twData); - void TraceRGBResponse(const TW_RGBRESPONSE &twData); - void TracePalette8(const TW_PALETTE8 &twData); - void TraceExtImageInfo(const TW_EXTIMAGEINFO &twData); - void TraceICCProfile(const TW_MEMORY &twData); + void TraceStruct(const TW_PENDINGXFERS &twData); + void TraceStruct(const TW_SETUPMEMXFER &twData); + void TraceStruct(const TW_SETUPFILEXFER &twData); + void TraceStruct(const TW_STATUS &twData); + void TraceStruct(const DWORD &twData); + void TraceStruct(const TW_CUSTOMDSDATA &twData); + void TraceStruct(const TW_DEVICEEVENT &twData); + void TraceStruct(const TW_FILESYSTEM &twData); + void TraceStruct(const TW_PASSTHRU &twData); + void TraceStruct(const TW_STATUSUTF8 &twData); + void TraceStruct(const TW_IMAGELAYOUT &twData); + void TraceStruct(const TW_CIECOLOR &twData); + void TraceStruct(const TW_GRAYRESPONSE &twData); + void TraceStruct(const TW_RGBRESPONSE &twData); + void TraceStruct(const TW_PALETTE8 &twData); + void TraceStruct(const TW_EXTIMAGEINFO &twData); + void TraceStruct(const TW_MEMORY &twData); vector<TW_UINT16> m_lstExtImageInfo; /**< list of extended image info structures expected to be dispatched after a transfer */ bool m_bSignalCalledInTWAIN; /**< flag that indicates a signal was called at a time when processing was not possible */ @@ -143,6 +143,8 @@ TW_PENDINGXFERS m_twPendingXfers; TW_STATUS m_twStatus; TW_FILESYSTEM m_twFileSystem; + TW_DEVICEEVENT m_twDeviceEvent; + TW_IMAGELAYOUT m_twImageLayout; protected slots: //void on_<widget name>_<signal name>(<signal parameters>); Modified: trunk/TWAIN-Samples/common/TwainString.cpp =================================================================== --- trunk/TWAIN-Samples/common/TwainString.cpp 2010-09-13 21:17:57 UTC (rev 91) +++ trunk/TWAIN-Samples/common/TwainString.cpp 2010-09-15 22:28:07 UTC (rev 92) @@ -5646,6 +5646,9 @@ case TWFF_JP2: strRet = "TWFF_JP2"; break; + case TWFF_JPN: + strRet = "TWFF_JPN"; + break; case TWFF_JPX: strRet = "TWFF_JPX"; break; @@ -6885,7 +6888,7 @@ return strRet; } -const char *convertFileType_toString(const TW_INT32 _nItem) +const char *convertFileType_toString(const TW_UINT16 _nItem) { const char *strRet = NULL; switch(_nItem) @@ -6927,3 +6930,8 @@ } return strRet; } + +const char *convertFileFormat_toString(const TW_UINT16 _nItem) +{ + return CapabilityValueToString(ICAP_IMAGEFILEFORMAT, TWTY_UINT16, &_nItem); +} Modified: trunk/TWAIN-Samples/common/TwainString.h =================================================================== --- trunk/TWAIN-Samples/common/TwainString.h 2010-09-13 21:17:57 UTC (rev 91) +++ trunk/TWAIN-Samples/common/TwainString.h 2010-09-15 22:28:07 UTC (rev 92) @@ -44,6 +44,8 @@ #include "CommonTWAIN.h" +typedef const char*(*pfnStringCvrtFuncType)(const TW_UINT16 _unItem); + /** * converts the integer CAP value into string form * @param[in] _unCap the cap @@ -461,9 +463,31 @@ * @return the equivalent string */ const char* convertQuerySupport_toString(const TW_UINT32 _unItem); +/** +* converts a TWAIN TWFF_ to the corresponding extension +* @param[in] _unItem the value +* @return the corresponding file extension +*/ const char* convertFileFmt_toExtension(const TW_UINT16 _unItem); - +/** +* converts a TWAIN Capability Item value to string form +* @param[in] twCapId the Id of the capability to convert +* @param[in] twItemType the type of the capability item +* @param[in] pValue a pointer to the item +* @return the equivalent string +*/ const char *CapabilityValueToString(TW_UINT16 twCapId, TW_UINT16 twItemType, const void *pValue); +/** +* converts the TWAIN TWFY_ value to string form +* @param[in] _unItem the value +* @return the equivalent string +*/ +const char *convertFileType_toString(const TW_UINT16 _nItem); +/** +* converts the TWAIN TWFF_ value to string form +* @param[in] _unItem the value +* @return the equivalent string +*/ +const char *convertFileFormat_toString(const TW_UINT16 _unItem); -const char *convertFileType_toString(const TW_INT32 _nItem); #endif // __TWAINSTRING_H__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jh...@us...> - 2010-09-13 21:18:04
|
Revision: 91 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=91&view=rev Author: jharju Date: 2010-09-13 21:17:57 +0000 (Mon, 13 Sep 2010) Log Message: ----------- Added TW_FILESYSTEM trace message Implemented MSG_GETFIRSTFILE, MSG_GETNEXTSFILE, and MSG_GETCLOSE. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h trunk/TWAIN-Samples/common/TwainString.cpp trunk/TWAIN-Samples/common/TwainString.h Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-09-13 19:48:40 UTC (rev 90) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj 2010-09-13 21:17:57 UTC (rev 91) @@ -612,10 +612,10 @@ SourceControlFiles="false" > <File - RelativePath=".\GeneratedFiles\Debug\moc_enumset.cpp" + RelativePath=".\GeneratedFiles\Release\moc_enumset.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -624,10 +624,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_enumset.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_enumset.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -636,10 +636,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_meterdlg.cpp" + RelativePath=".\GeneratedFiles\Release\moc_meterdlg.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -648,10 +648,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_meterdlg.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_meterdlg.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -660,10 +660,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Debug\moc_setstate.cpp" + RelativePath=".\GeneratedFiles\Release\moc_setstate.cpp" > <FileConfiguration - Name="Release|Win32" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -672,10 +672,10 @@ </FileConfiguration> </File> <File - RelativePath=".\GeneratedFiles\Release\moc_setstate.cpp" + RelativePath=".\GeneratedFiles\Debug\moc_setstate.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-09-13 19:48:40 UTC (rev 90) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp 2010-09-13 21:17:57 UTC (rev 91) @@ -1779,6 +1779,72 @@ { switch(twMsg) { + case MSG_GETINFO: + //Allow the user to edit the structure + //Execute the command + //Trace the result + break; + case MSG_CHANGEDIRECTORY: + //Allow the user to edit the structure + //Execute the command + //Trace the result + break; + case MSG_GETFIRSTFILE: + //Clear the structure + memset(&m_twFileSystem, 0, sizeof(m_twFileSystem)); + //Execute the command + if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_FILESYSTEM, MSG_GETFIRSTFILE, &m_twFileSystem, &m_twSourceIdentity)) + { + //Trace the result + TraceFileSystem(m_twFileSystem); + } + break; + case MSG_GETNEXTFILE: + //Execute the command + if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_FILESYSTEM, MSG_GETNEXTFILE, &m_twFileSystem, &m_twSourceIdentity)) + { + //Trace the result + TraceFileSystem(m_twFileSystem); + } + break; + case MSG_GETCLOSE: + //Execute the command + if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_FILESYSTEM, MSG_GETCLOSE, &m_twFileSystem, &m_twSourceIdentity)) + { + //Trace the result + TraceFileSystem(m_twFileSystem); + } + break; + case MSG_CREATEDIRECTORY: + //Allow the user to edit the structure + //Execute the command + //Trace the result + break; + case MSG_DELETE: + //Allow the user to edit the structure + //Execute the command + //Trace the result + break; + case MSG_FORMATMEDIA: + //Allow the user to edit the structure + //Execute the command + //Trace the result + break; + case MSG_RENAME: + //Allow the user to edit the structure + //Execute the command + //Trace the result + break; + case MSG_COPY: + //Allow the user to edit the structure + //Execute the command + //Trace the result + break; + case MSG_AUTOMATICCAPTUREDIRECTORY: + //Allow the user to edit the structure + //Execute the command + //Trace the result + break; } return; } @@ -1904,6 +1970,8 @@ void TWAIN_App_QT::TraceFileSystem(const TW_FILESYSTEM &twData) { + TraceMessage("InputName = %s, OutputName = %s, Context = 0x%04X, FileType = %s", + twData.InputName, twData.OutputName, twData.Context, convertFileType_toString(twData.FileType)); return; } Modified: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h 2010-09-13 19:48:40 UTC (rev 90) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h 2010-09-13 21:17:57 UTC (rev 91) @@ -142,6 +142,7 @@ TW_SETUPFILEXFER m_twSetupFileXfer; TW_PENDINGXFERS m_twPendingXfers; TW_STATUS m_twStatus; + TW_FILESYSTEM m_twFileSystem; protected slots: //void on_<widget name>_<signal name>(<signal parameters>); Modified: trunk/TWAIN-Samples/common/TwainString.cpp =================================================================== --- trunk/TWAIN-Samples/common/TwainString.cpp 2010-09-13 19:48:40 UTC (rev 90) +++ trunk/TWAIN-Samples/common/TwainString.cpp 2010-09-13 21:17:57 UTC (rev 91) @@ -6884,3 +6884,46 @@ } return strRet; } + +const char *convertFileType_toString(const TW_INT32 _nItem) +{ + const char *strRet = NULL; + switch(_nItem) + { + case TWFY_CAMERA: + strRet = "TWFY_CAMERA"; + break; + case TWFY_CAMERATOP: + strRet = "TWFY_CAMERATOP"; + break; + case TWFY_CAMERABOTTOM: + strRet = "TWFY_CAMERABOTTOM"; + break; + case TWFY_CAMERAPREVIEW: + strRet = "TWFY_CAMERAPREVIEW"; + break; + case TWFY_DOMAIN: + strRet = "TWFY_DOMAIN"; + break; + case TWFY_HOST: + strRet = "TWFY_HOST"; + break; + case TWFY_DIRECTORY: + strRet = "TWFY_DIRECTORY"; + break; + case TWFY_IMAGE: + strRet = "TWFY_IMAGE"; + break; + case TWFY_UNKNOWN: + strRet = "TWFY_UNKNOWN"; + break; + default: + { + char * buff = nextTempBuffer(); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Un-recognized FileType 0x%04X", _nItem); + strRet = buff; + } + break; + } + return strRet; +} Modified: trunk/TWAIN-Samples/common/TwainString.h =================================================================== --- trunk/TWAIN-Samples/common/TwainString.h 2010-09-13 19:48:40 UTC (rev 90) +++ trunk/TWAIN-Samples/common/TwainString.h 2010-09-13 21:17:57 UTC (rev 91) @@ -465,4 +465,5 @@ const char *CapabilityValueToString(TW_UINT16 twCapId, TW_UINT16 twItemType, const void *pValue); +const char *convertFileType_toString(const TW_INT32 _nItem); #endif // __TWAINSTRING_H__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jh...@us...> - 2010-09-13 19:48:49
|
Revision: 90 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=90&view=rev Author: jharju Date: 2010-09-13 19:48:40 +0000 (Mon, 13 Sep 2010) Log Message: ----------- Work in progress. New QT based sample Application. New base class called CTWAINSession to replace TwainApp. Added Paths: ----------- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/ContainerWrapper.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/ContainerWrapper.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/MeterDlg.ui trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/Resources/ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.ico trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.rc trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAIN_App_QT.vcproj trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/enumset.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/enumset.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/enumset.ui trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/main.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/meterdlg.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/meterdlg.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/setstate.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/setstate.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/setstate.ui trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/stdafx.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/stdafx.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.cpp trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.h trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.qrc trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/twain_app_qt.ui trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT.sln Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/ContainerWrapper.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/ContainerWrapper.cpp (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/ContainerWrapper.cpp 2010-09-13 19:48:40 UTC (rev 90) @@ -0,0 +1,191 @@ +#include "stdafx.h" +#include "ContainerWrapper.h" +#pragma message("TODO: Fix") +#include "CommonTWAIN.h" +#include "..\..\Src\DSMInterface.h" + +CContainerWrapper::CContainerWrapper(TW_HANDLE hContainer, TW_UINT16 twConType, bool bOwn/*=true*/) + : m_bValid(false) + , m_bOwn(bOwn) + , m_hContainer(hContainer) + , m_twConType(twConType) + , m_pCurrent(NULL) + , m_pDefault(NULL) + , m_pItems(NULL) + , m_pContainer(NULL) + , m_pMinimum(NULL) + , m_pMaximum(NULL) + , m_pStep(NULL) +{ + m_pContainer = _DSM_LockMemory(m_hContainer); + if(m_pContainer) + { + switch(m_twConType) + { + case TWON_ONEVALUE: + //values, current and default are all the same value + m_pItems = ConvertContainerAddressByteType(&static_cast<pTW_ONEVALUE>(m_pContainer)->Item, + static_cast<pTW_ONEVALUE>(m_pContainer)->ItemType); + m_pCurrent = ConvertContainerAddressByteType(&static_cast<pTW_ONEVALUE>(m_pContainer)->Item, + static_cast<pTW_ONEVALUE>(m_pContainer)->ItemType); + m_pDefault = ConvertContainerAddressByteType(&static_cast<pTW_ONEVALUE>(m_pContainer)->Item, + static_cast<pTW_ONEVALUE>(m_pContainer)->ItemType); + m_bValid = true; + break; + case TWON_RANGE: + //only current, default, minimum, maximum and step are valid + m_pCurrent = ConvertContainerAddressByteType(&static_cast<pTW_RANGE>(m_pContainer)->CurrentValue, + static_cast<pTW_RANGE>(m_pContainer)->ItemType); + m_pDefault = ConvertContainerAddressByteType(&static_cast<pTW_RANGE>(m_pContainer)->DefaultValue, + static_cast<pTW_RANGE>(m_pContainer)->ItemType); + m_pMinimum = ConvertContainerAddressByteType(&static_cast<pTW_RANGE>(m_pContainer)->MinValue, + static_cast<pTW_RANGE>(m_pContainer)->ItemType); + m_pMaximum = ConvertContainerAddressByteType(&static_cast<pTW_RANGE>(m_pContainer)->MaxValue, + static_cast<pTW_RANGE>(m_pContainer)->ItemType); + m_pStep = ConvertContainerAddressByteType(&static_cast<pTW_RANGE>(m_pContainer)->StepSize, + static_cast<pTW_RANGE>(m_pContainer)->ItemType); + m_bValid = true; + break; + case TWON_ARRAY: + //only values is valid + m_pItems = &static_cast<pTW_ARRAY>(m_pContainer)->ItemList; + m_bValid = true; + break; + case TWON_ENUMERATION: + //only values, current and default are valid + m_pItems = &static_cast<pTW_ENUMERATION>(m_pContainer)->ItemList; + m_pCurrent = &static_cast<pTW_ENUMERATION>(m_pContainer)->ItemList[ + static_cast<pTW_ENUMERATION>(m_pContainer)->CurrentIndex * + getTWTYsize(static_cast<pTW_ENUMERATION>(m_pContainer)->ItemType)]; + m_pDefault = &static_cast<pTW_ENUMERATION>(m_pContainer)->ItemList[ + static_cast<pTW_ENUMERATION>(m_pContainer)->DefaultIndex * + getTWTYsize(static_cast<pTW_ENUMERATION>(m_pContainer)->ItemType)]; + m_bValid = true; + break; + } + } + return; +} + +CContainerWrapper::~CContainerWrapper(void) +{ + //Invalidate the members + m_bValid = false; + m_pCurrent = NULL; + m_pDefault = NULL; + m_pItems = NULL; + m_pContainer = NULL; + m_pMinimum = NULL; + m_pMaximum = NULL; + m_pStep = NULL; + + if(m_hContainer) + { + //Unlock the handle + _DSM_UnlockMemory(m_hContainer); + if(m_bOwn) + { + //Free the memory + _DSM_Free(m_hContainer); + } + //Invalidate the container + m_hContainer = NULL; + } + return; +} + +TW_UINT16 CContainerWrapper::GetItemType() +{ + TW_UINT16 twItemType = TWON_DONTCARE16; + if(IsValid()) + { + twItemType = static_cast<pTW_ONEVALUE>(m_pContainer)->ItemType; + } + return twItemType; +} + +TW_UINT32 CContainerWrapper::GetCount() +{ + TW_UINT32 twCount = TWON_DONTCARE32; + if(IsValid()) + { + switch(m_twConType) + { + case TWON_ONEVALUE: + twCount = 1; + break; + case TWON_RANGE: + twCount = 0; + break; + case TWON_ARRAY: + case TWON_ENUMERATION: + twCount = static_cast<pTW_ARRAY>(m_pContainer)->NumItems; + break; + } + } + return twCount; +} + +void *CContainerWrapper::ConvertContainerAddressByteType(void *pItem, TW_UINT16 twType) +{ + void *pResult; + switch(twType) + { + case TWTY_INT8: + case TWTY_UINT8: + case TWTY_INT16: + case TWTY_UINT16: + case TWTY_BOOL: + case TWTY_HANDLE: +#ifdef _SYSTEM_BIGENDIAN + pResult = &static_cast<BYTE *>(pItem)[sizeof(TW_UINT32)-getTWTYsize(twType)]; +#else //#ifdef _SYSTEM_BIGENDIAN + pResult = pItem; +#endif //#ifdef _SYSTEM_BIGENDIAN + break; + default: + pResult = pItem; + break; + } + return pResult; +} + +void *CContainerWrapper::GetItem(TW_UINT32 uiItemIndex) +{ + void *pResult = NULL; + if(uiItemIndex <= GetCount()) + { + switch(m_twConType) + { + case TWON_ENUMERATION: + case TWON_ARRAY: + return &static_cast<unsigned char *>(m_pItems)[getTWTYsize(GetItemType())*uiItemIndex]; + break; + } + } + return pResult; +} + +bool CContainerWrapper::ContainsItem(TW_UINT16 twValue) +{ + bool bRC = false; + if(TWTY_UINT16==GetItemType()) + { + if(TWON_RANGE!=GetConType()) + { + for(int nIndex = 0; nIndex < GetCount(); nIndex++) + { + if(twValue==static_cast<pTW_UINT16>(m_pItems)[nIndex]) + { + bRC = true; + break; + } + } + } + else + { + #pragma message("TODO: test in a range") + } + } + return bRC; +} Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/ContainerWrapper.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/ContainerWrapper.h (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/ContainerWrapper.h 2010-09-13 19:48:40 UTC (rev 90) @@ -0,0 +1,187 @@ +/*************************************************************************** +* Copyright \xA9 2010 TWAIN Working Group: +* Adobe Systems Incorporated, AnyDoc Software Inc., Eastman Kodak Company, +* Fujitsu Computer Products of America, JFL Peripheral Solutions Inc., +* Avision Inc., and Atalasoft, Inc. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the TWAIN Working Group nor the +* names of its contributors may be used to endorse or promote products +* derived from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY TWAIN Working Group ``AS IS'' AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL TWAIN Working Group BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +***************************************************************************/ + +/** +* @file ContainerWrapper.h +* @brief Contains the Declaration of [DESCRIPTION] +* @author JFL Peripheral Solutions Inc. +* @date September 2010 +*/ +#ifndef _inc_ContainerWrapper_h +#define _inc_ContainerWrapper_h +#include "twain.h" + +/** +* Loose wrapper over a TWAIN container +* Accessing values in this class requires some casting savvy +*/ +class CContainerWrapper +{ + public: + /** + * Constructor cracks the container and prepares internal member variables + * @param[in] hContainer TWAIN handle that refers to the TWAIN Container in question + * @param[in] twConType the type of the supplied container (must be a match for hContainer) + * @param[in] bOwn default value is true, decides if the class should free the container on destruction + */ + CContainerWrapper(TW_HANDLE hContainer, TW_UINT16 twConType, bool bOwn=true); + /** + * Destructor deletes the wrapped TWAIN container if bOwn was specified during Construction + */ + ~CContainerWrapper(void); + + /** + * Method for checking if the wrapped container is valid + * @return true if the container is valid + */ + inline bool IsValid(); + + /** + * Returns the container type + * @return a valid container type, or TWON_DONTCARE if container is invalid + */ + inline TW_UINT16 GetConType(); + /** + * Returns the type of the items found inside the container + * @return the type items stored in the container, or TWON_DONTCARE if container is invalid + */ + TW_UINT16 GetItemType(); + /** + * Returns the number of items stored in the container + * @return the number of items stored in the container or 0 if container is invalid + */ + TW_UINT32 GetCount(); + /** + * Searches the container for the supplied value + * @param[in] twValue the value to look for + * @return true if successful + */ + bool ContainsItem(TW_UINT16 twValue); + /** + * Returns a pointer to the item at the requested index for an Array or Enum container + * @param[in] uiItemIndex the index of the item to get + * @return a valid pointer if successful, null if outside the valid range or incorrect container + */ + void *GetItem(TW_UINT32 uiItemIndex); + /** + * Returns a pointer to the items if container is a valid One/Array or Enum type + * @return if successful a valid pointer to 'GetCount' items of 'GetItemType', NULL if the container is invalid or a Range type + */ + inline const void *GetItems(); + /** + * Returns a pointer to the Current item + * @return if successful a valid pointer to the Current item of 'GetItemType', NULL if the container is invalid + */ + inline const void *GetCurrent(); + /** + * Returns a pointer to the Default item + * @return if successful a valid pointer to the Default item of 'GetItemType', NULL if the container is invalid + */ + inline const void *GetDefault(); + /** + * Returns a pointer to the Minimum value item + * @return if successful a valid pointer to the Minimum item of 'GetItemType', NULL if the container is invalid or not a Range type + */ + inline const void *GetMin(); + /** + * Returns a pointer to the Maximum value item + * @return if successful a valid pointer to the Maximum item of 'GetItemType', NULL if the container is invalid or not a Range type + */ + inline const void *GetMax(); + /** + * Returns a pointer to the Step value item + * @return if successful a valid pointer to the Step item of 'GetItemType', NULL if the container is invalid or not a Range type + */ + inline const void *GetStep(); + /** + * Utility function for correctly addressing pointers in RANGE and ONEVALUE types + * Necessary for coding to support BIGENDIAN systems + * @param[in] pItem pointer to convert + * @param[in] twType the type of item pointed to by pItem + * @return a valid pointer to the correct type specified by twType + */ + static void *CContainerWrapper::ConvertContainerAddressByteType(void *pItem, TW_UINT16 twType); + + protected: + bool m_bValid; /**< flag indicates that class believes the container to be valid */ + bool m_bOwn; /**< indicates if destructor should delete the container */ + TW_HANDLE m_hContainer; /**< container wrapped by this class */ + TW_UINT32 m_twConType; /**< type of contianer wrapped by this class */ + void *m_pCurrent; /**< pointer to the current value stored in the container */ + void *m_pDefault; /**< pointer to the default value stored in the container */ + void *m_pItems; /**< pointer to all the values stored in the container */ + void *m_pContainer; /**< pointer to the start of the container memory */ + void *m_pMinimum; /**< pointer to the default value stored in the container */ + void *m_pMaximum; /**< pointer to the default value stored in the container */ + void *m_pStep; /**< pointer to the default value stored in the container */ +}; + +inline TW_UINT16 CContainerWrapper::GetConType() +{ + return m_twConType; +} + +inline bool CContainerWrapper::IsValid() +{ + return m_bValid; +} + +inline const void *CContainerWrapper::GetItems() +{ + return m_pItems; +} + +inline const void *CContainerWrapper::GetCurrent() +{ + return m_pCurrent; +} + +inline const void *CContainerWrapper::GetDefault() +{ + return m_pDefault; +} + +inline const void *CContainerWrapper::GetMin() +{ + return m_pMinimum; +} + +inline const void *CContainerWrapper::GetMax() +{ + return m_pMaximum; +} + +inline const void *CContainerWrapper::GetStep() +{ + return m_pStep; +} + +#endif //#ifndef _inc_ContainerWrapper_h Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/MeterDlg.ui =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/MeterDlg.ui (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/MeterDlg.ui 2010-09-13 19:48:40 UTC (rev 90) @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MeterDlgClass</class> + <widget class="QDialog" name="MeterDlgClass"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>431</width> + <height>112</height> + </rect> + </property> + <property name="windowTitle"> + <string>MeterDlg</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="sizeConstraint"> + <enum>QLayout::SetDefaultConstraint</enum> + </property> + <item> + <widget class="QLabel" name="lblFirst"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="prbMeter"> + <property name="value"> + <number>24</number> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="lblSecond"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="btnCancel"> + <property name="text"> + <string>Cancel</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + <layoutdefault spacing="6" margin="11"/> + <resources/> + <connections/> +</ui> Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.cpp 2010-09-13 19:48:40 UTC (rev 90) @@ -0,0 +1,1306 @@ +#include "stdafx.h" +#include "TWAINSession.h" +#include "TwainString.h" +#pragma message("TODO: Fix") +#include "..\..\Src\DSMInterface.h" + +class CDSMPrePostCaller +{ + public: + inline CDSMPrePostCaller(CTWAINSession *pApp); + inline ~CDSMPrePostCaller(); + protected: + CTWAINSession *m_pTWAINApp; +}; + +inline CDSMPrePostCaller::CDSMPrePostCaller(CTWAINSession *pApp) + : m_pTWAINApp(pApp) +{ + if(m_pTWAINApp) + { + m_pTWAINApp->PreDSMCall(); + } + return; +} + +inline CDSMPrePostCaller::~CDSMPrePostCaller() +{ + if(m_pTWAINApp) + { + m_pTWAINApp->PostDSMCall(); + m_pTWAINApp = NULL; + } + return; +} + +map<TW_UINT32, CTWAINSession *> CTWAINSession::m_mapInstance; +TW_UINT32 CTWAINSession::m_uiInstCount = 0; +CRITICAL_SECTION CTWAINSession::m_csProtectInstanceMap; +int CTWAINSession::m_nRefCount = 0; + +CTWAINSession::CTWAINSession() + : m_uiState(1) + , m_twInstID(0) + , m_bInTWAIN(false) +{ + //Find out if this is the first time through + if(0==m_nRefCount) + { + //Initialize the critical section that protects the instance map + InitializeCriticalSection(&m_csProtectInstanceMap); + } + + //Define the scope of the critical section + { + CAutoCriticalSection acsObject(&m_csProtectInstanceMap); + //Update the instance information and reference counts + m_twInstID = ++m_uiInstCount; + m_nRefCount++; + } + + //Initialize the DataSource request queue protection + InitializeCriticalSection(&m_csProtectRequestQueue); + + //Initialize member variables + memset(&m_twAppIdentity, 0, sizeof(m_twAppIdentity)); + memset(&m_twLastStatus, 0, sizeof(m_twLastStatus)); + memset(&m_twSourceIdentity, 0, sizeof(m_twSourceIdentity)); + TW_UINT16 m_uiState = 1; + + //Start with some default Application information + m_twAppIdentity.Version.MajorNum = 2; + m_twAppIdentity.Version.MinorNum = 0; + m_twAppIdentity.Version.Language = TWLG_ENGLISH_CANADIAN; + m_twAppIdentity.Version.Country = TWCY_CANADA; + SSTRCPY(m_twAppIdentity.Version.Info, sizeof(m_twAppIdentity.Version.Info), "2.0.9"); + m_twAppIdentity.ProtocolMajor = TWON_PROTOCOLMAJOR; + m_twAppIdentity.ProtocolMinor = TWON_PROTOCOLMINOR; + m_twAppIdentity.SupportedGroups = DF_APP2 | DG_IMAGE | DG_CONTROL; + SSTRCPY(m_twAppIdentity.Manufacturer, sizeof(m_twAppIdentity.Manufacturer), "App's Manufacturer"); + SSTRCPY(m_twAppIdentity.ProductFamily, sizeof(m_twAppIdentity.ProductFamily), "App's Product Family"); + SSTRCPY(m_twAppIdentity.ProductName, sizeof(m_twAppIdentity.ProductName), "Specific App Product Name"); + + return; +} + +CTWAINSession::~CTWAINSession() +{ + //Define the scope of the critical section + { + CAutoCriticalSection acsObject(&m_csProtectInstanceMap); + //Cleanup the instance information and decrement the reference count + if(m_mapInstance.end()!=m_mapInstance.find(m_twInstID)) + { + //Erase our instance from the instance map + m_mapInstance.erase(m_twInstID); + } + m_nRefCount--; + } + + if(0==m_nRefCount) + { + //This is the last one out so destroy the critical section + DeleteCriticalSection(&m_csProtectInstanceMap); + } + //Delete the DataSource request queue protection + DeleteCriticalSection(&m_csProtectRequestQueue); + return; +} + +void CTWAINSession::SetApplicationIdentity(const TW_IDENTITY &twIdentity) +{ + //copy the identity information + m_twAppIdentity = twIdentity; + return; +} + +TW_UINT16 CTWAINSession::LoadDSM() +{ + TW_UINT16 twRC = TWRC_FAILURE; + TraceMessage("Loading DataSource Manager: %s", kTWAIN_DSM_DIR kTWAIN_DSM_DLL_NAME); + //Attempt to load the DataSource Manager + if(LoadDSMLib(kTWAIN_DSM_DIR kTWAIN_DSM_DLL_NAME)) + { + twRC = TWRC_SUCCESS; + m_uiState = 2; + TraceMessage("* State transition 1 -> 2 *"); + } + //Trace the result + TraceMessage("Load DataSource Manager %s", (TWRC_SUCCESS==twRC)?"Success":"Failure"); + return twRC; +} + +TW_UINT16 CTWAINSession::FreeDSM() +{ + TW_UINT16 twRC = TWRC_FAILURE; + TraceMessage("Unloading DataSource Manager"); + if(2==m_uiState) + { + unLoadDSMLib(); + twRC = TWRC_SUCCESS; + m_uiState = 1; + TraceMessage("* State transition 2 -> 1 *"); + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + } + TraceMessage("Unload DataSource Manager %s", (TWRC_SUCCESS==twRC)?"Success":"Failure"); + return twRC; +} + +TW_UINT16 CTWAINSession::DSM_Entry(TW_UINT32 uiDG, TW_UINT16 uiDAT, TW_UINT16 uiMSG, TW_MEMREF pData, pTW_IDENTITY pDataSource/*=NULL*/) +{ + //Assume failure + TW_UINT16 twRC = TWRC_FAILURE; + //Reset the condition code + m_twLastStatus.ConditionCode = TWCC_SUCCESS; + + //Handle Pre/Post notifications + CDSMPrePostCaller pcObject(this); + + if(MSG_PROCESSEVENT!=uiMSG) + { + //Trace out the beginning + TraceMessage("%s, %s, %s, pData=0x%08X, pSrc=0x%08X", convertDataGroup_toString(uiDG), + convertDataArgType_toString(uiDAT), convertMessage_toString(uiMSG), pData, pDataSource); + } + + //do not make re-entrant calls + if(false == m_bInTWAIN) + { + CAutoFlag afObject(m_bInTWAIN); + if(2 <= m_uiState) + { + TW_UINT16 twPrevState = m_uiState; + //Another special case + if(MSG_ENABLEDS==uiMSG) + { + //When ShowUI == false, there may be a bit of a race condition here + m_uiState = 5; + } + //Call the actual DSM + twRC = _DSM_Entry(&m_twAppIdentity, pDataSource, uiDG, uiDAT, uiMSG, pData); + if((TWRC_FAILURE==twRC)||(TWRC_CHECKSTATUS==twRC)) + { + //In this case automatically pull status + _DSM_Entry(&m_twAppIdentity, pDataSource, DG_CONTROL, DAT_STATUS, MSG_GET, &m_twLastStatus); + } + else + { + //look for basic state transitions + if((DAT_PENDINGXFERS==uiDAT)&&(MSG_RESET==uiMSG)) + { + //only valid in state 6 - success means transition to state 5 + m_uiState = 5; + } + else + { + switch(uiMSG) + { + case MSG_OPENDSM: + //only valid in state 2, success means transition to state 3 + m_uiState = 3; + break; + case MSG_CLOSEDSM: + //only valid in state 3, success means transition to state 2 + m_uiState = 2; + break; + case MSG_OPENDS: + //only valid in state 3, success means transition to state 4 + m_uiState = 4; + break; + case MSG_CLOSEDS: + //only valid in state 4, success means transition to state 3 + m_uiState = 3; + break; + case MSG_ENABLEDSUIONLY: + case MSG_ENABLEDS: + //only valid in state 4, success means transition to state 5 (using max in case of ShowUI==false race condition) + m_uiState = max(m_uiState, 5); + break; + case MSG_DISABLEDS: + //only valid in state 5, success means transition to state 4 + m_uiState = 4; + break; + case MSG_ENDXFER: + { + //valid in state 6 or 7, success means transition to state 6 or 5 + pTW_PENDINGXFERS pXfer = static_cast<pTW_PENDINGXFERS>(pData); + if(pXfer && (0==pXfer->Count)) + { + m_uiState = 5; + } + else + { + m_uiState = 6; + } + } + break; + case MSG_GET: + { + switch(uiDAT) + { + case DAT_IMAGENATIVEXFER: + case DAT_IMAGEFILEXFER: + //only valid in state 6, success means transition to state 7 + case DAT_IMAGEMEMXFER: + case DAT_IMAGEMEMFILEXFER: + //only valid in state 6 or 7, success means transition to state 7 + m_uiState = 7; + break; + } + } + break; + } + } + + if(twPrevState!=m_uiState) + { + //state transition was detected + TraceMessage("* State transition %d -> %d *", twPrevState, m_uiState); + } + } + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + } + } + else + { + //call was re-entrant, most suitable condition code + m_twLastStatus.ConditionCode = TWCC_DENIED; + if(MSG_PROCESSEVENT!=uiMSG) + { + TraceMessage("*** Attempt to make re-entrant TWAIN call rejected"); + } + } + if(MSG_PROCESSEVENT!=uiMSG) + { + //Trace out the result + TraceMessage("Result = %s, Condition Code = %s", convertReturnCode_toString(twRC), convertConditionCode_toString(m_twLastStatus.ConditionCode)); + } + return twRC; +} + +TW_UINT16 CTWAINSession::GetCurrentState() +{ + return m_uiState; +} + +void CTWAINSession::GetLastStatus(TW_STATUS &twStatus) +{ + twStatus = m_twLastStatus; + return; +} + +TW_UINT16 CTWAINSession::OpenDSM(TW_MEMREF mrParent) +{ + TW_UINT16 twRC = TWRC_FAILURE; + if(2==m_uiState) + { + m_mrParent = mrParent; + twRC = DSM_Entry(DG_CONTROL, DAT_PARENT, MSG_OPENDSM, &m_mrParent); + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + + //Trace out the result + TraceMessage("OpenDSM Failed / Result = %s, Status = %s", convertReturnCode_toString(twRC), convertConditionCode_toString(m_twLastStatus.ConditionCode)); + } + return twRC; +} + +TW_UINT16 CTWAINSession::CloseDSM() +{ + TW_UINT16 twRC = TWRC_FAILURE; + if(3==m_uiState) + { + twRC = DSM_Entry(DG_CONTROL, DAT_PARENT, MSG_CLOSEDSM, &m_mrParent); + if(TWRC_SUCCESS==twRC) + { + m_mrParent = NULL; + } + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + + //Trace out the result + TraceMessage("CloseDSM Failed / Result = %s, Status = %s", convertReturnCode_toString(twRC), convertConditionCode_toString(m_twLastStatus.ConditionCode)); + } + return twRC; +} + +TW_UINT16 CTWAINSession::GetDataSourceID(const char *pszProductName, TW_IDENTITY &twIdentity) +{ + TW_UINT16 twRC = TWRC_FAILURE; + if(3<=m_uiState) + { + bool bFound = false; + TW_IDENTITY twDataSource = {0}; + //Iterate through all the DataSources + if(TWRC_SUCCESS==(twRC=DSM_Entry(DG_CONTROL, DAT_IDENTITY, MSG_GETFIRST, &twDataSource))) + { + do + { + if(0==strncmp(twDataSource.ProductName, pszProductName, sizeof(twDataSource.ProductName))) + { + //DataSource was found, copy the information and stop looking + twIdentity = twDataSource; + twRC = TWRC_SUCCESS; + bFound = true; + break; + } + }while(TWRC_SUCCESS==(twRC=DSM_Entry(DG_CONTROL, DAT_IDENTITY, MSG_GETNEXT, &twDataSource))); + } + //last check + if(false==bFound) + { + //the DS was not found + twRC = TWRC_FAILURE; + m_twLastStatus.ConditionCode = TWCC_BADDEST; + } + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + + //Trace out the result + TraceMessage("CloseDSM Failed / Result = %s, Status = %s", convertReturnCode_toString(twRC), convertConditionCode_toString(m_twLastStatus.ConditionCode)); + } + return twRC; +} + +TW_UINT16 CTWAINSession::OpenDS() +{ + TW_UINT16 twRC = TWRC_FAILURE; + if(3==m_uiState) + { + memset(&m_twSourceIdentity, 0, sizeof(m_twSourceIdentity)); + //Open the default data source + if(TWRC_SUCCESS==DSM_Entry(DG_CONTROL, DAT_IDENTITY, MSG_GETDEFAULT, &m_twSourceIdentity)) + { + //Select the default data source + twRC = OpenDS(m_twSourceIdentity); + } + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + + //Trace out the result + TraceMessage("OpenDS Failed / Result = %s, Status = %s", convertReturnCode_toString(twRC), convertConditionCode_toString(m_twLastStatus.ConditionCode)); + } + return twRC; +} + +TW_UINT16 CTWAINSession::OpenDS(const char *pszProductName) +{ + TW_UINT16 twRC = TWRC_FAILURE; + if(3==m_uiState) + { + memset(&m_twSourceIdentity, 0, sizeof(m_twSourceIdentity)); + //Set just the ProductName of the Source Identity structure + SSTRCPY(m_twSourceIdentity.ProductName, sizeof(m_twSourceIdentity.ProductName), pszProductName); + //Attempt to select the source + twRC = OpenDS(m_twSourceIdentity); + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + + //Trace out the result + TraceMessage("OpenDS Failed / Result = %s, Status = %s", convertReturnCode_toString(twRC), convertConditionCode_toString(m_twLastStatus.ConditionCode)); + } + return twRC; +} + +TW_UINT16 CTWAINSession::OpenDS(TW_IDENTITY &twSource) +{ + TW_UINT16 twRC = TWRC_FAILURE; + if(3==m_uiState) + { + //Ask the DSM to open the requested Data Source + twRC = DSM_Entry(DG_CONTROL, DAT_IDENTITY, MSG_OPENDS, &twSource); + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + + //Trace out the result + TraceMessage("OpenDS Failed / Result = %s, Status = %s", convertReturnCode_toString(twRC), convertConditionCode_toString(m_twLastStatus.ConditionCode)); + } + return twRC; +} + +TW_UINT16 CTWAINSession::CloseDS() +{ + TW_UINT16 twRC = TWRC_FAILURE; + if(4==m_uiState) + { + //Ask the DSM to close the requested Data Source + twRC = DSM_Entry(DG_CONTROL, DAT_IDENTITY, MSG_CLOSEDS, &m_twSourceIdentity); + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + + //Trace out the result + TraceMessage("CloseDS Failed / Result = %s, Status = %s", convertReturnCode_toString(twRC), convertConditionCode_toString(m_twLastStatus.ConditionCode)); + } + return twRC; +} + +TW_UINT16 CTWAINSession::SetCallback() +{ + //Must be called in state 4 + if(4 != m_uiState) + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + return TWRC_FAILURE; + } + + //Initialize the callback structure + TW_CALLBACK twCallBack = {0}; + //Provide our instance ID + twCallBack.RefCon = m_twInstID; + twCallBack.CallBackProc = static_cast<TW_MEMREF>(CTWAINSession::DSMCallback); + + //define the scope of the critical section + { + CAutoCriticalSection acsObject(&m_csProtectInstanceMap); + //Store class pointer information in the instance map + m_mapInstance[m_twInstID] = this; + } + + //call the DSM + return DSM_Entry(DG_CONTROL, DAT_CALLBACK, MSG_REGISTER_CALLBACK, &twCallBack, &m_twSourceIdentity); +} + +TW_UINT16 CTWAINSession::EnableDS(TW_HANDLE hParent, bool ShowUI) +{ + TW_UINT16 twRC = TWRC_FAILURE; + if(4==m_uiState) + { + TW_USERINTERFACE twUI = {0}; + twUI.ShowUI = ShowUI; + twUI.hParent = hParent; + twRC = DSM_Entry(DG_CONTROL, DAT_USERINTERFACE, MSG_ENABLEDS, &twUI, &m_twSourceIdentity); + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + + //Trace out the result + TraceMessage("EnableDS Failed / Result = %s, Status = %s", convertReturnCode_toString(twRC), convertConditionCode_toString(m_twLastStatus.ConditionCode)); + } + return twRC; +} + +TW_UINT16 CTWAINSession::EnableDSUIOnly(TW_HANDLE hParent) +{ + TW_UINT16 twRC = TWRC_FAILURE; + if(4==m_uiState) + { + TW_USERINTERFACE twUI = {0}; + twUI.ShowUI = true; + twUI.hParent = hParent; + twRC = DSM_Entry(DG_CONTROL, DAT_USERINTERFACE, MSG_ENABLEDSUIONLY, &twUI, &m_twSourceIdentity); + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + + //Trace out the result + TraceMessage("EnableDSUIOnly Failed / Result = %s, Status = %s", convertReturnCode_toString(twRC), convertConditionCode_toString(m_twLastStatus.ConditionCode)); + } + return twRC; +} + +TW_UINT16 CTWAINSession::DisableDS() +{ + TW_UINT16 twRC = TWRC_FAILURE; + if(5==m_uiState) + { + TW_USERINTERFACE twUI = {0}; + twRC = DSM_Entry(DG_CONTROL, DAT_USERINTERFACE, MSG_DISABLEDS, &twUI, &m_twSourceIdentity); + } + else + { + //This is a sequence error + m_twLastStatus.ConditionCode = TWCC_SEQERROR; + twRC = TWRC_FAILURE; + + //Trace out the result + TraceMessage("DisableDS Failed / Result = %s, Status = %s", convertReturnCode_toString(twRC), convertConditionCode_toString(m_twLastStatus.ConditionCode)); + } + return twRC; +} + +TW_UINT16 CTWAINSession::ProcessEvent(const TW_EVENT &twEvent) +{ + TW_UINT16 twRC = TWRC_NOTDSEVENT; + TW_EVENT twCopy = twEvent; + if(5<=m_uiState) + { + twRC = DSM_Entry(DG_CONTROL, DAT_EVENT, MSG_PROCESSEVENT, &twCopy, &m_twSourceIdentity); + if(TWRC_DSEVENT==twRC) + { + switch(twCopy.TWMessage) + { + case MSG_XFERREADY: + case MSG_CLOSEDSREQ: + case MSG_CLOSEDSOK: + case MSG_DEVICEEVENT: + //this was one of our events! + SignalDSRequest(twCopy.TWMessage); + break; + } + } + } + return twRC; +} + +TW_UINT16 CTWAINSession::GetDSRequest() +{ + TW_UINT16 twRC = MSG_NULL; + //Define the scope of the critical section + { + CAutoCriticalSection acsObject(&m_csProtectRequestQueue); + if(m_twDSRequestQueue.size()) + { + twRC = m_twDSRequestQueue.front(); + } + } + return twRC; +} + +void CTWAINSession::ClearDSRequest() +{ + m_twDSRequestQueue.pop(); + return; +} + +TW_UINT16 CTWAINSession::DoTransfer() +{ + TW_UINT16 twRC = TWRC_FAILURE; + TW_SETUPMEMXFER twSetupMemXfer = {0}; + TW_IMAGEMEMXFER twImageMemXfer = {0}; + + //Time to inspect and figure out a few things + TW_UINT16 twXferMech = TWSX_NATIVE; + if(TWRC_SUCCESS==GetCapabilityOneValue(ICAP_XFERMECH, twXferMech)) + { + TW_IMAGEINFO twInfo = {0}; + //This is to be called before any transfer + if(TWRC_SUCCESS==DSM_Entry(DG_IMAGE, DAT_IMAGEINFO, MSG_GET, &twInfo, &m_twSourceIdentity)) + { + //signal the derived class + OnImageBegin(twInfo, twXferMech); + + bool bAbort = false; + do + { + switch(twXferMech) + { + case TWSX_NATIVE: + { + TW_HANDLE hImage = NULL; + //Perform a Native transfer + twRC = DSM_Entry(DG_IMAGE, DAT_IMAGENATIVEXFER, MSG_GET, &hImage, &m_twSourceIdentity); + if((TWRC_XFERDONE==twRC)||(TWRC_SUCCESS==twRC)) + { + //Assume we are to free the image + bool bFree = true; + //Notify the derived class + OnNativeTransfer(&hImage, bAbort, bFree); + if(bFree) + { + //Discard the result + _DSM_Free(hImage); + hImage = NULL; + } + + if(TWRC_SUCCESS==twRC) + { + TraceMessage("*** Note: DS responded with invalid TWRC_SUCCESS for DAT_IMAGENATIVEXFER/MSG_GET Expected: TWRC_XFERDONE ***"); + twRC = TWRC_XFERDONE; + } + } + } + break; + case TWSX_FILE: + { + TW_SETUPFILEXFER twSetupFileXfer = {0}; + twRC = DSM_Entry(DG_CONTROL, DAT_SETUPFILEXFER, MSG_GET, &twSetupFileXfer, &m_twSourceIdentity); + if(TWRC_SUCCESS==twRC) + { + //Perform a File transfer + twRC = DSM_Entry(DG_IMAGE, DAT_IMAGEFILEXFER, MSG_GET, NULL, &m_twSourceIdentity); + if((TWRC_XFERDONE==twRC)||(TWRC_SUCCESS==twRC)) + { + //Notify the derived class + OnFileTransfer(twSetupFileXfer, bAbort); + if(TWRC_SUCCESS==twRC) + { + TraceMessage("*** Note: DS responded with invalid TWRC_SUCCESS for DAT_IMAGEFILEXFER/MSG_GET Expected: TWRC_XFERDONE ***"); + twRC = TWRC_XFERDONE; + } + } + } + } + break; + case TWSX_MEMORY: + case TWSX_MEMFILE: + { + if(6==m_uiState) + { + //Find out how we are supposed to setup the memory + twRC = DSM_Entry(DG_CONTROL, DAT_SETUPMEMXFER, MSG_GET, &twSetupMemXfer, &m_twSourceIdentity); + if(TWRC_SUCCESS==twRC) + { + //Allocate the memory + twImageMemXfer.Memory.Flags = TWMF_APPOWNS|TWMF_POINTER; + twImageMemXfer.Memory.Length = twSetupMemXfer.Preferred; + twImageMemXfer.Memory.TheMem = new BYTE[twSetupMemXfer.Preferred]; + } + } + if(6<=m_uiState) + { + //perform a Memory transfer + twRC = DSM_Entry(DG_IMAGE, DAT_IMAGEMEMXFER, MSG_GET, &twImageMemXfer, &m_twSourceIdentity); + } + if((TWRC_XFERDONE==twRC)||(TWRC_SUCCESS==twRC)) + { + if(TWSX_MEMORY==twXferMech) + { + //Notify the derived class that a memory transfer occured + OnMemoryTransfer(twInfo, twImageMemXfer, twRC, bAbort); + } + else if(TWSX_MEMFILE==twXferMech) + { + //Notify the derived class that a file in memory transfer occured + OnFileMemTransfer(twImageMemXfer, twRC, bAbort); + } + + if(TWRC_XFERDONE==twRC) + { + //finished, discard the memory used + delete [] reinterpret_cast<BYTE*>(twImageMemXfer.Memory.TheMem); + twImageMemXfer.Memory.TheMem = NULL; + } + } + } + break; + } + }while(TWRC_SUCCESS==twRC); + } + + if(7==m_uiState) + { + //signal the derived class + OnImageEnd(twInfo, twXferMech); + //transition a state + TW_PENDINGXFERS twPendingXfers = {0}; + twRC = DSM_Entry(DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, &twPendingXfers, &m_twSourceIdentity); + if(TWRC_SUCCESS==twRC) + { + //signal the derived class + OnEndXfer(twPendingXfers); + } + } + } + return twRC; +} + +bool CTWAINSession::ReturnToState(TW_UINT16 twDesiredState) +{ + bool bAssumeHigher = true; + //Reduce state until we reach 5 + while(twDesiredState<m_uiState) + { + if(TWRC_SUCCESS!=DownOneState()) + { + if(TWCC_SEQERROR == m_twLastStatus.ConditionCode) + { + if(7==m_uiState) + { + //current state must be lower, not higher + bAssumeHigher = false; + } + + if(bAssumeHigher) + { + //assume actual state is higher, increase the state + m_uiState = min(7, m_uiState+1); + } + else + { + //assume the actual state is lower, decrement the state + m_uiState = max(1, m_uiState-1); + } + } + else + { + #pragma message("TODO: Consider treating all errors like Sequence Errors") + //non-seq errors are invalid failures, just decrement the state + m_uiState = max(1, m_uiState-1); + } + } + } + //success depends on reaching State 5 + return (twDesiredState==m_uiState)?true:false; +} + +void CTWAINSession::OnSignalDSRequest() +{ + //Default implementation does nothing + return; +} + +void CTWAINSession::SignalDSRequest(TW_UINT16 twMsg) +{ + TraceMessage("Queueing Data Source Signal: %s", convertMessage_toString(twMsg)); + TW_UINT16 twPrevState = m_uiState; + //Define the scope of the critical section + { + CAutoCriticalSection acsObject(&m_csProtectRequestQueue); + if(MSG_XFERREADY==twMsg) + { + m_uiState = 6; + } + //Put the request on the queue + m_twDSRequestQueue.push(twMsg); + } + + if(twPrevState!=m_uiState) + { + //state transition was detected + TraceMessage("* State transition %d -> %d *", twPrevState, m_uiState); + } + //Signal parent + OnSignalDSRequest(); + return; +} + +TW_UINT16 FAR PASCAL CTWAINSession::DSMCallback(pTW_IDENTITY pOrigin, pTW_IDENTITY pDest, TW_UINT32 uiDG, TW_UINT16 uiDAT, TW_UINT16 uiMSG, TW_MEMREF pData) +{ + //Callback has been issued + TW_UINT16 twRC = TWRC_FAILURE; + //Look for our instance information + if(m_mapInstance.end()!=m_mapInstance.find(reinterpret_cast<TW_UINT32>(pData))) + { + //Class has been found so dispatch the DataSource request + twRC = TWRC_SUCCESS; + m_mapInstance[(TW_UINT32)pData]->SignalDSRequest(uiMSG); + } + //Return the result + return twRC; +} + +void CTWAINSession::TraceMessage(const char *pszFormatString, ...) +{ + //setup the variable argument list + va_list args; + va_start(args, pszFormatString); + + int nCount = _vscprintf(pszFormatString, args ) + 1; + //allocate the fromatted string + char *pszFormatted = new char[nCount]; + if(pszFormatted) + { + //format the string + vsprintf_s(pszFormatted, nCount, pszFormatString, args); + //Output the result + OutputDebugStringA(pszFormatted); + //cleanup local pointers + delete [] pszFormatted; + pszFormatted = NULL; + } + return; +} + +TW_UINT16 CTWAINSession::DownOneState() +{ + TW_UINT16 twRC = TWRC_FAILURE; + TW_PENDINGXFERS twXfer = {0}; + switch(m_uiState) + { + case 2: + //this should bring us to State 1 + twRC = FreeDSM(); + break; + case 3: + //this should bring us to State 2 + twRC = CloseDSM(); + break; + case 4: + //this should bring us to State 3 + twRC = CloseDS(); + break; + case 5: + //this should bring us to State 4 + twRC = DisableDS(); + break; + case 6: + //this should bring us to State 5 + twRC = DSM_Entry(DG_CONTROL, DAT_PENDINGXFERS, MSG_RESET, &twXfer, &m_twSourceIdentity); + break; + case 7: + //this should bring us to State 6 + TW_PENDINGXFERS twXfer = {0}; + twRC = DSM_Entry(DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, &twXfer, &m_twSourceIdentity); + break; + } + return twRC; +} + +TW_HANDLE CTWAINSession::AllocateContainer(TW_UINT16 twConType, TW_UINT16 twItemType, TW_UINT32 twCount/*=1*/) +{ + TW_HANDLE hResult = NULL; + //Allocate memory of the appropriate size + switch(twConType) + { + case TWON_ONEVALUE: + switch(twItemType) + { + default: + //these fit in the TW_ONEVALUE size + hResult = _DSM_Alloc(sizeof(TW_ONEVALUE)); + break; + case TWTY_FRAME: + case TWTY_STR32: + case TWTY_STR64: + case TWTY_STR128: + case TWTY_STR255: + //these are too big to fit in a simple TW_ONEVALUE + hResult = _DSM_Alloc(sizeof(TW_ONEVALUE) + getTWTYsize(twItemType)); + break; + } + break; + case TWON_ARRAY: + hResult = _DSM_Alloc(sizeof(TW_ARRAY) + (twCount * getTWTYsize(twItemType))); + break; + case TWON_ENUMERATION: + hResult = _DSM_Alloc(sizeof(TW_ENUMERATION) + (twCount * getTWTYsize(twItemType))); + break; + case TWON_RANGE: + //All ranges are the same size Note:(sizeof(TW_FIX32)==sizeof(TW_UINT32)) + hResult = _DSM_Alloc(sizeof(TW_RANGE)); + break; + } + + if(hResult) + { + //Leverage the container similarities to simplify initialization, obtain a pointer + pTW_ONEVALUE pOne = static_cast<pTW_ONEVALUE>(_DSM_LockMemory(hResult)); + if(pOne) + { + //First item in all containers is the "Type" + pOne->ItemType = twItemType; + switch(twConType) + { + case TWON_ARRAY: + case TWON_ENUMERATION: + { + //For multi-value containers the second item is always the "NumItems" + pTW_ARRAY pArray = reinterpret_cast<pTW_ARRAY>(pOne); + pArray->NumItems = twCount; + pArray = NULL; + } + } + //Unlock the memory + _DSM_UnlockMemory(hResult); + pOne = NULL; + } + } + + return hResult; +} + +bool CTWAINSession::FillCapability(TW_UINT16 twCapId, TW_UINT16 twConType, TW_UINT16 twItemType, TW_CAPABILITY &twCap, TW_UINT32 twCount/*=1*/) +{ + //Setup the capability ID + twCap.Cap = twCapId; + //Setup the Container type + twCap.ConType = twConType; + //Allocate and prep the container + twCap.hContainer = AllocateContainer(twConType, twItemType, twCount); + //Success depends on successful creation of the container + return (NULL!=twCap.hContainer)?true:false; +} + +TW_UINT16 CTWAINSession::SetCapabilityOneValue(TW_UINT16 twCapId, const bool &bValue) +{ + TW_UINT16 twRC = TWRC_FAILURE; + TW_CAPABILITY twCap = {0}; + TW_BOOL twVal = (true==bValue)?TRUE:FALSE; + + //Prepare the capability structure + if(FillCapability(twCapId, TWON_ONEVALUE, TWTY_BOOL, twCap)) + { + //Delegate to the next level + twRC = SetCapabilityAnyOneValue(twCap, &twVal); + } + return twRC; +} + +TW_UINT16 CTWAINSession::SetCapabilityOneValue(TW_UINT16 twCapId, const TW_INT16 &twVal) +{ + TW_UINT16 twRC = TWRC_FAILURE; + TW_CAPABILITY twCap = {0}; + //Prepare the capability structure + if(FillCapability(twCapId, TWON_ONEVALUE, TWTY_INT16, twCap)) + { + //Delegate to the next level + twRC = SetCapabilityAnyOneValue(twCap, &twVal); + } + return twRC; +} + +TW_UINT16 CTWAINSession::SetCapabilityOneValue(TW_UINT16 twCapId, const TW_UINT16 &twVal) +{ + TW_UINT16 twRC = TWRC_FAILURE; + TW_CAPABILITY twCap = {0}; + //Prepare the capability structure + if(FillCapability(twCapId, TWON_ONEVALUE, TWTY_UINT16, twCap)) + { + //Delegate to the next level + twRC = SetCapabilityAnyOneValue(twCap, &twVal); + } + return twRC; +} + +TW_UINT16 CTWAINSession::SetCapabilityOneValue(TW_UINT16 twCapId, const TW_UINT32 &twVal) +{ + TW_UINT16 twRC = TWRC_FAILURE; + TW_CAPABILITY twCap = {0}; + //Prepare the capability structure + if(FillCapability(twCapId, TWON_ONEVALUE, TWTY_UINT32, twCap)) + { + //Delegate to the next level + twRC = SetCapabilityAnyOneValue(twCap, &twVal); + } + return twRC; +} + +TW_UINT16 CTWAINSession::SetCapabilityOneValue(TW_UINT16 twCapId, const TW_FIX32 &twVal) +{ + TW_UINT16 twRC = TWRC_FAILURE; + TW_CAPABILITY twCap = {0}; + //Prepare the capability structure + if(FillCapability(twCapId, TWON_ONEVALUE, TWTY_FIX32, twCap)) + { + //Delegate to the next level + twRC = SetCapabilityAnyOneValue(twCap, &twVal); + } + return twRC; +} + +TW_UINT16 CTWAINSession::SetCapabilityOneValue(TW_UINT16 twCapId, const TW_FRAME &twVal) +{ + TW_UINT16 twRC = TWRC_FAILURE; + TW_CAPABILITY twCap = {0}; + //Prepare the capability structure + if(FillCapability(twCapId, TWON_ONEVALUE, TWTY_FRAME, twCap)) + { + //Delegate to the next level + twRC = SetCapabilityAnyOneValue(twCap, &twVal); + } + return twRC; +} + +TW_UINT16 CTWAINSession::SetCapabilityAnyOneValue(TW_CAPABILITY &twCap, const void *pValue) +{ + TW_UINT16 twRC = TWRC_FAILURE; + + pTW_ONEVALUE pOne = static_cast<pTW_ONEVALUE>(_DSM_LockMemory(twCap.hContainer)); + if(pOne) + { + //Fill in the one value + memcpy(&pOne->Item, pValue, getTWTYsize(pOne->ItemType)); + _DSM_UnlockMemory(twCap.hContainer); + //Call the base implementation + twRC = SetCapability(twCap); + //Free the memory + _DSM_Free(twCap.hContainer); + twCap.hContainer = NULL; + } + return twRC; +} + +TW_UINT16 CTWAINSession::SetCapability(TW_CAPABILITY &twCap) +{ + return DSM_Entry(DG_CONTROL, DAT_CAPABILITY, MSG_SET, &twCap, &m_twSourceIdentity); +} + +TW_UINT16 CTWAINSession::GetCapabilityOneValue(TW_UINT16 twCapId, bool &bValue, TW_UINT16 twMsg/*=MSG_GETCURRENT*/) +{ + TW_CAPABILITY twCap = + { + twCapId, + TWON_DONTCARE16, + NULL, + }; + TW_BOOL twValue = FALSE; + TW_UINT16 twRC = GetAnyCapabilityOneValue(twCap, &twValue, twMsg); + if(TWRC_SUCCESS==twRC) + { + bValue = (TRUE==twValue)?true:false; + } + return twRC; +} + +TW_UINT16 CTWAINSession::GetCapabilityOneValue(TW_UINT16 twCapId, TW_INT16 &twValue, TW_UINT16 twMsg/*=MSG_GETCURRENT*/) +{ + TW_CAPABILITY twCap = + { + twCapId, + TWON_DONTCARE16, + NULL, + }; + return GetAnyCapabilityOneValue(twCap, &twValue, twMsg); +} + +TW_UINT16 CTWAINSession::GetCapabilityOneValue(TW_UINT16 twCapId, TW_UINT16 &twValue, TW_UINT16 twMsg/*=MSG_GETCURRENT*/) +{ + TW_CAPABILITY twCap = + { + twCapId, + TWON_DONTCARE16, + NULL, + }; + return GetAnyCapabilityOneValue(twCap, &twValue, twMsg); +} + +TW_UINT16 CTWAINSession::GetCapabilityOneValue(TW_UINT16 twCapId, TW_UINT32 &twValue, TW_UINT16 twMsg/*=MSG_GETCURRENT*/) +{ + TW_CAPABILITY twCap = + { + twCapId, + TWON_DONTCARE16, + NULL, + }; + return GetAnyCapabilityOneValue(twCap, &twValue, twMsg); +} + +TW_UINT16 CTWAINSession::GetCapabilityOneValue(TW_UINT16 twCapId, TW_FIX32 &twValue, TW_UINT16 twMsg/*=MSG_GETCURRENT*/) +{ + TW_CAPABILITY twCap = + { + twCapId, + TWON_DONTCARE16, + NULL, + }; + return GetAnyCapabilityOneValue(twCap, &twValue, twMsg); +} + +TW_UINT16 CTWAINSession::GetCapabilityOneValue(TW_UINT16 twCapId, TW_FRAME &twValue, TW_UINT16 twMsg/*=MSG_GETCURRENT*/) +{ + TW_CAPABILITY twCap = + { + twCapId, + TWON_DONTCARE16, + NULL, + }; + return GetAnyCapabilityOneValue(twCap, &twValue, twMsg); +} + +TW_UINT16 CTWAINSession::GetAnyCapabilityOneValue(TW_CAPABILITY twCap, void *pValue, TW_UINT16 twMsg) +{ + TW_UINT16 twRC = TWRC_FAILURE; + if(TWRC_SUCCESS==GetCapability(twCap, twMsg)) + { + switch(twCap.ConType) + { + case TWON_ONEVALUE: + { + pTW_ONEVALUE pOne = static_cast<pTW_ONEVALUE>(_DSM_LockMemory(twCap.hContainer)); + if(pOne) + { + switch(pOne->ItemType) + { + //note: for all sizeof <= TW_UINT32 casting is an effective cross platform technique + case TWTY_INT8: + *static_cast<pTW_INT8>(pValue) = static_cast<TW_INT8>(pOne->Item); + break; + case TWTY_INT16: + *static_cast<pTW_INT16>(pValue) = static_cast<TW_INT16>(pOne->Item); + break; + case TWTY_INT32: + *static_cast<pTW_INT32>(pValue) = static_cast<TW_INT32>(pOne->Item); + break; + case TWTY_UINT8: + *static_cast<pTW_UINT8>(pValue) = static_cast<TW_UINT8>(pOne->Item); + break; + case TWTY_UINT16: + *static_cast<pTW_UINT16>(pValue) = static_cast<TW_UINT16>(pOne->Item); + break; + case TWTY_UINT32: + *static_cast<pTW_UINT32>(pValue) = static_cast<TW_UINT32>(pOne->Item); + break; + case TWTY_BOOL: + *static_cast<pTW_BOOL>(pValue) = static_cast<TW_BOOL>(pOne->Item); + break; + default: + //note: for all sizeof > TW_UINT32 copying is the best extraction technique + memcpy(pValue, &pOne->Item, getTWTYsize(pOne->ItemType)); + break; + } + twRC = TWRC_SUCCESS; + //release the memory + _DSM_UnlockMemory(twCap.hContainer); + pOne = NULL; + } + } + break; + case TWON_RANGE: + { + pTW_RANGE pRange = static_cast<pTW_RANGE>(_DSM_LockMemory(twCap.hContainer)); + if(pRange) + { + TW_UINT32 twInterim = 0; + twRC = TWRC_SUCCESS; + switch(twMsg) + { + case MSG_RESET: + case MSG_GETCURRENT: + twInterim = pRange->CurrentValue; + break; + case MSG_GETDEFAULT: + twInterim = pRange->DefaultValue; + break; + default: + //note: for all sizeof > TW_UINT32 copying is the best extraction technique + twRC = TWRC_FAILURE; + break; + } + + if(TWRC_SUCCESS==twRC) + { + twRC = TWRC_SUCCESS; + switch(pRange->ItemType) + { + //note: for all sizeof <= TW_UINT32 casting is an effective cross platform technique + case TWTY_INT8: + *static_cast<pTW_INT8>(pValue) = static_cast<TW_INT8>(twInterim); + break; + case TWTY_INT16: + *static_cast<pTW_INT16>(pValue) = static_cast<TW_INT16>(twInterim); + break; + case TWTY_INT32: + *static_cast<pTW_INT32>(pValue) = static_cast<TW_INT32>(twInterim); + break; + case TWTY_UINT8: + *static_cast<pTW_UINT8>(pValue) = static_cast<TW_UINT8>(twInterim); + break; + case TWTY_UINT16: + *static_cast<pTW_UINT16>(pValue) = static_cast<TW_UINT16>(twInterim); + break; + case TWTY_UINT32: + *static_cast<pTW_UINT32>(pValue) = static_cast<TW_UINT32>(twInterim); + break; + case TWTY_BOOL: + *static_cast<pTW_BOOL>(pValue) = static_cast<TW_BOOL>(twInterim); + break; + default: + //note: for all sizeof > TW_UINT32 copying is the best extraction technique + twRC = TWRC_FAILURE; + break; + } + } + //release the memory + _DSM_UnlockMemory(twCap.hContainer); + pRange = NULL; + } + } + break; + case TWON_ENUMERATION: + { + pTW_ENUMERATION pEnum = static_cast<pTW_ENUMERATION>(_DSM_LockMemory(twCap.hContainer)); + if(pEnum) + { + TW_UINT32 twIndex = 0; + twRC = TWRC_SUCCESS; + switch(twMsg) + { + case MSG_RESET: + case MSG_GETCURRENT: + twIndex = pEnum->CurrentIndex; + break; + case MSG_GETDEFAULT: + twIndex = pEnum->DefaultIndex; + break; + default: + //note: for all sizeof > TW_UINT32 copying is the best extraction technique + twRC = TWRC_FAILURE; + break; + } + + if(TWRC_SUCCESS==twRC) + { + //copy the result from the array + memcpy(pValue, &pEnum->ItemList[getTWTYsize(pEnum->ItemType) * twIndex], getTWTYsize(pEnum->ItemType)); + } + //release the memory + _DSM_UnlockMemory(twCap.hContainer); + pEnum = NULL; + } + } + break; + //note: array does not have concept of a one value 'current' or 'default' + } + //Free the container + _DSM_Free(twCap.hContainer); + twCap.hContainer = NULL; + } + return twRC; +} + +TW_UINT16 CTWAINSession::GetCapabilitySupported(TW_UINT16 twCapId, TW_HANDLE &hContainer, TW_UINT16 &twConType) +{ + TW_CAPABILITY twCap = + { + twCapId, + TWON_DONTCARE16, + NULL, + }; + TW_UINT16 twRC = GetCapability(twCap); + if(TWRC_SUCCESS==twRC) + { + hContainer = twCap.hContainer; + twConType = twCap.ConType; + } + return twRC; +} + +TW_UINT16 CTWAINSession::GetCapability(TW_CAPABILITY &twCap, TW_UINT16 twMsg/*=MSG_GET*/) +{ + return DSM_Entry(DG_CONTROL, DAT_CAPABILITY, twMsg, &twCap, &m_twSourceIdentity); +} Added: trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h (rev 0) +++ trunk/TWAIN-Samples/Twain_App_sample01/TWAIN_App_QT/TWAIN_App_QT/TWAINSession.h 2010-09-13 19:48:40 UTC (rev 90) @@ -0,0 +1,448 @@ +/*************************************************************************** +* Copyright \xA9 2010 TWAIN Working Group: +* Adobe Systems Incorporated, AnyDoc Software Inc., Eastman Kodak Company, +* Fujitsu Computer Products of America, JFL Peripheral Solutions Inc., +* Avision Inc., and Atalasoft, Inc. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the TWAIN Working Group nor the +* names of its contributors may be u... [truncated message content] |
From: <jh...@us...> - 2010-09-13 19:42:55
|
Revision: 89 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=89&view=rev Author: jharju Date: 2010-09-13 19:42:47 +0000 (Mon, 13 Sep 2010) Log Message: ----------- Tweaked some defines to be windows character base agnostic. Expanded the TWAIN define to string utility methods. Added a TRACE macro implementation for Windows if none exists. Fixed enableDSOnly method to allow proper parent/child window relationship. Removed errant DoXferReadyEvent from DAT_PENDINGXFERS/MSG_ENDXFER call. Modified solutions to launch debug applications from copied locations. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/src/VerifySignature.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.h trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.h trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.sln trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.vcproj trunk/TWAIN-Samples/common/Common.h trunk/TWAIN-Samples/common/TwainString.cpp trunk/TWAIN-Samples/common/TwainString.h Modified: trunk/TWAIN-Samples/Twain_App_sample01/src/VerifySignature.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/src/VerifySignature.cpp 2010-04-22 18:25:52 UTC (rev 88) +++ trunk/TWAIN-Samples/Twain_App_sample01/src/VerifySignature.cpp 2010-09-13 19:42:47 UTC (rev 89) @@ -10,7 +10,7 @@ #include "stdafx.h" #endif -#include <afx.h> +#include <windows.h> #include <tchar.h> #include <stdio.h> #include <stdlib.h> @@ -18,6 +18,36 @@ #include <wincrypt.h> #include <wintrust.h> +void OutputDebugStringFmt2(LPCTSTR lpOutputString, ...) +{ + //setup the variable argument list + va_list args; + va_start(args, lpOutputString); + int nCount = _vsctprintf(lpOutputString, args ) + 1; + + //allocate the fromatted string + TCHAR *pszFormatted = new TCHAR[nCount]; + if(pszFormatted) + { + //format the string + _vstprintf_s(pszFormatted, nCount, lpOutputString, args); + //copy to the output buffer + OutputDebugString(pszFormatted); + //cleanup local pointers + delete [] pszFormatted; + pszFormatted = NULL; + } + return; +} + +#ifndef TRACE +#ifdef _DEBUG +#define TRACE OutputDebugStringFmt2 +#else //#ifdef _DEBUG +#define TRACE +#endif //#ifdef _DEBUG +#endif //#ifndef TRACE + // Link with the Wintrust.lib file. #pragma comment (lib, "wintrust") @@ -122,14 +152,14 @@ // The hash that represents the subject or the publisher was not explicitly trusted // by the admin and the admin policy has disabled user trust. No signature, publisher // or time stamp errors. - TRACE( "CRYPT_E_SECURITY_SETTINGS - The hash representing the subject or the " - "publisher wasn't explicitly trusted by the admin and admin policy has " - "disabled user trust. No signature, publisher or timestamp errors.\n" ); + TRACE( _T("CRYPT_E_SECURITY_SETTINGS - The hash representing the subject or the ") + _T("publisher wasn't explicitly trusted by the admin and admin policy has ") + _T("disabled user trust. No signature, publisher or timestamp errors.\n") ); break; case CERT_E_UNTRUSTEDROOT: - TRACE( "A certificate chain processed, but terminated in a root " - "certificate which is not trusted by the trust provider.\n" ); + TRACE( _T("A certificate chain processed, but terminated in a root ") + _T("certificate which is not trusted by the trust provider.\n") ); break; default: Modified: trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.cpp 2010-04-22 18:25:52 UTC (rev 88) +++ trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.cpp 2010-09-13 19:42:47 UTC (rev 89) @@ -383,7 +383,7 @@ break; case MSG_ENABLEDSUIONLY: - twrc = enableDSOnly(); + twrc = enableDSOnly(_pData); break; case MSG_DISABLEDS: Modified: trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.h =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.h 2010-04-22 18:25:52 UTC (rev 88) +++ trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.h 2010-09-13 19:42:47 UTC (rev 89) @@ -271,9 +271,10 @@ /** * Enable the Data Source in setup mode. * Called when a DG_CONTROL / DAT_USERINTERFACE / MSG_ENABLEDS op is sent. + * @param[in] _pData a pointer to a TW_USERINTERFACE structure. * @return a valid TWRC_xxxx return code. */ - virtual TW_INT16 enableDSOnly() = 0; + virtual TW_INT16 enableDSOnly(pTW_USERINTERFACE _pData) = 0; /** * Disable the Data Source. Modified: trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp 2010-04-22 18:25:52 UTC (rev 88) +++ trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp 2010-09-13 19:42:47 UTC (rev 89) @@ -1060,7 +1060,7 @@ return TWRC_SUCCESS; } ////////////////////////////////////////////////////////////////////////////// -TW_INT16 CTWAINDS_FreeImage::enableDSOnly() +TW_INT16 CTWAINDS_FreeImage::enableDSOnly(pTW_USERINTERFACE _pData) { if( dsState_Open != m_CurrentState ) { @@ -1069,12 +1069,7 @@ } m_CurrentState = dsState_Enabled; - TW_USERINTERFACE Data; - memset(&Data,0,sizeof(TW_USERINTERFACE)); - Data.ShowUI = 1; - - - if(m_pGUI->DisplayTWAINGUI(Data,true,false)!=TWRC_SUCCESS) + if(m_pGUI->DisplayTWAINGUI(*_pData,true,false)!=TWRC_SUCCESS) { // A user interface is not supported as of right now because we are // in text mode. @@ -1354,7 +1349,6 @@ *_pXfers = m_Xfers; if(0 != m_Xfers.Count) { - DoXferReadyEvent(); m_CurrentState = dsState_XferReady; } return twrc; Modified: trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.h =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.h 2010-04-22 18:25:52 UTC (rev 88) +++ trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.h 2010-09-13 19:42:47 UTC (rev 89) @@ -157,9 +157,10 @@ /** * Enable the Data Source in setup mode. * Called when a DG_CONTROL / DAT_USERINTERFACE / MSG_ENABLEDS op is sent. + * @param[in] _pData a pointer to a TW_USERINTERFACE structure. * @return a valid TWRC_xxxx return code. */ - TW_INT16 enableDSOnly(); + TW_INT16 enableDSOnly(pTW_USERINTERFACE _pData); /** * Called by the base class when the data source is disabled. Modified: trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.sln =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.sln 2010-04-22 18:25:52 UTC (rev 88) +++ trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.sln 2010-09-13 19:42:47 UTC (rev 89) @@ -23,4 +23,7 @@ GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + QtVersion = 4.6.3 + EndGlobalSection EndGlobal Modified: trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.vcproj =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.vcproj 2010-04-22 18:25:52 UTC (rev 88) +++ trunk/TWAIN-Samples/Twain_DS_sample01/visual_studio/TWAINDS_VS2008.vcproj 2010-09-13 19:42:47 UTC (rev 89) @@ -5,7 +5,7 @@ Name="TWAINDS_Sample" ProjectGUID="{1E73CADF-90D9-45E9-97E2-CD25E3532DB4}" RootNamespace="TWAINDS_VS2005_mfc32" - Keyword="Win32Proj" + Keyword="Qt4VSv1.0" TargetFrameworkVersion="0" > <Platforms> @@ -495,7 +495,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -D_DEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_About.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -506,7 +506,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -D_DEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_About.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -517,7 +517,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -DNDEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_About.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -528,7 +528,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -DNDEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_About.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -543,7 +543,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -D_DEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_MainForm.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -554,7 +554,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -D_DEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_MainForm.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -565,7 +565,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -DNDEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_MainForm.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -576,7 +576,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -DNDEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_MainForm.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -591,7 +591,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -D_DEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_ProfileName.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -602,7 +602,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -D_DEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_ProfileName.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -613,7 +613,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -DNDEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_ProfileName.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -624,7 +624,7 @@ <Tool Name="VCCustomBuildTool" Description="Moc'ing $(InputFileName)..." - CommandLine=""$(QTDIR)\bin\moc.exe" "$(InputPath)" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." -I".\." -I"..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\." -I"..\src\GeneratedFiles\."
" + CommandLine=""$(QTDIR)\bin\moc.exe" -DWIN32 -DNDEBUG -D_WINDOWS -DSTRICT -D_USRDLL -D_WINDLL -D_MBCS -I".\." -I".\..\." -I".\..\src\GeneratedFiles\." -I".\..\..\pub\external\include\." -I".\..\..\Common\." -I"$(QTDIR)\include\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtGui\." "..\src\Qt_ProfileName.h" -o "..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"
" AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)" Outputs=""..\src\GeneratedFiles\$(PlatformName)\$(ConfigurationName)\moc_$(InputName).cpp"" /> @@ -885,7 +885,7 @@ Name="Generated Files" > <File - RelativePath="..\src\GeneratedFiles\x64\Release\moc_Qt_About.cpp" + RelativePath="..\src\GeneratedFiles\x64\Debug\moc_Qt_About.cpp" > <FileConfiguration Name="Debug|Win32" @@ -896,7 +896,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -904,7 +904,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -913,7 +913,7 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\x64\Debug\moc_Qt_About.cpp" + RelativePath="..\src\GeneratedFiles\Win32\Release\moc_Qt_About.cpp" > <FileConfiguration Name="Debug|Win32" @@ -924,7 +924,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -941,10 +941,10 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\Win32\Release\moc_Qt_About.cpp" + RelativePath="..\src\GeneratedFiles\Win32\Debug\moc_Qt_About.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -952,7 +952,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -969,10 +969,10 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\Win32\Debug\moc_Qt_About.cpp" + RelativePath="..\src\GeneratedFiles\x64\Release\moc_Qt_About.cpp" > <FileConfiguration - Name="Debug|x64" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -980,7 +980,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -988,7 +988,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -997,10 +997,10 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\Win32\Release\moc_Qt_MainForm.cpp" + RelativePath="..\src\GeneratedFiles\Win32\Debug\moc_Qt_MainForm.cpp" > <FileConfiguration - Name="Debug|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1008,7 +1008,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1025,10 +1025,10 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\Win32\Debug\moc_Qt_MainForm.cpp" + RelativePath="..\src\GeneratedFiles\x64\Release\moc_Qt_MainForm.cpp" > <FileConfiguration - Name="Debug|x64" + Name="Debug|Win32" ExcludedFromBuild="true" > <Tool @@ -1036,7 +1036,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1044,7 +1044,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1053,7 +1053,7 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\x64\Release\moc_Qt_MainForm.cpp" + RelativePath="..\src\GeneratedFiles\x64\Debug\moc_Qt_MainForm.cpp" > <FileConfiguration Name="Debug|Win32" @@ -1064,7 +1064,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|Win32" ExcludedFromBuild="true" > <Tool @@ -1072,7 +1072,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Release|x64" ExcludedFromBuild="true" > <Tool @@ -1081,7 +1081,7 @@ </FileConfiguration> </File> <File - RelativePath="..\src\GeneratedFiles\x64\Debug\moc_Qt_MainForm.cpp" + RelativePath="..\src\GeneratedFiles\Win32\Release\moc_Qt_MainForm.cpp" > <FileConfiguration Name="Debug|Win32" @@ -1092,7 +1092,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|x64" ExcludedFromBuild="true" > <Tool @@ -1240,8 +1240,36 @@ </Files> <Globals> <Global + Name="MocDir" + Value=".\GeneratedFiles\$(ConfigurationName)" + /> + <Global + Name="MocOptions" + Value="" + /> + <Global + Name="QtVersion" + Value="$(DefaultQtVersion)" + /> + <Global + Name="QtVersion Win32" + Value="$(DefaultQtVersion)" + /> + <Global + Name="QtVersion x64" + Value="$(DefaultQtVersion)" + /> + <Global + Name="RccDir" + Value=".\GeneratedFiles" + /> + <Global Name="RESOURCE_FILE" Value="TWAINDS_GUI.rc" /> + <Global + Name="UicDir" + Value=".\GeneratedFiles" + /> </Globals> </VisualStudioProject> Modified: trunk/TWAIN-Samples/common/Common.h =================================================================== --- trunk/TWAIN-Samples/common/Common.h 2010-04-22 18:25:52 UTC (rev 88) +++ trunk/TWAIN-Samples/common/Common.h 2010-09-13 19:42:47 UTC (rev 89) @@ -152,7 +152,7 @@ #if (TWNDS_CMP == TWNDS_CMP_VISUALCPP) //#include "stdafx.h" #define DllExport __declspec( dllexport ) - #define LOADLIBRARY(lib) LoadLibrary(lib) + #define LOADLIBRARY(lib) LoadLibraryA(lib) #define LOADFUNCTION(lib, func) GetProcAddress(lib, func) #define UNLOADLIBRARY(lib) FreeLibrary(lib) #define UNLINK _unlink Modified: trunk/TWAIN-Samples/common/TwainString.cpp =================================================================== --- trunk/TWAIN-Samples/common/TwainString.cpp 2010-04-22 18:25:52 UTC (rev 88) +++ trunk/TWAIN-Samples/common/TwainString.cpp 2010-09-13 19:42:47 UTC (rev 89) @@ -327,6 +327,9 @@ switch(_unCap) { + case ICAP_AUTODISCARDBLANKPAGES: + text = "ICAP_AUTODISCARDBLANKPAGES"; + break; case CAP_CUSTOMBASE: text = "CAP_CUSTOMBASE"; break; @@ -912,15 +915,15 @@ char * buff = nextTempBuffer(); if(_unCap < CAP_CUSTOMBASE) { - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown CAP 0x:%4X", _unCap); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown CAP 0x:%04X", _unCap); } else if (_unCap > CAP_CUSTOMBASE) { - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Custom CAP 0x:%4X", _unCap); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Custom CAP 0x:%04X", _unCap); } else // == CAP_CUSTOMBASE { - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Invalid CAP 0x:%4X", _unCap); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Invalid CAP 0x:%04X", _unCap); } text = buff; } @@ -940,73 +943,73 @@ switch(_unItem) { case TWTY_INT8: - text = "INT8"; + text = "TWTY_INT8"; break; case TWTY_INT16: - text = "INT16"; + text = "TWTY_INT16"; break; case TWTY_INT32: - text = "INT32"; + text = "TWTY_INT32"; break; case TWTY_UINT8: - text = "UINT8"; + text = "TWTY_UINT8"; break; case TWTY_UINT16: - text = "UINT16"; + text = "TWTY_UINT16"; break; case TWTY_UINT32: - text = "UINT32"; + text = "TWTY_UINT32"; break; case TWTY_BOOL: - text = "BOOL"; + text = "TWTY_BOOL"; break; case TWTY_FIX32: - text = "FIX32"; + text = "TWTY_FIX32"; break; case TWTY_FRAME: - text = "FRAME"; + text = "TWTY_FRAME"; break; case TWTY_STR32: - text = "STR32"; + text = "TWTY_STR32"; break; case TWTY_STR64: - text = "STR64"; + text = "TWTY_STR64"; break; case TWTY_STR128: - text = "STR128"; + text = "TWTY_STR128"; break; case TWTY_STR255: - text = "STR255"; + text = "TWTY_STR255"; break; case TWTY_STR1024: - text = "STR1024"; + text = "TWTY_STR1024"; break; case TWTY_UNI512: - text = "UNI512"; + text = "TWTY_UNI512"; break; case TWTY_HANDLE: - text = "HANDLE"; + text = "TWTY_HANDLE"; break; default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWTY 0x:%4X", _unItem); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWTY 0x:%04X", _unItem); text = buff; } break; @@ -1293,7 +1296,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "ExtImageInfo ID 0x:%4X",InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "ExtImageInfo ID 0x:%04X",InfoID); text = buff; } break; @@ -1349,7 +1352,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWAL 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWAL 0x:%04X", InfoID); text = buff; } break; @@ -1381,7 +1384,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWAS 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWAS 0x:%04X", InfoID); text = buff; } break; @@ -1421,7 +1424,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBCOR 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBCOR 0x:%04X", InfoID); text = buff; } break; @@ -1457,7 +1460,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBD 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBD 0x:%04X", InfoID); text = buff; } break; @@ -1485,7 +1488,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBO 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBO 0x:%04X", InfoID); text = buff; } break; @@ -1513,7 +1516,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBP 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBP 0x:%04X", InfoID); text = buff; } break; @@ -1549,7 +1552,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBR 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBR 0x:%04X", InfoID); text = buff; } break; @@ -1649,7 +1652,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBT 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWBT 0x:%04X", InfoID); text = buff; } break; @@ -1721,7 +1724,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWCP 0x:%4X", _unItem); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWCP 0x:%04X", _unItem); text = buff; } break; @@ -1754,7 +1757,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWCS 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWCS 0x:%04X", InfoID); text = buff; } break; @@ -1782,7 +1785,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWCS 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWCS 0x:%04X", InfoID); text = buff; } break; @@ -1814,7 +1817,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWCB 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWCB 0x:%04X", InfoID); text = buff; } break; @@ -1906,7 +1909,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWDE 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWDE 0x:%04X", InfoID); text = buff; } break; @@ -1942,7 +1945,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWDSK 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWDSK 0x:%04X", InfoID); text = buff; } break; @@ -1974,7 +1977,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWDX 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWDX 0x:%04X", InfoID); text = buff; } break; @@ -2010,7 +2013,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFA 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFA 0x:%04X", InfoID); text = buff; } break; @@ -2038,7 +2041,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFE 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFE 0x:%04X", InfoID); text = buff; } break; @@ -2126,7 +2129,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFF 0x:%4X", _unItem); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFF 0x:%04X", _unItem); text = buff; } break; @@ -2205,7 +2208,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, ".0x:%4X", _unItem);//Unknown TWFF + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, ".0x:%04X", _unItem);//Unknown TWFF text = buff; } break; @@ -2245,7 +2248,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFL 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFL 0x:%04X", InfoID); text = buff; } break; @@ -2273,7 +2276,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFO 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFO 0x:%04X", InfoID); text = buff; } break; @@ -2361,7 +2364,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFP 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFP 0x:%04X", InfoID); text = buff; } break; @@ -2389,7 +2392,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFR 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFR 0x:%04X", InfoID); text = buff; } break; @@ -2445,7 +2448,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFT 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFT 0x:%04X", InfoID); text = buff; } break; @@ -2501,7 +2504,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFY 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWFY 0x:%04X", InfoID); text = buff; } break; @@ -2533,7 +2536,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWIC 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWIC 0x:%04X", InfoID); text = buff; } break; @@ -2573,7 +2576,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWIF 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWIF 0x:%04X", InfoID); text = buff; } break; @@ -2613,7 +2616,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWIM 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWIM 0x:%04X", InfoID); text = buff; } break; @@ -2653,7 +2656,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWJC 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWJC 0x:%04X", InfoID); text = buff; } break; @@ -2717,7 +2720,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWLP 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWLP 0x:%04X", InfoID); text = buff; } break; @@ -2765,7 +2768,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWLS 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWLS 0x:%04X", InfoID); text = buff; } break; @@ -2797,7 +2800,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWMD 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWMD 0x:%04X", InfoID); text = buff; } break; @@ -2833,7 +2836,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWNF 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWNF 0x:%04X", InfoID); text = buff; } break; @@ -2889,7 +2892,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWOR 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWOR 0x:%04X", InfoID); text = buff; } break; @@ -2929,7 +2932,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWOV 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWOV 0x:%04X", InfoID); text = buff; } break; @@ -2957,7 +2960,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPC 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPC 0x:%04X", InfoID); text = buff; } break; @@ -3001,7 +3004,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPCH 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPCH 0x:%04X", InfoID); text = buff; } break; @@ -3029,7 +3032,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPF 0x:%4X", _unItem); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPF 0x:%04X", _unItem); text = buff; } break; @@ -3062,7 +3065,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPM 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPM 0x:%04X", InfoID); text = buff; } break; @@ -3114,7 +3117,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPR 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPR 0x:%04X", InfoID); text = buff; } break; @@ -3142,7 +3145,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPS 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPS 0x:%04X", InfoID); text = buff; } break; @@ -3198,7 +3201,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPT 0x:%4X", _unItem); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWPT 0x:%04X", _unItem); text = buff; } break; @@ -3226,7 +3229,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWSG 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWSG 0x:%04X", InfoID); text = buff; } break; @@ -3462,7 +3465,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWSS 0x:%4X", InfoID); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWSS 0x:%04X", InfoID); text = buff; } break; @@ -3498,7 +3501,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWSX 0x:%4X", _unItem); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWSX 0x:%04X", _unItem); text = buff; } break; @@ -3547,7 +3550,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWUN 0x:%4X", _unItem); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unknown TWUN 0x:%04X", _unItem); text = buff; } break; @@ -3741,7 +3744,7 @@ break; default: - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unsupporetd Type 0x:%4X", ImgInfo.ItemType); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Unsupporetd Type 0x:%04X", ImgInfo.ItemType); break; } } @@ -3810,7 +3813,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "ReturnCode 0x:%4X",_unItem); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "ReturnCode 0x:%04X",_unItem); text = buff; } break; @@ -3940,7 +3943,7 @@ default: { char * buff = nextTempBuffer(); - SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "ConditionCode 0x:%4X",_unItem); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "ConditionCode 0x:%04X",_unItem); text = buff; } break; @@ -3948,3 +3951,2936 @@ return text; } + +const char* convertMessage_toString(const TW_UINT16 _unItem) +{ + const char* strRet; + switch(_unItem) + { + case MSG_GET: + strRet = "MSG_GET"; + break; + case MSG_GETCURRENT: + strRet = "MSG_GETCURRENT"; + break; + case MSG_GETDEFAULT: + strRet = "MSG_GETDEFAULT"; + break; + case MSG_GETFIRST: + strRet = "MSG_GETFIRST"; + break; + case MSG_GETNEXT: + strRet = "MSG_GETNEXT"; + break; + case MSG_SET: + strRet = "MSG_SET"; + break; + case MSG_RESET: + strRet = "MSG_RESET"; + break; + case MSG_QUERYSUPPORT: + strRet = "MSG_QUERYSUPPORT"; + break; + case MSG_GETHELP: + strRet = "MSG_GETHELP"; + break; + case MSG_GETLABEL: + strRet = "MSG_GETLABEL"; + break; + case MSG_GETLABELENUM: + strRet = "MSG_GETLABELENUM"; + break; + case MSG_XFERREADY: + strRet = "MSG_XFERREADY"; + break; + case MSG_CLOSEDSREQ: + strRet = "MSG_CLOSEDSREQ"; + break; + case MSG_CLOSEDSOK: + strRet = "MSG_CLOSEDSOK"; + break; + case MSG_DEVICEEVENT: + strRet = "MSG_DEVICEEVENT"; + break; + case MSG_OPENDSM: + strRet = "MSG_OPENDSM"; + break; + case MSG_CLOSEDSM: + strRet = "MSG_CLOSEDSM"; + break; + case MSG_OPENDS: + strRet = "MSG_OPENDS"; + break; + case MSG_CLOSEDS: + strRet = "MSG_CLOSEDS"; + break; + case MSG_USERSELECT: + strRet = "MSG_USERSELECT"; + break; + case MSG_DISABLEDS: + strRet = "MSG_DISABLEDS"; + break; + case MSG_ENABLEDS: + strRet = "MSG_ENABLEDS"; + break; + case MSG_ENABLEDSUIONLY: + strRet = "MSG_ENABLEDSUIONLY"; + break; + case MSG_PROCESSEVENT: + strRet = "MSG_PROCESSEVENT"; + break; + case MSG_ENDXFER: + strRet = "MSG_ENDXFER"; + break; + case MSG_STOPFEEDER: + strRet = "MSG_STOPFEEDER"; + break; + case MSG_CHANGEDIRECTORY: + strRet = "MSG_CHANGEDIRECTORY"; + break; + case MSG_CREATEDIRECTORY: + strRet = "MSG_CREATEDIRECTORY"; + break; + case MSG_DELETE: + strRet = "MSG_DELETE"; + break; + case MSG_FORMATMEDIA: + strRet = "MSG_FORMATMEDIA"; + break; + case MSG_GETCLOSE: + strRet = "MSG_GETCLOSE"; + break; + case MSG_GETFIRSTFILE: + strRet = "MSG_GETFIRSTFILE"; + break; + case MSG_GETINFO: + strRet = "MSG_GETINFO"; + break; + case MSG_GETNEXTFILE: + strRet = "MSG_GETNEXTFILE"; + break; + case MSG_RENAME: + strRet = "MSG_RENAME"; + break; + case MSG_COPY: + strRet = "MSG_COPY"; + break; + case MSG_AUTOMATICCAPTUREDIRECTORY: + strRet = "MSG_AUTOMATICCAPTUREDIRECTORY"; + break; + case MSG_PASSTHRU: + strRet = "MSG_PASSTHRU"; + break; + case MSG_REGISTER_CALLBACK: + strRet = "MSG_REGISTER_CALLBACK"; + break; + case MSG_RESETALL: + strRet = "MSG_RESETALL"; + break; + default: + { + char * buff = nextTempBuffer(); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "Message 0x:%04X",_unItem); + strRet = buff; + } + break; + } + return strRet; +} + +const char* convertDataGroup_toString(const TW_UINT16 _unItem) +{ + const char* strRet; + switch(_unItem) + { + case DG_CONTROL: + strRet = "DG_CONTROL"; + break; + case DG_IMAGE: + strRet = "DG_IMAGE"; + break; + case DG_AUDIO: + strRet = "DG_AUDIO"; + break; + default: + { + char * buff = nextTempBuffer(); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "DataGroup 0x:%04X",_unItem); + strRet = buff; + } + break; + } + return strRet; +} + +const char* convertDataArgType_toString(const TW_UINT16 _unItem) +{ + const char* strRet; + switch(_unItem) + { + case DAT_NULL: + strRet = "DAT_NULL"; + break; + case DAT_CAPABILITY: + strRet = "DAT_CAPABILITY"; + break; + case DAT_EVENT: + strRet = "DAT_EVENT"; + break; + case DAT_IDENTITY: + strRet = "DAT_IDENTITY"; + break; + case DAT_PARENT: + strRet = "DAT_PARENT"; + break; + case DAT_PENDINGXFERS: + strRet = "DAT_PENDINGXFERS"; + break; + case DAT_SETUPMEMXFER: + strRet = "DAT_SETUPMEMXFER"; + break; + case DAT_SETUPFILEXFER: + strRet = "DAT_SETUPFILEXFER"; + break; + case DAT_STATUS: + strRet = "DAT_STATUS"; + break; + case DAT_USERINTERFACE: + strRet = "DAT_USERINTERFACE"; + break; + case DAT_XFERGROUP: + strRet = "DAT_XFERGROUP"; + break; + case DAT_CUSTOMDSDATA: + strRet = "DAT_CUSTOMDSDATA"; + break; + case DAT_DEVICEEVENT: + strRet = "DAT_DEVICEEVENT"; + break; + case DAT_FILESYSTEM: + strRet = "DAT_FILESYSTEM"; + break; + case DAT_PASSTHRU: + strRet = "DAT_PASSTHRU"; + break; + case DAT_CALLBACK: + strRet = "DAT_CALLBACK"; + break; + case DAT_STATUSUTF8: + strRet = "DAT_STATUSUTF8"; + break; + case DAT_IMAGEINFO: + strRet = "DAT_IMAGEINFO"; + break; + case DAT_IMAGELAYOUT: + strRet = "DAT_IMAGELAYOUT"; + break; + case DAT_IMAGEMEMXFER: + strRet = "DAT_IMAGEMEMXFER"; + break; + case DAT_IMAGENATIVEXFER: + strRet = "DAT_IMAGENATIVEXFER"; + break; + case DAT_IMAGEFILEXFER: + strRet = "DAT_IMAGEFILEXFER"; + break; + case DAT_CIECOLOR: + strRet = "DAT_CIECOLOR"; + break; + case DAT_GRAYRESPONSE: + strRet = "DAT_GRAYRESPONSE"; + break; + case DAT_RGBRESPONSE: + strRet = "DAT_RGBRESPONSE"; + break; + case DAT_JPEGCOMPRESSION: + strRet = "DAT_JPEGCOMPRESSION"; + break; + case DAT_PALETTE8: + strRet = "DAT_PALETTE8"; + break; + case DAT_EXTIMAGEINFO: + strRet = "DAT_EXTIMAGEINFO"; + break; + case DAT_AUDIOFILEXFER: + strRet = "DAT_AUDIOFILEXFER"; + break; + case DAT_AUDIOINFO: + strRet = "DAT_AUDIOINFO"; + break; + case DAT_AUDIONATIVEXFER: + strRet = "DAT_AUDIONATIVEXFER"; + break; + case DAT_ICCPROFILE: + strRet = "DAT_ICCPROFILE"; + break; + case DAT_IMAGEMEMFILEXFER: + strRet = "DAT_IMAGEMEMFILEXFER"; + break; + case DAT_ENTRYPOINT: + strRet = "DAT_ENTRYPOINT"; + break; + default: + { + char * buff = nextTempBuffer(); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "DataArgumentType 0x:%04X",_unItem); + strRet = buff; + } + break; + } + return strRet; +} + +const char* convertContainerType_toString(const TW_UINT16 _unItem) +{ + const char* strRet; + switch(_unItem) + { + case TWON_ARRAY: + strRet = "TWON_ARRAY"; + break; + case TWON_ENUMERATION: + strRet = "TWON_ENUMERATION"; + break; + case TWON_ONEVALUE: + strRet = "TWON_ONEVALUE"; + break; + case TWON_RANGE: + strRet = "TWON_RANGE"; + break; + default: + { + char * buff = nextTempBuffer(); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "DataArgumentType 0x:%04X",_unItem); + strRet = buff; + } + break; + } + return strRet; +} + +const char* convertQuerySupport_toString(const TW_UINT32 _unItem) +{ + const char* strRet = NULL; + string strVal; + if(_unItem&TWQC_GET) + { + strVal+="TWQC_GET"; + } + if(_unItem&TWQC_SET) + { + if(strVal.length()) + { + strVal+="|"; + } + strVal+="TWQC_SET"; + } + if(_unItem&TWQC_GETDEFAULT) + { + if(strVal.length()) + { + strVal+="|"; + } + strVal+="TWQC_GETDEFAULT"; + } + if(_unItem&TWQC_GETCURRENT) + { + if(strVal.length()) + { + strVal+="|"; + } + strVal+="TWQC_GETCURRENT"; + } + if(_unItem&TWQC_RESET) + { + if(strVal.length()) + { + strVal+="|"; + } + strVal+="TWQC_RESET"; + } + + if(strVal.length()) + { + char * buff = nextTempBuffer(); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "%s",strVal.c_str()); + strRet = buff; + } + if(NULL==strRet) + { + strRet = "NONE"; + } + return strRet; +} + +const char* convertFileFmt_toExtension(const TW_UINT16 _unItem) +{ + const char* strRet = NULL; + switch(_unItem) + { + case TWFF_PICT: + strRet = "pct"; + break; + case TWFF_BMP: + strRet = "bmp"; + break; + case TWFF_XBM: + strRet = "xbm"; + break; + case TWFF_JFIF: + strRet = "jpg"; + break; + case TWFF_FPX: + strRet = "fpx"; + break; + case TWFF_TIFF: + case TWFF_TIFFMULTI: + strRet = "tif"; + break; + case TWFF_PNG: + strRet = "png"; + break; + case TWFF_SPIFF: + strRet = "spf"; + break; + case TWFF_EXIF: + strRet = "xif"; + break; + case TWFF_JP2: + strRet = "jp2"; + break; + case TWFF_JPX: + strRet = "jpx"; + break; + case TWFF_DEJAVU: + strRet = "djv"; + break; + case TWFF_PDF: + case TWFF_PDFA: + case TWFF_PDFA2: + strRet = "pdf"; + break; + default: + strRet = "bin"; + break; + } + return strRet; +} + +const char *CapabilityValueToString(TW_UINT16 twCapId, TW_UINT16 twItemType, const void *pValue) +{ + const char *strRet = NULL; + + //Setup various pointers for later + const TW_FRAME *pFrame = static_cast<const TW_FRAME *>(pValue); + const TW_FIX32 *pFix32 = static_cast<const TW_FIX32 *>(pValue); + const TW_UINT16 *pUint16 = static_cast<const TW_UINT16 *>(pValue); + const TW_UINT32 *pUint32 = static_cast<const TW_UINT32 *>(pValue); + const TW_INT16 *pInt16 = static_cast<const TW_INT16 *>(pValue); + const TW_BOOL *pBool = static_cast<const TW_BOOL *>(pValue); + const char *pStr = static_cast<const char *>(pValue); + + //knock-out some standards first + switch(twItemType) + { + case TWTY_INT16: + { + char * buff = nextTempBuffer(); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "%d", *pInt16); + strRet = buff; + } + break; + case TWTY_BOOL: + strRet = *pBool?"TRUE":"FALSE"; + break; + case TWTY_FIX32: + { + char * buff = nextTempBuffer(); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "%.2f", FIX32ToFloat(*pFix32)); + strRet = buff; + } + break; + case TWTY_FRAME: + { + char * buff = nextTempBuffer(); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "%.2f,%.2f,%.2f,%.2f", + FIX32ToFloat(pFrame->Left), FIX32ToFloat(pFrame->Top), FIX32ToFloat(pFrame->Right), FIX32ToFloat(pFrame->Bottom)); + strRet = buff; + } + break; + case TWTY_STR32: + case TWTY_STR64: + case TWTY_STR128: + case TWTY_STR255: + { + char * buff = nextTempBuffer(); + SSNPRINTF(buff, TEMPBUFSIZE, TEMPBUFSIZE, "%s", pStr); + strRet = buff; + } + break; + } + + if(NULL==strRet) + { + switch(twCapId) + { +#if 0 + case CAP_CUSTOMDSDATA: + case CAP_FEEDERENABLED: + case CAP_FEEDERLOADED: + case CAP_AUTOFEED: + case CAP_CLEARPAGE: + case CAP_FEEDPAGE: + case CAP_REWINDPAGE: + case CAP_INDICATORS: + case CAP_PAPERDETECTABLE: + case CAP_UICONTROLLABLE: + case CAP_DEVICEONLINE: + case CAP_AUTOSCAN: + case CAP_THUMBNAILSENABLED: + case CAP_DUPLEXENABLED: + case CAP_ENABLEDSUIONLY: + strRet = *pBool?"TRUE":"FALSE"; + break; +#endif //#if 0 + case CAP_EXTENDEDCAPS: + case CAP_SUPPORTEDCAPS: + switch(*pUint16) + { + case CAP_XFERCOUNT : + strRet = "CAP_XFERCOUNT"; + break; + case ICAP_COMPRESSION: + strRet = "ICAP_COMPRESSION"; + break; + case ICAP_PIXELTYPE: + strRet = "ICAP_PIXELTYPE"; + break; + case ICAP_UNITS: + strRet = "ICAP_UNITS"; + break; + case ICAP_XFERMECH: + strRet = "ICAP_XFERMECH"; + break; + case CAP_AUTHOR: + strRet = "CAP_AUTHOR"; + break; + case CAP_CAPTION: + strRet = "CAP_CAPTION"; + break; + case CAP_FEEDERENABLED: + strRet = "CAP_FEEDERENABLED"; + break; + case CAP_FEEDERLOADED: + strRet = "CAP_FEEDERLOADED"; + break; + case CAP_TIMEDATE: + strRet = "CAP_TIMEDATE"; + break; + case CAP_SUPPORTEDCAPS: + strRet = "CAP_SUPPORTEDCAPS"; + break; + case CAP_EXTENDEDCAPS: + strRet = "CAP_EXTENDEDCAPS"; + break; + case CAP_AUTOFEED: + strRet = "CAP_AUTOFEED"; + break; + case CAP_CLEARPAGE: + strRet = "CAP_CLEARPAGE"; + break; + case CAP_FEEDPAGE: + strRet = "CAP_FEEDPAGE"; + break; + case CAP_REWINDPAGE: + strRet = "CAP_REWINDPAGE"; + break; + case CAP_INDICATORS: + strRet = "CAP_INDICATORS"; + break; + case CAP_SUPPORTEDCAPSEXT: + strRet = "CAP_SUPPORTEDCAPSEXT"; + break; + case CAP_PAPERDETECTABLE: + strRet = "CAP_PAPERDETECTABLE"; + break; + case CAP_UICONTROLLABLE: + strRet = "CAP_UICONTROLLABLE"; + break; + case CAP_DEVICEONLINE: + strRet = "CAP_DEVICEONLINE"; + ... [truncated message content] |
From: <jim...@us...> - 2010-04-22 18:25:58
|
Revision: 88 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=88&view=rev Author: jim0watters Date: 2010-04-22 18:25:52 +0000 (Thu, 22 Apr 2010) Log Message: ----------- fix typo Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt Modified: trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt 2010-04-22 18:17:00 UTC (rev 87) +++ trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt 2010-04-22 18:25:52 UTC (rev 88) @@ -2,6 +2,7 @@ =============================== BASE Class - TwainApp + - extend capability negotiations - Add set_CapabilityArray for TW_FIX32 - Add set_CapabilityArray for TW_STRxxx @@ -25,6 +26,7 @@ MFC Sample Application + - Check CAP_ENABLEDSUIONLY before enabling the button for Showing the DS with UI Only. - Add dialogs to set Current when MSG_GET returns OneValue, Range, and Arrays @@ -41,4 +43,4 @@ - Add controls for setting and displaying DAT_FILESYSTEM -- Add control for displaying the last or curent status. +- Add control for displaying the last or current status. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2010-04-22 18:17:06
|
Revision: 87 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=87&view=rev Author: mihailm Date: 2010-04-22 18:17:00 +0000 (Thu, 22 Apr 2010) Log Message: ----------- TODO list update Modified Paths: -------------- trunk/TWAIN-Samples/Twain_DS_sample01/TODO.txt Modified: trunk/TWAIN-Samples/Twain_DS_sample01/TODO.txt =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/TODO.txt 2010-04-22 18:02:00 UTC (rev 86) +++ trunk/TWAIN-Samples/Twain_DS_sample01/TODO.txt 2010-04-22 18:17:00 UTC (rev 87) @@ -1,22 +1,6 @@ -December 10, 2007 JFL Peripheral Solutions ji...@jf... +April 22, 2010 JFL Peripheral Solutions ji...@jf... =============================== -1.5 compliancy requires adding -DG_CONTROL / DAT_USERINTERFACE / MSG_DISABLEDS (need to add UI implementation) -DG_CONTROL / DAT_USERINTERFACE / MSG_ENABLEDS (need to add UI implementation) -DG_CONTROL / DAT_EVENT / MSG_PROCESSEVENT (need to add UI hook). -DG_IMAGE / DAT_IMAGENATIVEXFER / MSG_GET (needs to implement TIFF memory transfer for Linux only) - -1.9 compliancy requires -DG_CONTROL / DAT_USERINTERFACE / MSG_ENABDSUIONLY -DG_CONTROL / DAT_CUSTOMDATA / MSG_GET -DG_CONTROL / DAT_CUSTOMDATA / MSG_SET - -Containers: - - TWTY_STRnnn not implemented. Add TWAINContainerString container class. - - - TW_RANGE not implemented. Add TW_RANGE handling - Base class: - Create a mechanism for handling multiple dependent capabilities efficiently. For example: Compression setting are based on the current selected values for @@ -34,13 +18,4 @@ For UI separation / Implementation: - - Need to be able to drop in a text UI or QT GUI with minimal effort - - It would be nice if _both_ text and QT GUI\x92s could be supported at the same time - - Verify that the Linux UI is separated just as equally - - How will the DS react when it does not have a UI present? - - Create a QT UI - - Create a text based UI - Create Windows Form UI - - There are individual function in the DS that will be called to show and destroy the UI - - Passed a handle to the CTwainDS class - - Use DisplayTWAINGUI (TW_USERINTERFACE &twUI), and DestroyTWAINGUI(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jim...@us...> - 2010-04-22 18:02:06
|
Revision: 86 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=86&view=rev Author: jim0watters Date: 2010-04-22 18:02:00 +0000 (Thu, 22 Apr 2010) Log Message: ----------- Add DAT_FILESYSTEM to ToDo Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt Modified: trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt 2010-04-20 20:21:49 UTC (rev 85) +++ trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt 2010-04-22 18:02:00 UTC (rev 86) @@ -1,4 +1,4 @@ -November 27, 2009 JFL Peripheral Solutions ji...@jf... +April 22, 2010 JFL Peripheral Solutions ji...@jf... =============================== BASE Class - TwainApp @@ -9,7 +9,7 @@ - Add set_CapabilityRange for TW_INTxxx - Add set_CapabilityRange for TW_FIX32 -- Better handling of errro, warning, and status messages with condition codes +- Better handling of error, warning, and status messages with condition codes - printError used throughout base class retrieves the last condition code and discards it - make printError virtual so derived classes can display the message plus have access to the condition code. @@ -21,7 +21,9 @@ - Support DAT_DEVICEEVENT +- Support DAT_FILESYSTEM + MFC Sample Application - Check CAP_ENABLEDSUIONLY before enabling the button for Showing the DS with UI Only. @@ -37,4 +39,6 @@ - Add controls for setting and displaying DAT_DEVICEEVENTs +- Add controls for setting and displaying DAT_FILESYSTEM + - Add control for displaying the last or curent status. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mi...@us...> - 2010-04-20 20:21:56
|
Revision: 85 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=85&view=rev Author: mihailm Date: 2010-04-20 20:21:49 +0000 (Tue, 20 Apr 2010) Log Message: ----------- MAC version - 1.9 TWAIN complient fixing bugs: 2983839, 2983837, 2983826, 2907652, 2886471, 2886462 Modified Paths: -------------- trunk/TWAIN-Samples/Twain_DS_sample01/ChangeLog.txt trunk/TWAIN-Samples/Twain_DS_sample01/README.txt trunk/TWAIN-Samples/Twain_DS_sample01/src/CScanner_FreeImage.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/CScanner_FreeImage.h trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.h trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.h trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Sample1.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/DSMInterface.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/MainForm.ui trunk/TWAIN-Samples/Twain_DS_sample01/src/QT_UI.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/QT_UI.h trunk/TWAIN-Samples/Twain_DS_sample01/src/Qt_MainForm.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINContainer.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINContainer.h trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINContainerBool.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINContainerFix32.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINContainerFix32.h trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINContainerFrame.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINContainerFrame.h trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINContainerInt.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINContainerInt.h trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINContainerString.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINContainerString.h trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAIN_UI.cpp trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAIN_UI.h trunk/TWAIN-Samples/Twain_DS_sample01/src/src.pro trunk/TWAIN-Samples/common/Common.h trunk/TWAIN-Samples/common/CommonTWAIN.h trunk/TWAIN-Samples/pub/external/include/FreeImage.h trunk/TWAIN-Samples/pub/external/include/twain.h Added Paths: ----------- trunk/TWAIN-Samples/Twain_DS_sample01/Resources/ trunk/TWAIN-Samples/Twain_DS_sample01/Resources/DSDebug.plist trunk/TWAIN-Samples/Twain_DS_sample01/Resources/Info.plist trunk/TWAIN-Samples/Twain_DS_sample01/Resources/TWAIN_logo.png trunk/TWAIN-Samples/Twain_DS_sample01/Resources/mach-o-icon.icns trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINDS_FreeImage.xcodeproj/ trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINDS_FreeImage.xcodeproj/dev.mode1v3 trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINDS_FreeImage.xcodeproj/dev.pbxuser trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINDS_FreeImage.xcodeproj/project.pbxproj trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINDS_FreeImage.xcodeproj/qt_makeqmake.mak trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINDS_FreeImage.xcodeproj/qt_preprocess.mak trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINDS_FreeImage.xcodeproj/test.mode1v3 trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINDS_FreeImage.xcodeproj/test.pbxuser trunk/TWAIN-Samples/Twain_DS_sample01/src/TWAINDS_Mac-Info.plist trunk/TWAIN-Samples/pub/external/bin/libfreeimage-3.13.1.dylib Modified: trunk/TWAIN-Samples/Twain_DS_sample01/ChangeLog.txt =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/ChangeLog.txt 2010-04-19 18:12:19 UTC (rev 84) +++ trunk/TWAIN-Samples/Twain_DS_sample01/ChangeLog.txt 2010-04-20 20:21:49 UTC (rev 85) @@ -1,3 +1,8 @@ +2009-03-20 JFL Peripheral Solutions mi...@jf... + + * MAC version + * bug fixing + 2009-12-30 JFL Peripheral Solutions mi...@jf... * Installer update - QT based Modified: trunk/TWAIN-Samples/Twain_DS_sample01/README.txt =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/README.txt 2010-04-19 18:12:19 UTC (rev 84) +++ trunk/TWAIN-Samples/Twain_DS_sample01/README.txt 2010-04-20 20:21:49 UTC (rev 85) @@ -47,10 +47,16 @@ directory. - Or use the provided Visual Studio project files. +[MAC] - *** It is TWAIN 1.9 complient +- install QT 4.6.2 SDK for MAC +- install Xcode +- build the project +- build will automatically copy DS bundle to /Library/Image Capture/TWAIN Data Sources/ - original: fr...@jf..., May 14, 2005 - updated: fr...@jf..., Nov 23, 2007 - updated: ji...@jf..., Dec 10, 2007 - updated: mi...@jf..., Dec 23, 2009 -- updated: mi...@jf..., Dec 30, 2009 \ No newline at end of file +- updated: mi...@jf..., Dec 30, 2009 +- updated: mi...@jf..., Apr 20, 2010 \ No newline at end of file Added: trunk/TWAIN-Samples/Twain_DS_sample01/Resources/DSDebug.plist =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/Resources/DSDebug.plist (rev 0) +++ trunk/TWAIN-Samples/Twain_DS_sample01/Resources/DSDebug.plist 2010-04-20 20:21:49 UTC (rev 85) @@ -0,0 +1,486 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>Attribute</key> + <dict> + <key>0x0000</key> + <string>DAT_NULL</string> + <key>0x0001</key> + <string>DAT_CAPABILITY</string> + <key>0x0002</key> + <string>DAT_EVENT</string> + <key>0x0003</key> + <string>DAT_IDENTITY</string> + <key>0x0004</key> + <string>DAT_PARENT</string> + <key>0x0005</key> + <string>DAT_PENDINGXFERS</string> + <key>0x0006</key> + <string>DAT_SETUPMEMXFER</string> + <key>0x0007</key> + <string>DAT_SETUPFILEXFER</string> + <key>0x0008</key> + <string>DAT_STATUS</string> + <key>0x0009</key> + <string>DAT_USERINTERFACE</string> + <key>0x000a</key> + <string>DAT_XFERGROUP</string> + <key>0x000b</key> + <string>DAT_TWUNKIDENTITY</string> + <key>0x000c</key> + <string>DAT_CUSTOMDSDATA</string> + <key>0x000d</key> + <string>DAT_DEVICEEVENT</string> + <key>0x000e</key> + <string>DAT_FILESYSTEM</string> + <key>0x000f</key> + <string>DAT_PASSTHRU</string> + <key>0x0010</key> + <string>DAT_CALLBACK</string> + <key>0x0101</key> + <string>DAT_IMAGEINFO</string> + <key>0x0102</key> + <string>DAT_IMAGELAYOUT</string> + <key>0x0103</key> + <string>DAT_IMAGEMEMXFER</string> + <key>0x0104</key> + <string>DAT_IMAGENATIVEXFER</string> + <key>0x0105</key> + <string>DAT_IMAGEFILEXFER</string> + <key>0x0106</key> + <string>DAT_CIECOLOR</string> + <key>0x0107</key> + <string>DAT_GRAYRESPONSE</string> + <key>0x0108</key> + <string>DAT_RGBRESPONSE</string> + <key>0x0109</key> + <string>DAT_JPEGCOMPRESSION</string> + <key>0x010a</key> + <string>DAT_PALETTE8</string> + <key>0x010b</key> + <string>DAT_EXTIMAGEINFO</string> + <key>0x0201</key> + <string>DAT_AUDIOFILEXFER</string> + <key>0x0202</key> + <string>DAT_AUDIOINFO</string> + <key>0x0203</key> + <string>DAT_AUDIONATIVEXFER</string> + <key>0x0301</key> + <string>DAT_SETUPFILEXFER2</string> + </dict> + <key>Capabilities</key> + <dict> + <key>0x0001</key> + <string>CAP_XFERCOUNT</string> + <key>0x0100</key> + <string>ICAP_COMPRESSION</string> + <key>0x0101</key> + <string>ICAP_PIXELTYPE</string> + <key>0x0102</key> + <string>ICAP_UNITS</string> + <key>0x0103</key> + <string>ICAP_XFERMECH</string> + <key>0x1000</key> + <string>CAP_AUTHOR</string> + <key>0x1001</key> + <string>CAP_CAPTION</string> + <key>0x1002</key> + <string>CAP_FEEDERENABLED</string> + <key>0x1003</key> + <string>CAP_FEEDERLOADED</string> + <key>0x1004</key> + <string>CAP_TIMEDATE</string> + <key>0x1005</key> + <string>CAP_SUPPORTEDCAPS</string> + <key>0x1006</key> + <string>CAP_EXTENDEDCAPS</string> + <key>0x1007</key> + <string>CAP_AUTOFEED</string> + <key>0x1008</key> + <string>CAP_CLEARPAGE</string> + <key>0x1009</key> + <string>CAP_FEEDPAGE</string> + <key>0x100a</key> + <string>CAP_REWINDPAGE</string> + <key>0x100b</key> + <string>CAP_INDICATORS</string> + <key>0x100c</key> + <string>CAP_SUPPORTEDCAPSEXT</string> + <key>0x100d</key> + <string>CAP_PAPERDETECTABLE</string> + <key>0x100e</key> + <string>CAP_UICONTROLLABLE</string> + <key>0x100f</key> + <string>CAP_DEVICEONLINE</string> + <key>0x1010</key> + <string>CAP_AUTOSCAN</string> + <key>0x1011</key> + <string>CAP_THUMBNAILSENABLED</string> + <key>0x1012</key> + <string>CAP_DUPLEX</string> + <key>0x1013</key> + <string>CAP_DUPLEXENABLED</string> + <key>0x1014</key> + <string>CAP_ENABLEDSUIONLY</string> + <key>0x1015</key> + <string>CAP_CUSTOMDSDATA</string> + <key>0x1016</key> + <string>CAP_ENDORSER</string> + <key>0x1017</key> + <string>CAP_JOBCONTROL</string> + <key>0x1018</key> + <string>CAP_ALARMS</string> + <key>0x1019</key> + <string>CAP_ALARMVOLUME</string> + <key>0x101a</key> + <string>CAP_AUTOMATICCAPTURE</string> + <key>0x101b</key> + <string>CAP_TIMEBEFOREFIRSTCAPTURE</string> + <key>0x101c</key> + <string>CAP_TIMEBETWEENCAPTURES</string> + <key>0x101d</key> + <string>CAP_CLEARBUFFERS</string> + <key>0x101e</key> + <string>CAP_MAXBATCHBUFFERS</string> + <key>0x101f</key> + <string>CAP_DEVICETIMEDATE</string> + <key>0x1020</key> + <string>CAP_POWERSUPPLY</string> + <key>0x1021</key> + <string>CAP_CAMERAPREVIEWUI</string> + <key>0x1022</key> + <string>CAP_DEVICEEVENT</string> + <key>0x1024</key> + <string>CAP_SERIALNUMBER</string> + <key>0x1026</key> + <string>CAP_PRINTER</string> + <key>0x1027</key> + <string>CAP_PRINTERENABLED</string> + <key>0x1028</key> + <string>CAP_PRINTERINDEX</string> + <key>0x1029</key> + <string>CAP_PRINTERMODE</string> + <key>0x102a</key> + <string>CAP_PRINTERSTRING</string> + <key>0x102b</key> + <string>CAP_PRINTERSUFFIX</string> + <key>0x102c</key> + <string>CAP_LANGUAGE</string> + <key>0x102d</key> + <string>CAP_FEEDERALIGNMENT</string> + <key>0x102e</key> + <string>CAP_FEEDERORDER</string> + <key>0x1030</key> + <string>CAP_REACQUIREALLOWED</string> + <key>0x1032</key> + <string>CAP_BATTERYMINUTES</string> + <key>0x1033</key> + <string>CAP_BATTERYPERCENTAGE</string> + <key>0x1100</key> + <string>ICAP_AUTOBRIGHT</string> + <key>0x1101</key> + <string>ICAP_BRIGHTNESS</string> + <key>0x1103</key> + <string>ICAP_CONTRAST</string> + <key>0x1104</key> + <string>ICAP_CUSTHALFTONE</string> + <key>0x1105</key> + <string>ICAP_EXPOSURETIME</string> + <key>0x1106</key> + <string>ICAP_FILTER</string> + <key>0x1107</key> + <string>ICAP_FLASHUSED</string> + <key>0x1108</key> + <string>ICAP_GAMMA</string> + <key>0x1109</key> + <string>ICAP_HALFTONES</string> + <key>0x110a</key> + <string>ICAP_HIGHLIGHT</string> + <key>0x110c</key> + <string>ICAP_IMAGEFILEFORMAT</string> + <key>0x110d</key> + <string>ICAP_LAMPSTATE</string> + <key>0x110e</key> + <string>ICAP_LIGHTSOURCE</string> + <key>0x1110</key> + <string>ICAP_ORIENTATION</string> + <key>0x1111</key> + <string>ICAP_PHYSICALWIDTH</string> + <key>0x1112</key> + <string>ICAP_PHYSICALHEIGHT</string> + <key>0x1113</key> + <string>ICAP_SHADOW</string> + <key>0x1114</key> + <string>ICAP_FRAMES</string> + <key>0x1116</key> + <string>ICAP_XNATIVERESOLUTION</string> + <key>0x1117</key> + <string>ICAP_YNATIVERESOLUTION</string> + <key>0x1118</key> + <string>ICAP_XRESOLUTION</string> + <key>0x1119</key> + <string>ICAP_YRESOLUTION</string> + <key>0x111a</key> + <string>ICAP_MAXFRAMES</string> + <key>0x111b</key> + <string>ICAP_TILES</string> + <key>0x111c</key> + <string>ICAP_BITORDER</string> + <key>0x111d</key> + <string>ICAP_CCITTKFACTOR</string> + <key>0x111e</key> + <string>ICAP_LIGHTPATH</string> + <key>0x111f</key> + <string>ICAP_PIXELFLAVOR</string> + <key>0x1120</key> + <string>ICAP_PLANARCHUNKY</string> + <key>0x1121</key> + <string>ICAP_ROTATION</string> + <key>0x1122</key> + <string>ICAP_SUPPORTEDSIZES</string> + <key>0x1123</key> + <string>ICAP_THRESHOLD</string> + <key>0x1124</key> + <string>ICAP_XSCALING</string> + <key>0x1125</key> + <string>ICAP_YSCALING</string> + <key>0x1126</key> + <string>ICAP_BITORDERCODES</string> + <key>0x1127</key> + <string>ICAP_PIXELFLAVORCODES</string> + <key>0x1128</key> + <string>ICAP_JPEGPIXELTYPE</string> + <key>0x112a</key> + <string>ICAP_TIMEFILL</string> + <key>0x112b</key> + <string>ICAP_BITDEPTH</string> + <key>0x112c</key> + <string>ICAP_BITDEPTHREDUCTION</string> + <key>0x112d</key> + <string>ICAP_UNDEFINEDIMAGESIZE</string> + <key>0x112e</key> + <string>ICAP_IMAGEDATASET</string> + <key>0x112f</key> + <string>ICAP_EXTIMAGEINFO</string> + <key>0x1130</key> + <string>ICAP_MINIMUMHEIGHT</string> + <key>0x1131</key> + <string>ICAP_MINIMUMWIDTH</string> + <key>0x1136</key> + <string>ICAP_FLIPROTATION</string> + <key>0x1137</key> + <string>ICAP_BARCODEDETECTIONENABLED</string> + <key>0x1138</key> + <string>ICAP_SUPPORTEDBARCODETYPES</string> + <key>0x1139</key> + <string>ICAP_BARCODEMAXSEARCHPRIORITIES</string> + <key>0x113a</key> + <string>ICAP_BARCODESEARCHPRIORITIES</string> + <key>0x113b</key> + <string>ICAP_BARCODESEARCHMODE</string> + <key>0x113c</key> + <string>ICAP_BARCODEMAXRETRIES</string> + <key>0x113d</key> + <string>ICAP_BARCODETIMEOUT</string> + <key>0x113e</key> + <string>ICAP_ZOOMFACTOR</string> + <key>0x113f</key> + <string>ICAP_PATCHCODEDETECTIONENABLED</string> + <key>0x1140</key> + <string>ICAP_SUPPORTEDPATCHCODETYPES</string> + <key>0x1141</key> + <string>ICAP_PATCHCODEMAXSEARCHPRIORITIES</string> + <key>0x1142</key> + <string>ICAP_PATCHCODESEARCHPRIORITIES</string> + <key>0x1143</key> + <string>ICAP_PATCHCODESEARCHMODE</string> + <key>0x1144</key> + <string>ICAP_PATCHCODEMAXRETRIES</string> + <key>0x1145</key> + <string>ICAP_PATCHCODETIMEOUT</string> + <key>0x1146</key> + <string>ICAP_FLASHUSED2</string> + <key>0x1147</key> + <string>ICAP_IMAGEFILTER</string> + <key>0x1148</key> + <string>ICAP_NOISEFILTER</string> + <key>0x1149</key> + <string>ICAP_OVERSCAN</string> + <key>0x1150</key> + <string>ICAP_AUTOMATICBORDERDETECTION</string> + <key>0x1151</key> + <string>ICAP_AUTOMATICDESKEW</string> + <key>0x1152</key> + <string>ICAP_AUTOMATICROTATE</string> + <key>0x1153</key> + <string>ICAP_JPEGQUALITY</string> + <key>0x1201</key> + <string>ACAP_AUDIOFILEFORMAT</string> + <key>0x1202</key> + <string>ACAP_XFERMECH</string> + <key>0x8000</key> + <string>CAP_CUSTOMBASE</string> + </dict> + <key>Condition</key> + <dict> + <key>0</key> + <string>TWCC_SUCCESS</string> + <key>1</key> + <string>TWCC_BUMMER</string> + <key>10</key> + <string>TWCC_BADVALUE</string> + <key>11</key> + <string>TWCC_SEQERROR</string> + <key>12</key> + <string>TWCC_BADDEST</string> + <key>13</key> + <string>TWCC_CAPUNSUPPORTED</string> + <key>14</key> + <string>TWCC_CAPBADOPERATION</string> + <key>15</key> + <string>TWCC_CAPSEQERROR</string> + <key>16</key> + <string>TWCC_DENIED</string> + <key>17</key> + <string>TWCC_FILEEXISTS</string> + <key>18</key> + <string>TWCC_FILENOTFOUND</string> + <key>19</key> + <string>TWCC_NOTEMPTY</string> + <key>2</key> + <string>TWCC_LOWMEMORY</string> + <key>20</key> + <string>TWCC_PAPERJAM</string> + <key>21</key> + <string>TWCC_PAPERDOUBLEFEED</string> + <key>22</key> + <string>TWCC_FILEWRITEERROR</string> + <key>23</key> + <string>TWCC_CHECKDEVICEONLINE</string> + <key>3</key> + <string>TWCC_NODS</string> + <key>4</key> + <string>TWCC_MAXCONNECTIONS</string> + <key>5</key> + <string>TWCC_OPERATIONERROR</string> + <key>6</key> + <string>TWCC_BADCAP</string> + <key>9</key> + <string>TWCC_BADPROTOCOL</string> + </dict> + <key>DataGroup</key> + <dict> + <key>1</key> + <string>DG_CONTROL</string> + <key>2</key> + <string>DG_IMAGE</string> + <key>4</key> + <string>DG_AUDIO</string> + </dict> + <key>Messages</key> + <dict> + <key>0x0000</key> + <string>MSG_NULL</string> + <key>0x0001</key> + <string>MSG_GET</string> + <key>0x0002</key> + <string>MSG_GETCURRENT</string> + <key>0x0003</key> + <string>MSG_GETDEFAULT</string> + <key>0x0004</key> + <string>MSG_GETFIRST</string> + <key>0x0005</key> + <string>MSG_GETNEXT</string> + <key>0x0006</key> + <string>MSG_SET</string> + <key>0x0007</key> + <string>MSG_RESET</string> + <key>0x0008</key> + <string>MSG_QUERYSUPPORT</string> + <key>0x0101</key> + <string>MSG_XFERREADY</string> + <key>0x0102</key> + <string>MSG_CLOSEDSREQ</string> + <key>0x0103</key> + <string>MSG_CLOSEDSOK</string> + <key>0x0104</key> + <string>MSG_DEVICEEVENT</string> + <key>0x0201</key> + <string>MSG_CHECKSTATUS</string> + <key>0x0301</key> + <string>MSG_OPENDSM</string> + <key>0x0302</key> + <string>MSG_CLOSEDSM</string> + <key>0x0401</key> + <string>MSG_OPENDS</string> + <key>0x0402</key> + <string>MSG_CLOSEDS</string> + <key>0x0403</key> + <string>MSG_USERSELECT</string> + <key>0x0501</key> + <string>MSG_DISABLEDS</string> + <key>0x0502</key> + <string>MSG_ENABLEDS</string> + <key>0x0503</key> + <string>MSG_ENABLEDSUIONLY</string> + <key>0x0601</key> + <string>MSG_PROCESSEVENT</string> + <key>0x0701</key> + <string>MSG_ENDXFER</string> + <key>0x0702</key> + <string>MSG_STOPFEEDER</string> + <key>0x0801</key> + <string>MSG_CHANGEDIRECTORY</string> + <key>0x0802</key> + <string>MSG_CREATEDIRECTORY</string> + <key>0x0803</key> + <string>MSG_DELETE</string> + <key>0x0804</key> + <string>MSG_FORMATMEDIA</string> + <key>0x0805</key> + <string>MSG_GETCLOSE</string> + <key>0x0806</key> + <string>MSG_GETFIRSTFILE</string> + <key>0x0807</key> + <string>MSG_GETINFO</string> + <key>0x0808</key> + <string>MSG_GETNEXTFILE</string> + <key>0x0809</key> + <string>MSG_RENAME</string> + <key>0x080a</key> + <string>MSG_COPY</string> + <key>0x080b</key> + <string>MSG_AUTOMATICCAPTUREDIRECTORY</string> + <key>0x0901</key> + <string>MSG_PASSTHRU</string> + <key>0x0902</key> + <string>MSG_REGISTER_CALLBACK</string> + <key>0x0903</key> + <string>MSG_INVOKE_CALLBACK</string> + </dict> + <key>Result</key> + <dict> + <key>0</key> + <string>TWRC_SUCCESS</string> + <key>1</key> + <string>TWRC_FAILURE</string> + <key>2</key> + <string>TWRC_CHECKSTATUS</string> + <key>3</key> + <string>TWRC_CANCEL</string> + <key>4</key> + <string>TWRC_DSEVENT</string> + <key>5</key> + <string>TWRC_NOTDSEVENT</string> + <key>6</key> + <string>TWRC_XFERDONE</string> + <key>7</key> + <string>TWRC_ENDOFLIST</string> + <key>8</key> + <string>TWRC_INFONOTSUPPORTED</string> + <key>9</key> + <string>TWRC_DATANOTAVAILABLE</string> + </dict> +</dict> +</plist> Added: trunk/TWAIN-Samples/Twain_DS_sample01/Resources/Info.plist =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/Resources/Info.plist (rev 0) +++ trunk/TWAIN-Samples/Twain_DS_sample01/Resources/Info.plist 2010-04-20 20:21:49 UTC (rev 85) @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundleIconFile</key> + <string></string> + <key>CFBundleIdentifier</key> + <string>org.twain.${PRODUCT_NAME:rfc1034Identifier}</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>BNDL</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleDisplayName</key> + <string></string> + <key>CFBundleVersion</key> + <string>1</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CSResourcesFileMapped</key> + <true/> +</dict> +</plist> Added: trunk/TWAIN-Samples/Twain_DS_sample01/Resources/TWAIN_logo.png =================================================================== (Binary files differ) Property changes on: trunk/TWAIN-Samples/Twain_DS_sample01/Resources/TWAIN_logo.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/TWAIN-Samples/Twain_DS_sample01/Resources/mach-o-icon.icns =================================================================== (Binary files differ) Property changes on: trunk/TWAIN-Samples/Twain_DS_sample01/Resources/mach-o-icon.icns ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/TWAIN-Samples/Twain_DS_sample01/src/CScanner_FreeImage.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/src/CScanner_FreeImage.cpp 2010-04-19 18:12:19 UTC (rev 84) +++ trunk/TWAIN-Samples/Twain_DS_sample01/src/CScanner_FreeImage.cpp 2010-04-20 20:21:49 UTC (rev 85) @@ -1,5 +1,5 @@ /*************************************************************************** -* Copyright \xA9 2007 TWAIN Working Group: +* Copyright � 2007 TWAIN Working Group: * Adobe Systems Incorporated, AnyDoc Software Inc., Eastman Kodak Company, * Fujitsu Computer Products of America, JFL Peripheral Solutions Inc., * Ricoh Corporation, and Xerox Corporation. @@ -48,18 +48,27 @@ #include <fcntl.h> #ifdef TWH_CMP_MSC #include <io.h> +#elif __APPLE__ +//#include <io.h> #else //#ifdef TWH_CMP_MSC #include <sys/io.h> #endif //#ifdef TWH_CMP_MSC #ifdef TWNDS_OS_LINUX -#define kTWAIN_DS_DIR "/usr/local/lib/twain/sample2" + #define kTWAIN_DS_DIR "/usr/local/lib/twain/sample2" #endif #include "DSMInterface.h" using namespace std; +#ifdef TWNDS_OS_APPLE + #include "CoreFoundation/CoreFoundation.h" + #include "CoreFoundation/CFBundle.h" + #include "CoreFoundation/CFURL.h" + #include <Carbon/Carbon.h> +#endif + /** * Environment vars to get the Xfer Count. Create this enviroment Varable on your system to simulate the * number of pages sitting in the scanner waiting to be scanned. @@ -86,15 +95,17 @@ m_nScanLine(0), m_bReadOnly(false), m_nDestBytesPerRow(0), + m_nRowOffset(0), m_nDocCount(0), m_nSourceWidth(0), m_nSourceHeight(0) { memset(m_szSourceImagePath, 0, PATH_MAX); - char szTWAIN_DS_DIR[PATH_MAX]; + #ifdef TWH_CMP_MSC + char szTWAIN_DS_DIR[PATH_MAX]; GetModuleFileName(g_hinstance, szTWAIN_DS_DIR, PATH_MAX); // strip filename from path size_t x = strlen(szTWAIN_DS_DIR); @@ -107,12 +118,28 @@ } --x; } + SSNPRINTF(m_szSourceImagePath, sizeof(m_szSourceImagePath), PATH_MAX, "%s%cTWAIN_logo.png", szTWAIN_DS_DIR, PATH_SEPERATOR); +#elif defined(TWNDS_OS_APPLE) + CFURLRef fileURL = NULL; + CFBundleRef bundle; + + // find the sample.pict in our bundle... + bundle = CFBundleGetBundleWithIdentifier ( CFSTR( "com.yourcompany.TWAINDS-Mac" ) ); + fileURL = CFBundleCopyResourceURL(bundle, CFSTR("TWAIN_logo"), CFSTR("png"), NULL); + if (fileURL) + { + FSRef fsRef; + if ( CFURLGetFSRef(fileURL, &fsRef) ) + { + FSRefMakePath(&fsRef, (UInt8*)m_szSourceImagePath, PATH_MAX); + } + CFRelease(fileURL); + } #else - // In non-windows, kTWAIN_DS_DIR is set on the compiler command line - strncpy(szTWAIN_DS_DIR, kTWAIN_DS_DIR, PATH_MAX); + // In Linux, kTWAIN_DS_DIR is set on the compiler command line + SSNPRINTF(m_szSourceImagePath, sizeof(m_szSourceImagePath), PATH_MAX, "%s%cTWAIN_logo.png", kTWAIN_DS_DIR, PATH_SEPERATOR); #endif - SSNPRINTF(m_szSourceImagePath, sizeof(m_szSourceImagePath), PATH_MAX, "%s%cTWAIN_logo.png", szTWAIN_DS_DIR, PATH_SEPERATOR); // set default caps resetScanner(); @@ -143,13 +170,16 @@ m_nScanLine = 0; m_nDestBytesPerRow = 0; + m_nRowOffset = 0; m_nDocCount = m_nMaxDocCount = getDocumentCount();// Reloaded the scanner with paper m_nPixelType = TWPT_RGB; m_nPaperSource = SFI_PAPERSOURCE_ADF; m_bDuplex = false; - m_nWidth = 0; - m_nHeight = 0; + m_nRight = 0; + m_nBottom = 0; + m_nLeft = 0; + m_nTop = 0; m_fXResolution = 200.0; m_fYResolution = 200.0; @@ -174,8 +204,10 @@ m_nPaperSource = settings.m_nPaperSource; m_bDuplex = settings.m_bDuplex; m_nPixelType = settings.m_nPixelType; - m_nWidth = settings.m_nWidth; - m_nHeight = settings.m_nHeight; + m_nRight = settings.m_nRight; + m_nBottom = settings.m_nBottom; + m_nLeft = settings.m_nLeft; + m_nTop = settings.m_nTop; m_fXResolution = settings.m_fXResolution; m_fYResolution = settings.m_fYResolution; m_fGamma = settings.m_fGamma; @@ -278,10 +310,12 @@ m_pDIB = pDib; } - if(m_nWidth <= 0 || m_nHeight <= 0) + if(m_nRight <= 0 || m_nBottom <= 0) { - m_nWidth = m_nSourceWidth = FreeImage_GetWidth(m_pDIB); - m_nHeight = m_nSourceHeight = FreeImage_GetHeight(m_pDIB); + m_nRight = m_nSourceWidth = FreeImage_GetWidth(m_pDIB); + m_nBottom = m_nSourceHeight = FreeImage_GetHeight(m_pDIB); + m_nLeft = 0; + m_nTop = 0; } else { @@ -329,21 +363,24 @@ switch(m_nPixelType) { case TWPT_BW: - m_nDestBytesPerRow = BYTES_PERLINE(m_nWidth, 1); + m_nDestBytesPerRow = BYTES_PERLINE(m_nRight-m_nLeft, 1); + m_nRowOffset = BYTES_PERLINE(m_nLeft, 1); break; case TWPT_GRAY: - m_nDestBytesPerRow = BYTES_PERLINE(m_nWidth, 8); + m_nDestBytesPerRow = BYTES_PERLINE(m_nRight-m_nLeft, 8); + m_nRowOffset = BYTES_PERLINE(m_nLeft, 8); break; case TWPT_RGB: - m_nDestBytesPerRow = BYTES_PERLINE(m_nWidth, 24); + m_nDestBytesPerRow = BYTES_PERLINE(m_nRight-m_nLeft, 24); + m_nRowOffset = BYTES_PERLINE(m_nLeft, 24); break; } // setup some convenience vars because they are used during // every strip request - m_nScanLine = 0; + m_nScanLine = m_nTop; return true; } @@ -367,7 +404,7 @@ WORD nRow = 0; WORD nMaxRows = (WORD)(dwRead / m_nDestBytesPerRow); //number of rows to be transfered during this call (function of buffer size and line size) - if( m_nScanLine < MIN(m_nSourceHeight, m_nHeight) ) + if( m_nScanLine < MIN(m_nSourceHeight, m_nBottom) ) { //fill the buffer line by line to take care of alignment differences for(nRow = 0; nRow<nMaxRows; nRow++) @@ -375,7 +412,7 @@ //get the next scan line position and copy it pBits = (BYTE*)FreeImage_GetScanLine(m_pDIB, m_nSourceHeight-m_nScanLine-1); - memcpy( pTransferBuffer, pBits, MIN(m_nDestBytesPerRow, FreeImage_GetLine(m_pDIB)) ); + memcpy( pTransferBuffer, pBits+m_nRowOffset, MIN(m_nDestBytesPerRow, FreeImage_GetLine(m_pDIB)) ); // Check to see if the result image width is wider than what we have. // If it is wider fill it in with 0es @@ -395,7 +432,7 @@ // check for finished scan if( m_nScanLine >= m_nSourceHeight || - m_nScanLine >= m_nHeight ) + m_nScanLine >= m_nBottom ) { //we are done early break; @@ -405,7 +442,7 @@ // Check to see if the result image length is longer than we have. // If it is longer fill it in with 0es - if(m_nHeight > m_nScanLine ) + if(m_nBottom > m_nScanLine ) { nMaxRows = (WORD)((dwRead-dwReceived) / m_nDestBytesPerRow); memset( pTransferBuffer, 0, m_nDestBytesPerRow * nMaxRows ); Modified: trunk/TWAIN-Samples/Twain_DS_sample01/src/CScanner_FreeImage.h =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/src/CScanner_FreeImage.h 2010-04-19 18:12:19 UTC (rev 84) +++ trunk/TWAIN-Samples/Twain_DS_sample01/src/CScanner_FreeImage.h 2010-04-20 20:21:49 UTC (rev 85) @@ -110,8 +110,10 @@ WORD m_nPaperSource; /**< the current paper source ADF or Flatbed*/ bool m_bDuplex; /**< True to use duplex false for simplex, ignored if flatbed*/ WORD m_nPixelType; /**< type of pixels to transfer image as */ - int m_nWidth; /**< frame left edge */ - int m_nHeight; /**< frame top edge */ + int m_nRight; /**< frame right edge */ + int m_nBottom; /**< frame bottom edge */ + int m_nLeft; /**< frame left edge */ + int m_nTop; /**< frame top edge */ float m_fXResolution; /**< horizontal resolution */ float m_fYResolution; /**< vertical resolution */ float m_fGamma; /**< Gamma */ @@ -226,8 +228,9 @@ WORD m_nScanLine; /**< Current scan line of image in FreeImage */ bool m_bReadOnly; /**< current mode */ DWORD m_nDestBytesPerRow; /**< number of bytes needed for a row of data */ + DWORD m_nRowOffset; /**< offset of the first byte on every row*/ short m_nDocCount; /**< number of documents waiting to transfer */ - short m_nMaxDocCount; /**< Max number of documents waiting to transfer */ + short m_nMaxDocCount; /**< Max number of documents waiting to transfer */ WORD m_nSourceWidth; /**< Width of image in FreeImage */ WORD m_nSourceHeight; /**< Height of image in FreeImage */ char m_szSourceImagePath[PATH_MAX]; /**< image used with FreeImage */ Modified: trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.cpp 2010-04-19 18:12:19 UTC (rev 84) +++ trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.cpp 2010-04-20 20:21:49 UTC (rev 85) @@ -42,6 +42,10 @@ #include <io.h> #endif +#ifdef TWNDS_OS_APPLE + #import <QuickTime/QuickTime.h> // for GraphicsImporter +#endif + #include <fcntl.h> #include <sys/stat.h> #include <sstream> @@ -172,7 +176,12 @@ break; case DAT_IMAGENATIVEXFER: - twrc = dat_imagenativexfer(_MSG, (TW_MEMREF*)_pData); + if(0 == _pData) + { + setConditionCode(TWCC_BADVALUE); + return TWRC_FAILURE; + } + twrc = dat_imagenativexfer(_MSG, *((TW_HANDLE*)_pData)); break; case DAT_IMAGEFILEXFER: @@ -449,14 +458,14 @@ ////////////////////////////////////////////////////////////////////////////// TW_INT16 CTWAINDS_Base::dat_imagenativexfer(TW_UINT16 _MSG, - TW_MEMREF* _pData) + TW_HANDLE& _hData) { TW_INT16 twrc = TWRC_SUCCESS; switch(_MSG) { case MSG_GET: - twrc = transferNativeImage(_pData); + twrc = transferNativeImage(_hData); break; default: @@ -732,6 +741,17 @@ m_CurrentState = dsState_XferReady; getImageInfo(&m_ImageInfo); +#ifdef TWNDS_OS_APPLE + TW_CALLBACK callback = {}; + callback.Message = MSG_XFERREADY; + + bRC = TWRC_SUCCESS==_DSM_Entry(getIdentity(), + (pTW_IDENTITY)NULL, + (TW_UINT32)DG_CONTROL, + (TW_UINT16)DAT_CALLBACK, + (TW_UINT16)MSG_INVOKE_CALLBACK, + (TW_MEMREF) &callback); +#else // Tell the DSM that we are ready to send images if(TWRC_SUCCESS==_DSM_Entry(getIdentity(), getApp(), @@ -742,6 +762,7 @@ { bRC = true; } +#endif return bRC; } @@ -755,7 +776,17 @@ setConditionCode(TWCC_SEQERROR); return bRC; } - +#ifdef TWNDS_OS_APPLE + TW_CALLBACK callback = {}; + callback.Message = MSG_CLOSEDSREQ; + + bRC = TWRC_SUCCESS==_DSM_Entry(getIdentity(), + (pTW_IDENTITY)NULL, + (TW_UINT32)DG_CONTROL, + (TW_UINT16)DAT_CALLBACK, + (TW_UINT16)MSG_INVOKE_CALLBACK, + (TW_MEMREF) &callback); +#else // Tell the DSM that DS request to close or disable our user interface // most likly user clicks on the \x93CLOSE\x94 button on GUI if(TWRC_SUCCESS==_DSM_Entry(getIdentity(), @@ -767,6 +798,7 @@ { bRC = true; } +#endif return bRC; } @@ -781,7 +813,18 @@ return bRC; } - // Tell the DSM that we are ready to send images +#ifdef TWNDS_OS_APPLE + TW_CALLBACK callback = {}; + callback.Message = MSG_CLOSEDSOK; + + bRC = TWRC_SUCCESS==_DSM_Entry(getIdentity(), + (pTW_IDENTITY)NULL, + (TW_UINT32)DG_CONTROL, + (TW_UINT16)DAT_CALLBACK, + (TW_UINT16)MSG_INVOKE_CALLBACK, + (TW_MEMREF) &callback); +#else + // Tell the DSM that we are ready to send images // most likly user clicks on the \x93OK\x94 button on GUI if(TWRC_SUCCESS==_DSM_Entry(getIdentity(), getApp(), @@ -792,6 +835,7 @@ { bRC = true; } +#endif return bRC; } @@ -890,8 +934,8 @@ break; } - _pCap->hContainer = _pContainer->GetContainer(_MSG); - twrc = TWRC_SUCCESS; + _pCap->hContainer = _pContainer->GetContainer(_MSG); + twrc = updatePostContainer(_pCap); break; case MSG_SET: @@ -907,7 +951,11 @@ { break; } - + twrc = updatePreContainer(_pCap); + if(twrc!=TWRC_SUCCESS) + { + break; + } BYTE * pContainer = (BYTE*)_DSM_LockMemory(_pCap->hContainer); if(pContainer==0) { @@ -1004,8 +1052,14 @@ if(pCap && pCap->ItemType == TWTY_FRAME) { InternalFrame frame(pCap->Item, unit, Xres, Yres); - if(ConstrainFrameToScanner(frame)) + bool bConstrained; + if(!ConstrainFrameToScanner(frame,bConstrained)) { + setConditionCode(TWCC_BADVALUE); + twrc = TWRC_FAILURE; + } + else if(bConstrained) + { pCap->Item = frame.AsTW_FRAME(unit, Xres, Yres); twrc = TWRC_CHECKSTATUS; } @@ -1035,8 +1089,14 @@ for(TW_UINT32 x = 0; x < pCap->NumItems; ++x) { InternalFrame frame(pCap->ItemList[x], unit, Xres, Yres); - if(ConstrainFrameToScanner(frame)) + bool bConstrained; + if(!ConstrainFrameToScanner(frame,bConstrained)) { + setConditionCode(TWCC_BADVALUE); + twrc = TWRC_FAILURE; + } + else if(bConstrained) + { pCap->ItemList[x] = frame.AsTW_FRAME(unit, Xres, Yres); twrc = TWRC_CHECKSTATUS; } @@ -1047,12 +1107,12 @@ } break; } - case CAP_FEEDERENABLED: + case ICAP_MAXFRAMES: if(TWON_ONEVALUE == _ConType) { TW_ONEVALUE *pCap = (TW_ONEVALUE*)_pContainer; - if(!pCap || pCap->ItemType != TWTY_BOOL)// || pCap->Item==0) + if(!pCap || pCap->ItemType != TWTY_UINT16 || pCap->Item!=1) { twrc = TWRC_FAILURE; } @@ -1062,30 +1122,184 @@ setConditionCode(TWCC_CAPBADOPERATION); twrc = TWRC_FAILURE; } - break; - case ICAP_MAXFRAMES: - if(TWON_ONEVALUE == _ConType) + break; + default: + break; + } + + return twrc; +} +////////////////////////////////////////////////////////////////////////////// +TW_INT16 CTWAINDS_Base::updatePreContainer(pTW_CAPABILITY _pCap) +{ + TW_INT16 twrc = TWRC_SUCCESS; + BYTE * pContainer = (BYTE*)_DSM_LockMemory(_pCap->hContainer); + if(pContainer==0) + { + setConditionCode(TWCC_LOWMEMORY); + return TWRC_FAILURE; + } + + switch(_pCap->Cap) + { + case ICAP_XRESOLUTION: + case ICAP_YRESOLUTION: + { + int nUnit = TWUN_INCHES; + CTWAINContainerInt *pnCap = 0; + if( 0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(findCapability(ICAP_UNITS))) + || false == pnCap->GetCurrent(nUnit)) { - TW_ONEVALUE *pCap = (TW_ONEVALUE*)_pContainer; - - if(!pCap || pCap->ItemType != TWTY_UINT16 || pCap->Item!=1) + setConditionCode(TWCC_OPERATIONERROR); + twrc = TWRC_FAILURE; + } + else + { + if(nUnit==TWUN_PIXELS) { + setConditionCode(TWCC_CAPSEQERROR); twrc = TWRC_FAILURE; } + else + { + if(TWON_ONEVALUE == _pCap->ConType) + { + pTW_ONEVALUE_FIX32 pCap = (pTW_ONEVALUE_FIX32)pContainer; + + if(pCap==0 || pCap->ItemType != TWTY_FIX32) + { + setConditionCode(TWCC_BADVALUE); + twrc = TWRC_FAILURE; + } + else + { + pCap->Item = ConvertUnits(pCap->Item,TWUN_INCHES,nUnit,1.0); + } + } + else if(TWON_ENUMERATION == _pCap->ConType) + { + pTW_ENUMERATION_FIX32 pCap = (pTW_ENUMERATION_FIX32)pContainer; + if(pCap==0 || pCap->ItemType != TWTY_FIX32) + { + setConditionCode(TWCC_BADVALUE); + twrc = TWRC_FAILURE; + } + else + { + for(TW_UINT32 x = 0; x < pCap->NumItems; ++x) + { + pCap->ItemList[x] = ConvertUnits(pCap->ItemList[x],TWUN_INCHES,nUnit,1.0); + } + } + } + } } - else + } + break; + } + _DSM_UnlockMemory(_pCap->hContainer); + + return twrc; +} +////////////////////////////////////////////////////////////////////////////// +TW_INT16 CTWAINDS_Base::updatePostContainer(pTW_CAPABILITY _pCap) +{ + TW_INT16 twrc = TWRC_SUCCESS; + BYTE * pContainer = (BYTE*)_DSM_LockMemory(_pCap->hContainer); + if(pContainer==0) + { + setConditionCode(TWCC_LOWMEMORY); + return TWRC_FAILURE; + } + + switch(_pCap->Cap) + { + case ICAP_XRESOLUTION: + case ICAP_YRESOLUTION: + { + int nUnit = TWUN_PIXELS; + float Xres = 100; + float Yres = 100; + twrc = getCurrentUnits(nUnit, Xres, Yres); + if(_pCap->Cap==ICAP_YRESOLUTION) { - setConditionCode(TWCC_CAPBADOPERATION); - twrc = TWRC_FAILURE; + Xres = Yres; } - break; - default: + if(twrc==TWRC_SUCCESS) + { + if(TWON_ONEVALUE == _pCap->ConType) + { + pTW_ONEVALUE_FIX32 pCap = (pTW_ONEVALUE_FIX32)pContainer; + + if(pCap==0 || pCap->ItemType != TWTY_FIX32) + { + setConditionCode(TWCC_BADVALUE); + twrc = TWRC_FAILURE; + } + else + { + pCap->Item = ConvertUnits(pCap->Item,nUnit,TWUN_INCHES,Xres); + } + } + else if(TWON_ENUMERATION == _pCap->ConType) + { + pTW_ENUMERATION_FIX32 pCap = (pTW_ENUMERATION_FIX32)pContainer; + if(pCap==0 || pCap->ItemType != TWTY_FIX32) + { + setConditionCode(TWCC_BADVALUE); + twrc = TWRC_FAILURE; + } + else + { + for(TW_UINT32 x = 0; x < pCap->NumItems; ++x) + { + pCap->ItemList[x] = ConvertUnits(pCap->ItemList[x],nUnit,TWUN_INCHES,Xres); + } + } + } + } + } break; + case ICAP_PHYSICALHEIGHT: + case ICAP_PHYSICALWIDTH: + { + int nUnit = TWUN_PIXELS; + float Xres = 100; + float Yres = 100; + twrc = getCurrentUnits(nUnit, Xres, Yres); + if(_pCap->Cap==ICAP_PHYSICALHEIGHT) + { + Xres = Yres; + } + if(twrc==TWRC_SUCCESS) + { + if(TWON_ONEVALUE == _pCap->ConType) + { + pTW_ONEVALUE_FIX32 pCap = (pTW_ONEVALUE_FIX32)pContainer; + + if(pCap==0 || pCap->ItemType != TWTY_FIX32) + { + setConditionCode(TWCC_BADVALUE); + twrc = TWRC_FAILURE; + } + else + { + pCap->Item = ConvertUnits(pCap->Item,TWUN_INCHES,nUnit,Xres); + } + } + else + { + setConditionCode(TWCC_OPERATIONERROR); + twrc = TWRC_FAILURE; + } + } + } + break; } + _DSM_UnlockMemory(_pCap->hContainer); return twrc; } - ////////////////////////////////////////////////////////////////////////////// TW_INT16 CTWAINDS_Base::updatePreDependencies(CTWAINContainer* _pContainer) { @@ -1149,7 +1363,8 @@ int ss; pDepCapSS->GetCurrent(ss); InternalFrame frame(ss); - ConstrainFrameToScanner(frame); + bool bConstrained; + ConstrainFrameToScanner(frame,bConstrained); pDepCapFrames->Set(frame); } } @@ -1242,9 +1457,9 @@ } ////////////////////////////////////////////////////////////////////////////// -bool CTWAINDS_Base::ConstrainFrameToScanner(InternalFrame& _frame) +bool CTWAINDS_Base::ConstrainFrameToScanner(InternalFrame& _frame, bool &bConstrained) { - bool bChanged = false; + bConstrained = false; int nMaxHValue = 0x7FFFFFFF; //max frame size fit in InternalFrame int nMinHValue = 0; int nMaxWValue = 0x7FFFFFFF; //max frame size fit in InternalFrame @@ -1289,53 +1504,63 @@ // Constrain the width if(_frame.nLeft < 0) { + /* _frame.nLeft = 0; - bChanged = true; + bConstrained = true; + */ + return false; } if(_frame.nRight <= 0 || _frame.nRight > nMaxWValue) { + /* _frame.nRight = nMaxWValue; - bChanged = true; + bConstrained = true; + */ + return false; } if(_frame.nLeft >= _frame.nRight) { _frame.nLeft = 0; _frame.nRight = nMaxWValue; - bChanged = true; + bConstrained = true; } if((_frame.nRight-_frame.nLeft) < nMinWValue) { _frame.nLeft = max( 0, _frame.nLeft - (nMinWValue - (_frame.nRight-_frame.nLeft)) ); _frame.nRight = _frame.nLeft + max(nMinWValue, _frame.nRight-_frame.nLeft); - bChanged = true; + bConstrained = true; } // Constrain the height if(_frame.nTop < 0) { - _frame.nTop = 0; - bChanged = true; + /*_frame.nTop = 0; + bConstrained = true;*/ + return false; } if(_frame.nBottom <= 0 || _frame.nBottom>nMaxHValue) { + /* _frame.nBottom = nMaxHValue; - bChanged = true; + bConstrained = true; + */ + return false; } if(_frame.nTop >= _frame.nBottom) { _frame.nTop = 0; _frame.nBottom = nMaxHValue; - bChanged = true; + bConstrained = true; } if(( _frame.nBottom-_frame.nTop)< nMinHValue) { _frame.nTop = max( 0, _frame.nTop - (nMinHValue - (_frame.nBottom-_frame.nTop)) ); _frame.nBottom = _frame.nTop + max(nMinHValue, _frame.nBottom-_frame.nTop); - bChanged = true; + bConstrained = true; } - return bChanged; + return true; } ////////////////////////////////////////////////////////////////////////////// @@ -1656,8 +1881,8 @@ return TWRC_FAILURE; } - TW_MEMREF hDIB = 0; - if( TWRC_SUCCESS != getDIBImage(&hDIB) ) + TW_HANDLE hDIB = 0; + if( TWRC_SUCCESS != getDIBImage(hDIB) ) { setConditionCode(TWCC_LOWMEMORY); return TWRC_FAILURE; @@ -1692,16 +1917,16 @@ } ////////////////////////////////////////////////////////////////////////////// -TW_INT16 CTWAINDS_Base::getDIBImage(TW_MEMREF* _pImage) +TW_INT16 CTWAINDS_Base::getDIBImage(TW_HANDLE& _hImage) { - if(0 == m_hImageData || 0 == _pImage ) + if( 0 == m_hImageData ) { setConditionCode(TWCC_BADVALUE); return TWRC_FAILURE; } TW_INT16 twrc = TWRC_FAILURE; - *_pImage = 0; + _hImage = 0; TW_HANDLE hDIB = NULL; //create a handle to a bitmap, which we'll allocate BYTE *pSourceBuff = NULL; @@ -1833,14 +2058,14 @@ } twrc = TWRC_SUCCESS; - *_pImage = hDIB; + _hImage = hDIB; } // try catch (WORD wConditionCodeError) { setConditionCode(wConditionCodeError); // in the future we will have logging implemented and the wConditionCodeError will be recorded - *_pImage = 0; + _hImage = 0; } // cleanup @@ -1862,17 +2087,75 @@ return twrc; } +#ifdef TWNDS_OS_APPLE +////////////////////////////////////////////////////////////////////////////// +TW_INT16 CTWAINDS_Base::getPICTImage(TW_HANDLE &_hPICTImage) +{ + TW_INT16 twrc = TWRC_FAILURE; + if( 0 == m_hImageData ) + { + setConditionCode(TWCC_BADVALUE); + return TWRC_FAILURE; + } + + TW_HANDLE _hTIFFdata; + twrc = getTIFFImage(_hTIFFdata); + if(twrc!=TWRC_SUCCESS) + { + return twrc; + } + + twrc = TWRC_FAILURE; + setConditionCode(TWCC_BUMMER); + + Handle dataRef = nil; + OSErr err = PtrToHand( &_hTIFFdata, &dataRef, sizeof(Handle)); + if(err) + { + return twrc; + } + + GraphicsImportComponent gi; + GetGraphicsImporterForDataRef(dataRef, HandleDataHandlerSubType, &gi); + if(gi) + { + PicHandle ph; + + if (GraphicsImportGetAsPicture(gi, &ph) == noErr) + { + // Whew! We now have a PicHandle. Unfortunately, the caller + // expects a normal Handle. Copy the data and kill the picture. + UInt32 pictSize = GetHandleSize((Handle) ph); + Handle dataHandle = NewHandle(pictSize); + + if (dataHandle && MemError() == noErr) + { + BlockMoveData(*ph, *dataHandle, pictSize); + _hPICTImage = dataHandle; + twrc = TWRC_SUCCESS; + setConditionCode(TWCC_SUCCESS); + } + KillPicture(ph); + } + + CloseComponent(gi); + } + _DSM_Free(_hTIFFdata); + return twrc; +} +#endif + ////////////////////////////////////////////////////////////////////////////// -TW_INT16 CTWAINDS_Base::getTIFFImage(TW_MEMREF* _pTIFFImage) +TW_INT16 CTWAINDS_Base::getTIFFImage(TW_HANDLE &_hTIFFImage) { - if(0 == m_hImageData || 0 == _pTIFFImage ) + if( 0 == m_hImageData ) { setConditionCode(TWCC_BADVALUE); return TWRC_FAILURE; } - *_pTIFFImage = 0; + _hTIFFImage = 0; BYTE *pImage = (BYTE *)_DSM_LockMemory(m_hImageData); if(pImage == NULL) { @@ -1962,10 +2245,11 @@ delete pTifImg; _DSM_UnlockMemory(m_hImageData); _DSM_UnlockMemory(hTiff); - *_pTIFFImage = hTiff; + _hTIFFImage = hTiff; return TWRC_SUCCESS; } + ////////////////////////////////////////////////////////////////////////////// TW_INT16 CTWAINDS_Base::transferMemoryBuffers(pTW_IMAGEMEMXFER _ImageXfer) { @@ -2013,7 +2297,7 @@ } else if(TWMF_HANDLE & _ImageXfer->Memory.Flags) { - pDestBuff = (BYTE*)_DSM_LockMemory(_ImageXfer->Memory.TheMem); + pDestBuff = (BYTE*)_DSM_LockMemory((TW_HANDLE)(_ImageXfer->Memory.TheMem)); } if(pDestBuff == NULL) { @@ -2023,7 +2307,7 @@ m_CurrentState = dsState_Xferring; - DWORD nRows = min(_ImageXfer->Memory.Length / nDestBytesPerRow, m_ImageInfo.ImageLength-m_nDestScanLine); + DWORD nRows = MIN(_ImageXfer->Memory.Length / nDestBytesPerRow, m_ImageInfo.ImageLength-m_nDestScanLine); bool bSwitch = true; CTWAINContainerInt *pnCap = dynamic_cast<CTWAINContainerInt*>(findCapability(ICAP_BITORDER)); @@ -2095,14 +2379,14 @@ if(TWMF_HANDLE & _ImageXfer->Memory.Flags) { - _DSM_UnlockMemory(_ImageXfer->Memory.TheMem); + _DSM_UnlockMemory((TW_HANDLE)(_ImageXfer->Memory.TheMem)); } return twrc; } ////////////////////////////////////////////////////////////////////////////// -TW_INT16 CTWAINDS_Base::transferNativeImage(TW_MEMREF* _pData) +TW_INT16 CTWAINDS_Base::transferNativeImage(TW_HANDLE &_hData) { TW_INT16 twrc = TWRC_FAILURE; @@ -2111,12 +2395,6 @@ setConditionCode(TWCC_SEQERROR); return TWRC_FAILURE; } - - if(0 == _pData) - { - setConditionCode(TWCC_BADVALUE); - return TWRC_FAILURE; - } // Get the image that should be waiting for us. twrc = transfer(); @@ -2124,16 +2402,20 @@ { // Native is basicaly an image file transfered by memory // Windows is a Device independent BMP - // Mac is a PICT - !!!! + // Mac has changed from a PICT to a TIFF // Linux is a TIFF -#ifdef TWNDS_OS_LINUX - twrc = getTIFFImage(_pData); +#if defined(TWNDS_OS_LINUX) + twrc = getTIFFImage(_hData); +#elif defined(TWNDS_OS_APPLE) + twrc = getPICTImage(_hData); #else - twrc = getDIBImage(_pData); + twrc = getDIBImage(_hData); #endif if( TWRC_SUCCESS == twrc ) { - twrc = TWRC_XFERDONE; +#if !defined(TWNDS_OS_APPLE) + twrc = TWRC_XFERDONE; +#endif m_CurrentState = dsState_Xferring; } } Modified: trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.h =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.h 2010-04-19 18:12:19 UTC (rev 84) +++ trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_Base.h 2010-04-20 20:21:49 UTC (rev 85) @@ -166,7 +166,7 @@ * @return a valid TWRC_xxxx return code. */ virtual TW_INT16 dat_imagenativexfer(TW_UINT16 _MSG, - TW_MEMREF* _pData); + TW_HANDLE& _pData); /** * handles DAT_IMAGEFILEXFER requests. @@ -371,10 +371,10 @@ /** * Start the transfer of image data natively. * Called when a DG_IMAGE / DAT_IMAGENATIVEXFER / MSG_GET op is sent. - * @param[out] _pData a pointer to store the image locaton. + * @param[out] _hData a handle to store the image locaton. * @return a valid TWRC_xxxx return code. */ - virtual TW_INT16 transferNativeImage(TW_MEMREF* _pData); + virtual TW_INT16 transferNativeImage(TW_HANDLE &_hData); /** * Return info about the file that the Source will write the acquired data into @@ -427,11 +427,21 @@ * get the Internal Image format. * Called when a DG_IMAGE / DAT_IMAGENATIVEXFER / MSG_GET op is sent. * also used when creating a BMP for saving when DG_IMAGE / DAT_IMAGEFILEXFER / MSG_GET op is sent. - * @param[out] _pImage a pointer to store the image locaton. + * @param[out] _hImage a handle to store the image locaton. * @return a valid TWRC_xxxx return code. */ - TW_INT16 getDIBImage(TW_MEMREF* _pImage); - + TW_INT16 getDIBImage(TW_HANDLE &_hImage); + #ifdef TWNDS_OS_APPLE + /** + * MAC only + * get the Internal Image format. + * Called when a DG_IMAGE / DAT_IMAGENATIVEXFER / MSG_GET op is sent. + * also used when creating a BMP for saving when DG_IMAGE / DAT_IMAGEFILEXFER / MSG_GET op is sent. + * @param[out] _hImage a handle to store the image locaton. + * @return a valid TWRC_xxxx return code. + */ + TW_INT16 getPICTImage(TW_HANDLE &_hPICTImage); +#endif /** * Save the current image data as a BMP file * @return a valid TWRC_xxxx return code, TWRC_XFERDONE on success. @@ -472,10 +482,10 @@ * get the Internal Image format. For Linux Only * Called when a DG_IMAGE / DAT_IMAGENATIVEXFER / MSG_GET op is sent. * also used when creating a BMP for saving when DG_IMAGE / DAT_IMAGEFILEXFER / MSG_GET op is sent. - * @param[out] _pImage a pointer to store the image locaton. + * @param[out] _hImage a handle to store the image locaton. * @return a valid TWRC_xxxx return code. */ - TW_INT16 getTIFFImage(TW_MEMREF* _pImage); + TW_INT16 getTIFFImage(TW_HANDLE &_hImage); // END Capabilities /** @@ -554,6 +564,21 @@ * @return a valid TWRC_xxxx return code. */ virtual TW_INT16 validateCapabilitySet(TW_UINT16 _Cap, TW_UINT16 _ConType, BYTE* _pContainer); + + /** + * Update Capability Container after the operation + * Override this function in base class to support more capabilities + * @param[in] _pCap the capability + * @return a valid TWRC_xxxx return code. + */ + virtual TW_INT16 updatePostContainer(pTW_CAPABILITY _pCap); + /** + * Update Capability Container before the operation + * Override this function in base class to support more capabilities + * @param[in] _pCap the capability + * @return a valid TWRC_xxxx return code. + */ + virtual TW_INT16 updatePreContainer(pTW_CAPABILITY _pCap); /** * if the CTWAINContainer is dependend on another Capabiltiy. @@ -570,7 +595,7 @@ * @param[in out] _frame the frame to update. * @return true if the frame is not change, false if changed. */ - virtual bool ConstrainFrameToScanner(InternalFrame& _frame); + virtual bool ConstrainFrameToScanner(InternalFrame& _frame,bool &bConstrained); /** * get the current unit and resolution. A helper function used by Unit dependent cap Modified: trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp 2010-04-19 18:12:19 UTC (rev 84) +++ trunk/TWAIN-Samples/Twain_DS_sample01/src/CTWAINDS_FreeImage.cpp 2010-04-20 20:21:49 UTC (rev 85) @@ -1,5 +1,5 @@ /*************************************************************************** -* Copyright \xA9 2007 TWAIN Working Group: +* Copyright � 2007 TWAIN Working Group: * Adobe Systems Incorporated, AnyDoc Software Inc., Eastman Kodak Company, * Fujitsu Computer Products of America, JFL Peripheral Solutions Inc., * Ricoh Corporation, and Xerox Corporation. @@ -71,7 +71,10 @@ 1, // TW_UINT16 MinorNum; Incremental revision number of the software TWLG_ENGLISH, // TW_UINT16 Language; e.g. TWLG_SWISSFRENCH TWCY_USA, // TW_UINT16 Country; e.g. TWCY_SWITZERLAND - "2.1.3 sample" // TW_STR32 Info; e.g. "1.0b3 Beta release" +#ifdef __APPLE__ + "\p" +#endif + "2.1.4 sample" // TW_STR32 Info; e.g. "1.0b3 Beta release" #ifdef _DEBUG " debug" #else @@ -86,9 +89,18 @@ 2, // TW_UINT16 ProtocolMajor; Application and DS must set to TWON_PROTOCOLMAJOR 1, // TW_UINT16 ProtocolMinor; Application and DS must set to TWON_PROTOCOLMINOR DG_IMAGE | DG_CONTROL | DF_DS2, // TW_UINT32 SupportedGroups; Bit field OR combination of DG_ constants - "TWAIN Working Group", // TW_STR32 Manufacturer; Manufacturer name, e.g. "Hewlett-Packard" - "Software Scan", // TW_STR32 ProductFamily; Product family name, e.g. "ScanJet" - "TWAIN2 FreeImage Software Scanner" // TW_STR32 ProductName; Product name, e.g. "ScanJet Plus" +#ifdef __APPLE__ + "\p" +#endif + "TWAIN Working Group", // TW_STR32 Manufacturer; Manufacturer name, e.g. "Hewlett-Packard" +#ifdef __APPLE__ + "\p" +#endif + "Software Scan", // TW_STR32 ProductFamily; Product family name, e.g. "ScanJet" +#ifdef __APPLE__ + "\p" +#endif + "TWAIN2 FreeImage Software Scanner" // TW_STR32 ProductName; Product name, e.g. "ScanJet Plus" }; ////////////////////////////////////////////////////////////////////////////// @@ -286,7 +298,8 @@ frmVal.nLeft = pCapCon->dwVal[1]; frmVal.nRight = pCapCon->dwVal[2]; frmVal.nTop = pCapCon->dwVal[3]; - ConstrainFrameToScanner(frmVal); + bool bConstrained; + ConstrainFrameToScanner(frmVal,bConstrained); CTWAINContainerFrame *pfFrameCap = (CTWAINContainerFrame*)pCap; bRes = pfFrameCap->Set(frmVal); } @@ -369,7 +382,7 @@ CTWAINContainerString* pstrCap = 0; CTWAINContainerFix32* pfixCap = 0; - m_IndependantCapMap[CAP_SUPPORTEDCAPS] = new CTWAINContainerInt(CAP_SUPPORTEDCAPS, TWTY_UINT16, TWON_ARRAY, TWQC_GETS); + m_IndependantCapMap[CAP_SUPPORTEDCAPS] = new CTWAINContainerInt(CAP_SUPPORTEDCAPS, TWTY_UINT16, TWON_ARRAY, TWQC_GETS,TWON_ARRAY,TWON_ARRAY); if( NULL == (pnCap = dynamic_cast<CTWAINContainerInt*>(m_IndependantCapMap[CAP_SUPPORTEDCAPS])) || !pnCap->Add(CAP_DEVICEONLINE) || !pnCap->Add(CAP_INDICATORS) @@ -742,15 +755,16 @@ return TWRC_FAILURE; } // expressed internally as pixels per inch - if( NULL == (m_ICAP_UNIT_Dependant[ICAP_XRESOLUTION] = new CTWAINContainerFix32(ICAP_XRESOLUTION, TWON_ENUMERATION, TWQC_ALL)) - || !m_ICAP_UNIT_Dependant[ICAP_XRESOLUTION]->Add(50) - || !m_ICAP_UNIT_Dependant[ICAP_XRESOLUTION]->Add(100) - || !m_ICAP_UNIT_Dependant[ICAP_XRESOLUTION]->Add(150) - || !m_ICAP_UNIT_Dependant[ICAP_XRESOLUTION]->Add(200, true) - || !m_ICAP_UNIT_Dependant[ICAP_XRESOLUTION]->Add(300) - || !m_ICAP_UNIT_Dependant[ICAP_XRESOLUTION]->Add(400) - || !m_ICAP_UNIT_Dependant[ICAP_XRESOLUTION]->Add(500) - || !m_ICAP_UNIT_Dependant[ICAP_XRESOLUTION]->Add(600) ) + m_IndependantCapMap[ICAP_XRESOLUTION] = new CTWAINContainerFix32(ICAP_XRESOLUTION, TWON_ENUMERATION, TWQC_ALL); + if( NULL == (pfixCap = dynamic_cast<CTWAINContainerFix32*>(m_IndependantCapMap[ICAP_XRESOLUTION])) + || !pfixCap->Add(50) + || !pfixCap->Add(100) + || !pfixCap->Add(150) + || !pfixCap->Add(200, true) + || !pfixCap->Add(300) + || !pfixCap->Add(400) + || !pfixCap->Add(500) + || !pfixCap->Add(600) ) { cerr << "Could not create ICAP_XRESOLUTION" << endl; setConditionCode(TWCC_LOWMEMORY); @@ -758,15 +772,16 @@ } // expressed internally as pixels per inch - if( NULL == (m_ICAP_UNIT_Dependant[ICAP_YRESOLUTION] = new CTWAINContainerFix32(ICAP_YRESOLUTION, TWON_ENUMERATION, TWQC_ALL)) - || !m_ICAP_UNIT_Dependant[ICAP_YRESOLUTION]->Add(50) - || !m_ICAP_UNIT_Dependant[ICAP_YRESOLUTION]->Add(100) - || !m_ICAP_UNIT_Dependant[ICAP_YRESOLUTION]->Add(150) - || !m_ICAP_UNIT_Dependant[ICAP_YRESOLUTION]->Add(200, true) - || !m_ICAP_UNIT_Dependant[ICAP_YRESOLUTION]->Add(300) - || !m_ICAP_UNIT_Dependant[ICAP_YRESOLUTION]->Add(400) - || !m_ICAP_UNIT_Dependant[ICAP_YRESOLUTION]->Add(500) - || !m_ICAP_UNIT_Dependant[ICAP_YRESOLUTION]->Add(600) ) + m_IndependantCapMap[ICAP_YRESOLUTION] = new CTWAINContainerFix32(ICAP_YRESOLUTION, TWON_ENUMERATION, TWQC_ALL); + if( NULL == (pfixCap = dynamic_cast<CTWAINContainerFix32*>(m_IndependantCapMap[ICAP_YRESOLUTION])) + || !pfixCap->Add(50) + || !pfixCap->Add(100) + || !pfixCap->Add(150) + || !pfixCap->Add(200, true) + || !pfixCap->Add(300) + || !pfixCap->Add(400) + || !pfixCap->Add(500) + || !pfixCap->Add(600) ) { cerr << "Could not create ICAP_YRESOLUTION" << endl; setConditionCode(TWCC_LOWMEMORY); @@ -779,16 +794,16 @@ // Flatbed - A4 letter paper // ConvertUnits(29.7f, TWUN_CENTIMETERS, TWUN_INCHES, 1000); // ConvertUnits(21.0f, TWUN_CENTIMETERS, TWUN_INCHES, 1000); - if( NULL == (m_ICAP_UNIT_Dependant[ICAP_PHYSICALWIDTH] = new CTWAINContainerFix32(ICAP_PHYSICALWIDTH, TWON_ONEVALUE, TWQC_GETS)) - || !m_ICAP_UNIT_Dependant[ICAP_PHYSICALWIDTH]->Add(8.5, true) ) + if( NULL == (m_IndependantCapMap[ICAP_PHYSICALWIDTH] = new CTWAINContainerFix32(ICAP_PHYSICALWIDTH, TWON_ONEVALUE, TWQC_GETS)) + || !(dynamic_cast<CTWAINContainerFix32*>(m_IndependantCapMap[ICAP_PHYSICALWIDTH]))->Add(8.5, true) ) { cerr << "Could not create ICAP_PHYSICALWIDTH" << endl; setConditionCode(TWCC_LOWMEMORY); return TWRC_FAILURE; } - if( NULL == (m_ICAP_UNIT_Dependant[ICAP_PHYSICALHEIGHT] = new CTWAINContainerFix32(ICAP_PHYSICALHEIGHT, TWON_ONEVALUE, TWQC_GETS)) - || !m_ICAP_UNIT_Dependant[ICAP_PHYSICALHEIGHT]->Add(14.0, true) ) + if( NULL == (m_IndependantCapMap[ICAP_PHYSICALHEIGHT] = new CTWAINContainerFix32(ICAP_PHYSICALHEIGHT, TWON_ONEVALUE, TWQC_GETS)) + || !(dynamic_cast<CTWAINContainerFix32*>(m_IndependantCapMap[ICAP_PHYSICALHEIGHT]))->Add(14.0, true) ) { cerr << "Could not create ICAP_PHYSICALHEIGHT" << endl; setConditionCode(TWCC_LOWMEMORY); @@ -836,13 +851,6 @@ cur_int++; } - TWAINCapabilitiesMap_FIX32::iterator cur_Fix32 = m_ICAP_UNIT_Dependant.begin(); - while(cur_Fix32 != m_ICAP_UNIT_Dependant.end()) - { - delete cur_Fix32->second; - cur_Fix32++; - } - if(m_pICAP_FRAMES) { delete m_pICAP_FRAMES; @@ -873,12 +881,22 @@ // Get the actual values used by the scanner. SFreeImage settings = m_Scanner.getSetting(); + + int nUnit = TWUN_INCHES; + CTWAINContainerInt *pnCap = 0; + if( 0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(findCapability(ICAP_UNITS))) ... [truncated message content] |
From: <jim...@us...> - 2010-04-19 18:12:25
|
Revision: 84 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=84&view=rev Author: jim0watters Date: 2010-04-19 18:12:19 +0000 (Mon, 19 Apr 2010) Log Message: ----------- add DoAbortXfer() function Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.h Modified: trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp 2010-04-12 13:46:38 UTC (rev 83) +++ trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp 2010-04-19 18:12:19 UTC (rev 84) @@ -193,16 +193,7 @@ // if it did NOT succeed, try to cancle any pending transfers. if( 5 <= m_DSMState ) { - TW_PENDINGXFERS pendxfers; - memset( &pendxfers, 0, sizeof(pendxfers) ); - DSM_Entry(DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, (TW_MEMREF)&pendxfers); - - // We need to get rid of any pending transfers - if(0 != pendxfers.Count) - { - memset( &pendxfers, 0, sizeof(pendxfers) ); - DSM_Entry(DG_CONTROL, DAT_PENDINGXFERS, MSG_RESET, (TW_MEMREF)&pendxfers); - } + DoAbortXfer(); // Any pending transfers should now be cancled m_DSMState = 5; @@ -860,6 +851,9 @@ { break; } + // The data returned by ImageInfo can be used to determine if this image is wanted. + // If it is not then DG_CONTROL / DAT_PENDINGXFERS / MSG_ENDXFER can be + // used to skip to the next image. TW_MEMREF hImg = 0; @@ -986,19 +980,7 @@ // to transfer more images if(bPendingXfers == true) { - PrintCMDMessage("app: Stop any transfer we may have started but could not finish...\n"); - TW_PENDINGXFERS pendxfers; - memset( &pendxfers, 0, sizeof(pendxfers) ); - - twrc = DSM_Entry( DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, (TW_MEMREF)&pendxfers); - - // We need to get rid of any pending transfers - if(0 != pendxfers.Count) - { - memset( &pendxfers, 0, sizeof(pendxfers) ); - - DSM_Entry( DG_CONTROL, DAT_PENDINGXFERS, MSG_RESET, (TW_MEMREF)&pendxfers); - } + twrc = DoAbortXfer(); } // adjust our state now that the scanning session is done @@ -1008,6 +990,28 @@ return; } + +TW_UINT16 TwainApp::DoAbortXfer() +{ + TW_UINT16 twrc = TWRC_SUCCESS; + + PrintCMDMessage("app: Stop any transfer we may have started but could not finish...\n"); + TW_PENDINGXFERS pendxfers; + memset( &pendxfers, 0, sizeof(pendxfers) ); + + twrc = DSM_Entry( DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, (TW_MEMREF)&pendxfers); + + // We need to get rid of any pending transfers + if(0 != pendxfers.Count) + { + memset( &pendxfers, 0, sizeof(pendxfers) ); + + twrc = DSM_Entry( DG_CONTROL, DAT_PENDINGXFERS, MSG_RESET, (TW_MEMREF)&pendxfers); + } + + return twrc; +} + void TwainApp::updateEXTIMAGEINFO() { int TableBarCodeExtImgInfo[] = { @@ -1328,6 +1332,10 @@ { break; } + // The data returned by ImageInfo can be used to determine if this image is wanted. + // If it is not then DG_CONTROL / DAT_PENDINGXFERS / MSG_ENDXFER can be + // used to skip to the next image. + if(fileformat!=TWFF_TIFFMULTI) { SSNPRINTF(filexfer.FileName, sizeof(filexfer.FileName), sizeof(filexfer.FileName), "%sFROM_SCANNER_%06dF%s", strPath.c_str(), m_nXferNum, pExt); @@ -1405,17 +1413,7 @@ // to transfer more images if(bPendingXfers == true) { - PrintCMDMessage("app: Stop any transfer we may have started but could not finish...\n"); - TW_PENDINGXFERS pendxfers; - memset( &pendxfers, 0, sizeof(pendxfers) ); - twrc = DSM_Entry( DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, (TW_MEMREF)&pendxfers); - - // We need to get rid of any pending transfers - if(0 != pendxfers.Count) - { - memset( &pendxfers, 0, sizeof(pendxfers) ); - DSM_Entry( DG_CONTROL, DAT_PENDINGXFERS, MSG_RESET, (TW_MEMREF)&pendxfers); - } + twrc = DoAbortXfer(); } // adjust our state now that the scanning session is done @@ -1461,6 +1459,9 @@ { break; } + // The data returned by ImageInfo can be used to determine if this image is wanted. + // If it is not then DG_CONTROL / DAT_PENDINGXFERS / MSG_ENDXFER can be + // used to skip to the next image. // Set the filename to save to SSNPRINTF(szOutFileName, sizeof(szOutFileName), sizeof(szOutFileName), "%sFROM_SCANNER_%06dM.tif", strPath.c_str(), m_nXferNum); @@ -1631,17 +1632,7 @@ // to transfer more images if(bPendingXfers == true) { - PrintCMDMessage("app: Stop any transfer we may have started but could not finish...\n"); - TW_PENDINGXFERS pendxfers; - memset( &pendxfers, 0, sizeof(pendxfers) ); - twrc = DSM_Entry( DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, (TW_MEMREF)&pendxfers); - - // We need to get rid of any pending transfers - if(0 != pendxfers.Count) - { - memset( &pendxfers, 0, sizeof(pendxfers) ); - DSM_Entry( DG_CONTROL, DAT_PENDINGXFERS, MSG_RESET, (TW_MEMREF)&pendxfers); - } + twrc = DoAbortXfer(); } // adjust our state now that the scanning session is done Modified: trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.h 2010-04-12 13:46:38 UTC (rev 83) +++ trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.h 2010-04-19 18:12:19 UTC (rev 84) @@ -229,6 +229,12 @@ void initiateTransfer_Memory(); /** +* Abort the scanning process. +* @return a valid TWRC_xxxx return code. +*/ + TW_UINT16 DoAbortXfer(); + +/** * Try to sets a OneValue Capability of any of the TW_INT or TW_UINT types to the value passed * @param[in] Cap the capability to update to set * @param[in] _value the value to set This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jim...@us...> - 2010-04-12 13:46:44
|
Revision: 83 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=83&view=rev Author: jim0watters Date: 2010-04-12 13:46:38 +0000 (Mon, 12 Apr 2010) Log Message: ----------- Pass HWND to console Window to MSG_OPENDSM Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/src/main.cpp Modified: trunk/TWAIN-Samples/Twain_App_sample01/src/main.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/src/main.cpp 2010-03-13 00:49:39 UTC (rev 82) +++ trunk/TWAIN-Samples/Twain_App_sample01/src/main.cpp 2010-04-12 13:46:38 UTC (rev 83) @@ -436,8 +436,13 @@ int ret = EXIT_SUCCESS; // Instantiate the TWAIN application CMD class - gpTwainApplicationCMD = new TwainAppCMD; + HWND parentWindow = NULL; +#ifdef TWH_CMP_MSC + parentWindow = GetConsoleWindow(); +#endif + gpTwainApplicationCMD = new TwainAppCMD(parentWindow); + // setup a signal handler for SIGINT that will allow the program to stop signal(SIGINT, &onSigINT); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jim...@us...> - 2010-03-13 00:49:48
|
Revision: 82 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=82&view=rev Author: jim0watters Date: 2010-03-13 00:49:39 +0000 (Sat, 13 Mar 2010) Log Message: ----------- Disable scan buttons if busy. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h Modified: trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp 2010-03-10 21:13:24 UTC (rev 81) +++ trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp 2010-03-13 00:49:39 UTC (rev 82) @@ -113,6 +113,7 @@ ,m_bShowUI(FALSE) ,m_bKeepEnabled(FALSE) ,m_pCapSettings(NULL) + ,m_bBusy(false) { // fill our identity structure SSTRCPY(m_MyInfo.Manufacturer, sizeof(m_MyInfo.Manufacturer), "TWAIN Working Group"); @@ -361,6 +362,8 @@ BOOL bReadOnly; CWaitCursor wait; + m_bBusy = true; + UpdateButtons(); for(nItem=0; nItem<nCount; nItem++) { memset(&Item, 0, sizeof(Item)); @@ -666,6 +669,8 @@ pCapSetting->byChanged = byChanged; pCapSetting->bReadOnly = bReadOnly; } + m_bBusy = false; + UpdateButtons(); m_ListCtrl_Caps.Invalidate(FALSE); } @@ -680,6 +685,18 @@ m_ListCtrl_Caps.Invalidate(FALSE); } +void CmfcDlgConfigure::UpdateButtons() +{ + CWnd *pWnd = NULL; + + BOOL bEnable = m_bBusy && m_DSMState <= 4? FALSE:TRUE; + + GetDlgItem(IDB_SCAN)->EnableWindow(bEnable); + GetDlgItem(IDB_UIONLY)->EnableWindow(bEnable); + GetDlgItem(IDCANCEL)->EnableWindow(bEnable); // If the Scanner has crashed the Close button is still available. + +} + // This method sets the new current value. // TODO set constraints using Enumerations and Ranges void CmfcDlgConfigure::OnNMDblclkCaps(NMHDR *pNMHDR, LRESULT *pResult) @@ -818,6 +835,11 @@ UpdateData(true); + m_bBusy = true; + UpdateButtons(); + + m_DSMessage = (TW_UINT16)-1; + // -Enable the data source. This puts us in state 5 which means that we // have to wait for the data source to tell us to move to state 6 and // start the transfer. Once in state 5, no more set ops can be done on the @@ -826,14 +848,14 @@ // that was registered earlier. if( !enableDS(GetSafeHwnd(), m_bShowUI) ) { + m_bBusy = false; + UpdateButtons(); return; } do // If showing UI and KeepUIOpen is Enabled then we will loop here until cancle { - m_DSMessage = (TW_UINT16)-1; - // now we have to wait until we hear something back from the DS. while((TW_UINT16)-1 == m_DSMessage) { @@ -895,6 +917,7 @@ updateIMAGEINFO(); UpdateImageInfo(); StartScan(); + m_DSMessage = (TW_UINT16)-1; } }while(m_bShowUI && m_bKeepEnabled && m_DSMessage != MSG_CLOSEDSREQ); @@ -902,9 +925,13 @@ // can negotiate caps again. disableDS(); + m_bBusy = false; + // update showing new values PopulateCurentValues(true); + UpdateButtons(); + return; } @@ -917,11 +944,16 @@ UpdateData(true); + m_bBusy = true; + UpdateButtons(); + // Enable the data source. This puts us in state 5 which means that we // have to wait for the data source to tell us close. // Once in state 5, no more set ops can be done on the caps, only get ops. if( !enableDSUIOnly(GetSafeHwnd()) ) { + m_bBusy = false; + UpdateButtons(); return; } @@ -980,9 +1012,13 @@ // can negotiate caps again. disableDS(); + m_bBusy = false; + // update showing new values PopulateCurentValues(true); + UpdateButtons(); + return; } Modified: trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h 2010-03-10 21:13:24 UTC (rev 81) +++ trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h 2010-03-13 00:49:39 UTC (rev 82) @@ -77,6 +77,7 @@ void ListSupportedCaps(); void PopulateCurentValues(bool bCheckForChange = true); void StartScan(); + void UpdateButtons(); // Implementation protected: @@ -112,12 +113,16 @@ */ virtual void updateEXTIMAGEINFO(); +/** +* Mark all the SupportedCaps as unchanged +*/ void MarkUnchanged(); - CString m_sStr_DS; - CString m_sStr_ImageInfo; - CString m_sStr_ExtImageInfo; - CListCtrl m_ListCtrl_Caps; - BOOL m_bShowUI; - BOOL m_bKeepEnabled; + CString m_sStr_DS; /**< The string to display of the opened DS */ + CString m_sStr_ImageInfo; /**< The string to display of the last ImageInfo returned by the scanner */ + CString m_sStr_ExtImageInfo; /**< The string to display of the extImageInfo returned by the scanner */ + CListCtrl m_ListCtrl_Caps; /**< The Dialog Control that displays all supported Capabilites and their current values */ + BOOL m_bShowUI; /**< Scan with the GUI visable */ + BOOL m_bKeepEnabled; /**< Keep the DS GUI displayed after a scan - User press cancel to finish scanning */ + bool m_bBusy; /**< The application is waiting for a responce from TWAIN messages*/ }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jim...@us...> - 2010-03-10 21:13:41
|
Revision: 81 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=81&view=rev Author: jim0watters Date: 2010-03-10 21:13:24 +0000 (Wed, 10 Mar 2010) Log Message: ----------- Add option of KeepUIEnabled if scanning with UI. Clean up resource.h file of unused items. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfc.rc trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/resource.h Modified: trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt 2010-02-16 22:50:28 UTC (rev 80) +++ trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt 2010-03-10 21:13:24 UTC (rev 81) @@ -1,3 +1,7 @@ +2010-03-10 JFL Peripheral Solutions ji...@jf... + + * mfcDlgConfigure.cpp Add option of KeepUIEnabled if scanning with UI + 2010-02-16 JFL Peripheral Solutions ji...@jf... * TwainApp.cpp, TwainApp.h, mfcDlgConfigure.cpp, & mfcDlgConfigure.h Modified: trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfc.rc =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfc.rc 2010-02-16 22:50:28 UTC (rev 80) +++ trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfc.rc 2010-03-10 21:13:24 UTC (rev 81) @@ -116,8 +116,9 @@ LTEXT "",IDC_STC_DS,7,1,304,38 CONTROL "",IDLC_CAPS,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | WS_BORDER | WS_GROUP | WS_TABSTOP,7,39,304,148 PUSHBUTTON "Path...",IDB_PATH,7,190,33,12 - EDITTEXT IDC_EDIT1,46,190,265,12,ES_AUTOHSCROLL | ES_READONLY - CONTROL "Show UI",IDC_SHOWUI,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,215,76,8 + EDITTEXT IDC_SAVEPATH,46,190,265,12,ES_AUTOHSCROLL | ES_READONLY + CONTROL "Show UI",IDC_SHOWUI,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,204,76,8 + CONTROL "Keep Open",IDC_KEEPOPEN,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,17,215,76,8 LTEXT "Image Info",IDC_STATIC,319,7,237,8 EDITTEXT IDC_IMAGEINFO,319,16,237,48,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP LTEXT "Extended Image Info",IDC_STATIC,319,71,237,8 Modified: trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp 2010-02-16 22:50:28 UTC (rev 80) +++ trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp 2010-03-10 21:13:24 UTC (rev 81) @@ -111,6 +111,7 @@ ,m_sStr_ImageInfo(_T("")) ,m_sStr_ExtImageInfo(_T("")) ,m_bShowUI(FALSE) + ,m_bKeepEnabled(FALSE) ,m_pCapSettings(NULL) { // fill our identity structure @@ -129,8 +130,9 @@ DDX_Text(pDX, IDC_IMAGEINFO, m_sStr_ImageInfo); DDX_Text(pDX, IDC_EXTIMAGEINFO, m_sStr_ExtImageInfo); DDX_Check(pDX, IDC_SHOWUI, m_bShowUI); + DDX_Check(pDX, IDC_KEEPOPEN, m_bKeepEnabled); DDX_Control(pDX, IDLC_CAPS, m_ListCtrl_Caps); - DDX_Control(pDX, IDC_EDIT1, m_EdtSavePath); + DDX_Control(pDX, IDC_SAVEPATH, m_EdtSavePath); } BEGIN_MESSAGE_MAP(CmfcDlgConfigure, CDialog) @@ -814,8 +816,6 @@ if(m_DSMState > 4) return; // Already Enabled - m_DSMessage = (TW_UINT16)-1; - UpdateData(true); // -Enable the data source. This puts us in state 5 which means that we @@ -829,68 +829,74 @@ return; } - // now we have to wait until we hear something back from the DS. - while((TW_UINT16)-1 == m_DSMessage) + do // If showing UI and KeepUIOpen is Enabled then we will loop here until cancle { - // If we are using callbacks, there is nothing to do here except sleep - // and wait for our callback from the DS. If we are not using them, - // then we have to poll the DSM. - MSG Msg; + m_DSMessage = (TW_UINT16)-1; - if(!GetMessage((LPMSG)&Msg, NULL, 0, 0)) + // now we have to wait until we hear something back from the DS. + while((TW_UINT16)-1 == m_DSMessage) { - break;//WM_QUIT - } - TW_EVENT twEvent = {0}; - twEvent.pEvent = (TW_MEMREF)&Msg; - twEvent.TWMessage = MSG_NULL; - TW_UINT16 twRC = TWRC_NOTDSEVENT; - twRC = _DSM_Entry( getAppIdentity(), - m_pDataSource, - DG_CONTROL, - DAT_EVENT, - MSG_PROCESSEVENT, - (TW_MEMREF)&twEvent); - if(!gUSE_CALLBACKS && twRC==TWRC_DSEVENT) - { - // check for message from Source - switch (twEvent.TWMessage) + // If we are using callbacks, there is nothing to do here except sleep + // and wait for our callback from the DS. If we are not using them, + // then we have to poll the DSM. + MSG Msg; + + if(!GetMessage((LPMSG)&Msg, NULL, 0, 0)) { - case MSG_XFERREADY: - case MSG_CLOSEDSREQ: - case MSG_NULL: - m_DSMessage = twEvent.TWMessage; - break; + break;//WM_QUIT + } + TW_EVENT twEvent = {0}; + twEvent.pEvent = (TW_MEMREF)&Msg; + twEvent.TWMessage = MSG_NULL; + TW_UINT16 twRC = TWRC_NOTDSEVENT; + twRC = _DSM_Entry( getAppIdentity(), + m_pDataSource, + DG_CONTROL, + DAT_EVENT, + MSG_PROCESSEVENT, + (TW_MEMREF)&twEvent); - case MSG_CLOSEDSOK: - TRACE("\nError - MSG_CLOSEDSOK in MSG_PROCESSEVENT loop for Scan\n"); - break; + if(!gUSE_CALLBACKS && twRC==TWRC_DSEVENT) + { + // check for message from Source + switch (twEvent.TWMessage) + { + case MSG_XFERREADY: + case MSG_CLOSEDSREQ: + case MSG_NULL: + m_DSMessage = twEvent.TWMessage; + break; - default: - TRACE("\nError - Unknown message in MSG_PROCESSEVENT loop for Scan\n"); - break; + case MSG_CLOSEDSOK: + TRACE("\nError - MSG_CLOSEDSOK in MSG_PROCESSEVENT loop for Scan\n"); + break; + + default: + TRACE("\nError - Unknown message in MSG_PROCESSEVENT loop for Scan\n"); + break; + } } + if(twRC!=TWRC_DSEVENT) + { + TranslateMessage ((LPMSG)&Msg); + DispatchMessage ((LPMSG)&Msg); + } } - if(twRC!=TWRC_DSEVENT) - { - TranslateMessage ((LPMSG)&Msg); - DispatchMessage ((LPMSG)&Msg); - } - } - // At this point the source has sent us a callback saying that it is ready to - // transfer the image. + // At this point the source has sent us a callback saying that it is ready to + // transfer the image. - if(m_DSMessage == MSG_XFERREADY) - { - // move to state 6 as a result of the data source. We can start a scan now. - m_DSMState = 6; - updateIMAGEINFO(); - UpdateImageInfo(); - StartScan(); - } + if(m_DSMessage == MSG_XFERREADY) + { + // move to state 6 as a result of the data source. We can start a scan now. + m_DSMState = 6; + updateIMAGEINFO(); + UpdateImageInfo(); + StartScan(); + } + }while(m_bShowUI && m_bKeepEnabled && m_DSMessage != MSG_CLOSEDSREQ); // Scan is done, disable the ds, thus moving us back to state 4 where we // can negotiate caps again. Modified: trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h 2010-02-16 22:50:28 UTC (rev 80) +++ trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h 2010-03-10 21:13:24 UTC (rev 81) @@ -119,4 +119,5 @@ CString m_sStr_ExtImageInfo; CListCtrl m_ListCtrl_Caps; BOOL m_bShowUI; + BOOL m_bKeepEnabled; }; Modified: trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/resource.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/resource.h 2010-02-16 22:50:28 UTC (rev 80) +++ trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/resource.h 2010-03-10 21:13:24 UTC (rev 81) @@ -5,28 +5,13 @@ #define IDM_ABOUTBOX 0x0010 #define IDD_ABOUTBOX 100 #define IDS_ABOUTBOX 101 -#define IDD_MFC32_DIALOG 102 #define IDD_MFC32_APP 102 #define IDR_MAINFRAME 128 #define IDD_TW_ENUMERATION 129 #define IDD_MFC32_CONFIGURE 130 -#define IDB_CONNECT_DSM 1000 -#define IDC_STATUS 1001 #define IDL_DS 1002 -#define IDC_CAP1 1003 -#define IDC_CAP2 1004 -#define IDC_CAP3 1005 -#define IDC_CAP4 1006 -#define IDC_CAP5 1007 -#define IDC_CAP6 1008 -#define IDC_CAP7 1009 -#define IDL_CAPS 1010 -#define IDC_CAP8 1011 -#define IDC_CAP9 1012 #define IDB_CONNECT_DS 1013 -#define IDB_DISCONNECT_DS 1014 #define IDB_DEFAULT_DS 1014 -#define IDB_DISCONNECT_DSM 1015 #define IDB_SCAN 1016 #define IDC_STC_DS 1017 #define IDC_LIST1 1018 @@ -34,10 +19,10 @@ #define IDC_IMAGEINFO 1019 #define IDC_EXTIMAGEINFO 1020 #define IDC_SHOWUI 1021 -#define IDC_EDIT1 1022 -#define IDC_BUTTON1 1023 +#define IDC_SAVEPATH 1022 #define IDB_PATH 1023 #define IDLC_CAPS 1024 +#define IDC_KEEPOPEN 1025 // Next default values for new objects // This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jim...@us...> - 2010-02-16 22:50:35
|
Revision: 80 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=80&view=rev Author: jim0watters Date: 2010-02-16 22:50:28 +0000 (Tue, 16 Feb 2010) Log Message: ----------- Implemented the control for setting the destination to save files to. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt Modified: trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt 2010-02-16 22:37:55 UTC (rev 79) +++ trunk/TWAIN-Samples/Twain_App_sample01/TODO.txt 2010-02-16 22:50:28 UTC (rev 80) @@ -23,8 +23,6 @@ MFC Sample Application -- Impliment the control for setting the desination to save files to. - - Check CAP_ENABLEDSUIONLY before enabling the button for Showing the DS with UI Only. - Add dialogs to set Current when MSG_GET returns OneValue, Range, and Arrays This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jim...@us...> - 2010-02-16 22:38:01
|
Revision: 79 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=79&view=rev Author: jim0watters Date: 2010-02-16 22:37:55 +0000 (Tue, 16 Feb 2010) Log Message: ----------- Save files to selected destination folder. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt trunk/TWAIN-Samples/Twain_App_sample01/Installer/App Installer 32.vdproj trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.h trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfc.rc trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h Modified: trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt 2010-02-09 18:22:55 UTC (rev 78) +++ trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt 2010-02-16 22:37:55 UTC (rev 79) @@ -1,7 +1,12 @@ +2010-02-16 JFL Peripheral Solutions ji...@jf... + + * TwainApp.cpp, TwainApp.h, mfcDlgConfigure.cpp, & mfcDlgConfigure.h + Save files to selected destination folder. + 2010-02-05 JFL Peripheral Solutions ji...@jf... * TwainApp.cpp, TwainApp.h, mfcDlgConfigure.cpp, mfcDlgConfigure.h, & mfcDlgMain.cpp - Expand ExtImageInfo usability. + Expand ExtImageInfo usability. Make mfcDlgConfigure a child of TWAINApp. 2010-01-19 JFL Peripheral Solutions ji...@jf... @@ -14,9 +19,9 @@ 2009-12-27 JFL Peripheral Solutions mihailm - * Correct Linux compatible - * Add Multi-page TIFF just one file for all pages - * Initialize capability containers + * Correct Linux compatible + * Add Multi-page TIFF just one file for all pages + * Initialize capability containers * Free some resources * Added: MSVC 2008 solution * Fixed: compiler defines Modified: trunk/TWAIN-Samples/Twain_App_sample01/Installer/App Installer 32.vdproj =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/Installer/App Installer 32.vdproj 2010-02-09 18:22:55 UTC (rev 78) +++ trunk/TWAIN-Samples/Twain_App_sample01/Installer/App Installer 32.vdproj 2010-02-16 22:37:55 UTC (rev 79) @@ -281,14 +281,14 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:TWAIN 2.1 App Sample" - "ProductCode" = "8:{65FDD48E-1622-4581-9806-CFE13BDB5F1A}" - "PackageCode" = "8:{4218BF0E-8D18-4FF7-AD75-0338A1EA63C8}" + "ProductCode" = "8:{A7BF9CE0-5202-4314-8411-75C44C35ACC0}" + "PackageCode" = "8:{DC12C8BD-9AEA-4C7B-9BD3-605194DF2FCB}" "UpgradeCode" = "8:{3093BF18-1ADD-4A3C-AE32-8F818163DFAF}" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:TRUE" - "ProductVersion" = "8:2.1.1" + "ProductVersion" = "8:2.1.2" "Manufacturer" = "8:TWAIN Working Group" "ARPHELPTELEPHONE" = "8:http://www.twainforum.org/" "ARPHELPLINK" = "8:http://sourceforge.net/projects/twain-samples/" Modified: trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp 2010-02-09 18:22:55 UTC (rev 78) +++ trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp 2010-02-16 22:37:55 UTC (rev 79) @@ -127,6 +127,7 @@ , m_DSMessage(-1) , m_nGetLableSupported(TWCC_SUCCESS) , m_nGetHelpSupported(TWCC_SUCCESS) +, m_strSavePath("") { // fill our identity structure fillIdentity(m_MyInfo); @@ -837,10 +838,19 @@ { PrintCMDMessage("app: Starting a TWSX_NATIVE transfer...\n"); - TW_STR255 szOutFileName; - bool bPendingXfers = true; - TW_UINT16 twrc = TWRC_SUCCESS; + TW_STR255 szOutFileName; + bool bPendingXfers = true; + TW_UINT16 twrc = TWRC_SUCCESS; + string strPath = m_strSavePath; + if( strlen(strPath.c_str()) ) + { + if(strPath[strlen(strPath.c_str())-1] != PATH_SEPERATOR) + { + strPath += PATH_SEPERATOR; + } + } + while(bPendingXfers) { m_nXferNum++; @@ -870,7 +880,7 @@ } // Set the filename to save to - SSNPRINTF(szOutFileName, sizeof(szOutFileName), sizeof(szOutFileName), "FROM_SCANNER_%06dN.bmp", m_nXferNum); + SSNPRINTF(szOutFileName, sizeof(szOutFileName), sizeof(szOutFileName), "%sFROM_SCANNER_%06dN.bmp", strPath.c_str(), m_nXferNum); // Save the image to disk FILE *pFile; @@ -1289,15 +1299,24 @@ // setup the file xfer TW_SETUPFILEXFER filexfer; memset(&filexfer, 0, sizeof(filexfer)); + string strPath = m_strSavePath; + if( strlen(strPath.c_str()) ) + { + if(strPath[strlen(strPath.c_str())-1] != PATH_SEPERATOR) + { + strPath += PATH_SEPERATOR; + } + } + const char * pExt = convertICAP_IMAGEFILEFORMAT_toExt(fileformat); if(fileformat==TWFF_TIFFMULTI) { - SSNPRINTF(filexfer.FileName, sizeof(filexfer.FileName), sizeof(filexfer.FileName), "FROM_SCANNER_F%s", pExt); + SSNPRINTF(filexfer.FileName, sizeof(filexfer.FileName), sizeof(filexfer.FileName), "%sFROM_SCANNER_F%s", strPath.c_str(), pExt); } else { - SSNPRINTF(filexfer.FileName, sizeof(filexfer.FileName), sizeof(filexfer.FileName), "FROM_SCANNER_%06dF%s", m_nXferNum, pExt); + SSNPRINTF(filexfer.FileName, sizeof(filexfer.FileName), sizeof(filexfer.FileName), "%sFROM_SCANNER_%06dF%s", strPath.c_str(), m_nXferNum, pExt); } filexfer.Format = fileformat; @@ -1311,7 +1330,7 @@ } if(fileformat!=TWFF_TIFFMULTI) { - SSNPRINTF(filexfer.FileName, sizeof(filexfer.FileName), sizeof(filexfer.FileName), "FROM_SCANNER_%06dF%s", m_nXferNum, pExt); + SSNPRINTF(filexfer.FileName, sizeof(filexfer.FileName), sizeof(filexfer.FileName), "%sFROM_SCANNER_%06dF%s", strPath.c_str(), m_nXferNum, pExt); } PrintCMDMessage("app: Sending file transfer details...\n"); @@ -1422,7 +1441,16 @@ TW_SETUPMEMXFER SourcesBufferSizes; /**< Used to set up the buffer size used by memory transfer method */ bool bPendingXfers = true; TW_UINT16 twrc = TWRC_SUCCESS; + string strPath = m_strSavePath; + if( strlen(strPath.c_str()) ) + { + if(strPath[strlen(strPath.c_str())-1] != PATH_SEPERATOR) + { + strPath += PATH_SEPERATOR; + } + } + // start the transfer while(bPendingXfers) { @@ -1435,7 +1463,7 @@ } // Set the filename to save to - SSNPRINTF(szOutFileName, sizeof(szOutFileName), sizeof(szOutFileName), "FROM_SCANNER_%06dM.tif", m_nXferNum); + SSNPRINTF(szOutFileName, sizeof(szOutFileName), sizeof(szOutFileName), "%sFROM_SCANNER_%06dM.tif", strPath.c_str(), m_nXferNum); // get the buffer sizes that the source wants to use PrintCMDMessage("app: getting the buffer sizes...\n"); Modified: trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.h 2010-02-09 18:22:55 UTC (rev 78) +++ trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.h 2010-02-16 22:37:55 UTC (rev 79) @@ -375,6 +375,7 @@ string m_strExImageInfo; /**< Extended image info retrieved from the DS */ TW_UINT16 m_nGetLableSupported; /**< Remember if MSG_GETLABLE is supported */ TW_UINT16 m_nGetHelpSupported; /**< Remember if MSG_GETHELP is supported */ + string m_strSavePath; /**< The Path to save the files to */ TW_USERINTERFACE m_ui; /**< Coordinates UI between application and data source. */ }; Modified: trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfc.rc =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfc.rc 2010-02-09 18:22:55 UTC (rev 78) +++ trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfc.rc 2010-02-16 22:37:55 UTC (rev 79) @@ -115,8 +115,8 @@ PUSHBUTTON "Cancel",IDCANCEL,213,207,50,16 LTEXT "",IDC_STC_DS,7,1,304,38 CONTROL "",IDLC_CAPS,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | WS_BORDER | WS_GROUP | WS_TABSTOP,7,39,304,148 - PUSHBUTTON "Path...",IDB_PATH,7,190,33,12,WS_DISABLED - EDITTEXT IDC_EDIT1,46,190,265,12,ES_AUTOHSCROLL | WS_DISABLED + PUSHBUTTON "Path...",IDB_PATH,7,190,33,12 + EDITTEXT IDC_EDIT1,46,190,265,12,ES_AUTOHSCROLL | ES_READONLY CONTROL "Show UI",IDC_SHOWUI,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,215,76,8 LTEXT "Image Info",IDC_STATIC,319,7,237,8 EDITTEXT IDC_IMAGEINFO,319,16,237,48,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP @@ -131,8 +131,8 @@ // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,1,1,1 - PRODUCTVERSION 2,1,1,1 + FILEVERSION 2,1,2,0 + PRODUCTVERSION 2,1,2,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -149,12 +149,12 @@ BEGIN VALUE "CompanyName", "TWAIN Working Group" VALUE "FileDescription", "Sample TWAIN Application" - VALUE "FileVersion", "2.1.1.1" + VALUE "FileVersion", "2.1.2.0" VALUE "InternalName", "SampleApp.exe" VALUE "LegalCopyright", "(c) TWAIN Working Group. All rights reserved." VALUE "OriginalFilename", "SampleApp.exe" VALUE "ProductName", "SampleApp" - VALUE "ProductVersion", "2.1.1.1" + VALUE "ProductVersion", "2.1.2.0" END END BLOCK "VarFileInfo" Modified: trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp 2010-02-09 18:22:55 UTC (rev 78) +++ trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp 2010-02-16 22:37:55 UTC (rev 79) @@ -42,6 +42,7 @@ #include "mfc.h" #include "mfcDlgConfigure.h" #include "TW_Enum_Dlg.h" +#include <shlobj.h> #ifdef _DEBUG #define new DEBUG_NEW @@ -106,12 +107,17 @@ CmfcDlgConfigure::CmfcDlgConfigure(CWnd* pParent, int nIndex) : CDialog(CmfcDlgConfigure::IDD, pParent), TwainApp(pParent->m_hWnd) - ,m_sStc_DS(_T("")) - ,m_sStc_ImageInfo(_T("")) - ,m_sStc_ExtImageInfo(_T("")) + ,m_sStr_DS(_T("")) + ,m_sStr_ImageInfo(_T("")) + ,m_sStr_ExtImageInfo(_T("")) ,m_bShowUI(FALSE) ,m_pCapSettings(NULL) { + // fill our identity structure + SSTRCPY(m_MyInfo.Manufacturer, sizeof(m_MyInfo.Manufacturer), "TWAIN Working Group"); + SSTRCPY(m_MyInfo.ProductFamily, sizeof(m_MyInfo.ProductFamily), "Sample TWAIN App"); + SSTRCPY(m_MyInfo.ProductName, sizeof(m_MyInfo.ProductName), "MFC GUI TWAIN app"); + m_nIndex = nIndex; m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } @@ -119,11 +125,12 @@ void CmfcDlgConfigure::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); - DDX_Text(pDX, IDC_STC_DS, m_sStc_DS); - DDX_Text(pDX, IDC_IMAGEINFO, m_sStc_ImageInfo); - DDX_Text(pDX, IDC_EXTIMAGEINFO, m_sStc_ExtImageInfo); + DDX_Text(pDX, IDC_STC_DS, m_sStr_DS); + DDX_Text(pDX, IDC_IMAGEINFO, m_sStr_ImageInfo); + DDX_Text(pDX, IDC_EXTIMAGEINFO, m_sStr_ExtImageInfo); DDX_Check(pDX, IDC_SHOWUI, m_bShowUI); DDX_Control(pDX, IDLC_CAPS, m_ListCtrl_Caps); + DDX_Control(pDX, IDC_EDIT1, m_EdtSavePath); } BEGIN_MESSAGE_MAP(CmfcDlgConfigure, CDialog) @@ -137,6 +144,7 @@ ON_NOTIFY(NM_DBLCLK, IDLC_CAPS, &CmfcDlgConfigure::OnNMDblclkCaps) ON_NOTIFY(NM_CUSTOMDRAW, IDLC_CAPS, &CmfcDlgConfigure::OnNMCustomdrawCaps) ON_BN_CLICKED(IDB_UIONLY, &CmfcDlgConfigure::OnBnClickedUIOnly) + ON_BN_CLICKED(IDB_PATH, &CmfcDlgConfigure::OnBnClickedPath) END_MESSAGE_MAP() @@ -151,6 +159,9 @@ SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon + GetSavePath(); + m_EdtSavePath.SetWindowText(m_strSavePath.c_str()); + g_pTWAINApp = this; connectDSM(); @@ -158,7 +169,7 @@ if( NULL != m_pDataSource ) { - m_sStc_DS.Format( "Scanner: %s\nManufacturer: %s\nProductFamily: %s\nInfo: %s", + m_sStr_DS.Format( "Scanner: %s\nManufacturer: %s\nProductFamily: %s\nInfo: %s", m_pDataSource->ProductName, m_pDataSource->Manufacturer, m_pDataSource->ProductFamily, m_pDataSource->Version.Info); UpdateData(false); @@ -800,6 +811,9 @@ void CmfcDlgConfigure::OnBnClickedScan() { + if(m_DSMState > 4) + return; // Already Enabled + m_DSMessage = (TW_UINT16)-1; UpdateData(true); @@ -890,6 +904,9 @@ void CmfcDlgConfigure::OnBnClickedUIOnly() { + if(m_DSMState > 4) + return; // Already Enabled + m_DSMessage = (TW_UINT16)-1; UpdateData(true); @@ -1020,6 +1037,8 @@ void CmfcDlgConfigure::OnBnClickedCancel() { // TODO: Add your control notification handler code here + m_DSMessage = MSG_NULL; + exit(); OnCancel(); } @@ -1028,7 +1047,7 @@ void CmfcDlgConfigure::UpdateImageInfo() { pTW_IMAGEINFO pII = getIMAGEINFO(); - m_sStc_ImageInfo.Format( + m_sStr_ImageInfo.Format( "Width: \t%d \tBitsPerPixel: \t%d\r\n" "Length:\t%d \tPlanar: \t%s\r\n" "Res x: \t%d \tPixelType: \t%s\r\n" @@ -1045,8 +1064,8 @@ { // Call base class first TwainApp::updateEXTIMAGEINFO(); - m_sStc_ExtImageInfo += getEXIMAGEINFO().c_str(); - m_sStc_ExtImageInfo += "\r\n"; + m_sStr_ExtImageInfo += getEXIMAGEINFO().c_str(); + m_sStr_ExtImageInfo += "\r\n"; UpdateData(false); } @@ -1126,3 +1145,109 @@ } } +#define KEYPATH _T("SOFTWARE\\TWAIN Working Group\\TWAIN2 Sample\\") + +bool CmfcDlgConfigure::GetSavePath() +{ + bool bReturn = false; + TCHAR szSavePath[MAX_PATH]; + HKEY hKey; + DWORD disposition; //create the key; show if we have errors or not + + if(ERROR_SUCCESS == RegCreateKeyEx(HKEY_CURRENT_USER, KEYPATH, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_READ, NULL, &hKey, &disposition)) + { + DWORD dataType = REG_EXPAND_SZ; + DWORD dataSize = sizeof(szSavePath); + + memset(szSavePath, 0, dataSize); + + //Read it if we can + if( ERROR_SUCCESS == RegQueryValueEx(hKey, _T("SavePath"), NULL, &dataType, (BYTE*)&szSavePath, &dataSize) ) + { + m_strSavePath = szSavePath; + bReturn = true; + } + RegCloseKey(hKey); + } + + return bReturn; +} + +bool CmfcDlgConfigure::SetSavePath(const TCHAR *pPath) +{ + bool bReturn = false; + TCHAR szSavePath[MAX_PATH]; + HKEY hKey; + DWORD disposition; //create the key; show if we have errors or not + + _tcscpy_s( szSavePath, sizeof(szSavePath), pPath ); + + if( ERROR_SUCCESS == RegCreateKeyEx(HKEY_CURRENT_USER, KEYPATH, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &disposition) ) + { + if( ERROR_SUCCESS == RegSetValueEx( hKey, _T("SavePath"), 0, REG_EXPAND_SZ, (CONST BYTE *)szSavePath, _tcslen(szSavePath) ) ) + { + bReturn = true; + } + RegCloseKey(hKey); + } + + return bReturn; +} + +int CALLBACK BrowseForFolderCallback(HWND hwnd,UINT uMsg,LPARAM lp, LPARAM pData) +{ + char szPath[MAX_PATH]; + + switch(uMsg) + { + case BFFM_INITIALIZED: + SendMessage(hwnd, BFFM_SETSELECTION, TRUE, pData); + break; + + case BFFM_SELCHANGED: + if (SHGetPathFromIDList((LPITEMIDLIST) lp ,szPath)) + { + SendMessage(hwnd, BFFM_SETSTATUSTEXT,0,(LPARAM)szPath); + } + break; + } + + return 0; +} + +void CmfcDlgConfigure::OnBnClickedPath() +{ + bool bReturn = false; + LPITEMIDLIST pidlRoot = NULL; + char szPath[MAX_PATH + 1]; + BROWSEINFO bi = {0}; // This struct holds the various options for the dialog + LPMALLOC pMalloc = NULL; // Get the elusive Shell Task Allocator!!! + + if (SUCCEEDED(SHGetMalloc(&pMalloc))) + { + bi.hwndOwner = m_hWnd; + bi.pszDisplayName = NULL; + bi.lpszTitle = "Select Folder to Save Files"; + bi.ulFlags = BIF_NEWDIALOGSTYLE | BIF_RETURNONLYFSDIRS; + bi.lpfn = BrowseForFolderCallback; + bi.lParam = (LPARAM)m_strSavePath.c_str(); + + // Now cause the dialog to appear. + if(NULL!=(pidlRoot = SHBrowseForFolder(&bi))) + { + // Get a ASCII pathname from the LPITEMIDLIST struct. + bReturn = SHGetPathFromIDList(pidlRoot, szPath)?true:false; + + // Free the returned item identifier list using the shell's task allocator + pMalloc->Free(pidlRoot); + pMalloc->Release(); + } + } + + if(bReturn) + { + SetSavePath(szPath); + GetSavePath(); + m_EdtSavePath.SetWindowText(szPath); + } +} Modified: trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h 2010-02-09 18:22:55 UTC (rev 78) +++ trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.h 2010-02-16 22:37:55 UTC (rev 79) @@ -45,6 +45,7 @@ #include "CommonTWAIN.h" #include "..\src\twainapp.h" #include "afxcmn.h" +#include "afxwin.h" class CTW_Enum_Dlg; @@ -72,6 +73,7 @@ protected: virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support + void ListSupportedCaps(); void PopulateCurentValues(bool bCheckForChange = true); void StartScan(); @@ -81,6 +83,7 @@ HICON m_hIcon; int m_nIndex; CapSetting *m_pCapSettings; + CEdit m_EdtSavePath; // Generated message map functions virtual BOOL OnInitDialog(); @@ -96,8 +99,12 @@ afx_msg void OnBnClickedCancel(); afx_msg void OnNMDblclkCaps(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMCustomdrawCaps(NMHDR *pNMHDR, LRESULT *pResult); + afx_msg void OnBnClickedPath(); + void UpdateImageInfo(); void UpdateExtImageInfo(); + bool GetSavePath(); + bool SetSavePath(const TCHAR *pPath); /** * Override the virtual function to retrieve the extended image info for the current image @@ -107,9 +114,9 @@ void MarkUnchanged(); - CString m_sStc_DS; - CString m_sStc_ImageInfo; - CString m_sStc_ExtImageInfo; + CString m_sStr_DS; + CString m_sStr_ImageInfo; + CString m_sStr_ExtImageInfo; CListCtrl m_ListCtrl_Caps; BOOL m_bShowUI; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jim...@us...> - 2010-02-09 18:23:01
|
Revision: 78 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=78&view=rev Author: jim0watters Date: 2010-02-09 18:22:55 +0000 (Tue, 09 Feb 2010) Log Message: ----------- Free the ExtIamgeInfoItems after we exit the main loop of creating a string. BarCodeTextLength may be needed for BarCodeText. Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp Modified: trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt 2010-02-06 00:07:25 UTC (rev 77) +++ trunk/TWAIN-Samples/Twain_App_sample01/ChangeLog.txt 2010-02-09 18:22:55 UTC (rev 78) @@ -1,3 +1,26 @@ +2010-02-05 JFL Peripheral Solutions ji...@jf... + + * TwainApp.cpp, TwainApp.h, mfcDlgConfigure.cpp, mfcDlgConfigure.h, & mfcDlgMain.cpp + Expand ExtImageInfo usability. + Make mfcDlgConfigure a child of TWAINApp. + +2010-01-19 JFL Peripheral Solutions ji...@jf... + + * mfcDlgConfigure.cpp, Fix issue if receive invalid container + +2009-12-31 JFL Peripheral Solutions ji...@jf... + + * TwainApp.cpp, TwainApp.h Fix MSGSET for default DS. + +2009-12-27 JFL Peripheral Solutions mihailm + + * Correct Linux compatible + * Add Multi-page TIFF just one file for all pages + * Initialize capability containers + * Free some resources + * Added: MSVC 2008 solution + * Fixed: compiler defines + 2009-11-27 JFL Peripheral Solutions ji...@jf... * Correct the name of the mcf classes to remove 32, from Cmfc32DlgConfigure Modified: trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp 2010-02-06 00:07:25 UTC (rev 77) +++ trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp 2010-02-09 18:22:55 UTC (rev 78) @@ -1216,7 +1216,7 @@ else { // This is an unknown type so check to see if it is printable - for ( int i=0; i<StrLen-1; i++ ) + for ( int i=0; i<min(StrLen-1, 255); i++ ) { if ( !isprint( (int) pStrData[i] ) ) { @@ -1252,13 +1252,18 @@ } m_strExImageInfo +="\r\n"; } + } + for(int nIndex = 0; nIndex < num_Infos; nIndex++) + { // We have no more use for the item so free the one that are handles - if( pExtImgInfo->Info[nIndex].Item - && ( getTWTYsize(pExtImgInfo->Info[nIndex].ItemType)*pExtImgInfo->Info[nIndex].NumItems > sizeof(TW_UINT32) + if( pExtImgInfo->Info[nIndex].ReturnCode == TWRC_SUCCESS + && pExtImgInfo->Info[nIndex].Item + && ( getTWTYsize(pExtImgInfo->Info[nIndex].ItemType)*pExtImgInfo->Info[nIndex].NumItems > sizeof(TW_UINT32) || pExtImgInfo->Info[nIndex].ItemType == TWTY_HANDLE ) ) { _DSM_Free((TW_HANDLE)pExtImgInfo->Info[nIndex].Item); + pExtImgInfo->Info[nIndex].Item = 0; } } Modified: trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp 2010-02-06 00:07:25 UTC (rev 77) +++ trunk/TWAIN-Samples/Twain_App_sample01/visual_studio_mfc/mfcDlgConfigure.cpp 2010-02-09 18:22:55 UTC (rev 78) @@ -525,7 +525,7 @@ Item.iSubItem = 1; Item.pszText = oldString; m_ListCtrl_Caps.GetItem(&Item); - if(0 != strncmp(sItemValue.c_str(), oldString, 260)) + if(0 != strncmp(sItemValue.c_str(), oldString, 259)) { byChanged |= 1<<Item.iSubItem; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jim...@us...> - 2010-02-06 00:07:31
|
Revision: 77 http://twain-samples.svn.sourceforge.net/twain-samples/?rev=77&view=rev Author: jim0watters Date: 2010-02-06 00:07:25 +0000 (Sat, 06 Feb 2010) Log Message: ----------- Fix BarCodeTextLength to actual length Modified Paths: -------------- trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp Modified: trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp =================================================================== --- trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp 2010-02-05 20:23:38 UTC (rev 76) +++ trunk/TWAIN-Samples/Twain_App_sample01/src/TwainApp.cpp 2010-02-06 00:07:25 UTC (rev 77) @@ -1193,7 +1193,6 @@ { pStrLen = (TW_UINT32 *)_DSM_LockMemory((TW_HANDLE)pExtImgInfo->Info[nIndex-1].Item); StrLen = *pStrLen; - StrLen = min(StrLen, 256); } // Data source should not return multiple items in a single Info for BarCodeText // because we send a Info for each one it had for us but we will handle the case @@ -1205,7 +1204,6 @@ m_strExImageInfo +="\r\n\t"; pStrData += StrLen; StrLen = *++pStrLen; - //StrLen = min(StrLen, 256); } bool bNonPrintableData = FALSE; if( nIndex>1 @@ -1238,7 +1236,7 @@ } else { - SSTRNCPY(buff, 256, pStrData, StrLen); + SSTRNCPY(buff, 256, pStrData, min(StrLen, 255)); m_strExImageInfo += buff; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |