, , , pure-ctypes? , libary, , writePixelsRect. ++ mangling, , writePixelsRect, extern "C", - , _Z15writePixelsRectP8JoxColoriiii (, ++, ).
Linux :
nm libjox.so | grep writePixel | cut -d " " -f 3
Python :
from ctypes import *
LIBRARY_NAME = 'libjox.so'
c = cdll.LoadLibrary(LIBRARY_NAME)
WIDTH = 20
HEIGHT = 20
class JoxColor(Structure):
_fields_ = [("r", c_float), ("g", c_float), ("b", c_float), ("a", c_float)]
ColorBlock = JoxColor * (WIDTH * HEIGHT)
data_array = ColorBlock()
color = JoxColor(0, 0, 1, 0)
for i in range(WIDTH * HEIGHT):
data_array[i] = color
c._Z15writePixelsRectP8JoxColoriiii(data_array, 0, 0, WIDTH, HEIGHT)
, _Z15writePixelsRectP8JoxColoriiii , , . :
#include <stdio.h>
struct JoxColor {
float r, g, b, a;
};
void writePixelsRect(JoxColor *colors, int left, int top, int width, int height) {
int p = 0;
printf("size: %i, %i\n", width, height);
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
JoxColor color = colors[p];
printf("pixel: %f, %f, %f, %f\n", color.r, color.g, color.b, color.a);
}
}
}
, .