Я щас пишу библиотеку поддержки альфа-уровней для картинок.
Для тех кто не понял: по идее можно делать произвольную прозрачность для картинки, скажем 60%. Уже практически всё написано, запнулся только на одной ошибке.
Вот текст моей библиотеки на Java:
import javax.microedition.lcdui.Image;
class Lib_alpha
{
Lib_alpha()
{
}
public static int getalphalevels()
{
return FW.fw.display.numAlphaLevels();
}
public static Image setopaque(Image im, int op)
{
int mask = 0 | op << 64;
int buff[] = new int[im.getWidth() * im.getHeight()];
im.getRGB(buff, 0, im.getWidth(), 0, 0, im.getWidth(), im.getHeight());
int i;
for (i=0; i < buff.length; i++)
{
buff[i] = buff[i] | mask; // <-- На эту строку и матерится эмулятор хотя NetBeans молчит
}
Image im2 = Image.createRGBImage(buff, im.getWidth(), im.getHeight(), true);
return im2;
}
}
Компилируется нормально, но при запуске эмулятор MidpX выдаёт что-то типа Error validating class и ругается причем именно на помеченную строку. В чём я не прав?
Текст проверочной программки на MP:
Program AlphaTest;
Uses alpha;
Var im: image;
Begin
im:=LoadImage('/kcalc.png'); // Загрузка картинки
DrawText('Уровней: '+GetAlphaLevels, 5, 5); // Отображаем количество альфа-уровней (256 по-идее)
Repaint; Delay(1000); // Отрисовка и пауза 1 сек
im:=SetOpaque(im, 127); // Выставляем прозрачность 127 из 255 т.е. 50%
DrawImage(im, 0, 0); // Рисуем картинку
Repaint; Delay(5000); // Снова отрисовка и пауза 5 сек
End.