我在哪里可以找到 JavaFX API 中的 getArgb 函数声明?
Where can i find getArgb function declaration in JavaFX API?
我在哪里可以找到 JavaFX 中的 getArgb 函数定义 API? (包 [=13=] (PlatformImage))
如果您正在寻找接口 com.sun.javafx.tk.PlatformImage
,一个用于存储 javafx.image.Image
对象的图像数据的所有工具包特定对象的通用接口,您可以在 OpenJFX repository.
在那里你可以看到 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);
Public API javafx.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;
为了找到我一直在调试的实现:
image.getPixelReader().getArgb(0, 0);
这导致 com.sum.prism.Image.getArgb()
:
@Override
public int getArgb(int x, int y) {
return getPixelAccessor().getArgb(x, y);
}
和内部 class 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));
}
哪里
@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));
}
和com.sun.javafx.image.PixelUtils
:
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;
}
我在哪里可以找到 JavaFX 中的 getArgb 函数定义 API? (包 [=13=] (PlatformImage))
如果您正在寻找接口 com.sun.javafx.tk.PlatformImage
,一个用于存储 javafx.image.Image
对象的图像数据的所有工具包特定对象的通用接口,您可以在 OpenJFX repository.
在那里你可以看到 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);
Public API javafx.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;
为了找到我一直在调试的实现:
image.getPixelReader().getArgb(0, 0);
这导致 com.sum.prism.Image.getArgb()
:
@Override
public int getArgb(int x, int y) {
return getPixelAccessor().getArgb(x, y);
}
和内部 class 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));
}
哪里
@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));
}
和com.sun.javafx.image.PixelUtils
:
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;
}