28 import java.util.Map; 29 import java.util.WeakHashMap; 30 import com.sun.glass.ui.Screen; 31 import com.sun.scenario.effect.FilterContext; 32 33 public class PrFilterContext extends FilterContext { 34 35 private static Screen defaultScreen; 36 private static final Map<Screen, PrFilterContext> ctxMap = 37 new WeakHashMap<Screen, PrFilterContext>(); 38 39 private static PrFilterContext printerFilterContext = null; 40 public static PrFilterContext getPrinterContext(Object resourceFactory) { 41 if (printerFilterContext == null) { 42 // Parameter is returned by FilterContext.getReferent() 43 printerFilterContext = new PrFilterContext(resourceFactory); 44 } 45 return printerFilterContext; 46 } 47 48 private PrFilterContext(Object screen) { 49 super(screen); 50 } 51 52 public static PrFilterContext getInstance(Screen screen) { 53 if (screen == null) { 54 throw new IllegalArgumentException("Screen must be non-null"); 55 } 56 PrFilterContext fctx = ctxMap.get(screen); 57 if (fctx == null) { 58 fctx = new PrFilterContext(screen); 59 ctxMap.put(screen, fctx); 60 } 61 return fctx; 62 } 63 64 public static PrFilterContext getDefaultInstance() { 65 if (defaultScreen == null) { 66 // NOTE: filter context may need to sign up for screen set config 67 // changes 68 defaultScreen = Screen.getMainScreen(); 69 } 70 return getInstance(defaultScreen); 71 } 72 } | 28 import java.util.Map; 29 import java.util.WeakHashMap; 30 import com.sun.glass.ui.Screen; 31 import com.sun.scenario.effect.FilterContext; 32 33 public class PrFilterContext extends FilterContext { 34 35 private static Screen defaultScreen; 36 private static final Map<Screen, PrFilterContext> ctxMap = 37 new WeakHashMap<Screen, PrFilterContext>(); 38 39 private static PrFilterContext printerFilterContext = null; 40 public static PrFilterContext getPrinterContext(Object resourceFactory) { 41 if (printerFilterContext == null) { 42 // Parameter is returned by FilterContext.getReferent() 43 printerFilterContext = new PrFilterContext(resourceFactory); 44 } 45 return printerFilterContext; 46 } 47 48 private PrFilterContext swinstance; 49 private boolean forceSW; 50 51 private PrFilterContext(Object screen) { 52 super(screen); 53 } 54 55 public static PrFilterContext getInstance(Screen screen) { 56 if (screen == null) { 57 throw new IllegalArgumentException("Screen must be non-null"); 58 } 59 PrFilterContext fctx = ctxMap.get(screen); 60 if (fctx == null) { 61 fctx = new PrFilterContext(screen); 62 ctxMap.put(screen, fctx); 63 } 64 return fctx; 65 } 66 67 public static PrFilterContext getDefaultInstance() { 68 if (defaultScreen == null) { 69 // NOTE: filter context may need to sign up for screen set config 70 // changes 71 defaultScreen = Screen.getMainScreen(); 72 } 73 return getInstance(defaultScreen); 74 } 75 76 // Calledonly from PPSRenderer while making a PPStoPSWDispMapPeer, 77 // assumes original is hw instance. 78 public PrFilterContext getSoftwareInstance() { 79 if (swinstance == null) { 80 if (forceSW) { 81 swinstance = this; 82 } else { 83 swinstance = new PrFilterContext(getReferent()); 84 swinstance.forceSW = true; 85 } 86 } 87 return swinstance; 88 } 89 90 public boolean isForceSoftware() { 91 return forceSW; 92 } 93 94 @Override 95 public int hashCode() { 96 return getReferent().hashCode() ^ Boolean.hashCode(forceSW); 97 } 98 99 @Override 100 public boolean equals(Object o) { 101 if (!(o instanceof PrFilterContext)) { 102 return false; 103 } 104 PrFilterContext pfctx = (PrFilterContext) o; 105 return (this.getReferent().equals(pfctx.getReferent()) && 106 this.forceSW == pfctx.forceSW); 107 } 108 } |