本文整理汇总了Java中sun.java2d.SurfaceData.getRaster方法的典型用法代码示例。如果您正苦于以下问题:Java SurfaceData.getRaster方法的具体用法?Java SurfaceData.getRaster怎么用?Java SurfaceData.getRaster使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sun.java2d.SurfaceData
的用法示例。
在下文中一共展示了SurfaceData.getRaster方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: Blit
import sun.java2d.SurfaceData; //导入方法依赖的package包/类
public void Blit(SurfaceData srcData,
SurfaceData dstData,
Composite comp,
Region clip,
int srcx, int srcy,
int dstx, int dsty,
int width, int height)
{
ColorModel srcCM = srcData.getColorModel();
ColorModel dstCM = dstData.getColorModel();
// REMIND: Should get RenderingHints from sg2d
CompositeContext ctx = comp.createContext(srcCM, dstCM,
new RenderingHints(null));
Raster srcRas = srcData.getRaster(srcx, srcy, width, height);
WritableRaster dstRas =
(WritableRaster) dstData.getRaster(dstx, dsty, width, height);
if (clip == null) {
clip = Region.getInstanceXYWH(dstx, dsty, width, height);
}
int span[] = {dstx, dsty, dstx+width, dsty+height};
SpanIterator si = clip.getSpanIterator(span);
srcx -= dstx;
srcy -= dsty;
while (si.nextSpan(span)) {
int w = span[2] - span[0];
int h = span[3] - span[1];
Raster tmpSrcRas = srcRas.createChild(srcx + span[0], srcy + span[1],
w, h, 0, 0, null);
WritableRaster tmpDstRas = dstRas.createWritableChild(span[0], span[1],
w, h, 0, 0, null);
ctx.compose(tmpSrcRas, tmpDstRas, tmpDstRas);
}
ctx.dispose();
}
示例2: doSetRect
import sun.java2d.SurfaceData; //导入方法依赖的package包/类
static void doSetRect(SurfaceData sData, PixelWriter pw,
int x1, int y1, int x2, int y2) {
WritableRaster dstRast =
(WritableRaster) sData.getRaster(x1, y1, x2-x1, y2-y1);
pw.setRaster(dstRast);
while (y1 < y2) {
for (int x = x1; x < x2; x++) {
pw.writePixel(x, y1);
}
y1++;
}
}
示例3: doDrawGlyphList
import sun.java2d.SurfaceData; //导入方法依赖的package包/类
static void doDrawGlyphList(SurfaceData sData, PixelWriter pw,
GlyphList gl, Region clip)
{
int[] bounds = gl.getBounds();
clip.clipBoxToBounds(bounds);
int cx1 = bounds[0];
int cy1 = bounds[1];
int cx2 = bounds[2];
int cy2 = bounds[3];
WritableRaster dstRast =
(WritableRaster) sData.getRaster(cx1, cy1, cx2 - cx1, cy2 - cy1);
pw.setRaster(dstRast);
int num = gl.getNumGlyphs();
for (int i = 0; i < num; i++) {
gl.setGlyphIndex(i);
int metrics[] = gl.getMetrics();
int gx1 = metrics[0];
int gy1 = metrics[1];
int w = metrics[2];
int gx2 = gx1 + w;
int gy2 = gy1 + metrics[3];
int off = 0;
if (gx1 < cx1) {
off = cx1 - gx1;
gx1 = cx1;
}
if (gy1 < cy1) {
off += (cy1 - gy1) * w;
gy1 = cy1;
}
if (gx2 > cx2) gx2 = cx2;
if (gy2 > cy2) gy2 = cy2;
if (gx2 > gx1 && gy2 > gy1) {
byte alpha[] = gl.getGrayBits();
w -= (gx2 - gx1);
for (int y = gy1; y < gy2; y++) {
for (int x = gx1; x < gx2; x++) {
if (alpha[off++] < 0) {
pw.writePixel(x, y);
}
}
off += w;
}
}
}
}
示例4: Blit
import sun.java2d.SurfaceData; //导入方法依赖的package包/类
public void Blit(SurfaceData src, SurfaceData dst,
Composite comp, Region clip,
int srcx, int srcy, int dstx, int dsty, int w, int h)
{
Raster srcRast = src.getRaster(srcx, srcy, w, h);
ColorModel srcCM = src.getColorModel();
Raster dstRast = dst.getRaster(dstx, dsty, w, h);
IntegerComponentRaster icr = (IntegerComponentRaster) dstRast;
int[] dstPix = icr.getDataStorage();
Region roi = CustomComponent.getRegionOfInterest(src, dst, clip,
srcx, srcy,
dstx, dsty, w, h);
SpanIterator si = roi.getSpanIterator();
Object srcPix = null;
int dstScan = icr.getScanlineStride();
// assert(icr.getPixelStride() == 1);
srcx -= dstx;
srcy -= dsty;
int span[] = new int[4];
while (si.nextSpan(span)) {
int rowoff = icr.getDataOffset(0) + span[1] * dstScan + span[0];
for (int y = span[1]; y < span[3]; y++) {
int off = rowoff;
for (int x = span[0]; x < span[2]; x++) {
srcPix = srcRast.getDataElements(x+srcx, y+srcy, srcPix);
dstPix[off++] = srcCM.getRGB(srcPix);
}
rowoff += dstScan;
}
}
// Pixels in the dest were modified directly, we must
// manually notify the raster that it was modified
icr.markDirty();
// REMIND: We need to do something to make sure that dstRast
// is put back to the destination (as in the native Release
// function)
// src.releaseRaster(srcRast); // NOP?
// dst.releaseRaster(dstRast);
}