forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_beta: Перенаправления вывода в картинку/на дисплей (http://forum.boolean.name/showthread.php?t=7277)

odd 04.11.2008 06:00

Lib_beta: Перенаправления вывода в картинку/на дисплей
 
Вложений: 2
Пока что библиотеки для облегчения генерации картинок не было.
Я решил исправить это досадное недоразумение.
Библиотека крайне простая. Новые функции такие:

Код:


CreateImage(w: integer; h: integer) - Создать пустую (белую) картинку с размерами w * h
    Если w и h равны 0 - картинка удаляется (с очисткой памяти).
 
Replace - Переключить фокус вывода с дисплея в картинку и наоборот.
    После переключения фокуса вывода в картинке можно рисовать стандартными методами MIDletPascal
    (рисовать примитивы: линии, точки, круги, дуги; надписи; выводить в неё др. картинки и проч.)
 
image GetImage - Получить картинку, которая сейчас находится НЕ в фокусе вывода
    Т.е. если фокус вывода сейчас стоит на дисплее - вернется ваша сгенерированная картинка.
    Если фокус на картинке - вернется скриншот вашего дисплея.
   
PutImage(im: image) - Поменять картинку, которая сейчас находится НЕ в фокусе вывода на свою

Практически пример ипользования прилагается.

Cliffe Snake 06.11.2008 19:18

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
Классно!! теперь можна декали юзать вовсю. Odd, красава =)))

Вредитель 15.01.2009 17:28

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
хм, спасибо.....а можно более одной картинки(в будущем)?

m1kc. 21.01.2009 16:11

Lib_beta: Перенаправления вывода в картинку/на дисплей
 
odd, у меня непонятные глюки при использовании PutImage. При попытке изменить скормленное либе изображение программа намертво зависает.

P.S. Проверено на К770 и W510. На эмуле, как ни странно, все ОК.

P.P.S.

PHP код:

img:=imloadjsr75.loadimage('/'+FormGetText(xf)); //Загрузка проходит нормально, это я проверял.
CreateImage(0,0); // Это на всякий случай.
memclean.clean;
CreateImage(GetImageWidth(img),GetImageHeight(img)); // Ну и это на всякий случай. Без нее тоже зависает. 
PutImage(img);
memclean.clean


odd 01.02.2009 14:38

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
Странно всё это. Буду разбираться.

odd 23.03.2010 17:21

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
А как запинается? Зависает?

Приведи ещё кусок кода далее, посмотрим как ты генерируешь картинку.
Пока при чтении ресурса явных ошибок не нашел.

cherepets 23.03.2010 21:36

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
odd, если за год не нашел - забей, не найдешь уже...

Dj_Alex 05.08.2010 20:24

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
у меня вылетает MP 2.02 при компиляции с этой либой. Пробовал в 3 версии, вылетает компилятор на строчке
using external library Lib_beta.class

Если либу исключить и закомментировать ее команды, то компилится норм.
Возможен ли конфликт с кодом или с другой либой (юзаю еще lib_gfx)?


upd

изменил порядок в uses и скомпилировалось без ошибки, так значит либы конфликтуют?

odd 14.08.2010 15:46

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
Бывают и такие конфликты. Но библиотека пашет.

nil0q 04.09.2010 21:01

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
Где-то читал, что в джаве можно массив чисел скинуть на экран. Типа, создаёшь массив целых чисел (столько же элементов, сколько пикселей на экране), заполняешь его (число=цвет RGBA), вызываешь какую-то функцию, и массив копируется в видеопамять. Такое реально в эту процедуру засунуть? (должно быть намного быстрее, чем забивание экрана точками через plot, установка одной точки занимает 7 мкс, а присваивание типа а:=б всего 30 нс)

__________

Извиняюсь, нашёл
http://http://forum.boolean.name/showthread.php?t=4621

odd 15.10.2010 23:14

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
Такое действительно есть. Кому-то надо? Можно добавить в какую-либо библиотеку.

_Nox_ 26.10.2010 23:23

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
добавь, было бы хорошо

odd 27.10.2010 18:30

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
Вложений: 1
Добавил работу с массивом точек.
Новые команды:

PHP код:

create_array(wintegerhinteger) - создать картинку в виде массива точек размерами w h

clear_array 
очистить память от массива точек

draw_array
(xintegeryinteger) - вывести картинку (из массива точекна экран (без перерисовки)
    
xкоординаты левого верхнего угла картинки
    поддерживается полупрозрачность
!
    
poke(xintegeryintegercolorinteger) - записать точку в массив точек
    x
координаты точки в массиве
    color 
ARGB цвет точки (подсчитаете на научном калькуляторе)
    
integer peek(xintegeryinteger) - прочитать значение цвета в точке из массива точек
    x
координаты точки в массиве 

Простейший пример работы с массивом чисел:
PHP код:

Program BetaTest;
Uses beta;
Var 
imimage;
Begin
    CreateImage
(100100); // Создаем картинку 100*100    
    
Replace// Переключаем поток вывода на нашу картинку
    
    
DrawText('odd was here'00); // Рисуем что-то на картинке
    
DrawImage(LoadImage('/icon.png'), 516); // Для примера выводим в нашу картинку др. картинку
    
    
Replace// Переключаем фокус вывода назад. Теперь вывод будет идти на дисплей
    
SetColor(02550); FillRect(00GetWidthGetHeight); // Закрашиваем дисплей
    
im:=GetImage// Извлекаем полученную картинку в переменную (можно и не в переменную, а вставить внутрь функции DrawImage)
    
DrawImage(im55); // Выводим сгенерированную картинку на дисплей
    
Repaint;    
    
Delay(5000);
    
    
// Работа с массивом точек
    
    
SetColor(255255255); FillRect(00GetWidthGetHeight); // Закрашиваем дисплей
    
create_array(10050); // Создаем массив точек
    
poke(154278190335); // Закрашиваем точку (1, 5) цветом FF0000FF = 4278190335
    
draw_array(00); // Выводим массив на дисплей
    
Repaint;    
    
Delay(5000);
    
End


psih1 27.10.2010 22:03

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
так теперь можно сделать paint на мр?

odd 27.10.2010 23:03

Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
 
Цитата:

Сообщение от psih1 (Сообщение 166297)
так теперь можно сделать paint на мр?

Можно. Кстати, могу добавить функцию для быстрого помещения любой картинки в массив.


Часовой пояс GMT +4, время: 14:56.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot