private void DG_PreviewKeyDown(object sender, KeyEventArgs e) { if (!isEditing) { if (Keyboard.IsKeyDown(Key.LeftCtrl)) { if (Keyboard.IsKeyDown(Key.Z)) { dgvm.SuppressEvents = true; dgvm.InvokeUndo(); dgvm.SuppressEvents = false; } else if (Keyboard.IsKeyDown(Key.F)) { dgvm.SuppressEvents = true; dgvm.InvokeRedo(); dgvm.SuppressEvents = false; } e.Handled = true; } } else if (e.Key == Key.Tab) { DG.CommitEdit(DataGridEditingUnit.Cell, true); } }
private void lstExpression_DoubleClick(object sender, EventArgs e) { uctxtExpression.Text = lstExpression.Text; PanelSearch.Visible = false; strPreserveSQl = ""; DG.Focus(); }
static internal int checkDelegate(IntPtr l,int p,out DG.Tweening.Core.DOGetter<System.Single> ua) { int op = extractFunction(l,p); if(LuaDLL.lua_isnil(l,p)) { ua=null; return op; } else if (LuaDLL.lua_isuserdata(l, p)==1) { ua = (DG.Tweening.Core.DOGetter<System.Single>)checkObj(l, p); return op; } LuaDelegate ld; checkType(l, -1, out ld); if(ld.d!=null) { ua = (DG.Tweening.Core.DOGetter<System.Single>)ld.d; return op; } LuaDLL.lua_pop(l,1); l = LuaState.get(l).L; ua = () => { int error = pushTry(l); ld.pcall(0, error); float ret; checkType(l,error+1,out ret); LuaDLL.lua_settop(l, error-1); return ret; }; ld.d=ua; return op; }
private void lstDivision_DoubleClick(object sender, EventArgs e) { lblTotalArea.Text = ""; lblTotalMpo.Text = ""; uctxtZone.Text = ""; txtDivision.Text = lstDivision.Text; strProjectionKey = txtMonthID.Text + txtDivision.Text.Trim(); if (ValidateFields() == false) { return; } if (m_action == 1) { LedgerAdd(txtDivision.Text); List <ProjectonMonthConfig> objZone = objExtra.getZoneFromDivsion(strComID, txtDivision.Text).ToList(); if (DG.RowCount > 1) { if (objZone.Count > 0) { lblTotalArea.Text = objZone[0].lngTotalArea.ToString(); lblTotalMpo.Text = objZone[0].lngTotalLedger.ToString(); uctxtZone.Text = objZone[0].strZone.ToString(); } } lstDivision.Visible = false; DG.Focus(); } }
private void uctxtItemName_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Up) { DG.Focus(); } if (e.KeyCode == Keys.Down) { DG.Focus(); } if (e.KeyCode == Keys.Return) { int i = Convert.ToInt16(DG.CurrentRow.Index); uctxtItemName.Text = DG.Rows[i].Cells[0].Value.ToString(); if (onAddAllButtonClicked != null) { onAddAllButtonClicked(GetSelectedItem(i), sender, e); } this.Dispose(); } if (e.KeyCode == Keys.C && e.Modifiers == Keys.Control) { frmStockItem objfrm = new frmStockItem(); objfrm.m_action = (int)Utility.ACTION_MODE_ENUM.ADD_MODE; objfrm.mSingleEntry = 1; objfrm.Show(); objfrm.MdiParent = this.MdiParent; } }
public ProductView() { InitializeComponent(); dG = new DG(dgProduct, snack, snackMessage); sB = new SB(snack, snackMessage); dataBaseQuery = new DataBaseQuery(snack, snackMessage); comboBoxAddStrength = new CB(cbStrength, snack, snackMessage); comboBoxEditStrength = new CB(cbEditStrength, snack, snackMessage); comboBoxAddStrength.Loader("Strength", "NameStrength"); comboBoxEditStrength.Loader("Strength", "NameStrength"); this.Loaded += delegate { dG.Loader("SELECT * FROM dbo.[ProductStrength]"); }; snackMessage.ActionClick += delegate { dG.CloseSnackbar(); }; }
private void LedgerAdd(string strDivision) { int introw = 0; DG.Rows.Clear(); ooLedgerName = objExtra.mFillMonthlyProjectionLedger(strComID, strDivision, txtMonthID.Text, 1).ToList(); if (ooLedgerName.Count > 0) { foreach (ProjectionSet ogrp in ooLedgerName) { DG.Rows.Add(); DG[0, introw].Value = ogrp.strAMFM; DG[1, introw].Value = ogrp.strMpoName; DG[2, introw].Value = ogrp.strMerzeName; DG.Columns[0].DefaultCellStyle.WrapMode = DataGridViewTriState.True; DG.Columns[2].DefaultCellStyle.WrapMode = DataGridViewTriState.True; DG.Rows[introw].Height = 43; introw += 1; } DG.AllowUserToAddRows = false; } List <ProjectionSet> ooaccVoub = objExtra.mFillDisplayMonthlyProjection(strComID, txtMonthID.Text, txtDivision.Text).ToList(); if (ooaccVoub.Count > 0) { for (int intCol = 3; intCol < DG.Columns.Count; intCol++) { string strHead1 = DG.Columns[intCol].HeaderText; foreach (ProjectionSet oCom in ooaccVoub) { string strHead = DG.Columns[oCom.intCol].HeaderText; if (strHead1 == oCom.strProjectionName) { DG[intCol, oCom.intRow].Value = oCom.dblToAmt; } } } for (int intCol = 3; intCol < DG.Columns.Count; intCol++) { string strHead1 = DG.Columns[intCol].HeaderText; string strCheck = objExtra.gCheckProjectionActive(strComID, DateTime.Now.ToString("dd-MM-yyyy")); if (strHead1 == strCheck) { DG.Columns[intCol].ReadOnly = true; DG.Columns[intCol + 1].ReadOnly = false; return; } else { DG.Columns[intCol].ReadOnly = true; } } } lstDivision.Visible = false; m_action = 2; DG.Focus(); }
private void lstExpression_DoubleClick(object sender, EventArgs e) { uctxtExpression.Text = lstExpression.Text; PanelSearch.Visible = false; mVoucherList(); DG.Focus(); }
private void btnCommission_Click(object sender, EventArgs e) { int introw = 0; this.DGCC.DefaultCellStyle.Font = new Font("verdana", 9); DGCC.Rows.Clear(); txtCashCollection.Text = Utility.gGetReceiptAmountOfParty(strComID, uctxtMedicalRep.Text, 1, 0, dteFDate.Text, dteToDate.Text).ToString(); txtVoucherColl.Text = Utility.gGetReceiptAmountVoucher(strComID, uctxtMedicalRep.Text, 3, 1, dteFDate.Text, dteToDate.Text).ToString(); txttotalAmt.Text = (Utility.Val(txtCashCollection.Text) + Utility.Val(txtVoucherColl.Text)).ToString(); List <AccountdGroup> oogrp = accms.mDisplayMonthTarget(strComID, dteFDate.Text, dteToDate.Text, uctxtMedicalRep.Text).ToList(); if (oogrp.Count > 0) { foreach (AccountdGroup ogrp in oogrp) { DGCC.Rows.Add(); if (uctxtMonthID.Text == ogrp.strMonthID) { DGCC[0, introw].Style.BackColor = Color.Red; uctxtAmount.Text = ogrp.dblAmount.ToString(); } DGCC[0, introw].Value = ogrp.strMonthID; DGCC[1, introw].Value = ogrp.dblAmount; introw += 1; } } mLoadGroupList(); DG.Focus(); SendKeys.Send("{tab}"); SendKeys.Send("{tab}"); }
static internal int checkDelegate(IntPtr l,int p,out DG.Tweening.Core.DOSetter<UnityEngine.Color> ua) { int op = extractFunction(l,p); if(LuaDLL.lua_isnil(l,p)) { ua=null; return op; } else if (LuaDLL.lua_isuserdata(l, p)==1) { ua = (DG.Tweening.Core.DOSetter<UnityEngine.Color>)checkObj(l, p); return op; } LuaDelegate ld; checkType(l, -1, out ld); if(ld.d!=null) { ua = (DG.Tweening.Core.DOSetter<UnityEngine.Color>)ld.d; return op; } LuaDLL.lua_pop(l,1); l = LuaState.get(l).L; ua = (UnityEngine.Color a1) => { int error = pushTry(l); pushValue(l,a1); ld.pcall(1, error); LuaDLL.lua_settop(l, error-1); }; ld.d=ua; return op; }
private void GetAllTests() { DG.Rows.Clear(); foreach (string testSet in CmbTests.Items) { if (testSet != "All") { string processName = WorkingDirectory(testSet); try { Assembly asm = Assembly.LoadFrom(processName); foreach (Type type in asm.GetTypes()) { if (type.IsPublic) { string[] row = new string[] { "False", type.FullName, "", "", "", "" }; DG.Rows.Add(row); } } } catch (Exception) { MessageBox.Show("Failed To Load Tests!\nCan't Find Tests Project: " + testSet, "ERROR"); } } } if (DG.RowCount > 0) { DG.Sort(DG.Columns[1], ListSortDirection.Ascending); DG.Rows[0].Selected = true; } }
public MockHttpClientFactory() { _studentServiceHttpClient = new Lazy <HttpClient>(() => { var dg = new DG( new StudentGeneratorFactory(), new DataSchemeMapperConfig { UseCamelCase = true }); //Creates DataScheme based on DgStudentCollection attributes. DataScheme scheme = dg.GetFromType <DgStudentCollection>(); //Generates json random data. string jsonData = dg.GenerateJson(scheme); var handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict); handlerMock.Protected() .Setup <Task <HttpResponseMessage> >( "SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>() ) .ReturnsAsync(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, //Responds with the generated data. Content = new StringContent(jsonData) }) .Verifiable(); return(new HttpClient(handlerMock.Object)); }); }
private void CmbTests_SelectedIndexChanged(object sender, EventArgs e) { if (CmbTests.SelectedItem.ToString().Equals("All")) { GetAllTests(); DG.Focus(); return; } string processName = WorkingDirectory(CmbTests.SelectedItem.ToString()); try { DG.Rows.Clear(); Assembly asm = Assembly.LoadFrom(processName); foreach (Type type in asm.GetTypes()) { if (type.IsPublic) { string[] row = new string[] { "False", type.FullName, "", "", "", "" }; DG.Rows.Add(row); } } DG.Sort(DG.Columns[1], ListSortDirection.Ascending); DG.Rows[0].Selected = true; } catch (Exception) { MessageBox.Show("Failed To Load Tests!\nCan't Find Tests Project: " + CmbTests.SelectedItem.ToString(), "ERROR"); } DG.Focus(); }
private void StripOpenFile_Click(object sender, EventArgs e) { DialogResult res = openFileDialog.ShowDialog(); if (res == DialogResult.OK) { DataFile.ReadXml(openFileDialog.FileName); CmbTests.Text = DataFile.Rows[0][5].ToString(); foreach (DataRow FileRow in DataFile.Rows) { for (int i = 0; i < DG.Rows.Count; i++) { if (DG.Rows[i].Cells[1].Value.ToString() == FileRow[0].ToString()) { DG.Rows[i].Cells[0].Value = "True"; DG.Rows[i].Cells[2].Value = FileRow[1].ToString(); DG.Rows[i].Cells[3].Value = FileRow[2].ToString(); DG.Rows[i].Cells[4].Value = FileRow[3].ToString(); DG.Rows[i].Cells[5].Value = FileRow[4].ToString(); } } } DG.EndEdit(); } }
/// <summary> /// 条码信息框回车 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void QRCode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyValue == 13) { wlCode = string.Empty; TextBox textBox = (TextBox)sender; if (!string.IsNullOrEmpty(textBox.Text)) { string textBoxValue = textBox.Text.Trim(); string[] textBoxArray = textBoxValue.Split(','); if (textBoxArray.Length == 5) { wlCode = textBoxArray[0]; string pici = textBoxArray[2]; Number.Text = textBoxArray[3].TrimEnd(new char[] { 'G', 'g' }).TrimEnd(new char[] { 'K', 'k' }); DataRow[] rows = tbl.Select("物料编码 = '" + wlCode + "'"); if (rows != null && rows.Length > 0) { rows[0]["入库数量"] = Number.Text; rows[0]["批次"] = pici; DG.Refresh(); } } } } }
private void dtefromDate_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) { DG.Focus(); } }
private void lstBranch_DoubleClick(object sender, EventArgs e) { uctxtbranchName.Text = lstBranch.Text; lstBranch.Visible = false; btnGenerate.PerformClick(); DG.Focus(); }
private double GetForce(T instr, long nt, long nb) { if (IsScheduled(instr)) { long cstep = Adapter.FDSIndex[instr]; if (cstep < nt || cstep > nb) { // This extension is required for proper support of multi-cycle operations: // If an instruction is already scheduled and the query interval does not // intersect with its c-step, return an "infinite" force to prevent predecessor/ // successor instructions being scheduled "too close" to the instruction. return(double.PositiveInfinity); } } object op = Adapter.IClass[instr]; double sum = 0.0; double h = nb - nt + 1; DG dg = _dg[op]; for (long cstep = nt; cstep <= nb; cstep++) { sum += dg[cstep] / h; } return(sum - _id[IndexOf(instr)]); }
public void setLblText() { try { if (chatRoomLbl.InvokeRequired) { DG d = new DG(setLblText); main.Invoke(d); } else { chatRoomLbl.Text = ""; for (int i = 0; i < MemberNums.Count; i++) { chatRoomLbl.Text += MemberNums[i].getfname(); if (i != MemberNums.Count - 1) { chatRoomLbl.Text += ", "; } } chatRoomLbl.Text += "|"; chatRoomLbl.Text += lastMessage + "|" + datetime.ToString("MM월 dd일 HH:mm"); } } catch { } }
/// <summary> /// Edit mode by Single click /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DG_GotFocus(object sender, RoutedEventArgs e) { Point newPoint = new Point(DG.Items.IndexOf(DG.CurrentItem), DG.CurrentColumn.DisplayIndex); if (e.OriginalSource.GetType() == typeof(DataGridCell)) { if (!newPoint.Equals(_SelectedCell)) { if (_CanEdit) { DG.BeginEdit(e); } else { _CanEdit = true; } _SelectedCell = newPoint; } } }
private void txtDivision_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) { if (lstDivision.Items.Count > 0) { txtDivision.Text = lstDivision.Text; strProjectionKey = txtMonthID.Text + txtDivision.Text.Trim(); if (ValidateFields() == false) { return; } lstDivision.Visible = false; List <ProjectonMonthConfig> objZone = objExtra.getZoneFromDivsion(strComID, txtDivision.Text).ToList(); if (objZone.Count > 0) { lblTotalArea.Text = objZone[0].lngTotalArea.ToString(); lblTotalMpo.Text = objZone[0].lngTotalLedger.ToString(); uctxtZone.Text = objZone[0].strZone.ToString(); } LedgerAdd(txtDivision.Text); DG.Focus(); } } if (e.KeyChar == (char)Keys.Back) { DG.Focus(); } }
//显示子节点 public List <DG> AddChildDept(int parentId) { strend += " "; List <BuMenBiao> depars = bm1.BMToList().Where(p => p.DuiYingFuJiID == parentId).OrderBy(p => p.ID).ToList(); if (depars.Count > 0) { foreach (BuMenBiao dept in depars) { DG A = new DG(); A.ID = dept.ID; A.BuMenMing = strend + dept.BuMenMingCheng; dg.Add(A); if (dept.ID > parentId) { if (isHasChildDept(dept.ID)) { AddChildDept(dept.ID); strend = strend.Substring(0, strend.LastIndexOf(" ")); } } else if (dept.ID <= parentId) { dg[0].BuMenMing = dept.BuMenMingCheng; } } } return(dg); }
private DataSet importExcelFile(string fileName) { Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); System.Data.DataSet ds = new System.Data.DataSet(); Workbook wkBook = excelApp.Workbooks.Open(fileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); ds.DataSetName = wkBook.Name; foreach (Worksheet ws in wkBook.Worksheets) { ds.Merge(importExcelSheet(ws)); ds.AcceptChanges(); } System.Windows.Forms.DataGridTableStyle tstyle = new System.Windows.Forms.DataGridTableStyle(); tstyle.AllowSorting = true; tstyle.RowHeaderWidth = 0; DG.TableStyles.Add(tstyle); DG.NavigateBack(); DG.NavigateBack(); DG.DataSource = ds; excelApp.Quit(); releaseObject(excelApp); releaseObject(wkBook); return(ds); }
private void lstLedgerName_DoubleClick(object sender, EventArgs e) { uctxtLedgerName.Text = lstLedgerName.Text; mAdditem(lstLedgerName.SelectedValue.ToString(), uctxtLedgerName.Text); lstLedgerName.Visible = false; DG.Focus(); }
public void COLOR_FILAS() { int alto = 0; int bajo = 0; int medio = 0; foreach (DataGridViewRow row in DG.Rows) { if (Convert.ToDecimal(row.Cells["VALOR_TOTAL"].Value.ToString()) <= 30) { row.DefaultCellStyle.BackColor = Color.Green; bajo++; } else if (Convert.ToDecimal(row.Cells["VALOR_TOTAL"].Value.ToString()) > 30 && Convert.ToDecimal(row.Cells["VALOR_TOTAL"].Value.ToString()) <= 60) { row.DefaultCellStyle.BackColor = Color.Orange; medio++; } else { row.DefaultCellStyle.BackColor = Color.Red; alto++; } } lbl_alto.Text = alto.ToString(); lbl_bajo.Text = bajo.ToString(); lbl_medio.Text = medio.ToString(); DG.ClearSelection(); }
public static async Task Test() { await Task.Run(() => { var operation = new DG(); operation.Test(); }); }
public void M() { Instance += comp.Method2; Instance(1, 2); //var a = (DG[])Instance.GetInvocationList(); //a[0].Invoke(1, 2); test(0, 1); }
private void DG_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) { if (isEditing) { isEditing = false; DG.CommitEdit(DataGridEditingUnit.Row, true); } }
public DirectorEmployeeView() { InitializeComponent(); dG = new DG(dgEmployee, snack, snackMessage); snackMessage.ActionClick += delegate { dG.CloseSnackbar(); }; }
private void Disp() { DG.DataSource = null; DG.DataBind(); SqlConnection Cn = new SqlConnection(Ws.Con); Cn.Open(); SqlCommand Cmd = default(SqlCommand); SqlDataReader dr = default(SqlDataReader); DataTable dt = new DataTable(); DataRow row = null; dt.Columns.Add("a"); dt.Columns.Add("b"); dt.Columns.Add("c"); dt.Columns.Add("d"); S = "Select AlID,Subj,Alert,DT From Alert Where Active=1 And StaffMail=@M1"; Cmd = new SqlCommand(S, Cn); Cmd.Parameters.Add(new SqlParameter("@M1", LblDisp.Text)); dr = Cmd.ExecuteReader(); while (dr.Read()) { row = dt.NewRow(); row[0] = dr["AlID"].ToString(); row[1] = dr["Subj"].ToString(); row[2] = dr["Alert"].ToString(); row[3] = dr["DT"].ToString(); dt.Rows.Add(row); } dr.Close(); Cmd.Dispose(); DG.DataSource = dt; DG.DataBind(); int Flg = 0; int i = 0; String Msg = ""; for (i = 0; i <= dt.Rows.Count - 1; i++) { Msg = dt.Rows[i][2].ToString(); if (Msg.Length >= 50) { Msg = Msg.Substring(0, 49).ToString() + "..."; } DG.Rows[i].Cells[0].Text = dt.Rows[i][0].ToString(); DG.Rows[i].Cells[1].Text = dt.Rows[i][1].ToString(); DG.Rows[i].Cells[2].Text = Msg; DG.Rows[i].Cells[3].Text = dt.Rows[i][3].ToString(); } DG.Columns[0].Visible = false; Cn.Close(); }
static void Main(string[] args) { DG d1 = newDog; d1 += newAn; Dog d = new Dog(); Animal c = new Animal(); d1(d); }
private void Button_Click(object sender, RoutedEventArgs e) { var value = new DemoModel(); value.Value = $"New item {value.Id}"; Models.MainWindowModel.TestModel.ComboBoxItems.Add(value); DG.SelectedItem = value; DG.ScrollIntoView(value); DG.Focus(); }
static internal int checkDelegate(IntPtr l,int p,out DG.Tweening.EaseFunction ua) { int op = extractFunction(l,p); if(LuaDLL.lua_isnil(l,p)) { ua=null; return op; } else if (LuaDLL.lua_isuserdata(l, p)==1) { ua = (DG.Tweening.EaseFunction)checkObj(l, p); return op; } LuaDelegate ld; checkType(l, -1, out ld); if(ld.d!=null) { ua = (DG.Tweening.EaseFunction)ld.d; return op; } LuaDLL.lua_pop(l,1); l = LuaState.get(l).L; ua = (float a1,float a2,float a3,float a4) => { int error = pushTry(l); pushValue(l,a1); pushValue(l,a2); pushValue(l,a3); pushValue(l,a4); ld.pcall(4, error); float ret; checkType(l,error+1,out ret); LuaDLL.lua_settop(l, error-1); return ret; }; ld.d=ua; return op; }
private static extern UInt16 Linux64DsmEntryImagenativexfer ( ref TW_IDENTITY origin, ref TW_IDENTITY dest, DG dg, DAT dat, MSG msg, ref IntPtr intptrBitmap );
private static extern UInt16 Linux64DsmEntryJpegcompression ( ref TW_IDENTITY origin, ref TW_IDENTITY dest, DG dg, DAT dat, MSG msg, ref TW_JPEGCOMPRESSION twjpegcompression );
void EmitDOTweenRotationFor(Transform t, Vector3 to, float twDuration, DG.Tweening.Ease ease) { t.rotation = Quaternion.identity; t.DORotate(to, twDuration).SetEase(ease).OnComplete(()=> EmitDOTweenRotationFor(t, to, twDuration, ease)); }
private static extern UInt16 MacosxDsmEntryJpegcompression ( ref TW_IDENTITY_MACOSX origin, ref TW_IDENTITY_MACOSX dest, DG dg, DAT dat, MSG msg, ref TW_JPEGCOMPRESSION twjpegcompression );
private static extern UInt16 Linux64DsmEntryPalette8 ( ref TW_IDENTITY origin, ref TW_IDENTITY dest, DG dg, DAT dat, MSG msg, ref TW_PALETTE8 twpalette8 );
public STS DatImagememxfer(DG a_dg, MSG a_msg, ref TW_IMAGEMEMXFER a_twimagememxfer) { STS sts; // Submit the work to the TWAIN thread... if (this.m_runinuithreaddelegate == null) { if ((m_threadTwain != null) && (m_threadTwain.ManagedThreadId != Thread.CurrentThread.ManagedThreadId)) { lock (m_lockTwain) { // Set our command variables... ThreadData threaddata = default(ThreadData); threaddata.twimagememxfer = a_twimagememxfer; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.IMAGEMEMXFER; m_lIndexDatImagememxfer = m_twaincommand.Submit(threaddata); // Submit the command and wait for the reply... CallerToThreadSet(); ThreadToCallerWaitOne(); // Return the result... a_twimagememxfer = m_twaincommand.Get(m_lIndexDatImagememxfer).twimagememxfer; sts = m_twaincommand.Get(m_lIndexDatImagememxfer).sts; // Clear the command variables... m_twaincommand.Delete(m_lIndexDatImagememxfer); } return (sts); } } // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.IMAGEMEMXFER.ToString(), a_msg.ToString(), ImagememferToCsv(a_twimagememxfer)); } // Windows... if (ms_platform == Platform.WINDOWS) { // Issue the command... try { if (this.m_runinuithreaddelegate == null) { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryImagememxfer(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.IMAGEMEMXFER, a_msg, ref a_twimagememxfer); } else { sts = (STS)WindowsTwaindsmDsmEntryImagememxfer(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.IMAGEMEMXFER, a_msg, ref a_twimagememxfer); } } else { if (m_blUseLegacyDSM) { lock (m_lockTwain) { ThreadData threaddata = default(ThreadData); threaddata.twimagememxfer = a_twimagememxfer; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.IMAGEMEMXFER; m_lIndexDatImagememxfer = m_twaincommand.Submit(threaddata); RunInUiThread(DatImagememxferWindowsTwain32); a_twimagememxfer = m_twaincommand.Get(m_lIndexDatImagememxfer).twimagememxfer; sts = m_twaincommand.Get(m_lIndexDatImagememxfer).sts; m_twaincommand.Delete(m_lIndexDatImagememxfer); } } else { lock (m_lockTwain) { ThreadData threaddata = default(ThreadData); threaddata.twimagememxfer = a_twimagememxfer; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.IMAGEMEMXFER; m_lIndexDatImagememxfer = m_twaincommand.Submit(threaddata); RunInUiThread(DatImagememxferWindowsTwainDsm); a_twimagememxfer = m_twaincommand.Get(m_lIndexDatImagememxfer).twimagememxfer; sts = m_twaincommand.Get(m_lIndexDatImagememxfer).sts; m_twaincommand.Delete(m_lIndexDatImagememxfer); } } } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Linux... else if (ms_platform == Platform.LINUX) { // Issue the command... try { if (TWAIN.GetMachineWordBitSize() == 32) { sts = (STS)LinuxDsmEntryImagememxfer(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.IMAGEMEMXFER, a_msg, ref a_twimagememxfer); } else { TW_IMAGEMEMXFER_LINUX64 twimagememxferlinux64 = default(TW_IMAGEMEMXFER_LINUX64); twimagememxferlinux64.BytesPerRow = a_twimagememxfer.BytesPerRow; twimagememxferlinux64.BytesWritten = a_twimagememxfer.BytesWritten; twimagememxferlinux64.Columns = a_twimagememxfer.Columns; twimagememxferlinux64.Compression = a_twimagememxfer.Compression; twimagememxferlinux64.MemoryFlags = a_twimagememxfer.Memory.Flags; twimagememxferlinux64.MemoryLength = a_twimagememxfer.Memory.Length; twimagememxferlinux64.MemoryTheMem = a_twimagememxfer.Memory.TheMem; twimagememxferlinux64.Rows = a_twimagememxfer.Rows; twimagememxferlinux64.XOffset = a_twimagememxfer.XOffset; twimagememxferlinux64.YOffset = a_twimagememxfer.YOffset; sts = (STS)Linux64DsmEntryImagememxfer(ref m_twidentityApp, ref m_twidentityDs, a_dg, DAT.IMAGEMEMXFER, a_msg, ref twimagememxferlinux64); a_twimagememxfer.BytesPerRow = (uint)twimagememxferlinux64.BytesPerRow; a_twimagememxfer.BytesWritten = (uint)twimagememxferlinux64.BytesWritten; a_twimagememxfer.Columns = (uint)twimagememxferlinux64.Columns; a_twimagememxfer.Compression = (ushort)twimagememxferlinux64.Compression; a_twimagememxfer.Memory.Flags = (uint)twimagememxferlinux64.MemoryFlags; a_twimagememxfer.Memory.Length = (uint)twimagememxferlinux64.MemoryLength; a_twimagememxfer.Memory.TheMem = twimagememxferlinux64.MemoryTheMem; a_twimagememxfer.Rows = (uint)twimagememxferlinux64.Rows; a_twimagememxfer.XOffset = (uint)twimagememxferlinux64.XOffset; a_twimagememxfer.YOffset = (uint)twimagememxferlinux64.YOffset; } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { // Issue the command... try { TW_IMAGEMEMXFER_MACOSX twimagememxfermacosx = default(TW_IMAGEMEMXFER_MACOSX); twimagememxfermacosx.BytesPerRow = a_twimagememxfer.BytesPerRow; twimagememxfermacosx.BytesWritten = a_twimagememxfer.BytesWritten; twimagememxfermacosx.Columns = a_twimagememxfer.Columns; twimagememxfermacosx.Compression = a_twimagememxfer.Compression; twimagememxfermacosx.Memory.Flags = a_twimagememxfer.Memory.Flags; twimagememxfermacosx.Memory.Length = a_twimagememxfer.Memory.Length; twimagememxfermacosx.Memory.TheMem = a_twimagememxfer.Memory.TheMem; twimagememxfermacosx.Rows = a_twimagememxfer.Rows; twimagememxfermacosx.XOffset = a_twimagememxfer.XOffset; twimagememxfermacosx.YOffset = a_twimagememxfer.YOffset; sts = (STS)MacosxDsmEntryImagememxfer(ref m_twidentitymacosxApp, ref m_twidentitymacosxDs, a_dg, DAT.IMAGEMEMXFER, a_msg, ref twimagememxfermacosx); a_twimagememxfer.BytesPerRow = twimagememxfermacosx.BytesPerRow; a_twimagememxfer.BytesWritten = twimagememxfermacosx.BytesWritten; a_twimagememxfer.Columns = twimagememxfermacosx.Columns; a_twimagememxfer.Compression = (ushort)twimagememxfermacosx.Compression; a_twimagememxfer.Memory.Flags = twimagememxfermacosx.Memory.Flags; a_twimagememxfer.Memory.Length = twimagememxfermacosx.Memory.Length; a_twimagememxfer.Memory.TheMem = twimagememxfermacosx.Memory.TheMem; a_twimagememxfer.Rows = twimagememxfermacosx.Rows; a_twimagememxfer.XOffset = twimagememxfermacosx.XOffset; a_twimagememxfer.YOffset = twimagememxfermacosx.YOffset; } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Uh-oh... else { Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), ImagememferToCsv(a_twimagememxfer)); } // If we had a successful transfer, then change state... if (sts == STS.XFERDONE) { m_state = STATE.S7; } // All done... return (AutoDatStatus(sts)); }
/// <summary> /// Get/Set image info information... /// </summary> /// <param name="a_dg">Data group</param> /// <param name="a_msg">Operation</param> /// <param name="a_twimageinfo">IMAGEINFO structure</param> /// <returns>TWAIN status</returns> public STS DatImageinfo(DG a_dg, MSG a_msg, ref TW_IMAGEINFO a_twimageinfo) { STS sts; // Submit the work to the TWAIN thread... if ((m_threadTwain != null) && (m_threadTwain.ManagedThreadId != Thread.CurrentThread.ManagedThreadId)) { lock (m_lockTwain) { // Set our command variables... ThreadData threaddata = default(ThreadData); threaddata.twimageinfo = a_twimageinfo; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.IMAGEINFO; long lIndex = m_twaincommand.Submit(threaddata); // Submit the command and wait for the reply... CallerToThreadSet(); ThreadToCallerWaitOne(); // Return the result... a_twimageinfo = m_twaincommand.Get(lIndex).twimageinfo; sts = m_twaincommand.Get(lIndex).sts; // Clear the command variables... m_twaincommand.Delete(lIndex); } return (sts); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.IMAGEINFO.ToString(), a_msg.ToString(), ""); } // Windows... if (ms_platform == Platform.WINDOWS) { // Issue the command... try { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryImageinfo(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.IMAGEINFO, a_msg, ref a_twimageinfo); } else { sts = (STS)WindowsTwaindsmDsmEntryImageinfo(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.IMAGEINFO, a_msg, ref a_twimageinfo); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Linux... else if (ms_platform == Platform.LINUX) { // Issue the command... try { if (TWAIN.GetMachineWordBitSize() == 32) { sts = (STS)LinuxDsmEntryImageinfo(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.IMAGEINFO, a_msg, ref a_twimageinfo); } else { TW_IMAGEINFO_LINUX64 twimageinfolinux64 = default(TW_IMAGEINFO_LINUX64); sts = (STS)Linux64DsmEntryImageinfo(ref m_twidentityApp, ref m_twidentityDs, a_dg, DAT.IMAGEINFO, a_msg, ref twimageinfolinux64); a_twimageinfo.XResolution = twimageinfolinux64.XResolution; a_twimageinfo.YResolution = twimageinfolinux64.YResolution; a_twimageinfo.ImageWidth = (int)twimageinfolinux64.ImageWidth; a_twimageinfo.ImageLength = (int)twimageinfolinux64.ImageLength; a_twimageinfo.SamplesPerPixel = twimageinfolinux64.SamplesPerPixel; a_twimageinfo.BitsPerSample_0 = twimageinfolinux64.BitsPerSample_0; a_twimageinfo.BitsPerSample_1 = twimageinfolinux64.BitsPerSample_1; a_twimageinfo.BitsPerSample_2 = twimageinfolinux64.BitsPerSample_2; a_twimageinfo.BitsPerSample_3 = twimageinfolinux64.BitsPerSample_3; a_twimageinfo.BitsPerSample_4 = twimageinfolinux64.BitsPerSample_4; a_twimageinfo.BitsPerSample_5 = twimageinfolinux64.BitsPerSample_5; a_twimageinfo.BitsPerSample_6 = twimageinfolinux64.BitsPerSample_6; a_twimageinfo.BitsPerSample_7 = twimageinfolinux64.BitsPerSample_7; a_twimageinfo.BitsPerPixel = twimageinfolinux64.BitsPerPixel; a_twimageinfo.Planar = twimageinfolinux64.Planar; a_twimageinfo.PixelType = twimageinfolinux64.PixelType; a_twimageinfo.Compression = twimageinfolinux64.Compression; } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { // Issue the command... try { sts = (STS)MacosxDsmEntryImageinfo(ref m_twidentitymacosxApp, ref m_twidentitymacosxDs, a_dg, DAT.IMAGEINFO, a_msg, ref a_twimageinfo); } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Uh-oh... else { Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), ImageinfoToCsv(a_twimageinfo)); } // All done... return (AutoDatStatus(sts)); }
/// <summary> /// Issue identity commands... /// </summary> /// <param name="a_dg">Data group</param> /// <param name="a_msg">Operation</param> /// <param name="a_twidentity">IDENTITY structure</param> /// <returns>TWAIN status</returns> public STS DatIdentity(DG a_dg, MSG a_msg, ref TW_IDENTITY a_twidentity) { STS sts; // Submit the work to the TWAIN thread... if ((m_threadTwain != null) && (m_threadTwain.ManagedThreadId != Thread.CurrentThread.ManagedThreadId)) { lock (m_lockTwain) { // Set our command variables... ThreadData threaddata = default(ThreadData); threaddata.twidentity = a_twidentity; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.IDENTITY; long lIndex = m_twaincommand.Submit(threaddata); // Submit the command and wait for the reply... CallerToThreadSet(); ThreadToCallerWaitOne(); // Return the result... a_twidentity = m_twaincommand.Get(lIndex).twidentity; sts = m_twaincommand.Get(lIndex).sts; // Clear the command variables... m_twaincommand.Delete(lIndex); } return (sts); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.IDENTITY.ToString(), a_msg.ToString(), ((a_msg == MSG.OPENDS) ? IdentityToCsv(a_twidentity) : "")); } // Windows... if (ms_platform == Platform.WINDOWS) { TW_IDENTITY_LEGACY twidentitylegacy = TwidentityToTwidentitylegacy(a_twidentity); // Issue the command... try { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryIdentity(ref m_twidentitylegacyApp, IntPtr.Zero, a_dg, DAT.IDENTITY, a_msg, ref twidentitylegacy); } else { sts = (STS)WindowsTwaindsmDsmEntryIdentity(ref m_twidentitylegacyApp, IntPtr.Zero, a_dg, DAT.IDENTITY, a_msg, ref twidentitylegacy); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } a_twidentity = TwidentitylegacyToTwidentity(twidentitylegacy); } // Linux... else if (ms_platform == Platform.LINUX) { // Issue the command... try { if (GetMachineWordBitSize() == 32) { TW_IDENTITY_LEGACY twidentitylegacy = TwidentityToTwidentitylegacy(a_twidentity); sts = (STS)LinuxDsmEntryIdentity(ref m_twidentitylegacyApp, IntPtr.Zero, a_dg, DAT.IDENTITY, a_msg, ref twidentitylegacy); a_twidentity = TwidentitylegacyToTwidentity(twidentitylegacy); } else { sts = (STS)Linux64DsmEntryIdentity(ref m_twidentityApp, IntPtr.Zero, a_dg, DAT.IDENTITY, a_msg, ref a_twidentity); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { TW_IDENTITY_MACOSX twidentitymacosx = TwidentityToTwidentitymacosx(a_twidentity); // Issue the command... try { sts = (STS)MacosxDsmEntryIdentity(ref m_twidentitymacosxApp, IntPtr.Zero, a_dg, DAT.IDENTITY, a_msg, ref twidentitymacosx); } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } a_twidentity = TwidentitymacosxToTwidentity(twidentitymacosx); } // Uh-oh... else { Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), IdentityToCsv(a_twidentity)); } // If we opened, go to state 4... if (a_msg == MSG.OPENDS) { if (sts == STS.SUCCESS) { // Change our state, and record the identity we picked... m_state = STATE.S4; m_twidentityDs = a_twidentity; m_twidentitylegacyDs = TwidentityToTwidentitylegacy(m_twidentityDs); m_twidentitymacosxDs = TwidentityToTwidentitymacosx(m_twidentityDs); // Register for callbacks... // Windows... if (ms_platform == Platform.WINDOWS) { if (m_blUseCallbacks) { TW_CALLBACK twcallback = new TW_CALLBACK(); twcallback.CallBackProc = Marshal.GetFunctionPointerForDelegate(m_windowsdsmentrycontrolcallbackdelegate); // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.CALLBACK.ToString(), a_msg.ToString(), CallbackToCsv(twcallback)); } // Issue the command... try { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryCallback(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, DG.CONTROL, DAT.CALLBACK, MSG.REGISTER_CALLBACK, ref twcallback); } else { sts = (STS)WindowsTwaindsmDsmEntryCallback(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, DG.CONTROL, DAT.CALLBACK, MSG.REGISTER_CALLBACK, ref twcallback); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), ""); } } } // Linux... else if (ms_platform == Platform.LINUX) { TW_CALLBACK twcallback = new TW_CALLBACK(); twcallback.CallBackProc = Marshal.GetFunctionPointerForDelegate(m_linuxdsmentrycontrolcallbackdelegate); // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.CALLBACK.ToString(), MSG.REGISTER_CALLBACK.ToString(), CallbackToCsv(twcallback)); } // Issue the command... try { if (TWAIN.GetMachineWordBitSize() == 32) { sts = (STS)LinuxDsmEntryCallback(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, DG.CONTROL, DAT.CALLBACK, MSG.REGISTER_CALLBACK, ref twcallback); } else { sts = (STS)Linux64DsmEntryCallback(ref m_twidentityApp, ref m_twidentityDs, DG.CONTROL, DAT.CALLBACK, MSG.REGISTER_CALLBACK, ref twcallback); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), ""); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { IntPtr intptr = IntPtr.Zero; TW_CALLBACK twcallback = new TW_CALLBACK(); twcallback.CallBackProc = Marshal.GetFunctionPointerForDelegate(m_macosxdsmentrycontrolcallbackdelegate); // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.CALLBACK.ToString(), a_msg.ToString(), CallbackToCsv(twcallback)); } // Issue the command... try { sts = (STS)MacosxDsmEntryCallback(ref m_twidentitymacosxApp, intptr, DG.CONTROL, DAT.CALLBACK, MSG.REGISTER_CALLBACK, ref twcallback); } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), ""); } } } } // If we closed, go to state 3... else if (a_msg == MSG.CLOSEDS) { if (sts == STS.SUCCESS) { m_state = STATE.S3; } } // All done... return (AutoDatStatus(sts)); }
/// <summary> /// Issue event commands... /// </summary> /// <param name="a_dg">Data group</param> /// <param name="a_msg">Operation</param> /// <param name="a_twevent">EVENT structure</param> /// <returns>TWAIN status</returns> public STS DatEvent(DG a_dg, MSG a_msg, ref TW_EVENT a_twevent) { STS sts; // Log it... if (Log.GetLevel() > 1) { Log.LogSendBefore(a_dg.ToString(), DAT.EVENT.ToString(), a_msg.ToString(), ""); } // Windows... if (ms_platform == Platform.WINDOWS) { // Issue the command... try { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryEvent(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.EVENT, a_msg, ref a_twevent); } else { sts = (STS)WindowsTwaindsmDsmEntryEvent(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.EVENT, a_msg, ref a_twevent); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Linux... else if (ms_platform == Platform.LINUX) { // Issue the command... try { if (GetMachineWordBitSize() == 32) { sts = (STS)LinuxDsmEntryEvent(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.EVENT, a_msg, ref a_twevent); } else { sts = (STS)Linux64DsmEntryEvent(ref m_twidentityApp, ref m_twidentityDs, a_dg, DAT.EVENT, a_msg, ref a_twevent); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { // Issue the command... try { sts = (STS)MacosxDsmEntryEvent(ref m_twidentitymacosxApp, ref m_twidentitymacosxDs, a_dg, DAT.EVENT, a_msg, ref a_twevent); } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Uh-oh... else { Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 1) { Log.LogSendAfter(sts.ToString(), ""); } // Check the event for anything interesting... if ((sts == STS.DSEVENT) || (sts == STS.NOTDSEVENT)) { ProcessEvent((MSG)a_twevent.TWMessage); } // All done... return (AutoDatStatus(sts)); }
/// <summary> /// Get the entrypoint data... /// </summary> /// <param name="a_dg">Data group</param> /// <param name="a_msg">Operation</param> /// <param name="a_twentrypoint">ENTRYPOINT structure</param> /// <returns>TWAIN status</returns> public STS DatEntrypoint(DG a_dg, MSG a_msg, ref TW_ENTRYPOINT a_twentrypoint) { STS sts; // Submit the work to the TWAIN thread... if ((m_threadTwain != null) && (m_threadTwain.ManagedThreadId != Thread.CurrentThread.ManagedThreadId)) { lock (m_lockTwain) { // Set our command variables... ThreadData threaddata = default(ThreadData); threaddata.twentrypoint = a_twentrypoint; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.ENTRYPOINT; long lIndex = m_twaincommand.Submit(threaddata); // Submit the command and wait for the reply... CallerToThreadSet(); ThreadToCallerWaitOne(); // Return the result... a_twentrypoint = m_twaincommand.Get(lIndex).twentrypoint; sts = m_twaincommand.Get(lIndex).sts; // Clear the command variables... m_twaincommand.Delete(lIndex); } return (sts); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.ENTRYPOINT.ToString(), a_msg.ToString(), EntrypointToCsv(a_twentrypoint)); } // Windows... if (ms_platform == Platform.WINDOWS) { // Issue the command... try { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryEntrypoint(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.ENTRYPOINT, a_msg, ref a_twentrypoint); } else { sts = (STS)WindowsTwaindsmDsmEntryEntrypoint(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.ENTRYPOINT, a_msg, ref a_twentrypoint); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Linux... else if (ms_platform == Platform.LINUX) { // Issue the command... try { if (GetMachineWordBitSize() == 32) { sts = (STS)LinuxDsmEntryEntrypoint(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.ENTRYPOINT, a_msg, ref a_twentrypoint); } else { sts = (STS)Linux64DsmEntryEntrypoint(ref m_twidentityApp, ref m_twidentityDs, a_dg, DAT.ENTRYPOINT, a_msg, ref a_twentrypoint); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { // Issue the command... try { sts = (STS)MacosxDsmEntryEntrypoint(ref m_twidentitymacosxApp, ref m_twidentitymacosxDs, a_dg, DAT.ENTRYPOINT, a_msg, ref a_twentrypoint); } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Uh-oh... else { Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // If we were successful, then squirrel away the data... if (sts == TWAIN.STS.SUCCESS) { m_twentrypointdelegates = default(TWAIN.TW_ENTRYPOINT_DELEGATES); m_twentrypointdelegates.Size = a_twentrypoint.Size; m_twentrypointdelegates.DSM_Entry = a_twentrypoint.DSM_Entry; if (a_twentrypoint.DSM_MemAllocate != null) { m_twentrypointdelegates.DSM_MemAllocate = (TWAIN.DSM_MEMALLOC)Marshal.GetDelegateForFunctionPointer(a_twentrypoint.DSM_MemAllocate,typeof(TWAIN.DSM_MEMALLOC)); } if (a_twentrypoint.DSM_MemFree != null) { m_twentrypointdelegates.DSM_MemFree = (TWAIN.DSM_MEMFREE)Marshal.GetDelegateForFunctionPointer(a_twentrypoint.DSM_MemFree, typeof(TWAIN.DSM_MEMFREE)); } if (a_twentrypoint.DSM_MemLock != null) { m_twentrypointdelegates.DSM_MemLock = (TWAIN.DSM_MEMLOCK)Marshal.GetDelegateForFunctionPointer(a_twentrypoint.DSM_MemLock, typeof(TWAIN.DSM_MEMLOCK)); } if (a_twentrypoint.DSM_MemUnlock != null) { m_twentrypointdelegates.DSM_MemUnlock = (TWAIN.DSM_MEMUNLOCK)Marshal.GetDelegateForFunctionPointer(a_twentrypoint.DSM_MemUnlock, typeof(TWAIN.DSM_MEMUNLOCK)); } } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), EntrypointToCsv(a_twentrypoint)); } // All done... return (AutoDatStatus(sts)); }
private static extern UInt16 Linux64DsmEntryRgbresponse ( ref TW_IDENTITY origin, ref TW_IDENTITY dest, DG dg, DAT dat, MSG msg, ref TW_RGBRESPONSE twrgbresponse );
private static extern UInt16 MacosxDsmEntryPalette8 ( ref TW_IDENTITY_MACOSX origin, ref TW_IDENTITY_MACOSX dest, DG dg, DAT dat, MSG msg, ref TW_PALETTE8 twpalette8 );
public STS DatImagenativexfer(DG a_dg, MSG a_msg, ref Bitmap a_bitmap) { STS sts; IntPtr intptrBitmap = IntPtr.Zero; // Submit the work to the TWAIN thread... if (this.m_runinuithreaddelegate == null) { if ((m_threadTwain != null) && (m_threadTwain.ManagedThreadId != Thread.CurrentThread.ManagedThreadId)) { lock (m_lockTwain) { // Set our command variables... ThreadData threaddata = default(ThreadData); threaddata.bitmap = a_bitmap; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.IMAGENATIVEXFER; long lIndex = m_twaincommand.Submit(threaddata); // Submit the command and wait for the reply... CallerToThreadSet(); ThreadToCallerWaitOne(); // Return the result... a_bitmap = m_twaincommand.Get(lIndex).bitmap; sts = m_twaincommand.Get(lIndex).sts; // Clear the command variables... m_twaincommand.Delete(lIndex); } return (sts); } } // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.IMAGENATIVEXFER.ToString(), a_msg.ToString(), ""); } // Windows... if (ms_platform == Platform.WINDOWS) { // Issue the command... try { if (m_blUseLegacyDSM) { } else { } if (this.m_runinuithreaddelegate == null) { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryImagenativexfer(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.IMAGENATIVEXFER, a_msg, ref intptrBitmap); } else { sts = (STS)WindowsTwaindsmDsmEntryImagenativexfer(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.IMAGENATIVEXFER, a_msg, ref intptrBitmap); } } else { if (m_blUseLegacyDSM) { lock (m_lockTwain) { ThreadData threaddata = default(ThreadData); threaddata.intptrBitmap = IntPtr.Zero; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.IMAGENATIVEXFER; m_lIndexDatImagenativexfer = m_twaincommand.Submit(threaddata); RunInUiThread(DatImagenativexferWindowsTwain32); intptrBitmap = m_twaincommand.Get(m_lIndexDatImagenativexfer).intptrBitmap; sts = m_twaincommand.Get(m_lIndexDatImagenativexfer).sts; m_twaincommand.Delete(m_lIndexDatImagenativexfer); } } else { lock (m_lockTwain) { ThreadData threaddata = default(ThreadData); threaddata.intptrBitmap = IntPtr.Zero; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.IMAGENATIVEXFER; m_lIndexDatImagenativexfer = m_twaincommand.Submit(threaddata); RunInUiThread(DatImagenativexferWindowsTwainDsm); intptrBitmap = m_twaincommand.Get(m_lIndexDatImagenativexfer).intptrBitmap; sts = m_twaincommand.Get(m_lIndexDatImagenativexfer).sts; m_twaincommand.Delete(m_lIndexDatImagenativexfer); } } } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Linux... else if (ms_platform == Platform.LINUX) { // Issue the command... try { if (TWAIN.GetMachineWordBitSize() == 32) { sts = (STS)LinuxDsmEntryImagenativexfer(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.IMAGENATIVEXFER, a_msg, ref intptrBitmap); } else { sts = (STS)Linux64DsmEntryImagenativexfer(ref m_twidentityApp, ref m_twidentityDs, a_dg, DAT.IMAGENATIVEXFER, a_msg, ref intptrBitmap); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { // Issue the command... try { intptrBitmap = IntPtr.Zero; sts = (STS)MacosxDsmEntryImagenativexfer(ref m_twidentitymacosxApp, ref m_twidentitymacosxDs, a_dg, DAT.IMAGENATIVEXFER, a_msg, ref intptrBitmap); } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Uh-oh... else { Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), ""); } // If we had a successful transfer, then convert the data... if (sts == STS.XFERDONE) { // Bump our state... m_state = STATE.S7; // Turn the DIB into a Bitmap object... a_bitmap = NativeToBitmap(ms_platform, intptrBitmap); // We're done with the data we got from the driver... Marshal.FreeHGlobal(intptrBitmap); intptrBitmap = IntPtr.Zero; } // All done... return (AutoDatStatus(sts)); }
private static extern UInt16 WindowsTwaindsmDsmEntryPalette8 ( ref TW_IDENTITY_LEGACY origin, ref TW_IDENTITY_LEGACY dest, DG dg, DAT dat, MSG msg, ref TW_PALETTE8 twpalette8 );
/// <summary> /// Issue DSM commands... /// </summary> /// <param name="a_dg">Data group</param> /// <param name="a_msg">Operation</param> /// <param name="a_intptrHwnd">PARENT structure</param> /// <returns>TWAIN status</returns> public STS DatParent(DG a_dg, MSG a_msg, ref IntPtr a_intptrHwnd) { STS sts; // Submit the work to the TWAIN thread... if ((m_threadTwain != null) && (m_threadTwain.ManagedThreadId != Thread.CurrentThread.ManagedThreadId)) { lock (m_lockTwain) { // Set our command variables... ThreadData threaddata = default(ThreadData); threaddata.intptrHwnd = a_intptrHwnd; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.PARENT; long lIndex = m_twaincommand.Submit(threaddata); // Submit the command and wait for the reply... CallerToThreadSet(); ThreadToCallerWaitOne(); // Return the result... a_intptrHwnd = m_twaincommand.Get(lIndex).intptrHwnd; sts = m_twaincommand.Get(lIndex).sts; // Clear the command variables... m_twaincommand.Delete(lIndex); } return (sts); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.PARENT.ToString(), a_msg.ToString(), ""); } // Windows... if (ms_platform == Platform.WINDOWS) { // Issue the command... try { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryParent(ref m_twidentitylegacyApp, IntPtr.Zero, a_dg, DAT.PARENT, a_msg, ref a_intptrHwnd); } else { sts = (STS)WindowsTwaindsmDsmEntryParent(ref m_twidentitylegacyApp, IntPtr.Zero, a_dg, DAT.PARENT, a_msg, ref a_intptrHwnd); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Linux... else if (ms_platform == Platform.LINUX) { // Issue the command... try { if (GetMachineWordBitSize() == 32) { sts = (STS)LinuxDsmEntryParent(ref m_twidentitylegacyApp, IntPtr.Zero, a_dg, DAT.PARENT, a_msg, ref a_intptrHwnd); } else { sts = (STS)Linux64DsmEntryParent(ref m_twidentityApp, IntPtr.Zero, a_dg, DAT.PARENT, a_msg, ref a_intptrHwnd); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { // Issue the command... try { sts = (STS)MacosxDsmEntryParent(ref m_twidentitymacosxApp, IntPtr.Zero, a_dg, DAT.PARENT, a_msg, ref a_intptrHwnd); } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Uh-oh... else { Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), ""); } // If we opened, go to state 3, and start tracking // TWAIN's state in the log file... if (a_msg == MSG.OPENDSM) { if (sts == STS.SUCCESS) { m_state = STATE.S3; Log.RegisterTwain(this); } } // If we closed, go to state 2, and stop tracking // TWAIN's state in the log file... else if (a_msg == MSG.CLOSEDSM) { if (sts == STS.SUCCESS) { m_state = STATE.S2; Log.RegisterTwain(null); } } // All done... return (AutoDatStatus(sts)); }
void EmitDOTweenPositionFor(Transform t, Vector3 to, float twDuration, DG.Tweening.Ease ease) { t.position = Vector3.zero; t.DOMove(to, twDuration).SetEase(ease).OnComplete(()=> EmitDOTweenPositionFor(t, to, twDuration, ease)); }
/// <summary> /// Issue pendingxfers commands... /// </summary> /// <param name="a_dg">Data group</param> /// <param name="a_msg">Operation</param> /// <param name="a_twpendingxfers">PENDINGXFERS structure</param> /// <returns>TWAIN status</returns> public STS DatPendingxfers(DG a_dg, MSG a_msg, ref TW_PENDINGXFERS a_twpendingxfers) { STS sts; // Submit the work to the TWAIN thread... if ((m_threadTwain != null) && (m_threadTwain.ManagedThreadId != Thread.CurrentThread.ManagedThreadId)) { lock (m_lockTwain) { // Set our command variables... ThreadData threaddata = default(ThreadData); threaddata.twpendingxfers = a_twpendingxfers; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.PENDINGXFERS; long lIndex = m_twaincommand.Submit(threaddata); // Submit the command and wait for the reply... CallerToThreadSet(); ThreadToCallerWaitOne(); // Return the result... a_twpendingxfers = m_twaincommand.Get(lIndex).twpendingxfers; sts = m_twaincommand.Get(lIndex).sts; // Clear the command variables... m_twaincommand.Delete(lIndex); } return (sts); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.PENDINGXFERS.ToString(), a_msg.ToString(), ""); } // Windows... if (ms_platform == Platform.WINDOWS) { // Issue the command... try { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryPendingxfers(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.PENDINGXFERS, a_msg, ref a_twpendingxfers); } else { sts = (STS)WindowsTwaindsmDsmEntryPendingxfers(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.PENDINGXFERS, a_msg, ref a_twpendingxfers); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Linux... else if (ms_platform == Platform.LINUX) { // Issue the command... try { if (GetMachineWordBitSize() == 32) { sts = (STS)LinuxDsmEntryPendingxfers(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.PENDINGXFERS, a_msg, ref a_twpendingxfers); } else { sts = (STS)Linux64DsmEntryPendingxfers(ref m_twidentityApp, ref m_twidentityDs, a_dg, DAT.PENDINGXFERS, a_msg, ref a_twpendingxfers); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { // Issue the command... try { sts = (STS)MacosxDsmEntryPendingxfers(ref m_twidentitymacosxApp, ref m_twidentitymacosxDs, a_dg, DAT.PENDINGXFERS, a_msg, ref a_twpendingxfers); } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Uh-oh... else { Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), PendingxfersToCsv(a_twpendingxfers)); } // If we endxfer, go to state 5 or 6... if (a_msg == MSG.ENDXFER) { if (sts == STS.SUCCESS) { if (a_twpendingxfers.Count == 0) { m_blIsMsgxferready = false; m_state = STATE.S5; } else { m_state = STATE.S6; } } } // If we reset, go to state 5... else if (a_msg == MSG.RESET) { if (sts == STS.SUCCESS) { m_blIsMsgxferready = false; m_state = STATE.S5; } } // All done... return (AutoDatStatus(sts)); }
void EmitDOTweenScaleFor(Transform t, Vector3 to, float twDuration, DG.Tweening.Ease ease) { t.localScale = Vector3.one; t.DOScale(to, twDuration).SetEase(ease).OnComplete(()=> EmitDOTweenScaleFor(t, to, twDuration, ease)); }
public STS DatUserinterface(DG a_dg, MSG a_msg, ref TW_USERINTERFACE a_twuserinterface) { STS sts; // Submit the work to the TWAIN thread... if (this.m_runinuithreaddelegate == null) { if ((m_threadTwain != null) && (m_threadTwain.ManagedThreadId != Thread.CurrentThread.ManagedThreadId)) { lock (m_lockTwain) { // Set our command variables... ThreadData threaddata = default(ThreadData); threaddata.twuserinterface = a_twuserinterface; threaddata.twuserinterface.hParent = m_intptrHwnd; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.USERINTERFACE; m_lIndexDatUserinterface = m_twaincommand.Submit(threaddata); // Submit the command and wait for the reply... CallerToThreadSet(); ThreadToCallerWaitOne(); // Return the result... a_twuserinterface = m_twaincommand.Get(m_lIndexDatUserinterface).twuserinterface; sts = m_twaincommand.Get(m_lIndexDatUserinterface).sts; // Clear the command variables... m_twaincommand.Delete(m_lIndexDatUserinterface); } return (sts); } } // Well this is weird. I'm not sure how this design snuck past, // I assume it's because of the async nature of the button presses, // so it's easier to monitor a boolean. Regardless, we need to // use this data to do the right thing... if (m_blIsMsgclosedsok || m_blIsMsgclosedsreq) { a_msg = MSG.DISABLEDS; } // If we're doing a DISABLEDS, use the values we remembered from // the last ENABLEDS... TW_USERINTERFACE twuserinterface = a_twuserinterface; if (a_msg == MSG.DISABLEDS) { twuserinterface = m_twuserinterface; } // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.USERINTERFACE.ToString(), a_msg.ToString(), UserinterfaceToCsv(twuserinterface)); } // We need this to handle data sources that return MSG_XFERREADY in // the midst of processing MSG_ENABLEDS... if (a_msg == MSG.ENABLEDS) { m_blAcceptXferReady = true; } // Windows... if (ms_platform == Platform.WINDOWS) { // Issue the command... try { if (this.m_runinuithreaddelegate == null) { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryUserinterface(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.USERINTERFACE, a_msg, ref twuserinterface); } else { sts = (STS)WindowsTwaindsmDsmEntryUserinterface(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.USERINTERFACE, a_msg, ref twuserinterface); } } else { if (m_blUseLegacyDSM) { lock (m_lockTwain) { ThreadData threaddata = default(ThreadData); threaddata.twuserinterface = a_twuserinterface; threaddata.twuserinterface.hParent = m_intptrHwnd; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.USERINTERFACE; m_lIndexDatUserinterface = m_twaincommand.Submit(threaddata); RunInUiThread(DatUserinterfaceWindowsTwain32); a_twuserinterface = m_twaincommand.Get(m_lIndexDatUserinterface).twuserinterface; sts = m_twaincommand.Get(m_lIndexDatUserinterface).sts; m_twaincommand.Delete(m_lIndexDatUserinterface); } } else { lock (m_lockTwain) { ThreadData threaddata = default(ThreadData); threaddata.twuserinterface = a_twuserinterface; threaddata.twuserinterface.hParent = m_intptrHwnd; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.USERINTERFACE; m_lIndexDatUserinterface = m_twaincommand.Submit(threaddata); RunInUiThread(DatUserinterfaceWindowsTwainDsm); a_twuserinterface = m_twaincommand.Get(m_lIndexDatUserinterface).twuserinterface; sts = m_twaincommand.Get(m_lIndexDatUserinterface).sts; m_twaincommand.Delete(m_lIndexDatUserinterface); } } } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Linux... else if (ms_platform == Platform.LINUX) { // Issue the command... try { if (GetMachineWordBitSize() == 32) { sts = (STS)LinuxDsmEntryUserinterface(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.USERINTERFACE, a_msg, ref twuserinterface); } else { sts = (STS)Linux64DsmEntryUserinterface(ref m_twidentityApp, ref m_twidentityDs, a_dg, DAT.USERINTERFACE, a_msg, ref twuserinterface); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { // Issue the command... try { sts = (STS)MacosxDsmEntryUserinterface(ref m_twidentitymacosxApp, ref m_twidentitymacosxDs, a_dg, DAT.USERINTERFACE, a_msg, ref twuserinterface); } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Uh-oh... else { Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), ""); } // If we opened, go to state 5... if ((a_msg == MSG.ENABLEDS) || (a_msg == MSG.ENABLEDSUIONLY)) { if (sts == STS.SUCCESS) { m_state = STATE.S5; // Remember the setting... m_twuserinterface = a_twuserinterface; // MSG_XFERREADY showed up while we were still processing MSG_ENABLEDS if ((sts == STS.SUCCESS) && m_blAcceptXferReady && m_blIsMsgxferready) { m_blAcceptXferReady = false; m_state = STATE.S6; // TBD //lock (m_lockTwain) //{ // m_threaddata = default(ThreadData); //} CallerToThreadSet(); } } } // If we disabled, go to state 4... else if (a_msg == MSG.DISABLEDS) { if (sts == STS.SUCCESS) { m_blIsMsgclosedsreq = false; m_blIsMsgclosedsok = false; m_state = STATE.S4; } } // All done... return (AutoDatStatus(sts)); }
private static extern UInt16 WindowsTwaindsmDsmEntryJpegcompression ( ref TW_IDENTITY_LEGACY origin, ref TW_IDENTITY_LEGACY dest, DG dg, DAT dat, MSG msg, ref TW_JPEGCOMPRESSION twjpegcompression );
/// <summary> /// Get/Set the Xfer Group... /// </summary> /// <param name="a_dg">Data group</param> /// <param name="a_msg">Operation</param> /// <param name="a_twuint32">XFERGROUP structure</param> /// <returns>TWAIN status</returns> public STS DatXferGroup(DG a_dg, MSG a_msg, ref UInt32 a_twuint32) { STS sts; // Submit the work to the TWAIN thread... if ((m_threadTwain != null) && (m_threadTwain.ManagedThreadId != Thread.CurrentThread.ManagedThreadId)) { lock (m_lockTwain) { // Set our command variables... ThreadData threaddata = default(ThreadData); threaddata.twuint32 = a_twuint32; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.XFERGROUP; long lIndex = m_twaincommand.Submit(threaddata); // Submit the command and wait for the reply... CallerToThreadSet(); ThreadToCallerWaitOne(); // Return the result... a_twuint32 = m_twaincommand.Get(lIndex).twuint32; sts = m_twaincommand.Get(lIndex).sts; // Clear the command variables... m_twaincommand.Delete(lIndex); } return (sts); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendBefore(a_dg.ToString(), DAT.XFERGROUP.ToString(), a_msg.ToString(), XfergroupToCsv(a_twuint32)); } // Windows... if (ms_platform == Platform.WINDOWS) { // Issue the command... try { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryXfergroup(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.XFERGROUP, a_msg, ref a_twuint32); } else { sts = (STS)WindowsTwaindsmDsmEntryXfergroup(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.XFERGROUP, a_msg, ref a_twuint32); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Linux... else if (ms_platform == Platform.LINUX) { // Issue the command... try { if (GetMachineWordBitSize() == 32) { sts = (STS)LinuxDsmEntryXfergroup(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.XFERGROUP, a_msg, ref a_twuint32); } else { sts = (STS)Linux64DsmEntryXfergroup(ref m_twidentityApp, ref m_twidentityDs, a_dg, DAT.XFERGROUP, a_msg, ref a_twuint32); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { // Issue the command... try { sts = (STS)MacosxDsmEntryXfergroup(ref m_twidentitymacosxApp, ref m_twidentitymacosxDs, a_dg, DAT.XFERGROUP, a_msg, ref a_twuint32); } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Uh-oh... else { Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { Log.LogSendAfter(sts.ToString(), XfergroupToCsv(a_twuint32)); } // All done... return (AutoDatStatus(sts)); }
private static extern UInt16 MacosxDsmEntryImagenativexfer ( ref TW_IDENTITY_MACOSX origin, ref TW_IDENTITY_MACOSX dest, DG dg, DAT dat, MSG msg, ref IntPtr intptrBitmap );
/// <summary> /// Our callback delegate for Linux... /// </summary> /// <param name="origin">Origin of message</param> /// <param name="dest">Message target</param> /// <param name="dg">Data group</param> /// <param name="dat">Data argument type</param> /// <param name="msg">Operation</param> /// <param name="twnull">NULL pointer</param> /// <returns>TWAIN status</returns> private UInt16 LinuxDsmEntryCallbackProxy ( ref TW_IDENTITY_LEGACY origin, ref TW_IDENTITY_LEGACY dest, DG dg, DAT dat, MSG msg, IntPtr twnull ) { ProcessEvent(msg); return ((UInt16)STS.SUCCESS); }
/// <summary> /// Our callback delegate for Mac OS X... /// </summary> /// <param name="origin">Origin of message</param> /// <param name="dest">Message target</param> /// <param name="dg">Data group</param> /// <param name="dat">Data argument type</param> /// <param name="msg">Operation</param> /// <param name="twnull">NULL pointer</param> /// <returns>TWAIN status</returns> private UInt16 MacosxDsmEntryCallbackProxy ( ref TW_IDENTITY_MACOSX origin, ref TW_IDENTITY_MACOSX dest, DG dg, DAT dat, MSG msg, IntPtr twnull ) { ProcessEvent(msg); return ((UInt16)STS.SUCCESS); }
private static extern UInt16 WindowsTwaindsmDsmEntryRgbresponse ( ref TW_IDENTITY_LEGACY origin, ref TW_IDENTITY_LEGACY dest, DG dg, DAT dat, MSG msg, ref TW_RGBRESPONSE twrgbresponse );
/// <summary> /// Issue capabilities commands... /// </summary> /// <param name="a_dg">Data group</param> /// <param name="a_msg">Operation</param> /// <param name="a_twcapability">CAPABILITY structure</param> /// <returns>TWAIN status</returns> public STS DatCapability(DG a_dg, MSG a_msg, ref TW_CAPABILITY a_twcapability) { STS sts; // Submit the work to the TWAIN thread... if ((m_threadTwain != null) && (m_threadTwain.ManagedThreadId != Thread.CurrentThread.ManagedThreadId)) { lock (m_lockTwain) { ThreadData threaddata = default(ThreadData); long lIndex = 0; // TBD: sometimes this doesn't work! Not sure why // yet, but a retry takes care of it. for (int ii = 0; ii < 5; ii++) { // Set our command variables... threaddata = default(ThreadData); threaddata.twcapability = a_twcapability; threaddata.dg = a_dg; threaddata.msg = a_msg; threaddata.dat = DAT.CAPABILITY; lIndex = m_twaincommand.Submit(threaddata); // Submit the command and wait for the reply... CallerToThreadSet(); ThreadToCallerWaitOne(); // Hmmm... if ( (a_msg == MSG.GETCURRENT) && (m_twaincommand.Get(lIndex).sts == STS.SUCCESS) && (m_twaincommand.Get(lIndex).twcapability.ConType == (TWON)0) && (m_twaincommand.Get(lIndex).twcapability.hContainer == IntPtr.Zero)) { Thread.Sleep(1000); continue; } // We're done... break; } // Return the result... a_twcapability = m_twaincommand.Get(lIndex).twcapability; sts = m_twaincommand.Get(lIndex).sts; // Clear the command variables... m_twaincommand.Delete(lIndex); } return (sts); } // Log it... if (Log.GetLevel() > 0) { if ((a_msg == MSG.SET) || (a_msg == MSG.SETCONSTRAINT)) { Log.LogSendBefore(a_dg.ToString(), DAT.CAPABILITY.ToString(), a_msg.ToString(), CapabilityToCsv(a_twcapability)); } else { string szCap = a_twcapability.Cap.ToString(); if (!szCap.Contains("_")) { szCap = "0x" + ((ushort)a_twcapability.Cap).ToString("X"); } Log.LogSendBefore(a_dg.ToString(), DAT.CAPABILITY.ToString(), a_msg.ToString(), szCap + ",0,0"); } } // Windows... if (ms_platform == Platform.WINDOWS) { // Issue the command... try { if (m_blUseLegacyDSM) { sts = (STS)WindowsTwain32DsmEntryCapability(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.CAPABILITY, a_msg, ref a_twcapability); } else { sts = (STS)WindowsTwaindsmDsmEntryCapability(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.CAPABILITY, a_msg, ref a_twcapability); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Linux... else if (ms_platform == Platform.LINUX) { // Issue the command... try { if (GetMachineWordBitSize() == 32) { sts = (STS)LinuxDsmEntryCapability(ref m_twidentitylegacyApp, ref m_twidentitylegacyDs, a_dg, DAT.CAPABILITY, a_msg, ref a_twcapability); } else { sts = (STS)Linux64DsmEntryCapability(ref m_twidentityApp, ref m_twidentityDs, a_dg, DAT.CAPABILITY, a_msg, ref a_twcapability); } } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Mac OS X, which has to be different... else if (ms_platform == Platform.MACOSX) { // Issue the command... try { sts = (STS)MacosxDsmEntryCapability(ref m_twidentitymacosxApp, ref m_twidentitymacosxDs, a_dg, DAT.CAPABILITY, a_msg, ref a_twcapability); } catch { // The driver crashed... Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } } // Uh-oh... else { Log.LogSendAfter(STS.BUMMER.ToString(), ""); return (STS.BUMMER); } // Log it... if (Log.GetLevel() > 0) { if ((a_msg == MSG.RESETALL) || ((sts != STS.SUCCESS) && (sts != STS.CHECKSTATUS))) { Log.LogSendAfter(sts.ToString(), ""); } else { Log.LogSendAfter(sts.ToString(), CapabilityToCsv(a_twcapability)); } } // All done... return (AutoDatStatus(sts)); }
private static extern UInt16 MacosxDsmEntryRgbresponse ( ref TW_IDENTITY_MACOSX origin, ref TW_IDENTITY_MACOSX dest, DG dg, DAT dat, MSG msg, ref TW_RGBRESPONSE twrgbresponse );