Пример #1
0
  @Override
  protected void drawGlyphList(SunGraphics2D sg2d, GlyphList gl) {
    /*
     * The native drawGlyphList() only works with two composite types:
     *    - CompositeType.SrcOver (with any extra alpha), or
     *    - CompositeType.Xor
     */
    Composite comp = sg2d.composite;
    if (comp == AlphaComposite.Src) {
      /*
       * In addition to the composite types listed above, the logic
       * in OGL/D3DSurfaceData.validatePipe() allows for
       * CompositeType.SrcNoEa, but only in the presence of an opaque
       * color.  If we reach this case, we know the color is opaque,
       * and therefore SrcNoEa is the same as SrcOverNoEa, so we
       * override the composite here.
       */
      comp = AlphaComposite.SrcOver;
    }

    rq.lock();
    try {
      validateContext(sg2d, comp);
      enqueueGlyphList(sg2d, gl);
    } finally {
      rq.unlock();
    }
  }