Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Библиотеки

Ответ
 
Опции темы
Старый 12.07.2008, 04:08   #1
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Сообщение Lib_font32: Графические шрифты

Поседнее обновление 02.10.2009
Начал ваять библиотеку с поддержкой графических шрифтов.
Пока функции такие:

Init(k: integer) - Начальная инициализация библиотеки.
k - количество шрифтов, которое мы собираемся использовать
Font(i: integer) - Выбрать текущий шрифт.
i - номер шрифта, может быть от 0 до k-1 (см. init)
LoadFont(fname: string) - Загрузить шрифт. Номер шрифта должен был быть задан заранее процедурой Font().
fname - название шрифта
DrawString(s: string; x: integer; y: integer) - Вывод одной строки текста на экран (без переносов)
s - текст выводимой строки
x, y - координаты, куда нужно выводить строку
TextWindow(x: integer; y: integer; w: integer; h: integer) - Задать окно, в которое будет выводиться строка
x, y - координаты верхнего левого угла окна
w, h - ширина и высота окна
integer TextHeight - Возвращает высоту текущего шрифта в пикселах
integer TextWidth(s: string) - Возвращает длину текста s в пикселах.
Это нужно, например, для того, чтобы прикинуть влезет ли данная строка на экран?

Щас работаю над процедурой вывода текста в окошко с возможностью скролинга. Скоро будет.
Сами шрифты можно создавать с помощью программы GenFont.exe, которая уже ранее выкладывалась на данном форуме. Соответственно в проект нужно будет добавлять для каждого шрифта 2 файлика: png и dat.
При желании, можно делать полупрозрачность и менять цвет шрифта с помощью библиотеки Lib_alpha.

По глобальным замыслам, это будет первая библиотека в череде библиотек реализации собственного GUI интерфейса. Позже будут библиотеки для меню и окон.

PS: Всё таки иногда полезно подождать каменный цветок.
Вложения
Тип файла: zip Genfont.zip (253.3 Кб, 1828 просмотров)
Тип файла: zip Lib_font32.zip (4.8 Кб, 1724 просмотров)
Тип файла: zip Font32test.zip (10.1 Кб, 1493 просмотров)

Последний раз редактировалось Piligrim, 02.10.2009 в 22:34.
(Offline)
 
Ответить с цитированием
Эти 17 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
barsunduk (13.01.2011), boydjon (16.07.2010), cherepets (25.08.2009), Eggis (19.08.2010), GRAY_WOLF (03.10.2009), im_zorg (03.02.2010), InkutaY (12.07.2008), Ksanatos (11.02.2010), Kurdt (09.08.2008), Mach94 (18.07.2009), Rock2roll (31.07.2010), scimitar (02.01.2010), S_007 (23.02.2012), Trazzy (20.09.2009), valhof (09.08.2008), wrz77 (11.09.2008), Дийкстра (02.08.2008)
Старый 12.07.2008, 14:54   #2
InkutaY
Оператор ЭВМ
 
Аватар для InkutaY
 
Регистрация: 13.06.2008
Адрес: Сочи
Сообщений: 43
Написано 6 полезных сообщений
(для 12 пользователей)
Ответ: Lib_font32: Графические шрифты

Прикольно!
а можно суда еще и цвет шрифта добавить ?
DrawString(s: string; x: integer; y: integer, color: integer)
(Offline)
 
Ответить с цитированием
Старый 13.07.2008, 03:20   #3
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Счастье Ответ: Lib_font32: Графические шрифты

Добавил функции модификации шрифта, вывода длинного текста в окно и скролинга.
Теперь можно поспорить какая либа круче Lib_text aka MultiLine или моя.
Новый список функций:

Init(kinteger) - Начальная инициализация библиотеки.
    
количество шрифтовкоторое мы собираемся использовать
    
Font
(iinteger) - Выбрать текущий шрифт.
    
номер шрифтаможет быть от 0 до k-(смinit)
    
LoadFont(fnamestring) - Загрузить шрифтНомер шрифта должен был быть задан заранее процедурой Font().
    
fname название шрифта
    
DrawString
(sstringxintegeryinteger) - Вывод одной строки текста на экран (без переносов)
    
текст выводимой строки
    x
координатыкуда нужно выводить строку
    
TextWindow
(xintegeryintegerwintegerhinteger) - Задать окнов которое будет выводиться строка
    x
координаты верхнего левого угла окна
    w
ширина и высота окна

integer TextHeight 
Возвращает высоту текущего шрифта в пикселах

integer TextWidth
(sstring) - Возвращает длину текста s в пикселах.
    
Это нужнонапримердля тогочтобы прикинуть влезет ли данная строка на экран.

Modify(imimage) - Модифицировать текущий шрифтПрименяется для изменения цвета/прозрачности
    шрифта
например с помощью библиотеки Lib_alpha.
    
integer Format(sstring) - Разбить длинный текст на мелкие строчки такчтобы он помещался в
    окно
