home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / print / Win32PrintService.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  21.5 KB  |  1,147 lines

  1. package sun.print;
  2.  
  3. import java.io.File;
  4. import java.net.URI;
  5. import java.net.URISyntaxException;
  6. import java.util.ArrayList;
  7. import java.util.Locale;
  8. import javax.print.DocFlavor;
  9. import javax.print.DocPrintJob;
  10. import javax.print.PrintService;
  11. import javax.print.ServiceUIFactory;
  12. import javax.print.DocFlavor.BYTE_ARRAY;
  13. import javax.print.DocFlavor.INPUT_STREAM;
  14. import javax.print.DocFlavor.SERVICE_FORMATTED;
  15. import javax.print.DocFlavor.URL;
  16. import javax.print.attribute.Attribute;
  17. import javax.print.attribute.AttributeSet;
  18. import javax.print.attribute.AttributeSetUtilities;
  19. import javax.print.attribute.HashAttributeSet;
  20. import javax.print.attribute.HashPrintServiceAttributeSet;
  21. import javax.print.attribute.PrintServiceAttribute;
  22. import javax.print.attribute.PrintServiceAttributeSet;
  23. import javax.print.attribute.standard.Chromaticity;
  24. import javax.print.attribute.standard.ColorSupported;
  25. import javax.print.attribute.standard.Copies;
  26. import javax.print.attribute.standard.CopiesSupported;
  27. import javax.print.attribute.standard.Destination;
  28. import javax.print.attribute.standard.Fidelity;
  29. import javax.print.attribute.standard.JobName;
  30. import javax.print.attribute.standard.Media;
  31. import javax.print.attribute.standard.MediaPrintableArea;
  32. import javax.print.attribute.standard.MediaSize;
  33. import javax.print.attribute.standard.MediaSizeName;
  34. import javax.print.attribute.standard.MediaTray;
  35. import javax.print.attribute.standard.OrientationRequested;
  36. import javax.print.attribute.standard.PageRanges;
  37. import javax.print.attribute.standard.PrintQuality;
  38. import javax.print.attribute.standard.PrinterIsAcceptingJobs;
  39. import javax.print.attribute.standard.PrinterName;
  40. import javax.print.attribute.standard.PrinterResolution;
  41. import javax.print.attribute.standard.PrinterState;
  42. import javax.print.attribute.standard.PrinterStateReason;
  43. import javax.print.attribute.standard.PrinterStateReasons;
  44. import javax.print.attribute.standard.QueuedJobCount;
  45. import javax.print.attribute.standard.RequestingUserName;
  46. import javax.print.attribute.standard.Severity;
  47. import javax.print.attribute.standard.SheetCollate;
  48. import javax.print.attribute.standard.Sides;
  49. import javax.print.event.PrintServiceAttributeListener;
  50. import sun.awt.windows.WPrinterJob;
  51.  
  52. public class Win32PrintService implements PrintService, AttributeUpdater, SunPrinterJobService {
  53.    public static MediaSize[] predefMedia;
  54.    private static final DocFlavor[] supportedFlavors;
  55.    private static final Class[] serviceAttrCats;
  56.    private static Class[] otherAttrCats;
  57.    public static final MediaSizeName[] dmPaperToPrintService;
  58.    private static final MediaTray[] dmPaperBinToPrintService;
  59.    private static int DM_PAPERSIZE;
  60.    private static int DM_PRINTQUALITY;
  61.    private static int DM_YRESOLUTION;
  62.    private static final int DMRES_MEDIUM = -3;
  63.    private static final int DMRES_HIGH = -4;
  64.    private static final int DMORIENT_LANDSCAPE = 2;
  65.    private static final int DMDUP_VERTICAL = 2;
  66.    private static final int DMDUP_HORIZONTAL = 3;
  67.    private static final int DMCOLLATE_TRUE = 1;
  68.    private static final int DMPAPER_A2 = 66;
  69.    private static final int DMPAPER_A6 = 70;
  70.    private static final int DMPAPER_B6_JIS = 88;
  71.    private static final int DEVCAP_COLOR = 1;
  72.    private static final int DEVCAP_DUPLEX = 2;
  73.    private static final int DEVCAP_COLLATE = 4;
  74.    private static final int DEVCAP_QUALITY = 8;
  75.    private static final int DEVCAP_POSTSCRIPT = 16;
  76.    private String printer;
  77.    private PrinterName name;
  78.    private String port;
  79.    private transient PrintServiceAttributeSet lastSet;
  80.    private transient ServiceNotifier notifier = null;
  81.    private MediaSizeName[] mediaSizeNames;
  82.    private MediaPrintableArea[] mediaPrintables;
  83.    private MediaTray[] mediaTrays;
  84.    private PrinterResolution[] printRes;
  85.    private int nCopies;
  86.    private int prnCaps;
  87.    private int[] defaultSettings;
  88.    private boolean gotTrays;
  89.    private boolean gotCopies;
  90.    private boolean mediaInitialized;
  91.    private ArrayList idList;
  92.    private MediaSize[] mediaSizes;
  93.    private boolean isInvalid;
  94.  
  95.    Win32PrintService(String var1) {
  96.       if (var1 == null) {
  97.          throw new IllegalArgumentException("null printer name");
  98.       } else {
  99.          this.printer = var1;
  100.          this.mediaInitialized = false;
  101.          this.gotTrays = false;
  102.          this.gotCopies = false;
  103.          this.isInvalid = false;
  104.          this.printRes = null;
  105.          this.prnCaps = 0;
  106.          this.defaultSettings = null;
  107.          this.port = null;
  108.       }
  109.    }
  110.  
  111.    public void invalidateService() {
  112.       this.isInvalid = true;
  113.    }
  114.  
  115.    public String getName() {
  116.       return this.printer;
  117.    }
  118.  
  119.    private PrinterName getPrinterName() {
  120.       if (this.name == null) {
  121.          this.name = new PrinterName(this.printer, (Locale)null);
  122.       }
  123.  
  124.       return this.name;
  125.    }
  126.  
  127.    public MediaSizeName findWin32Media(int var1) {
  128.       if (var1 >= 1 && var1 <= dmPaperToPrintService.length) {
  129.          switch (var1) {
  130.             case 66:
  131.                return MediaSizeName.ISO_A2;
  132.             case 70:
  133.                return MediaSizeName.ISO_A6;
  134.             case 88:
  135.                return MediaSizeName.JIS_B6;
  136.             default:
  137.                return dmPaperToPrintService[var1 - 1];
  138.          }
  139.       } else {
  140.          return null;
  141.       }
  142.    }
  143.  
  144.    private boolean addToUniqueList(ArrayList var1, MediaSizeName var2) {
  145.       for(int var4 = 0; var4 < var1.size(); ++var4) {
  146.          MediaSizeName var3 = (MediaSizeName)var1.get(var4);
  147.          if (var3 == var2) {
  148.             return false;
  149.          }
  150.       }
  151.  
  152.       var1.add(var2);
  153.       return true;
  154.    }
  155.  
  156.    private synchronized void initMedia() {
  157.       if (!this.mediaInitialized) {
  158.          this.mediaInitialized = true;
  159.          int[] var1 = this.getAllMediaIDs(this.printer, this.getPort());
  160.          if (var1 != null) {
  161.             ArrayList var2 = new ArrayList();
  162.             ArrayList var3 = new ArrayList();
  163.             boolean var6 = false;
  164.             this.idList = new ArrayList();
  165.  
  166.             for(int var8 = 0; var8 < var1.length; ++var8) {
  167.                this.idList.add(new Integer(var1[var8]));
  168.             }
  169.  
  170.             this.mediaSizes = this.getMediaSizes(this.idList, var1);
  171.  
  172.             for(int var11 = 0; var11 < this.idList.size(); ++var11) {
  173.                MediaSizeName var4 = this.findWin32Media((Integer)this.idList.get(var11));
  174.                if (var4 == null && this.idList.size() == this.mediaSizes.length) {
  175.                   var4 = this.mediaSizes[var11].getMediaSizeName();
  176.                }
  177.  
  178.                if (var4 != null) {
  179.                   boolean var5 = this.addToUniqueList(var2, var4);
  180.                   if (var5 && !var6) {
  181.                      float[] var7 = this.getMediaPrintableArea(this.printer, (Integer)this.idList.get(var11));
  182.                      if (var7 != null) {
  183.                         try {
  184.                            MediaPrintableArea var9 = new MediaPrintableArea(var7[0], var7[1], var7[2], var7[3], 25400);
  185.                            var3.add(var9);
  186.                         } catch (IllegalArgumentException var10) {
  187.                         }
  188.                      } else if (var11 == 0) {
  189.                         var6 = true;
  190.                      }
  191.                   }
  192.                }
  193.             }
  194.  
  195.             this.mediaSizeNames = new MediaSizeName[var2.size()];
  196.             var2.toArray(this.mediaSizeNames);
  197.             this.mediaPrintables = new MediaPrintableArea[var3.size()];
  198.             var3.toArray(this.mediaPrintables);
  199.          }
  200.       }
  201.    }
  202.  
  203.    private synchronized MediaTray[] getMediaTrays() {
  204.       if (this.gotTrays) {
  205.          return this.mediaTrays;
  206.       } else {
  207.          this.gotTrays = true;
  208.          String var1 = this.getPort();
  209.          int[] var2 = this.getAllMediaTrays(this.printer, var1);
  210.          String[] var3 = this.getAllMediaTrayNames(this.printer, var1);
  211.          if (var2 != null && var3 != null) {
  212.             int var4 = 0;
  213.  
  214.             for(int var5 = 0; var5 < var2.length; ++var5) {
  215.                if (var2[var5] > 0) {
  216.                   ++var4;
  217.                }
  218.             }
  219.  
  220.             MediaTray[] var9 = new MediaTray[var4];
  221.             int var7 = 0;
  222.  
  223.             for(int var8 = 0; var7 < var2.length; ++var7) {
  224.                int var6 = var2[var7];
  225.                if (var6 > 0) {
  226.                   if (var6 <= dmPaperBinToPrintService.length && dmPaperBinToPrintService[var6 - 1] != null) {
  227.                      var9[var8++] = dmPaperBinToPrintService[var6 - 1];
  228.                   } else {
  229.                      var9[var8++] = new Win32MediaTray(var6, var3[var7]);
  230.                   }
  231.                }
  232.             }
  233.  
  234.             return var9;
  235.          } else {
  236.             return null;
  237.          }
  238.       }
  239.    }
  240.  
  241.    private boolean isSameSize(float var1, float var2, float var3, float var4) {
  242.       float var5 = var1 - var3;
  243.       float var6 = var2 - var4;
  244.       float var7 = var1 - var4;
  245.       float var8 = var2 - var3;
  246.       return Math.abs(var5) <= 1.0F && Math.abs(var6) <= 1.0F || Math.abs(var7) <= 1.0F && Math.abs(var8) <= 1.0F;
  247.    }
  248.  
  249.    public MediaSizeName findMatchingMediaSizeNameMM(float var1, float var2) {
  250.       if (predefMedia != null) {
  251.          for(int var3 = 0; var3 < predefMedia.length; ++var3) {
  252.             if (predefMedia[var3] != null && this.isSameSize(predefMedia[var3].getX(1000), predefMedia[var3].getY(1000), var1, var2)) {
  253.                return predefMedia[var3].getMediaSizeName();
  254.             }
  255.          }
  256.       }
  257.  
  258.       return null;
  259.    }
  260.  
  261.    private MediaSize[] getMediaSizes(ArrayList var1, int[] var2) {
  262.       String var3 = this.getPort();
  263.       int[] var4 = this.getAllMediaSizes(this.printer, var3);
  264.       String[] var5 = this.getAllMediaNames(this.printer, var3);
  265.       Object var6 = null;
  266.       MediaSize var7 = null;
  267.       if (var4 != null && var5 != null) {
  268.          int var10 = var4.length / 2;
  269.          ArrayList var11 = new ArrayList();
  270.  
  271.          for(int var12 = 0; var12 < var10; var7 = null) {
  272.             float var8 = (float)(var4[var12 * 2] / 10);
  273.             float var9 = (float)(var4[var12 * 2 + 1] / 10);
  274.             if (!(var8 <= 0.0F) && !(var9 <= 0.0F)) {
  275.                MediaSizeName var17 = this.findMatchingMediaSizeNameMM(var8, var9);
  276.                if (var17 != null) {
  277.                   var7 = MediaSize.getMediaSizeForName(var17);
  278.                }
  279.  
  280.                if (var7 != null) {
  281.                   var11.add(var7);
  282.                } else {
  283.                   Win32MediaSize var20 = new Win32MediaSize(var5[var12]);
  284.  
  285.                   try {
  286.                      var7 = new MediaSize(var8, var9, 1000, var20);
  287.                      var11.add(var7);
  288.                   } catch (IllegalArgumentException var16) {
  289.                      if (var10 == var2.length) {
  290.                         Integer var15 = new Integer(var2[var12]);
  291.                         var1.remove(var1.indexOf(var15));
  292.                      }
  293.                   }
  294.                }
  295.             } else if (var10 == var2.length) {
  296.                Integer var13 = new Integer(var2[var12]);
  297.                var1.remove(var1.indexOf(var13));
  298.             }
  299.  
  300.             ++var12;
  301.          }
  302.  
  303.          MediaSize[] var19 = new MediaSize[var11.size()];
  304.          var11.toArray(var19);
  305.          return var19;
  306.       } else {
  307.          return null;
  308.       }
  309.    }
  310.  
  311.    private PrinterIsAcceptingJobs getPrinterIsAcceptingJobs() {
  312.       return this.getJobStatus(this.printer, 2) != 1 ? PrinterIsAcceptingJobs.NOT_ACCEPTING_JOBS : PrinterIsAcceptingJobs.ACCEPTING_JOBS;
  313.    }
  314.  
  315.    private PrinterState getPrinterState() {
  316.       return this.isInvalid ? PrinterState.STOPPED : null;
  317.    }
  318.  
  319.    private PrinterStateReasons getPrinterStateReasons() {
  320.       if (this.isInvalid) {
  321.          PrinterStateReasons var1 = new PrinterStateReasons();
  322.          var1.put(PrinterStateReason.SHUTDOWN, Severity.ERROR);
  323.          return var1;
  324.       } else {
  325.          return null;
  326.       }
  327.    }
  328.  
  329.    private QueuedJobCount getQueuedJobCount() {
  330.       int var1 = this.getJobStatus(this.printer, 1);
  331.       return var1 != -1 ? new QueuedJobCount(var1) : new QueuedJobCount(0);
  332.    }
  333.  
  334.    private boolean isSupportedCopies(Copies var1) {
  335.       synchronized(this) {
  336.          if (!this.gotCopies) {
  337.             this.nCopies = this.getCopiesSupported(this.printer, this.getPort());
  338.             this.gotCopies = true;
  339.          }
  340.       }
  341.  
  342.       int var2 = var1.getValue();
  343.       return var2 > 0 && var2 <= this.nCopies;
  344.    }
  345.  
  346.    private boolean isSupportedMedia(MediaSizeName var1) {
  347.       this.initMedia();
  348.       if (this.mediaSizeNames != null) {
  349.          for(int var2 = 0; var2 < this.mediaSizeNames.length; ++var2) {
  350.             if (var1.equals(this.mediaSizeNames[var2])) {
  351.                return true;
  352.             }
  353.          }
  354.       }
  355.  
  356.       return false;
  357.    }
  358.  
  359.    private boolean isSupportedMediaPrintableArea(MediaPrintableArea var1) {
  360.       this.initMedia();
  361.       if (this.mediaPrintables != null) {
  362.          for(int var2 = 0; var2 < this.mediaPrintables.length; ++var2) {
  363.             if (var1.equals(this.mediaPrintables[var2])) {
  364.                return true;
  365.             }
  366.          }
  367.       }
  368.  
  369.       return false;
  370.    }
  371.  
  372.    private boolean isSupportedMediaTray(MediaTray var1) {
  373.       this.mediaTrays = this.getMediaTrays();
  374.       if (this.mediaTrays != null) {
  375.          for(int var2 = 0; var2 < this.mediaTrays.length; ++var2) {
  376.             if (var1.equals(this.mediaTrays[var2])) {
  377.                return true;
  378.             }
  379.          }
  380.       }
  381.  
  382.       return false;
  383.    }
  384.  
  385.    private int getPrinterCapabilities() {
  386.       if (this.prnCaps == 0) {
  387.          this.prnCaps = this.getCapabilities(this.printer, this.getPort());
  388.       }
  389.  
  390.       return this.prnCaps;
  391.    }
  392.  
  393.    private String getPort() {
  394.       if (this.port == null) {
  395.          this.port = this.getPrinterPort(this.printer);
  396.       }
  397.  
  398.       return this.port;
  399.    }
  400.  
  401.    private int[] getDefaultPrinterSettings() {
  402.       if (this.defaultSettings == null) {
  403.          this.defaultSettings = this.getDefaultSettings(this.printer);
  404.       }
  405.  
  406.       return this.defaultSettings;
  407.    }
  408.  
  409.    private PrinterResolution[] getPrintResolutions() {
  410.       if (this.printRes == null) {
  411.          int[] var1 = this.getAllResolutions(this.printer, this.getPort());
  412.          if (var1 == null) {
  413.             this.printRes = new PrinterResolution[0];
  414.          } else {
  415.             int var2 = var1.length / 2;
  416.             ArrayList var3 = new ArrayList();
  417.  
  418.             for(int var5 = 0; var5 < var2; ++var5) {
  419.                try {
  420.                   PrinterResolution var4 = new PrinterResolution(var1[var5 * 2], var1[var5 * 2 + 1], 100);
  421.                   var3.add(var4);
  422.                } catch (IllegalArgumentException var7) {
  423.                }
  424.             }
  425.  
  426.             this.printRes = (PrinterResolution[])var3.toArray(new PrinterResolution[var3.size()]);
  427.          }
  428.       }
  429.  
  430.       return this.printRes;
  431.    }
  432.  
  433.    private boolean isSupportedResolution(PrinterResolution var1) {
  434.       PrinterResolution[] var2 = this.getPrintResolutions();
  435.       if (var2 != null) {
  436.          for(int var3 = 0; var3 < var2.length; ++var3) {
  437.             if (var1.equals(var2[var3])) {
  438.                return true;
  439.             }
  440.          }
  441.       }
  442.  
  443.       return false;
  444.    }
  445.  
  446.    public DocPrintJob createPrintJob() {
  447.       SecurityManager var1 = System.getSecurityManager();
  448.       if (var1 != null) {
  449.          var1.checkPrintJobAccess();
  450.       }
  451.  
  452.       return new Win32PrintJob(this);
  453.    }
  454.  
  455.    private PrintServiceAttributeSet getDynamicAttributes() {
  456.       HashPrintServiceAttributeSet var1 = new HashPrintServiceAttributeSet();
  457.       var1.add(this.getPrinterIsAcceptingJobs());
  458.       var1.add(this.getQueuedJobCount());
  459.       return var1;
  460.    }
  461.  
  462.    public PrintServiceAttributeSet getUpdatedAttributes() {
  463.       PrintServiceAttributeSet var1 = this.getDynamicAttributes();
  464.       if (this.lastSet == null) {
  465.          this.lastSet = var1;
  466.          return AttributeSetUtilities.unmodifiableView(var1);
  467.       } else {
  468.          HashPrintServiceAttributeSet var2 = new HashPrintServiceAttributeSet();
  469.          Attribute[] var3 = var1.toArray();
  470.  
  471.          for(int var4 = 0; var4 < var3.length; ++var4) {
  472.             Attribute var5 = var3[var4];
  473.             if (!this.lastSet.containsValue(var5)) {
  474.                var2.add(var5);
  475.             }
  476.          }
  477.  
  478.          this.lastSet = var1;
  479.          return AttributeSetUtilities.unmodifiableView(var2);
  480.       }
  481.    }
  482.  
  483.    public void wakeNotifier() {
  484.       synchronized(this) {
  485.          if (this.notifier != null) {
  486.             this.notifier.wake();
  487.          }
  488.  
  489.       }
  490.    }
  491.  
  492.    public void addPrintServiceAttributeListener(PrintServiceAttributeListener var1) {
  493.       synchronized(this) {
  494.          if (var1 != null) {
  495.             if (this.notifier == null) {
  496.                this.notifier = new ServiceNotifier(this);
  497.             }
  498.  
  499.             this.notifier.addListener(var1);
  500.          }
  501.       }
  502.    }
  503.  
  504.    public void removePrintServiceAttributeListener(PrintServiceAttributeListener var1) {
  505.       synchronized(this) {
  506.          if (var1 != null && this.notifier != null) {
  507.             this.notifier.removeListener(var1);
  508.             if (this.notifier.isEmpty()) {
  509.                this.notifier.stopNotifier();
  510.                this.notifier = null;
  511.             }
  512.  
  513.          }
  514.       }
  515.    }
  516.  
  517.    public <T extends PrintServiceAttribute> T getAttribute(Class<T> var1) {
  518.       if (var1 == null) {
  519.          throw new NullPointerException("category");
  520.       } else if (!PrintServiceAttribute.class.isAssignableFrom(var1)) {
  521.          throw new IllegalArgumentException("Not a PrintServiceAttribute");
  522.       } else if (var1 == ColorSupported.class) {
  523.          int var2 = this.getPrinterCapabilities();
  524.          return (T)((var2 & 1) != 0 ? ColorSupported.SUPPORTED : ColorSupported.NOT_SUPPORTED);
  525.       } else if (var1 == PrinterName.class) {
  526.          return (T)this.getPrinterName();
  527.       } else if (var1 == PrinterState.class) {
  528.          return (T)this.getPrinterState();
  529.       } else if (var1 == PrinterStateReasons.class) {
  530.          return (T)this.getPrinterStateReasons();
  531.       } else if (var1 == QueuedJobCount.class) {
  532.          return (T)this.getQueuedJobCount();
  533.       } else {
  534.          return (T)(var1 == PrinterIsAcceptingJobs.class ? this.getPrinterIsAcceptingJobs() : null);
  535.       }
  536.    }
  537.  
  538.    public PrintServiceAttributeSet getAttributes() {
  539.       HashPrintServiceAttributeSet var1 = new HashPrintServiceAttributeSet();
  540.       var1.add(this.getPrinterName());
  541.       var1.add(this.getPrinterIsAcceptingJobs());
  542.       PrinterState var2 = this.getPrinterState();
  543.       if (var2 != null) {
  544.          var1.add(var2);
  545.       }
  546.  
  547.       PrinterStateReasons var3 = this.getPrinterStateReasons();
  548.       if (var3 != null) {
  549.          var1.add(var3);
  550.       }
  551.  
  552.       var1.add(this.getQueuedJobCount());
  553.       int var4 = this.getPrinterCapabilities();
  554.       if ((var4 & 1) != 0) {
  555.          var1.add(ColorSupported.SUPPORTED);
  556.       } else {
  557.          var1.add(ColorSupported.NOT_SUPPORTED);
  558.       }
  559.  
  560.       return AttributeSetUtilities.unmodifiableView(var1);
  561.    }
  562.  
  563.    public DocFlavor[] getSupportedDocFlavors() {
  564.       int var1 = supportedFlavors.length;
  565.       int var3 = this.getPrinterCapabilities();
  566.       DocFlavor[] var2;
  567.       if ((var3 & 16) != 0) {
  568.          var2 = new DocFlavor[var1 + 3];
  569.          System.arraycopy(supportedFlavors, 0, var2, 0, var1);
  570.          var2[var1] = BYTE_ARRAY.POSTSCRIPT;
  571.          var2[var1 + 1] = INPUT_STREAM.POSTSCRIPT;
  572.          var2[var1 + 2] = URL.POSTSCRIPT;
  573.       } else {
  574.          var2 = new DocFlavor[var1];
  575.          System.arraycopy(supportedFlavors, 0, var2, 0, var1);
  576.       }
  577.  
  578.       return var2;
  579.    }
  580.  
  581.    public boolean isDocFlavorSupported(DocFlavor var1) {
  582.       DocFlavor[] var2 = this.getSupportedDocFlavors();
  583.  
  584.       for(int var3 = 0; var3 < var2.length; ++var3) {
  585.          if (var1.equals(var2[var3])) {
  586.             return true;
  587.          }
  588.       }
  589.  
  590.       return false;
  591.    }
  592.  
  593.    public Class<?>[] getSupportedAttributeCategories() {
  594.       ArrayList var1 = new ArrayList(otherAttrCats.length + 3);
  595.  
  596.       for(int var2 = 0; var2 < otherAttrCats.length; ++var2) {
  597.          var1.add(otherAttrCats[var2]);
  598.       }
  599.  
  600.       int var4 = this.getPrinterCapabilities();
  601.       if ((var4 & 2) != 0) {
  602.          var1.add(Sides.class);
  603.       }
  604.  
  605.       if ((var4 & 8) != 0) {
  606.          int[] var3 = this.getDefaultPrinterSettings();
  607.          if (var3[3] >= -4 && var3[3] < 0) {
  608.             var1.add(PrintQuality.class);
  609.          }
  610.       }
  611.  
  612.       PrinterResolution[] var5 = this.getPrintResolutions();
  613.       if (var5 != null && var5.length > 0) {
  614.          var1.add(PrinterResolution.class);
  615.       }
  616.  
  617.       return (Class[])var1.toArray(new Class[var1.size()]);
  618.    }
  619.  
  620.    public boolean isAttributeCategorySupported(Class<? extends Attribute> var1) {
  621.       if (var1 == null) {
  622.          throw new NullPointerException("null category");
  623.       } else if (!Attribute.class.isAssignableFrom(var1)) {
  624.          throw new IllegalArgumentException(var1 + " is not an Attribute");
  625.       } else {
  626.          Class[] var2 = this.getSupportedAttributeCategories();
  627.  
  628.          for(int var3 = 0; var3 < var2.length; ++var3) {
  629.             if (var1.equals(var2[var3])) {
  630.                return true;
  631.             }
  632.          }
  633.  
  634.          return false;
  635.       }
  636.    }
  637.  
  638.    public Object getDefaultAttributeValue(Class<? extends Attribute> var1) {
  639.       if (var1 == null) {
  640.          throw new NullPointerException("null category");
  641.       } else if (!Attribute.class.isAssignableFrom(var1)) {
  642.          throw new IllegalArgumentException(var1 + " is not an Attribute");
  643.       } else if (!this.isAttributeCategorySupported(var1)) {
  644.          return null;
  645.       } else {
  646.          int[] var2 = this.getDefaultPrinterSettings();
  647.          int var3 = var2[0];
  648.          int var4 = var2[2];
  649.          int var5 = var2[3];
  650.          int var6 = var2[4];
  651.          int var7 = var2[5];
  652.          int var8 = var2[6];
  653.          int var9 = var2[7];
  654.          if (var1 == Copies.class) {
  655.             return var6 > 0 ? new Copies(var6) : new Copies(1);
  656.          } else if (var1 == Chromaticity.class) {
  657.             int var20 = this.getPrinterCapabilities();
  658.             return (var20 & 1) == 0 ? Chromaticity.MONOCHROME : Chromaticity.COLOR;
  659.          } else if (var1 == JobName.class) {
  660.             return new JobName("Java Printing", (Locale)null);
  661.          } else if (var1 == OrientationRequested.class) {
  662.             return var7 == 2 ? OrientationRequested.LANDSCAPE : OrientationRequested.PORTRAIT;
  663.          } else if (var1 == PageRanges.class) {
  664.             return new PageRanges(1, Integer.MAX_VALUE);
  665.          } else {
  666.             if (var1 == Media.class) {
  667.                MediaSizeName var10 = this.findWin32Media(var3);
  668.                if (var10 != null) {
  669.                   return var10;
  670.                }
  671.  
  672.                this.initMedia();
  673.                if (this.mediaSizeNames != null && this.mediaSizeNames.length > 0) {
  674.                   if (this.idList != null && this.mediaSizes != null && this.idList.size() == this.mediaSizes.length) {
  675.                      Integer var11 = new Integer(var3);
  676.                      int var12 = this.idList.indexOf(var11);
  677.                      if (var12 >= 0 && var12 < this.mediaSizes.length) {
  678.                         return this.mediaSizes[var12].getMediaSizeName();
  679.                      }
  680.                   }
  681.  
  682.                   return this.mediaSizeNames[0];
  683.                }
  684.             } else {
  685.                if (var1 == MediaPrintableArea.class) {
  686.                   float[] var19 = this.getMediaPrintableArea(this.printer, var3);
  687.                   if (var19 != null) {
  688.                      MediaPrintableArea var21 = null;
  689.  
  690.                      try {
  691.                         var21 = new MediaPrintableArea(var19[0], var19[1], var19[2], var19[3], 25400);
  692.                      } catch (IllegalArgumentException var14) {
  693.                      }
  694.  
  695.                      return var21;
  696.                   }
  697.  
  698.                   return null;
  699.                }
  700.  
  701.                if (var1 == SunAlternateMedia.class) {
  702.                   return null;
  703.                }
  704.  
  705.                if (var1 == Destination.class) {
  706.                   try {
  707.                      return new Destination((new File("out.prn")).toURI());
  708.                   } catch (SecurityException var15) {
  709.                      try {
  710.                         return new Destination(new URI("file:out.prn"));
  711.                      } catch (URISyntaxException var13) {
  712.                         return null;
  713.                      }
  714.                   }
  715.                }
  716.  
  717.                if (var1 == Sides.class) {
  718.                   switch (var8) {
  719.                      case 2:
  720.                         return Sides.TWO_SIDED_LONG_EDGE;
  721.                      case 3:
  722.                         return Sides.TWO_SIDED_SHORT_EDGE;
  723.                      default:
  724.                         return Sides.ONE_SIDED;
  725.                   }
  726.                }
  727.  
  728.                if (var1 == PrinterResolution.class) {
  729.                   if (var5 >= 0 && var4 >= 0) {
  730.                      return new PrinterResolution(var5, var4, 100);
  731.                   }
  732.  
  733.                   int var22 = var4 > var5 ? var4 : var5;
  734.                   if (var22 > 0) {
  735.                      return new PrinterResolution(var22, var22, 100);
  736.                   }
  737.                } else {
  738.                   if (var1 == ColorSupported.class) {
  739.                      int var18 = this.getPrinterCapabilities();
  740.                      if ((var18 & 1) != 0) {
  741.                         return ColorSupported.SUPPORTED;
  742.                      }
  743.  
  744.                      return ColorSupported.NOT_SUPPORTED;
  745.                   }
  746.  
  747.                   if (var1 == PrintQuality.class) {
  748.                      if (var5 < 0 && var5 >= -4) {
  749.                         switch (var5) {
  750.                            case -4:
  751.                               return PrintQuality.HIGH;
  752.                            case -3:
  753.                               return PrintQuality.NORMAL;
  754.                            default:
  755.                               return PrintQuality.DRAFT;
  756.                         }
  757.                      }
  758.                   } else {
  759.                      if (var1 == RequestingUserName.class) {
  760.                         String var17 = "";
  761.  
  762.                         try {
  763.                            var17 = System.getProperty("user.name", "");
  764.                         } catch (SecurityException var16) {
  765.                         }
  766.  
  767.                         return new RequestingUserName(var17, (Locale)null);
  768.                      }
  769.  
  770.                      if (var1 == SheetCollate.class) {
  771.                         if (var9 == 1) {
  772.                            return SheetCollate.COLLATED;
  773.                         }
  774.  
  775.                         return SheetCollate.UNCOLLATED;
  776.                      }
  777.  
  778.                      if (var1 == Fidelity.class) {
  779.                         return Fidelity.FIDELITY_FALSE;
  780.                      }
  781.                   }
  782.                }
  783.             }
  784.  
  785.             return null;
  786.          }
  787.       }
  788.    }
  789.  
  790.    private boolean isPostScriptFlavor(DocFlavor var1) {
  791.       return var1.equals(BYTE_ARRAY.POSTSCRIPT) || var1.equals(INPUT_STREAM.POSTSCRIPT) || var1.equals(URL.POSTSCRIPT);
  792.    }
  793.  
  794.    private boolean isPSDocAttr(Class var1) {
  795.       return var1 == OrientationRequested.class || var1 == Copies.class;
  796.    }
  797.  
  798.    private boolean isAutoSense(DocFlavor var1) {
  799.       return var1.equals(BYTE_ARRAY.AUTOSENSE) || var1.equals(INPUT_STREAM.AUTOSENSE) || var1.equals(URL.AUTOSENSE);
  800.    }
  801.  
  802.    public Object getSupportedAttributeValues(Class<? extends Attribute> var1, DocFlavor var2, AttributeSet var3) {
  803.       if (var1 == null) {
  804.          throw new NullPointerException("null category");
  805.       } else if (!Attribute.class.isAssignableFrom(var1)) {
  806.          throw new IllegalArgumentException(var1 + " does not implement Attribute");
  807.       } else {
  808.          if (var2 != null) {
  809.             if (!this.isDocFlavorSupported(var2)) {
  810.                throw new IllegalArgumentException(var2 + " is an unsupported flavor");
  811.             }
  812.  
  813.             if (this.isAutoSense(var2) || this.isPostScriptFlavor(var2) && this.isPSDocAttr(var1)) {
  814.                return null;
  815.             }
  816.          }
  817.  
  818.          if (!this.isAttributeCategorySupported(var1)) {
  819.             return null;
  820.          } else if (var1 == JobName.class) {
  821.             return new JobName("Java Printing", (Locale)null);
  822.          } else if (var1 == RequestingUserName.class) {
  823.             String var22 = "";
  824.  
  825.             try {
  826.                var22 = System.getProperty("user.name", "");
  827.             } catch (SecurityException var8) {
  828.             }
  829.  
  830.             return new RequestingUserName(var22, (Locale)null);
  831.          } else if (var1 == ColorSupported.class) {
  832.             int var21 = this.getPrinterCapabilities();
  833.             if ((var21 & 1) != 0) {
  834.                return ColorSupported.SUPPORTED;
  835.             } else {
  836.                return ColorSupported.NOT_SUPPORTED;
  837.             }
  838.          } else if (var1 == Chromaticity.class) {
  839.             if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE) && !var2.equals(BYTE_ARRAY.GIF) && !var2.equals(INPUT_STREAM.GIF) && !var2.equals(URL.GIF) && !var2.equals(BYTE_ARRAY.JPEG) && !var2.equals(INPUT_STREAM.JPEG) && !var2.equals(URL.JPEG) && !var2.equals(BYTE_ARRAY.PNG) && !var2.equals(INPUT_STREAM.PNG) && !var2.equals(URL.PNG)) {
  840.                return null;
  841.             } else {
  842.                int var20 = this.getPrinterCapabilities();
  843.                if ((var20 & 1) == 0) {
  844.                   Chromaticity[] var28 = new Chromaticity[]{Chromaticity.MONOCHROME};
  845.                   return var28;
  846.                } else {
  847.                   Chromaticity[] var27 = new Chromaticity[]{Chromaticity.MONOCHROME, Chromaticity.COLOR};
  848.                   return var27;
  849.                }
  850.             }
  851.          } else if (var1 == Destination.class) {
  852.             try {
  853.                return new Destination((new File("out.prn")).toURI());
  854.             } catch (SecurityException var9) {
  855.                try {
  856.                   return new Destination(new URI("file:out.prn"));
  857.                } catch (URISyntaxException var7) {
  858.                   return null;
  859.                }
  860.             }
  861.          } else if (var1 == OrientationRequested.class) {
  862.             if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE) && !var2.equals(INPUT_STREAM.GIF) && !var2.equals(INPUT_STREAM.JPEG) && !var2.equals(INPUT_STREAM.PNG) && !var2.equals(BYTE_ARRAY.GIF) && !var2.equals(BYTE_ARRAY.JPEG) && !var2.equals(BYTE_ARRAY.PNG) && !var2.equals(URL.GIF) && !var2.equals(URL.JPEG) && !var2.equals(URL.PNG)) {
  863.                return null;
  864.             } else {
  865.                OrientationRequested[] var19 = new OrientationRequested[]{OrientationRequested.PORTRAIT, OrientationRequested.LANDSCAPE, OrientationRequested.REVERSE_LANDSCAPE};
  866.                return var19;
  867.             }
  868.          } else if (var1 != Copies.class && var1 != CopiesSupported.class) {
  869.             if (var1 == Media.class) {
  870.                this.initMedia();
  871.                int var17 = this.mediaSizeNames == null ? 0 : this.mediaSizeNames.length;
  872.                this.mediaTrays = this.getMediaTrays();
  873.                var17 += this.mediaTrays == null ? 0 : this.mediaTrays.length;
  874.                Media[] var26 = new Media[var17];
  875.                if (this.mediaSizeNames != null) {
  876.                   System.arraycopy(this.mediaSizeNames, 0, var26, 0, this.mediaSizeNames.length);
  877.                }
  878.  
  879.                if (this.mediaTrays != null) {
  880.                   System.arraycopy(this.mediaTrays, 0, var26, this.mediaSizeNames.length, this.mediaTrays.length);
  881.                }
  882.  
  883.                return var26;
  884.             } else if (var1 == MediaPrintableArea.class) {
  885.                this.initMedia();
  886.                if (this.mediaPrintables == null) {
  887.                   return null;
  888.                } else {
  889.                   Media var16;
  890.                   if (var3 != null && (var16 = (Media)var3.get(Media.class)) != null && var16 instanceof MediaSizeName) {
  891.                      MediaPrintableArea[] var25 = new MediaPrintableArea[1];
  892.                      if (this.mediaSizeNames.length == this.mediaPrintables.length) {
  893.                         for(int var6 = 0; var6 < this.mediaSizeNames.length; ++var6) {
  894.                            if (var16.equals(this.mediaSizeNames[var6])) {
  895.                               var25[0] = this.mediaPrintables[var6];
  896.                               return var25;
  897.                            }
  898.                         }
  899.                      }
  900.  
  901.                      MediaSize var29 = MediaSize.getMediaSizeForName((MediaSizeName)var16);
  902.                      if (var29 != null) {
  903.                         var25[0] = new MediaPrintableArea(0.0F, 0.0F, var29.getX(25400), var29.getY(25400), 25400);
  904.                         return var25;
  905.                      } else {
  906.                         return null;
  907.                      }
  908.                   } else {
  909.                      MediaPrintableArea[] var24 = new MediaPrintableArea[this.mediaPrintables.length];
  910.                      System.arraycopy(this.mediaPrintables, 0, var24, 0, this.mediaPrintables.length);
  911.                      return var24;
  912.                   }
  913.                }
  914.             } else if (var1 == SunAlternateMedia.class) {
  915.                return new SunAlternateMedia((Media)this.getDefaultAttributeValue(Media.class));
  916.             } else if (var1 == PageRanges.class) {
  917.                if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  918.                   return null;
  919.                } else {
  920.                   PageRanges[] var15 = new PageRanges[]{new PageRanges(1, Integer.MAX_VALUE)};
  921.                   return var15;
  922.                }
  923.             } else if (var1 == PrinterResolution.class) {
  924.                PrinterResolution[] var14 = this.getPrintResolutions();
  925.                if (var14 == null) {
  926.                   return null;
  927.                } else {
  928.                   PrinterResolution[] var23 = new PrinterResolution[var14.length];
  929.                   System.arraycopy(var14, 0, var23, 0, var14.length);
  930.                   return var23;
  931.                }
  932.             } else if (var1 == Sides.class) {
  933.                if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  934.                   return null;
  935.                } else {
  936.                   Sides[] var13 = new Sides[]{Sides.ONE_SIDED, Sides.TWO_SIDED_LONG_EDGE, Sides.TWO_SIDED_SHORT_EDGE};
  937.                   return var13;
  938.                }
  939.             } else if (var1 == PrintQuality.class) {
  940.                PrintQuality[] var12 = new PrintQuality[]{PrintQuality.DRAFT, PrintQuality.HIGH, PrintQuality.NORMAL};
  941.                return var12;
  942.             } else if (var1 != SheetCollate.class) {
  943.                if (var1 == Fidelity.class) {
  944.                   Fidelity[] var11 = new Fidelity[]{Fidelity.FIDELITY_FALSE, Fidelity.FIDELITY_TRUE};
  945.                   return var11;
  946.                } else {
  947.                   return null;
  948.                }
  949.             } else {
  950.                int var4 = this.getPrinterCapabilities();
  951.                if (((this.prnCaps & 4) == 0 || var2 != null) && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  952.                   return null;
  953.                } else {
  954.                   SheetCollate[] var5 = new SheetCollate[]{SheetCollate.COLLATED, SheetCollate.UNCOLLATED};
  955.                   return var5;
  956.                }
  957.             }
  958.          } else {
  959.             synchronized(this) {
  960.                if (!this.gotCopies) {
  961.                   this.nCopies = this.getCopiesSupported(this.printer, this.getPort());
  962.                   this.gotCopies = true;
  963.                }
  964.             }
  965.  
  966.             return new CopiesSupported(1, this.nCopies);
  967.          }
  968.       }
  969.    }
  970.  
  971.    public boolean isAttributeValueSupported(Attribute var1, DocFlavor var2, AttributeSet var3) {
  972.       if (var1 == null) {
  973.          throw new NullPointerException("null attribute");
  974.       } else {
  975.          Class var4 = var1.getCategory();
  976.          if (var2 != null) {
  977.             if (!this.isDocFlavorSupported(var2)) {
  978.                throw new IllegalArgumentException(var2 + " is an unsupported flavor");
  979.             }
  980.  
  981.             if (this.isAutoSense(var2) || this.isPostScriptFlavor(var2) && this.isPSDocAttr(var4)) {
  982.                return false;
  983.             }
  984.          }
  985.  
  986.          if (!this.isAttributeCategorySupported(var4)) {
  987.             return false;
  988.          } else if (var1.getCategory() == Chromaticity.class) {
  989.             if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE) && !var2.equals(BYTE_ARRAY.GIF) && !var2.equals(INPUT_STREAM.GIF) && !var2.equals(URL.GIF) && !var2.equals(BYTE_ARRAY.JPEG) && !var2.equals(INPUT_STREAM.JPEG) && !var2.equals(URL.JPEG) && !var2.equals(BYTE_ARRAY.PNG) && !var2.equals(INPUT_STREAM.PNG) && !var2.equals(URL.PNG)) {
  990.                return false;
  991.             } else {
  992.                int var10 = this.getPrinterCapabilities();
  993.                if ((var10 & 1) != 0) {
  994.                   return true;
  995.                } else {
  996.                   return var1 == Chromaticity.MONOCHROME;
  997.                }
  998.             }
  999.          } else if (var1.getCategory() == Copies.class) {
  1000.             return this.isSupportedCopies((Copies)var1);
  1001.          } else if (var1.getCategory() == Destination.class) {
  1002.             URI var9 = ((Destination)var1).getURI();
  1003.             if ("file".equals(var9.getScheme()) && !var9.getSchemeSpecificPart().equals("")) {
  1004.                return true;
  1005.             } else {
  1006.                return false;
  1007.             }
  1008.          } else {
  1009.             if (var1.getCategory() == Media.class) {
  1010.                if (var1 instanceof MediaSizeName) {
  1011.                   return this.isSupportedMedia((MediaSizeName)var1);
  1012.                }
  1013.  
  1014.                if (var1 instanceof MediaTray) {
  1015.                   return this.isSupportedMediaTray((MediaTray)var1);
  1016.                }
  1017.             } else {
  1018.                if (var1.getCategory() == MediaPrintableArea.class) {
  1019.                   return this.isSupportedMediaPrintableArea((MediaPrintableArea)var1);
  1020.                }
  1021.  
  1022.                if (var1.getCategory() == SunAlternateMedia.class) {
  1023.                   Media var8 = ((SunAlternateMedia)var1).getMedia();
  1024.                   return this.isAttributeValueSupported(var8, var2, var3);
  1025.                }
  1026.  
  1027.                if (var1.getCategory() == PageRanges.class) {
  1028.                   if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  1029.                      return false;
  1030.                   }
  1031.                } else if (var1.getCategory() == SheetCollate.class) {
  1032.                   int var5 = this.getPrinterCapabilities();
  1033.                   if (((this.prnCaps & 4) == 0 || var2 != null) && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  1034.                      return false;
  1035.                   }
  1036.                } else if (var1.getCategory() == Sides.class) {
  1037.                   if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  1038.                      return false;
  1039.                   }
  1040.                } else if (var1.getCategory() == PrinterResolution.class) {
  1041.                   if (var1 instanceof PrinterResolution) {
  1042.                      return this.isSupportedResolution((PrinterResolution)var1);
  1043.                   }
  1044.                } else if (var1.getCategory() == OrientationRequested.class) {
  1045.                   if (var1 == OrientationRequested.REVERSE_PORTRAIT || var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE) && !var2.equals(INPUT_STREAM.GIF) && !var2.equals(INPUT_STREAM.JPEG) && !var2.equals(INPUT_STREAM.PNG) && !var2.equals(BYTE_ARRAY.GIF) && !var2.equals(BYTE_ARRAY.JPEG) && !var2.equals(BYTE_ARRAY.PNG) && !var2.equals(URL.GIF) && !var2.equals(URL.JPEG) && !var2.equals(URL.PNG)) {
  1046.                      return false;
  1047.                   }
  1048.                } else if (var1.getCategory() == ColorSupported.class) {
  1049.                   int var7 = this.getPrinterCapabilities();
  1050.                   boolean var6 = (var7 & 1) != 0;
  1051.                   if (!var6 && var1 == ColorSupported.SUPPORTED || var6 && var1 == ColorSupported.NOT_SUPPORTED) {
  1052.                      return false;
  1053.                   }
  1054.                }
  1055.             }
  1056.  
  1057.             return true;
  1058.          }
  1059.       }
  1060.    }
  1061.  
  1062.    public AttributeSet getUnsupportedAttributes(DocFlavor var1, AttributeSet var2) {
  1063.       if (var1 != null && !this.isDocFlavorSupported(var1)) {
  1064.          throw new IllegalArgumentException("flavor " + var1 + "is not supported");
  1065.       } else if (var2 == null) {
  1066.          return null;
  1067.       } else {
  1068.          HashAttributeSet var4 = new HashAttributeSet();
  1069.          Attribute[] var5 = var2.toArray();
  1070.  
  1071.          for(int var6 = 0; var6 < var5.length; ++var6) {
  1072.             try {
  1073.                Attribute var3 = var5[var6];
  1074.                if (!this.isAttributeCategorySupported(var3.getCategory())) {
  1075.                   var4.add(var3);
  1076.                } else if (!this.isAttributeValueSupported(var3, var1, var2)) {
  1077.                   var4.add(var3);
  1078.                }
  1079.             } catch (ClassCastException var8) {
  1080.             }
  1081.          }
  1082.  
  1083.          if (var4.isEmpty()) {
  1084.             return null;
  1085.          } else {
  1086.             return var4;
  1087.          }
  1088.       }
  1089.    }
  1090.  
  1091.    public ServiceUIFactory getServiceUIFactory() {
  1092.       return null;
  1093.    }
  1094.  
  1095.    public String toString() {
  1096.       return "Win32 Printer : " + this.getName();
  1097.    }
  1098.  
  1099.    public boolean equals(Object var1) {
  1100.       return var1 == this || var1 instanceof Win32PrintService && ((Win32PrintService)var1).getName().equals(this.getName());
  1101.    }
  1102.  
  1103.    public int hashCode() {
  1104.       return this.getClass().hashCode() + this.getName().hashCode();
  1105.    }
  1106.  
  1107.    public boolean usesClass(Class var1) {
  1108.       return var1 == WPrinterJob.class;
  1109.    }
  1110.  
  1111.    private native int[] getAllMediaIDs(String var1, String var2);
  1112.  
  1113.    private native int[] getAllMediaSizes(String var1, String var2);
  1114.  
  1115.    private native int[] getAllMediaTrays(String var1, String var2);
  1116.  
  1117.    private native float[] getMediaPrintableArea(String var1, int var2);
  1118.  
  1119.    private native String[] getAllMediaNames(String var1, String var2);
  1120.  
  1121.    private native String[] getAllMediaTrayNames(String var1, String var2);
  1122.  
  1123.    private native int getCopiesSupported(String var1, String var2);
  1124.  
  1125.    private native int[] getAllResolutions(String var1, String var2);
  1126.  
  1127.    private native int getCapabilities(String var1, String var2);
  1128.  
  1129.    private native int[] getDefaultSettings(String var1);
  1130.  
  1131.    private native int getJobStatus(String var1, int var2);
  1132.  
  1133.    private native String getPrinterPort(String var1);
  1134.  
  1135.    static {
  1136.       Class var0 = Win32MediaSize.class;
  1137.       supportedFlavors = new DocFlavor[]{BYTE_ARRAY.GIF, INPUT_STREAM.GIF, URL.GIF, BYTE_ARRAY.JPEG, INPUT_STREAM.JPEG, URL.JPEG, BYTE_ARRAY.PNG, INPUT_STREAM.PNG, URL.PNG, SERVICE_FORMATTED.PAGEABLE, SERVICE_FORMATTED.PRINTABLE, BYTE_ARRAY.AUTOSENSE, URL.AUTOSENSE, INPUT_STREAM.AUTOSENSE};
  1138.       serviceAttrCats = new Class[]{PrinterName.class, PrinterIsAcceptingJobs.class, QueuedJobCount.class, ColorSupported.class};
  1139.       otherAttrCats = new Class[]{JobName.class, RequestingUserName.class, Copies.class, Destination.class, OrientationRequested.class, PageRanges.class, Media.class, MediaPrintableArea.class, Fidelity.class, SheetCollate.class, SunAlternateMedia.class, Chromaticity.class};
  1140.       dmPaperToPrintService = new MediaSizeName[]{MediaSizeName.NA_LETTER, MediaSizeName.NA_LETTER, MediaSizeName.TABLOID, MediaSizeName.LEDGER, MediaSizeName.NA_LEGAL, MediaSizeName.INVOICE, MediaSizeName.EXECUTIVE, MediaSizeName.ISO_A3, MediaSizeName.ISO_A4, MediaSizeName.ISO_A4, MediaSizeName.ISO_A5, MediaSizeName.JIS_B4, MediaSizeName.JIS_B5, MediaSizeName.FOLIO, MediaSizeName.QUARTO, MediaSizeName.NA_10X14_ENVELOPE, MediaSizeName.B, MediaSizeName.NA_LETTER, MediaSizeName.NA_NUMBER_9_ENVELOPE, MediaSizeName.NA_NUMBER_10_ENVELOPE, MediaSizeName.NA_NUMBER_11_ENVELOPE, MediaSizeName.NA_NUMBER_12_ENVELOPE, MediaSizeName.NA_NUMBER_14_ENVELOPE, MediaSizeName.C, MediaSizeName.D, MediaSizeName.E, MediaSizeName.ISO_DESIGNATED_LONG, MediaSizeName.ISO_C5, MediaSizeName.ISO_C3, MediaSizeName.ISO_C4, MediaSizeName.ISO_C6, MediaSizeName.ITALY_ENVELOPE, MediaSizeName.ISO_B4, MediaSizeName.ISO_B5, MediaSizeName.ISO_B6, MediaSizeName.ITALY_ENVELOPE, MediaSizeName.MONARCH_ENVELOPE, MediaSizeName.PERSONAL_ENVELOPE, MediaSizeName.NA_10X15_ENVELOPE, MediaSizeName.NA_9X12_ENVELOPE, MediaSizeName.FOLIO, MediaSizeName.ISO_B4, MediaSizeName.JAPANESE_POSTCARD, MediaSizeName.NA_9X11_ENVELOPE};
  1141.       dmPaperBinToPrintService = new MediaTray[]{MediaTray.TOP, MediaTray.BOTTOM, MediaTray.MIDDLE, MediaTray.MANUAL, MediaTray.ENVELOPE, Win32MediaTray.ENVELOPE_MANUAL, Win32MediaTray.AUTO, Win32MediaTray.TRACTOR, Win32MediaTray.SMALL_FORMAT, Win32MediaTray.LARGE_FORMAT, MediaTray.LARGE_CAPACITY, null, null, MediaTray.MAIN, Win32MediaTray.FORMSOURCE};
  1142.       DM_PAPERSIZE = 2;
  1143.       DM_PRINTQUALITY = 1024;
  1144.       DM_YRESOLUTION = 8192;
  1145.    }
  1146. }
  1147.