PreviewScanTask.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package epson.print.copy.Component.ecopycomponent;
  2. import android.app.Activity;
  3. import android.graphics.Bitmap;
  4. import android.graphics.Canvas;
  5. import android.graphics.Matrix;
  6. import android.graphics.Paint;
  7. import android.graphics.RectF;
  8. import android.os.AsyncTask;
  9. import java.util.HashMap;
  10. import epson.print.copy.Component.escandevice.EScanDevice;
  11. import epson.print.copy.Component.escandevice.IScanController;
  12. class PreviewScanTask extends AsyncTask<Void, Void, Void> implements IScanController, ECopyComponent.ITask {
  13. boolean cancelRequested;
  14. Canvas canvas;
  15. ECopyPreview copyPreview;
  16. ECopyOptionContext optionContext;
  17. Bitmap previewScanBitmap;
  18. HashMap<Integer, Object> properties = new HashMap<>();
  19. float scale;
  20. ECopyComponent.ICopyStatusListener statusListener;
  21. ECopyComponent.ICopySystemSettings systemSettings;
  22. public void setClientID(String str) {
  23. }
  24. public void setRequestConnectionTimeout(int i) {
  25. }
  26. public PreviewScanTask(ECopyPreview eCopyPreview, ECopyComponent.ICopyStatusListener iCopyStatusListener) {
  27. copyPreview = eCopyPreview;
  28. statusListener = iCopyStatusListener;
  29. }
  30. private void setPropertyValue(int i, Object obj) {
  31. properties.put(Integer.valueOf(i), obj);
  32. }
  33. public ECopyComponent.ICopyCancelRequest start() {
  34. super.execute(new Void[0]);
  35. return new ECopyComponent.ICopyCancelRequest() {
  36. public void cancel() {
  37. synchronized (this) {
  38. cancelRequested = true;
  39. }
  40. }
  41. };
  42. }
  43. public void setSystemSettings(ECopyComponent.ICopySystemSettings iCopySystemSettings) {
  44. systemSettings = iCopySystemSettings;
  45. }
  46. public void setOptionContext(ECopyOptionContext eCopyOptionContext) {
  47. int i;
  48. optionContext = eCopyOptionContext;
  49. if (optionContext.getCopyOptionItemOf(ECopyOptionItem.ECopyOptionItemKey.XScale).getSelectedChoice() != ECopyOptionItem.ECopyOptionItemChoice.XScale_Autofit) {
  50. ECopyOptionItem copyOptionItemOf = optionContext.getCopyOptionItemOf(ECopyOptionItem.ECopyOptionItemKey.PrintMediaSize);
  51. switch (copyOptionItemOf.getSelectedChoice()) {
  52. case PrintMediaSize_A4:
  53. i = IScanController.CPPREV_VALUE_SCAN_COPYFRAME_A4;
  54. break;
  55. case PrintMediaSize_B5:
  56. i = IScanController.CPPREV_VALUE_SCAN_COPYFRAME_B5;
  57. break;
  58. case PrintMediaSize_L:
  59. i = IScanController.CPPREV_VALUE_SCAN_COPYFRAME_L;
  60. break;
  61. case PrintMediaSize_2L:
  62. i = IScanController.CPPREV_VALUE_SCAN_COPYFRAME_2L;
  63. break;
  64. case PrintMediaSize_Postcard:
  65. i = IScanController.CPPREV_VALUE_SCAN_COPYFRAME_HAGAKI;
  66. break;
  67. case PrintMediaSize_KG:
  68. i = IScanController.CPPREV_VALUE_SCAN_COPYFRAME_KG;
  69. break;
  70. case PrintMediaSize_8x10in:
  71. i = IScanController.CPPREV_VALUE_SCAN_COPYFRAME_6GIRI;
  72. break;
  73. }
  74. }
  75. i = IScanController.CPPREV_VALUE_SCAN_COPYFRAME_AUTOFIT;
  76. ECopyComponent.ECopyType copyType = optionContext.getCopyType();
  77. if (copyType == ECopyComponent.ECopyType.A4_2up || copyType == ECopyComponent.ECopyType.A4_2up_Book) {
  78. i = IScanController.CPPREV_VALUE_SCAN_COPYFRAME_A4;
  79. } else if (copyType == ECopyComponent.ECopyType.B5_2up || copyType == ECopyComponent.ECopyType.B5_2up_Book) {
  80. i = IScanController.CPPREV_VALUE_SCAN_COPYFRAME_B5;
  81. }
  82. setPropertyValue(3, Integer.valueOf(i));
  83. setPropertyValue(1, 65536);
  84. setPropertyValue(2, Integer.valueOf(IScanController.CPPREV_VALUE_SCAN_RESO_PREVIEW));
  85. }
  86. protected Void doInBackground(Void... voidArr) {
  87. setPropertyValue(4, systemSettings.getPrinterIPAddress());
  88. EScanDevice.nativeStartScan(this);
  89. return null;
  90. }
  91. public int getIntegerValue(int i) {
  92. return ((Integer) properties.get(Integer.valueOf(i))).intValue();
  93. }
  94. public String getStringValue(int i) {
  95. return (String) properties.get(Integer.valueOf(i));
  96. }
  97. public boolean isCancelRequested() {
  98. boolean z;
  99. synchronized (this) {
  100. z = cancelRequested;
  101. }
  102. return z;
  103. }
  104. public void setScanStatusChanged(final int i, final int i2) {
  105. ((Activity) copyPreview.getContext()).runOnUiThread(new Runnable() {
  106. public void run() {
  107. ECopyComponent.ICopyStatusListener.CopyTaskResult copyTaskResult;
  108. switch (i) {
  109. case 1:
  110. PreviewScanTask previewScanTask = PreviewScanTask.this;
  111. previewScanTask.previewScanBitmap = null;
  112. previewScanTask.statusListener.onStarted(ECopyComponent.ICopyStatusListener.CopyTaskType.Preview);
  113. return;
  114. case 2:
  115. int i = i2;
  116. if (i != 3) {
  117. switch (i) {
  118. case 0:
  119. copyTaskResult = ECopyComponent.ICopyStatusListener.CopyTaskResult.Succeed;
  120. break;
  121. case 1:
  122. copyTaskResult = ECopyComponent.ICopyStatusListener.CopyTaskResult.Canceled;
  123. break;
  124. default:
  125. copyTaskResult = ECopyComponent.ICopyStatusListener.CopyTaskResult.ErrorOther;
  126. break;
  127. }
  128. } else {
  129. copyTaskResult = ECopyComponent.ICopyStatusListener.CopyTaskResult.Busy;
  130. }
  131. statusListener.onFinished(ECopyComponent.ICopyStatusListener.CopyTaskType.Preview, copyTaskResult);
  132. return;
  133. case 3:
  134. previewScanBitmap.eraseColor(-1);
  135. return;
  136. case 4:
  137. copyPreview.drawScanPreview (previewScanBitmap);
  138. return;
  139. default:
  140. return;
  141. }
  142. }
  143. });
  144. }
  145. public void setScanImageSize(int i, int i2) {
  146. copyPreview.calculateScanImageSize(i, i2, new ECopyPreview.ScanImageSizeCalculator() {
  147. public void onScanImageSize(int i, int i2, float f) {
  148. PreviewScanTask previewScanTask = PreviewScanTask.this;
  149. previewScanTask.scale = f;
  150. previewScanTask.previewScanBitmap = Bitmap.createBitmap(i, i2, Bitmap.Config.ARGB_8888);
  151. PreviewScanTask previewScanTask2 = PreviewScanTask.this;
  152. previewScanTask2.canvas = new Canvas(previewScanTask2.previewScanBitmap);
  153. }
  154. });
  155. }
  156. public void setScanImageBlockReceived(int[] iArr, int i, int i2, int i3, int i4) {
  157. Bitmap createBitmap = Bitmap.createBitmap(iArr, i3, i4, Bitmap.Config.ARGB_8888);
  158. Matrix matrix = new Matrix();
  159. float f = scale;
  160. matrix.postScale(f, f);
  161. float f2 = scale;
  162. matrix.postTranslate(((float) i) * f2, ((float) i2) * f2);
  163. canvas.drawBitmap(createBitmap, matrix, (Paint) null);
  164. }
  165. public void setCopyFrameSize(int i, int i2, int i3, int i4) {
  166. RectF rectF = new RectF((float) i, (float) i2, (float) i3, (float) i4);
  167. synchronized (this) {
  168. if (cancelRequested) {
  169. rectF = new RectF();
  170. }
  171. }
  172. copyPreview.setPaperFrame(rectF);
  173. }
  174. }