заданное процедурой TextWindowФункция возвращает расчётну высоту полученного разбитого текста
    в пикселах
.
    
DrawTextWindow Нарисовать ранее разбитый функцией Format текст в окне
    Окно должно было быть заданно функцией TextWindow до форматирования
.

integer MoveUp(pxinteger) - Перемотать текст в окне на px пикселов вверх
    Функция возвращает 1 если нужна перерисовка экрана 
(т.етекст был сдвинутили 0 если перерисовка не нужна
    
integer MoveDown
(pxinteger) - Перемотать текст в окне на px пикселов вниз
    Функция возвращает 1 если нужна перерисовка экрана 
(т.етекст был сдвинутили 0 если перерисовка не нужна 
Думаю прикрутить ещё и выравнивание текста влево и по центру. Ну, это уже элементарно. Скоро будет.

Последний раз редактировалось Piligrim, 02.10.2009 в 22:35.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
Rock2roll (31.07.2010), Romanzes (13.07.2008), Strelok (13.07.2008)
Старый 13.07.2008, 15:33   #4
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Lib_font32: Графические шрифты

У меня функция Format вешает телефон, если в строке есть буква "я". Вот, например:
Program Font32test;
Uses	font32;

var
  scrW,scrH,h,k: integer;

Begin
  scrW:=GetWidth;
  scrH:=GetHeight;
  font32.init(1); // Инициализация (всего у нас будет 1 шрифт)
  font32.Font(0); // Выбираем шрифт номер 0
  LoadFont('Verdana_7'); // Загружаем шрифт
  font32.TextWindow(50,50,50,50);
  h:=font32.Format('Раз Два Три Четыре Пять Шесть Семь Восемь Девять Десять'); //Здесь ошибка
  while true do
  begin
    SetColor(255,255,255);
    FillRect(0,0,scrW,scrH);
    SetColor(255,0,0);
    DrawRect(49,49,52,52);
    k:=KeyToAction(GetKeyPressed);
    if k=GA_UP then h:=MoveUp(3);
    if k=GA_DOWN then h:=MoveDown(3);
    DrawTextWindow;
    Repaint;
  end;
End.
Если убрать буквы "я", то пример будет работать. Можно, конечно, писать "йа", но неудобно
(Offline)
 
Ответить с цитированием
Старый 14.07.2008, 08:16   #5
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_font32: Графические шрифты

Прошу прощения, маленькая опечаточка в программе. Пофиксено.
Щас работаю над добавлением функций регулировки межстрочного и межбуквенного расстояния, выравнивания. Скоро будет.
PS: Исправь у себя в программе строку:
Repaint; на if h<>0 then Repaint;

Последний раз редактировалось Piligrim, 14.11.2008 в 14:14.
(Offline)
 
Ответить с цитированием
Старый 15.07.2008, 08:07   #6
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_font32: Графические шрифты

Всё. Работы закончены. Добавил выравнивание, регулировку межстрочного и мужбуквенного расстояний. Всё, что я хотел добавить и сделать сделано. Библиотеку можно добавлять в коллекции. Обязательно почитайте документацию к библиотеке и посмотрите демку. Там я показал некоторые интересные возможности (компилировать только в английской версии MP).

Последний раз редактировалось Piligrim, 02.10.2009 в 22:35.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
Kn793 (13.09.2008), Romanzes (15.07.2008), Strelok (15.07.2008)
Старый 21.07.2008, 21:29   #7
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Lib_font32: Графические шрифты

А почему компилировать только в английской версии? У меня до этого три разных паскаля стояло, недавно оставил один - с твоего сайта... О_о Теперь нету английского у меня... :'(
- - -
Добавил позже:
Пробовал русской версей компилировать, всё скомпилировалось, но в архив jar не добавились либы АЛЬФА и ФОНТ32. После того, как их руками туда засунул, всё заработало.
- - -
Слушай, я примерно то же самое, что и ты хотел сделать, но мозга мне не хватает. Поэтому, у меня предложение, не мог бы ты сделать что-нибудь подобное, как в моей либе для стилизированного вывода текста. Сейчас поясню, для чего это нужно. Например, хочу я вывести многострочный, скролируемый текст, в котором есть и жирные буквы, и тонкие, и разноцветные, с разным выравниванием. Чтобы такое сделать через твою либу, придётся очень много писать. Представь, что мне нужно вывести строку, в которой каждая буква разного цвета - представь, какой код придётся писать. Почему бы не сделать описание стилей прямо в строке. А потом уже специальный метод в классе будет парсить строку и стилизировать всё это дело как надо. Ну типа как я сделал. Может ты круче что-то придумаешь? Тогда вообще офигенная вещь получится =)
- - -
А потом можно ещё прогу для компа написать для конвертации html документов в этот формат строки и тогда можно, например, сделать читалку текстов для мобил. А то я читал, на каком-то форуме люди пытались сделать прогу для конвертации html страниц в страницы oms для просмотра в опере мини, так максимум, что кто-то смог сделать - это прогу для конвертации через интернет - через сервак оперы мини. Вот.
- - -
В общем, что скажешь. Сложно будет это сделать? И нужно ли это кому-нибудь кроме меня? О_о

Последний раз редактировалось Phantom, 21.07.2008 в 22:33.
(Offline)
 
Ответить с цитированием
Старый 22.07.2008, 08:02   #8
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_font32: Графические шрифты

Русская версия неправильно распознает запятую в списке библиотек. Т.е. если я напишу Uses alpha, font32; то программа будет искать 1 файл с именем Lib_alphafont32 или что-то типа того. Просто я в русской версии хотел сделать так, чтобы можно было добавлять библиотеки с любыми именами, а не типа Lib_*, но у меня ничего не получилось, а BackUp я забыл тогда сделать. В итоге нужно садиться и руссифицировать программу заново. А это довольно сложно. Хотел сделать руссификатор в виде крэка, так он насчитал, что более 500000 байт изменено и завис при создании патча.

Да я тоже уже подумываю добавить такие функции в библиотеку.
У меня, например, есть мидлет HTML-справочник, который я хочу перевести на Lib_font32, но там без раскрашивания текста в разные цвета ну никак не обойтись.
Сделать это правда будет не просто, но возможно.

Последний раз редактировалось odd, 22.07.2008 в 08:12.
(Offline)
 
Ответить с цитированием
Старый 22.07.2008, 09:57   #9
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Lib_font32: Графические шрифты

Видел твой HTML-справочник, качал. Сайт у тебя привлекательный.
(Offline)
 
Ответить с цитированием
Старый 30.07.2008, 15:21   #10
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Lib_font32: Графические шрифты

Odd, можешь сделать функцию, которая показывает, на сколько пикселей вниз прокручен текст? И еще вот такой косяк: если, к примеру, вызвать MoveDown(10), а до конца осталось меньше 10 пикселей, то текст не прокрутится!
(Offline)
 
Ответить с цитированием
Старый 07.08.2008, 08:09   #11
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_font32: Графические шрифты

Сообщение от Romanzes Посмотреть сообщение
Odd, можешь сделать функцию, которая показывает, на сколько пикселей вниз прокручен текст? И еще вот такой косяк: если, к примеру, вызвать MoveDown(10), а до конца осталось меньше 10 пикселей, то текст не прокрутится!
1. Считать на сколько пикселов текст передвинется можно и самому. Завидишь пременную counter. Потом, зная шаг сдвига (например 2) можно вычислять:

if movedown(2)=1 then begin counter:=counter+2Repaintend
2. Это не косяк. Так сделано специально.
(Offline)
 
Ответить с цитированием
Старый 07.08.2008, 22:06   #12
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Lib_font32: Графические шрифты

Я извращался примерно таким способом:

k:=KeyToAction(GetKeyPressed);
    if k=GA_DOWN then
      for i:=1 to 5 do
        if font32.MoveDown(1)=1 then counter:=counter+1;
    if k=GA_UP then
      for i:=1 to 5 do
        if font32.MoveUp(1)=1 then counter:=counter-1;
(Offline)
 
Ответить с цитированием
Старый 08.08.2008, 08:30   #13
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_font32: Графические шрифты

Ну да. Это я и имел ввиду. А что это ты делаешь? Меню? Я щас работаю над его реализацией.
(Offline)
 
Ответить с цитированием
Старый 08.08.2008, 14:59   #14
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Lib_font32: Графические шрифты

Не, это хелп в арканоиде. Посмотри в проектах, если хочешь, там исходник есть.
(Offline)
 
Ответить с цитированием
Старый 09.08.2008, 15:13   #15
Kurdt
ПроЭктировщик
 
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений
(для 25 пользователей)
Re: Lib_font32: Графические шрифты

Библиотека супер, но помоему требует усовершенствования для идеала
*очень медленное отображение скролинга текста на моем телефоне около 1 фпс. исправить можно если генерировать 3 изображения в буфере и их скролить. тоесть верхсередина и низ и помере скролинга генерировать новые. но это конечно сложно. потому может алгоритм усовершенствовать.

*остаются артефакты даже если в строке есть разделители, в тестовый пример вставь эту строку увидшшь артефакты буква "р" полностью вылазит
s:='Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне.Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне.';

*если слово больше размера отображаемого окна, то оно не обрезается, что неплохо было бы исправить.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графическое меню. GRAY_WOLF Наше Open Source Software 0 18.12.2009 20:33
графический планшет и 3D Max SKA_DIMKA 3D Моделирование 11 18.08.2009 17:28
2д игровой графический чат Serg153 Основной форум 17 01.02.2009 00:35
Шрифты MaDoW Программирование 3 26.12.2007 22:33
Шрифты zheland 2D-программирование 1 27.10.2007 22:20


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com