在JavaFXAPI中哪里可以找到getArgb函数声明?
在javafxapi中哪里可以找到getArgb函数定义?(package com.sun.javafx.tk(PlatformImage))如果您正在寻找接口在JavaFXAPI中哪里可以找到getArgb函数声明?,java,api,javafx,Java,Api,Javafx,在javafxapi中哪里可以找到getArgb函数定义?(package com.sun.javafx.tk(PlatformImage))如果您正在寻找接口com.sun.javafx.tk.PlatformImage,它是用于存储javafx.image.image对象的所有工具箱特定对象的通用接口,您可以在OpenJFX上找到它 在那里可以看到getArgb()函数声明: /** * @param x X coordinate of pixel * @param y Y coordi
com.sun.javafx.tk.PlatformImage
,它是用于存储javafx.image.image
对象的所有工具箱特定对象的通用接口,您可以在OpenJFX上找到它
在那里可以看到getArgb()
函数声明:
/**
* @param x X coordinate of pixel
* @param y Y coordinate of pixel
* @return the non-premultiplied pixel in integer ARGB component ordering.
*/
public int getArgb(int x, int y);
公共APIjavafx.scene.image.image
实现了一个javafx.scene.image.PixelReader
,该接口定义了从图像检索像素数据的方法,提供了该接口中的所有方法:
new PixelReader() {
@Override
public int getArgb(int x, int y) {
PlatformImage pimg = platformImage.get();
return pimg.getArgb(x, y);
}
}
图像对象具有基础平台表示形式:
private ObjectPropertyImpl<PlatformImage> platformImage;
这将导致com.sum.prism.Image.getArgb()
:
和内部类BaseAccesor
:
@Override
public int getArgb(int x, int y) {
return getGetter().getArgb(getBuffer(), getIndex(x, y));
}
这最终导致com.sun.javafx.image.impl.ByteBgraPre
:
@Override
public int getArgb(ByteBuffer buffer, int offset) {
return PixelUtils.PretoNonPre(getArgbPre(buffer, offset));
}
在哪里
我指的是函数定义,它是一个接口。它将在实现或使用
PlatformImage
的任何类中实现。。。例如,它在这个com.sun.javafx.tk.ImageLoader
接口和com.sun.javafx.tk.Toolkit
抽象类中使用。看看函数getArgb。看看函数返回:pimg.getArgb(x,y)。我在哪里可以找到这个getArgb定义?谢谢,我在Intellij调试器中使用了“强制单步执行”而不是“单步执行”。
@Override
public int getArgb(int x, int y) {
return getGetter().getArgb(getBuffer(), getIndex(x, y));
}
@Override
public int getArgb(ByteBuffer buffer, int offset) {
return PixelUtils.PretoNonPre(getArgbPre(buffer, offset));
}
@Override
public int getArgbPre(ByteBuffer buffer, int offset) {
return (((buffer.get(offset ) & 0xff) ) |
((buffer.get(offset + 1) & 0xff) << 8) |
((buffer.get(offset + 2) & 0xff) << 16) |
((buffer.get(offset + 3) ) << 24));
}
public static int PretoNonPre(int pre) {
int a = pre >>> 24;
if (a == 0xff || a == 0x00) return pre;
int r = (pre >> 16) & 0xff;
int g = (pre >> 8) & 0xff;
int b = (pre ) & 0xff;
int halfa = a >> 1;
r = (r >= a) ? 0xff : (r * 0xff + halfa) / a;
g = (g >= a) ? 0xff : (g * 0xff + halfa) / a;
b = (b >= a) ? 0xff : (b * 0xff + halfa) / a;
return (a << 24) | (r << 16) | (g << 8) | b;
}