当前位置: 首页>>代码示例>>Java>>正文


Java Blit.Blit方法代码示例

本文整理汇总了Java中sun.java2d.loops.Blit.Blit方法的典型用法代码示例。如果您正苦于以下问题:Java Blit.Blit方法的具体用法?Java Blit.Blit怎么用?Java Blit.Blit使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在sun.java2d.loops.Blit的用法示例。


在下文中一共展示了Blit.Blit方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: blitSurfaceData

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
private void blitSurfaceData(final SurfaceData src, final SurfaceData dst) {
    //TODO blit. proof-of-concept
    if (src != dst && src != null && dst != null
        && !(dst instanceof NullSurfaceData)
        && !(src instanceof NullSurfaceData)
        && src.getSurfaceType().equals(dst.getSurfaceType())
        && src.getDefaultScale() == dst.getDefaultScale()) {
        final Rectangle size = src.getBounds();
        final Blit blit = Blit.locate(src.getSurfaceType(),
                                      CompositeType.Src,
                                      dst.getSurfaceType());
        if (blit != null) {
            blit.Blit(src, dst, AlphaComposite.Src, null, 0, 0, 0, 0,
                      size.width, size.height);
        }
    }
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:18,代码来源:LWWindowPeer.java

示例2: blitSurfaceData

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
private void blitSurfaceData(final SurfaceData src, final SurfaceData dst) {
    //TODO blit. proof-of-concept
    if (src != dst && src != null && dst != null
        && !(dst instanceof NullSurfaceData)
        && !(src instanceof NullSurfaceData)
        && src.getSurfaceType().equals(dst.getSurfaceType())
        && src.getDefaultScaleX() == dst.getDefaultScaleX()
        && src.getDefaultScaleY() == dst.getDefaultScaleY())
    {
        final Rectangle size = src.getBounds();
        final Blit blit = Blit.locate(src.getSurfaceType(),
                                      CompositeType.Src,
                                      dst.getSurfaceType());
        if (blit != null) {
            blit.Blit(src, dst, AlphaComposite.Src, null, 0, 0, 0, 0,
                      size.width, size.height);
        }
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:20,代码来源:LWWindowPeer.java

示例3: updateSurfaceData

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
/**
 * This is the default implementation for updating the cached
 * SurfaceData from the source (primary) SurfaceData.
 * A simple Blit is used to copy the pixels from the source to
 * the destination SurfaceData.
 * A subclass can override this implementation if a more complex
 * operation is required to update its cached copies.
 */
public void updateSurfaceData(SurfaceData srcData,
                              SurfaceData dstData,
                              int w, int h)
{
    SurfaceType srcType = srcData.getSurfaceType();
    SurfaceType dstType = dstData.getSurfaceType();
    Blit blit = Blit.getFromCache(srcType,
                                  CompositeType.SrcNoEa,
                                  dstType);
    blit.Blit(srcData, dstData,
              AlphaComposite.Src, null,
              0, 0, 0, 0, w, h);
    dstData.markDirty();
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:23,代码来源:SurfaceDataProxy.java

示例4: complexClipBlit

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
private synchronized void complexClipBlit(SurfaceData src, SurfaceData dst,
                                          Composite comp, Region clip,
                                          int sx, int sy, int dx, int dy,
                                          int w, int h) {
    SurfaceData cachedSrc = null;
    if (srcTmp != null) {
        // use cached intermediate surface, if available
        cachedSrc = srcTmp.get();
    }

    // We can convert argb_pre data from OpenGL surface in two places:
    // - During OpenGL surface -> SW blit
    // - During SW -> SW blit
    // The first one is faster when we use opaque OGL surface, because in
    // this case we simply skip conversion and use color components as is.
    // Because of this we align intermediate buffer type with type of
    // destination not source.
    final int type = typeval == OGLSurfaceData.PF_INT_ARGB_PRE ?
                     BufferedImage.TYPE_INT_ARGB_PRE :
                     BufferedImage.TYPE_INT_ARGB;

    src = convertFrom(this, src, sx, sy, w, h, cachedSrc, type);

    // copy intermediate SW to destination SW using complex clip
    final Blit performop = Blit.getFromCache(src.getSurfaceType(),
                                             CompositeType.SrcNoEa,
                                             dst.getSurfaceType());
    performop.Blit(src, dst, comp, clip, 0, 0, dx, dy, w, h);

    if (src != cachedSrc) {
        // cache the intermediate surface
        srcTmp = new WeakReference<>(src);
    }
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:35,代码来源:OGLBlitLoops.java

示例5: Blit

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
public void Blit(SurfaceData src, SurfaceData dst,
                 Composite comp, Region clip,
                 int sx, int sy, int dx, int dy, int w, int h)
{
    Blit blit = Blit.getFromCache(src.getSurfaceType(),
                                  CompositeType.SrcNoEa,
                                  dstType);
    blit.Blit(src, dst, comp, clip, sx, sy, dx, dy, w, h);
    updateBitmask(src, dst,
                  src.getColorModel() instanceof IndexColorModel);
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:12,代码来源:X11PMBlitLoops.java

示例6: complexClipBlit

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
private synchronized void complexClipBlit(SurfaceData src, SurfaceData dst,
                                          Composite comp, Region clip,
                                          int sx, int sy, int dx, int dy,
                                          int w, int h) {
    SurfaceData cachedSrc = null;
    if (srcTmp != null) {
        // use cached intermediate surface, if available
        cachedSrc = srcTmp.get();
    }

    // Type- indicates the pixel format of Sysmem based BufferedImage.
    // Native d3d interfaces support on the fly conversion of pixels from
    // d3d surface to destination sysmem memory of type IntARGB only.
    final int type = BufferedImage.TYPE_INT_ARGB;
    src = convertFrom(this, src, sx, sy, w, h, cachedSrc, type);

    // copy intermediate SW to destination SW using complex clip
    final Blit performop = Blit.getFromCache(src.getSurfaceType(),
                                             CompositeType.SrcNoEa,
                                             dst.getSurfaceType());
    performop.Blit(src, dst, comp, clip, 0, 0, dx, dy, w, h);

    if (src != cachedSrc) {
        // cache the intermediate surface
        srcTmp = new WeakReference<>(src);
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:28,代码来源:D3DBlitLoops.java

示例7: compose

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
/**
 * This method composes the two source tiles
 * and places the result in the destination tile. Note that
 * the destination can be the same object as either
 * the first or second source.
 * @param src1 The first source tile for the compositing operation.
 * @param src2 The second source tile for the compositing operation.
 * @param dst The tile where the result of the operation is stored.
 */
public void compose(Raster src1, Raster src2, WritableRaster dst) {
    WritableRaster src;
    int w;
    int h;

    if (src2 != dst) {
        dst.setDataElements(0, 0, src2);
    }

    // REMIND: We should be able to create a SurfaceData from just
    // a non-writable Raster and a ColorModel.  Since we need to
    // create a SurfaceData from a BufferedImage then we need to
    // make a WritableRaster since it is needed to construct a
    // BufferedImage.
    if (src1 instanceof WritableRaster) {
        src = (WritableRaster) src1;
    } else {
        src = src1.createCompatibleWritableRaster();
        src.setDataElements(0, 0, src1);
    }

    w = Math.min(src.getWidth(), src2.getWidth());
    h = Math.min(src.getHeight(), src2.getHeight());

    BufferedImage srcImg = new BufferedImage(srcCM, src,
                                             srcCM.isAlphaPremultiplied(),
                                             null);
    BufferedImage dstImg = new BufferedImage(dstCM, dst,
                                             dstCM.isAlphaPremultiplied(),
                                             null);

    SurfaceData srcData = BufImgSurfaceData.createData(srcImg);
    SurfaceData dstData = BufImgSurfaceData.createData(dstImg);
    Blit blit = Blit.getFromCache(srcData.getSurfaceType(),
                                  comptype,
                                  dstData.getSurfaceType());
    blit.Blit(srcData, dstData, composite, null, 0, 0, 0, 0, w, h);
}
 
开发者ID:campolake,项目名称:openjdk9,代码行数:48,代码来源:SunCompositeContext.java

示例8: compose

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
/**
 * This method composes the two source tiles
 * and places the result in the destination tile. Note that
 * the destination can be the same object as either
 * the first or second source.
 * @param src1 The first source tile for the compositing operation.
 * @param src2 The second source tile for the compositing operation.
 * @param dst The tile where the result of the operation is stored.
 */
public void compose(Raster srcArg, Raster dstIn, WritableRaster dstOut) {
    WritableRaster src;
    int w;
    int h;

    if (dstIn != dstOut) {
        dstOut.setDataElements(0, 0, dstIn);
    }

    // REMIND: We should be able to create a SurfaceData from just
    // a non-writable Raster and a ColorModel.  Since we need to
    // create a SurfaceData from a BufferedImage then we need to
    // make a WritableRaster since it is needed to construct a
    // BufferedImage.
    if (srcArg instanceof WritableRaster) {
        src = (WritableRaster) srcArg;
    } else {
        src = srcArg.createCompatibleWritableRaster();
        src.setDataElements(0, 0, srcArg);
    }

    w = Math.min(src.getWidth(), dstIn.getWidth());
    h = Math.min(src.getHeight(), dstIn.getHeight());

    BufferedImage srcImg = new BufferedImage(srcCM, src,
                                             srcCM.isAlphaPremultiplied(),
                                             null);
    BufferedImage dstImg = new BufferedImage(dstCM, dstOut,
                                             dstCM.isAlphaPremultiplied(),
                                             null);

    SurfaceData srcData = BufImgSurfaceData.createData(srcImg);
    SurfaceData dstData = BufImgSurfaceData.createData(dstImg);
    Blit blit = Blit.getFromCache(srcData.getSurfaceType(),
                                  comptype,
                                  dstData.getSurfaceType());
    blit.Blit(srcData, dstData, composite, null, 0, 0, 0, 0, w, h);
}
 
开发者ID:JetBrains,项目名称:jdk8u_jdk,代码行数:48,代码来源:SunCompositeContext.java

示例9: doCopyArea

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
private void doCopyArea(int x, int y, int w, int h, int dx, int dy) {
    if (w <= 0 || h <= 0) {
        return;
    }
    SurfaceData theData = surfaceData;
    if (theData.copyArea(this, x, y, w, h, dx, dy)) {
        return;
    }
    if (transformState > TRANSFORM_TRANSLATESCALE) {
        throw new InternalError("transformed copyArea not implemented yet");
    }
    // REMIND: This method does not deal with missing data from the
    // source object (i.e. it does not send exposure events...)

    Region clip = getCompClip();

    Composite comp = composite;
    if (lastCAcomp != comp) {
        SurfaceType dsttype = theData.getSurfaceType();
        CompositeType comptype = imageComp;
        if (CompositeType.SrcOverNoEa.equals(comptype) &&
            theData.getTransparency() == Transparency.OPAQUE)
        {
            comptype = CompositeType.SrcNoEa;
        }
        lastCAblit = Blit.locate(dsttype, comptype, dsttype);
        lastCAcomp = comp;
    }

    double[] coords = {x, y, x + w, y + h, x + dx, y + dy};
    transform.transform(coords, 0, coords, 0, 3);

    x = (int)Math.ceil(coords[0] - 0.5);
    y = (int)Math.ceil(coords[1] - 0.5);
    w = ((int)Math.ceil(coords[2] - 0.5)) - x;
    h = ((int)Math.ceil(coords[3] - 0.5)) - y;
    dx = ((int)Math.ceil(coords[4] - 0.5)) - x;
    dy = ((int)Math.ceil(coords[5] - 0.5)) - y;

    // In case of negative scale transform, reflect the rect coords.
    if (w < 0) {
        w *= -1;
        x -= w;
    }
    if (h < 0) {
        h *= -1;
        y -= h;
    }

    Blit ob = lastCAblit;
    if (dy == 0 && dx > 0 && dx < w) {
        while (w > 0) {
            int partW = Math.min(w, dx);
            w -= partW;
            int sx = x + w;
            ob.Blit(theData, theData, comp, clip,
                    sx, y, sx+dx, y+dy, partW, h);
        }
        return;
    }
    if (dy > 0 && dy < h && dx > -w && dx < w) {
        while (h > 0) {
            int partH = Math.min(h, dy);
            h -= partH;
            int sy = y + h;
            ob.Blit(theData, theData, comp, clip,
                    x, sy, x+dx, sy+dy, w, partH);
        }
        return;
    }
    ob.Blit(theData, theData, comp, clip, x, y, x+dx, y+dy, w, h);
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:73,代码来源:SunGraphics2D.java

示例10: doCopyArea

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
private void doCopyArea(int x, int y, int w, int h, int dx, int dy) {
    if (w <= 0 || h <= 0) {
        return;
    }

    if (transformState == SunGraphics2D.TRANSFORM_ISIDENT) {
        // do nothing
    } else if (transformState <= SunGraphics2D.TRANSFORM_ANY_TRANSLATE) {
        x += transX;
        y += transY;
    } else if (transformState == SunGraphics2D.TRANSFORM_TRANSLATESCALE) {
        final double[] coords = {x, y, x + w, y + h, x + dx, y + dy};
        transform.transform(coords, 0, coords, 0, 3);
        x = (int) Math.ceil(coords[0] - 0.5);
        y = (int) Math.ceil(coords[1] - 0.5);
        w = ((int) Math.ceil(coords[2] - 0.5)) - x;
        h = ((int) Math.ceil(coords[3] - 0.5)) - y;
        dx = ((int) Math.ceil(coords[4] - 0.5)) - x;
        dy = ((int) Math.ceil(coords[5] - 0.5)) - y;
        // In case of negative scale transform, reflect the rect coords.
        if (w < 0) {
            w = -w;
            x -= w;
        }
        if (h < 0) {
            h = -h;
            y -= h;
        }
    } else {
        throw new InternalError("transformed copyArea not implemented yet");
    }

    SurfaceData theData = surfaceData;
    if (theData.copyArea(this, x, y, w, h, dx, dy)) {
        return;
    }

    // REMIND: This method does not deal with missing data from the
    // source object (i.e. it does not send exposure events...)

    Region clip = getCompClip();

    Composite comp = composite;
    if (lastCAcomp != comp) {
        SurfaceType dsttype = theData.getSurfaceType();
        CompositeType comptype = imageComp;
        if (CompositeType.SrcOverNoEa.equals(comptype) &&
            theData.getTransparency() == Transparency.OPAQUE)
        {
            comptype = CompositeType.SrcNoEa;
        }
        lastCAblit = Blit.locate(dsttype, comptype, dsttype);
        lastCAcomp = comp;
    }

    Blit ob = lastCAblit;
    if (dy == 0 && dx > 0 && dx < w) {
        while (w > 0) {
            int partW = Math.min(w, dx);
            w -= partW;
            int sx = x + w;
            ob.Blit(theData, theData, comp, clip,
                    sx, y, sx+dx, y+dy, partW, h);
        }
        return;
    }
    if (dy > 0 && dy < h && dx > -w && dx < w) {
        while (h > 0) {
            int partH = Math.min(h, dy);
            h -= partH;
            int sy = y + h;
            ob.Blit(theData, theData, comp, clip,
                    x, sy, x+dx, sy+dy, w, partH);
        }
        return;
    }
        ob.Blit(theData, theData, comp, clip, x, y, x+dx, y+dy, w, h);
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:79,代码来源:SunGraphics2D.java

示例11: Blit

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
public synchronized void Blit(SurfaceData src, SurfaceData dst,
                              Composite comp, Region clip,
                              int sx, int sy, int dx, int dy,
                              int w, int h)
{
    if (convertsrc != null) {
        SurfaceData cachedSrc = null;
        if (srcTmp != null) {
            // use cached intermediate surface, if available
            cachedSrc = srcTmp.get();
        }
        // convert source to IntArgbPre
        src = convertFrom(convertsrc, src, sx, sy, w, h, cachedSrc,
                          BufferedImage.TYPE_INT_ARGB_PRE);
        if (src != cachedSrc) {
            // cache the intermediate surface
            srcTmp = new WeakReference<>(src);
        }
    }

    SurfaceData cachedDst = null;

    if (dstTmp != null) {
        // use cached intermediate surface, if available
        cachedDst = dstTmp.get();
    }

    // convert destination to IntArgbPre
    SurfaceData dstBuffer = convertFrom(convertdst, dst, dx, dy, w, h,
                      cachedDst, BufferedImage.TYPE_INT_ARGB_PRE);
    Region bufferClip =
            clip == null ? null : clip.getTranslatedRegion(-dx, -dy);

    Blit performop = Blit.getFromCache(src.getSurfaceType(),
            CompositeType.Any, dstBuffer.getSurfaceType());
    performop.Blit(src, dstBuffer, comp, bufferClip, sx, sy, 0, 0, w, h);

    if (dstBuffer != cachedDst) {
        // cache the intermediate surface
        dstTmp = new WeakReference<>(dstBuffer);
    }
    // now blit the buffer back to the destination
    convertresult.Blit(dstBuffer, dst, AlphaComposite.Src, clip, 0, 0, dx,
                       dy, w, h);
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:46,代码来源:OGLBlitLoops.java

示例12: Blit

import sun.java2d.loops.Blit; //导入方法依赖的package包/类
public synchronized void Blit(SurfaceData src, SurfaceData dst,
                              Composite comp, Region clip,
                              int sx, int sy, int dx, int dy,
                              int w, int h)
{
    if (convertsrc != null) {
        SurfaceData cachedSrc = null;
        if (srcTmp != null) {
            // use cached intermediate surface, if available
            cachedSrc = srcTmp.get();
        }
        // convert source to IntArgbPre
        src = convertFrom(convertsrc, src, sx, sy, w, h, cachedSrc,
                          BufferedImage.TYPE_INT_ARGB_PRE);
        if (src != cachedSrc) {
            // cache the intermediate surface
            srcTmp = new WeakReference<>(src);
        }
    }

    SurfaceData cachedDst = null;

    if (dstTmp != null) {
        // use cached intermediate surface, if available
        cachedDst = dstTmp.get();
    }

    // convert destination to IntArgbPre
    SurfaceData dstBuffer = convertFrom(convertdst, dst, dx, dy, w, h,
                      cachedDst, BufferedImage.TYPE_INT_ARGB_PRE);
    Region bufferClip =
            clip == null ? null : clip.getTranslatedRegion(-dx, -dy);

    Blit performop = Blit.getFromCache(src.getSurfaceType(),
            CompositeType.Any, dstBuffer.getSurfaceType());
    performop.Blit(src, dstBuffer, comp, bufferClip, sx, sy, 0, 0, w, h);

    if (dstBuffer != cachedDst) {
        // cache the intermediate surface
        dstTmp = new WeakReference(dstBuffer);
    }
    // now blit the buffer back to the destination
    convertresult.Blit(dstBuffer, dst, AlphaComposite.Src, clip, 0, 0, dx,
                       dy, w, h);
}
 
开发者ID:JetBrains,项目名称:jdk8u_jdk,代码行数:46,代码来源:OGLBlitLoops.java


注:本文中的sun.java2d.loops.Blit.Blit方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。