< prev index next >

modules/javafx.graphics/src/main/java/com/sun/marlin/TransformingPathConsumer2D.java

Print this page




  32 
  33     TransformingPathConsumer2D() {
  34         // used by RendererContext
  35     }
  36 
  37     // recycled PathConsumer2D instances from deltaTransformConsumer()
  38     private final DeltaScaleFilter     dt_DeltaScaleFilter     = new DeltaScaleFilter();
  39     private final DeltaTransformFilter dt_DeltaTransformFilter = new DeltaTransformFilter();
  40 
  41     public PathConsumer2D deltaTransformConsumer(PathConsumer2D out,
  42                                                  BaseTransform at)
  43     {
  44         if (at == null) {
  45             return out;
  46         }
  47         float mxx = (float) at.getMxx();
  48         float mxy = (float) at.getMxy();
  49         float myx = (float) at.getMyx();
  50         float myy = (float) at.getMyy();
  51 
  52         if (mxy == 0f && myx == 0f) {
  53             if (mxx == 1f && myy == 1f) {
  54                 return out;
  55             } else {
  56                 return dt_DeltaScaleFilter.init(out, mxx, myy);
  57             }
  58         } else {
  59             return dt_DeltaTransformFilter.init(out, mxx, mxy, myx, myy);
  60         }
  61     }
  62 
  63     // recycled PathConsumer2D instances from inverseDeltaTransformConsumer()
  64     private final DeltaScaleFilter     iv_DeltaScaleFilter     = new DeltaScaleFilter();
  65     private final DeltaTransformFilter iv_DeltaTransformFilter = new DeltaTransformFilter();
  66 
  67     public PathConsumer2D inverseDeltaTransformConsumer(PathConsumer2D out,
  68                                                         BaseTransform at)
  69     {
  70         if (at == null) {
  71             return out;
  72         }
  73         float mxx = (float) at.getMxx();
  74         float mxy = (float) at.getMxy();
  75         float myx = (float) at.getMyx();
  76         float myy = (float) at.getMyy();
  77 
  78         if (mxy == 0f && myx == 0f) {
  79             if (mxx == 1f && myy == 1f) {
  80                 return out;
  81             } else {
  82                 return iv_DeltaScaleFilter.init(out, 1.0f/mxx, 1.0f/myy);
  83             }
  84         } else {
  85             float det = mxx * myy - mxy * myx;
  86             return iv_DeltaTransformFilter.init(out,
  87                                                 myy / det,
  88                                                -mxy / det,
  89                                                -myx / det,
  90                                                 mxx / det);
  91         }
  92     }
  93 
  94 
  95     static final class DeltaScaleFilter implements PathConsumer2D {
  96         private PathConsumer2D out;
  97         private float sx, sy;
  98 
  99         DeltaScaleFilter() {}




  32 
  33     TransformingPathConsumer2D() {
  34         // used by RendererContext
  35     }
  36 
  37     // recycled PathConsumer2D instances from deltaTransformConsumer()
  38     private final DeltaScaleFilter     dt_DeltaScaleFilter     = new DeltaScaleFilter();
  39     private final DeltaTransformFilter dt_DeltaTransformFilter = new DeltaTransformFilter();
  40 
  41     public PathConsumer2D deltaTransformConsumer(PathConsumer2D out,
  42                                                  BaseTransform at)
  43     {
  44         if (at == null) {
  45             return out;
  46         }
  47         float mxx = (float) at.getMxx();
  48         float mxy = (float) at.getMxy();
  49         float myx = (float) at.getMyx();
  50         float myy = (float) at.getMyy();
  51 
  52         if (mxy == 0.0f && myx == 0.0f) {
  53             if (mxx == 1.0f && myy == 1.0f) {
  54                 return out;
  55             } else {
  56                 return dt_DeltaScaleFilter.init(out, mxx, myy);
  57             }
  58         } else {
  59             return dt_DeltaTransformFilter.init(out, mxx, mxy, myx, myy);
  60         }
  61     }
  62 
  63     // recycled PathConsumer2D instances from inverseDeltaTransformConsumer()
  64     private final DeltaScaleFilter     iv_DeltaScaleFilter     = new DeltaScaleFilter();
  65     private final DeltaTransformFilter iv_DeltaTransformFilter = new DeltaTransformFilter();
  66 
  67     public PathConsumer2D inverseDeltaTransformConsumer(PathConsumer2D out,
  68                                                         BaseTransform at)
  69     {
  70         if (at == null) {
  71             return out;
  72         }
  73         float mxx = (float) at.getMxx();
  74         float mxy = (float) at.getMxy();
  75         float myx = (float) at.getMyx();
  76         float myy = (float) at.getMyy();
  77 
  78         if (mxy == 0.0f && myx == 0.0f) {
  79             if (mxx == 1.0f && myy == 1.0f) {
  80                 return out;
  81             } else {
  82                 return iv_DeltaScaleFilter.init(out, 1.0f/mxx, 1.0f/myy);
  83             }
  84         } else {
  85             float det = mxx * myy - mxy * myx;
  86             return iv_DeltaTransformFilter.init(out,
  87                                                 myy / det,
  88                                                -mxy / det,
  89                                                -myx / det,
  90                                                 mxx / det);
  91         }
  92     }
  93 
  94 
  95     static final class DeltaScaleFilter implements PathConsumer2D {
  96         private PathConsumer2D out;
  97         private float sx, sy;
  98 
  99         DeltaScaleFilter() {}


< prev index next >