Lib_font32: Графические шрифты
Вложений: 3
Поседнее обновление 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: Всё таки иногда полезно подождать каменный цветок. |
Ответ: Lib_font32: Графические шрифты
Прикольно!
а можно суда еще и цвет шрифта добавить ? DrawString(s: string; x: integer; y: integer, color: integer) |
Ответ: Lib_font32: Графические шрифты
Добавил функции модификации шрифта, вывода длинного текста в окно и скролинга.
Теперь можно поспорить какая либа круче Lib_text aka MultiLine или моя. :-D Новый список функций: PHP код:
|
Ответ: Lib_font32: Графические шрифты
У меня функция Format вешает телефон, если в строке есть буква "я". Вот, например:
Код:
Program Font32test; |
Ответ: Lib_font32: Графические шрифты
Прошу прощения, маленькая опечаточка в программе. Пофиксено.
Щас работаю над добавлением функций регулировки межстрочного и межбуквенного расстояния, выравнивания. Скоро будет. PS: Исправь у себя в программе строку: Repaint; на if h<>0 then Repaint; :) |
Ответ: Lib_font32: Графические шрифты
Всё. Работы закончены. Добавил выравнивание, регулировку межстрочного и мужбуквенного расстояний. Всё, что я хотел добавить и сделать сделано. Библиотеку можно добавлять в коллекции. Обязательно почитайте документацию к библиотеке и посмотрите демку. Там я показал некоторые интересные возможности (компилировать только в английской версии MP).
|
Ответ: Lib_font32: Графические шрифты
А почему компилировать только в английской версии? У меня до этого три разных паскаля стояло, недавно оставил один - с твоего сайта... О_о Теперь нету английского у меня... :'(
- - - Добавил позже: Пробовал русской версей компилировать, всё скомпилировалось, но в архив jar не добавились либы АЛЬФА и ФОНТ32. После того, как их руками туда засунул, всё заработало. - - - Слушай, я примерно то же самое, что и ты хотел сделать, но мозга мне не хватает. Поэтому, у меня предложение, не мог бы ты сделать что-нибудь подобное, как в моей либе для стилизированного вывода текста. Сейчас поясню, для чего это нужно. Например, хочу я вывести многострочный, скролируемый текст, в котором есть и жирные буквы, и тонкие, и разноцветные, с разным выравниванием. Чтобы такое сделать через твою либу, придётся очень много писать. Представь, что мне нужно вывести строку, в которой каждая буква разного цвета - представь, какой код придётся писать. Почему бы не сделать описание стилей прямо в строке. А потом уже специальный метод в классе будет парсить строку и стилизировать всё это дело как надо. Ну типа как я сделал. Может ты круче что-то придумаешь? Тогда вообще офигенная вещь получится =) - - - А потом можно ещё прогу для компа написать для конвертации html документов в этот формат строки и тогда можно, например, сделать читалку текстов для мобил. А то я читал, на каком-то форуме люди пытались сделать прогу для конвертации html страниц в страницы oms для просмотра в опере мини, так максимум, что кто-то смог сделать - это прогу для конвертации через интернет - через сервак оперы мини. Вот. - - - В общем, что скажешь. Сложно будет это сделать? И нужно ли это кому-нибудь кроме меня? О_о |
Ответ: Lib_font32: Графические шрифты
Русская версия неправильно распознает запятую в списке библиотек. Т.е. если я напишу Uses alpha, font32; то программа будет искать 1 файл с именем Lib_alphafont32 или что-то типа того. Просто я в русской версии хотел сделать так, чтобы можно было добавлять библиотеки с любыми именами, а не типа Lib_*, но у меня ничего не получилось, а BackUp я забыл тогда сделать. В итоге нужно садиться и руссифицировать программу заново. А это довольно сложно. Хотел сделать руссификатор в виде крэка, так он насчитал, что более 500000 байт изменено и завис при создании патча.
Да я тоже уже подумываю добавить такие функции в библиотеку. У меня, например, есть мидлет HTML-справочник, который я хочу перевести на Lib_font32, но там без раскрашивания текста в разные цвета ну никак не обойтись. Сделать это правда будет не просто, но возможно. |
Ответ: Lib_font32: Графические шрифты
Видел твой HTML-справочник, качал. Сайт у тебя привлекательный.
|
Ответ: Lib_font32: Графические шрифты
Odd, можешь сделать функцию, которая показывает, на сколько пикселей вниз прокручен текст? И еще вот такой косяк: если, к примеру, вызвать MoveDown(10), а до конца осталось меньше 10 пикселей, то текст не прокрутится!
|
Ответ: Lib_font32: Графические шрифты
Цитата:
PHP код:
|
Ответ: Lib_font32: Графические шрифты
Я извращался примерно таким способом:
Код:
k:=KeyToAction(GetKeyPressed); |
Ответ: Lib_font32: Графические шрифты
Ну да. Это я и имел ввиду. А что это ты делаешь? Меню? Я щас работаю над его реализацией.
|
Ответ: Lib_font32: Графические шрифты
Не, это хелп в арканоиде. Посмотри в проектах, если хочешь, там исходник есть.
|
Re: Lib_font32: Графические шрифты
Библиотека супер, но помоему требует усовершенствования для идеала
*очень медленное отображение скролинга текста на моем телефоне около 1 фпс. исправить можно если генерировать 3 изображения в буфере и их скролить. тоесть верхсередина и низ и помере скролинга генерировать новые. но это конечно сложно. потому может алгоритм усовершенствовать. *остаются артефакты даже если в строке есть разделители, в тестовый пример вставь эту строку увидшшь артефакты буква "р" полностью вылазит s:='Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне.Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне. Пример перемотки длинного текста в окне.'; *если слово больше размера отображаемого окна, то оно не обрезается, что неплохо было бы исправить. |
Ответ: Lib_font32: Графические шрифты
У тебя наверное экран 240х320, а буковки маленькие вот и медленно скроллируется потому что надо отрисовать оч. много букаф. Сделай шрифт побольше или скролируй сразу на 2 или 3 пиксела. Вся проблема в том, что там учитывается фон под текстом. Если бы не фон, то можно было бы скролить всё окно как одну картинку, что было бы намного быстрее. Можно добавить функцию типа учитывать фон или нет...
Ладно. Будем фиксить... :@ |
Re: Lib_font32: Графические шрифты
да. поставь учитывать фон или нет.
я делал другимми алгоритмами с малюсиньким шрифтом то сролится оч быстро, но там совсем другое. там скролится по строкам а не по пикселям. (в библиотеке твоей пробовал ставить 4 пикселя здвиг. больше если воодишь то скролит не доконца) |
Re: Lib_font32: Графические шрифты
odd можешь сделать функции скрол боттом и скрол топ
для коректного использования скрола нехватает этих функций, или просто поставь если MoveDown(x) (текущая позиция + x ) > (высоты в пикселях поля - высота отображаемого окна) то делать скрол ботом или наоборот если в верху |
Ответ: Lib_font32: Графические шрифты
Хорошо. Я подправлю функции скролинга.
|
Ответ: Lib_font32: Графические шрифты
Большая просьба к авторам библиотек:
1. Обновлять загрузки в первом сообщении темы, а не добавлять их по всей теме. 2. Указывать что изменилось в библиотеке и совместима ли она со старой версией. Если нет, то оставлять старую версию также. |
Ответ: Lib_font32: Графические шрифты
Цитата:
Нельзя ли что-то там подкрутить в настройках форума?... :wallbash: Я подкорректировал перемотку текста. Теперь нормально всё должно отображаться. Ещё добавлена функция GetPosition (См. документацию) для поддержки полосы прокрутки. |
Ответ: Lib_font32: Графические шрифты
подскажите пожалуйста
у меня в проге функция, которая в зависимости от параметром показывает на экране разный длинный текст если первый текст скроллить вниз, а потом вызвать второй - второй текст появится уже отскроленным на эту высоту. как сделать чтобы он показывался сам сначала? |
Ответ: Lib_font32: Графические шрифты
Странно. По-идее процедура format должна сама устанавливать перемотку на 0 позицию, что конечно не всегда хорошо. Например, я подгужаю текст небольшими порциями и добавляю к уже отформатированному тексту. В этом случае каждый раз перематывать неудобно. Если у тебя format работает некорректно, попробуй просто перед отображением нового текста перематывать его вверх на какую-то заранее завышенную величину, типа 100000.
Вот более свежая версия библиотеки (исправлен баг с отображением длинных слов, кот. не влазят в одну строку и некоторые другие мелкие подправки): |
Ответ: Lib_font32: Графические шрифты
ох, стрельнуть бы в тебя odd, за то что не обновляешь в одном месте файл, а новые добавляешь. :imp:
http://forum.boolean.name/showthread.php?t=5499 и внимательно! |
Ответ: Lib_font32: Графические шрифты
Прям как в фильме "Лолита": "Не стреляйте, не стреляйте..." :-D
Блин. Я не виноват. Сколько вам объяснять: У МЕНЯ НЕТ ПРАВ НА РЕДАКТИРОВАНИЕ СВОИХ СТАРЫХ ПОСТОВ. Если бы были, я бы всегда свежие библиотеки выкладывал на самой первой странице. И вообще готовится крупное обновление всех библиотек пакета, которое будет выложено и по-идее в дальнейшем выкладываться в соответствующей теме. "GUI2", кажется?.. |
Ответ: Lib_font32: Графические шрифты
Почемуто, если отградить TextWindow сверху, то при скроллинге получаеться, что текст выходит за верхнюю рамку, а ведь я просто хотел совместить VScroll и окна...в итоге текст залазит на верх окна и вообще при малейшем скролинге убираеться заголовок окна...
|
Ответ: Lib_font32: Графические шрифты
Цитата:
|
Ответ: Lib_font32: Графические шрифты
короче, вот модифицированный код, а то я не могу понять, что ты имеешь ввиду... Но если я правильно понял, то именно так у меня и происходит.
Код:
Program VscollDemo; |
Ответ: Lib_font32: Графические шрифты
Почему не отображает украинськую букву " Ї " в Lib_font32.
|
Ответ: Lib_font32: Графические шрифты
Цитата:
Цитата:
|
Ответ: Lib_font32: Графические шрифты
odd, я тут прошнырил по символам, тем, что могут быть на моб телефонах и заметил, что "Ї" - отображается, а "ї" - нет, и "Є" - отображается, а "є" - нет. Т.е. те символы, что в верхнем регистре - выводятся нормально, а в нижнем регистре - нет. Потом еще какая-то фигня с евро, не выводится символ хоть ты башкой об дерево бахнись... Чет можно придумать?
|
Ответ: Lib_font32: Графические шрифты
Спасибо, жду исправление если можна исправить.Если нет то как выкрутиться с этого положения.
|
Ответ: Lib_font32: Графические шрифты
Ааа... и буква "і" - украинская. То же самое что и с "ї" и "є". Просто это важно для украинских пользователей. Бывает, что мидлет просто виснет и полностью не отображает сообщение. Помоги, а?!
|
Ответ: Lib_font32: Графические шрифты
Хорошо бы еще сделать полосу прокрутки к окну где текст скроллится, но ладно - это так на заметку. Пока что разберись с символами, оч. прошу тя...
|
Re: Lib_font32: Графические шрифты
У меня почему-то на компилируется Lib_font32. Кладу эту библ. в папку classes, при компиляции выдает ошибку failed to load 'font32' после этого файл с библиотекой удаляется из этой папки.
Подскажите, пожалуйста, в чем проблемка? У меня англ. версия MP 2.02. |
Ответ: Lib_font32: Графические шрифты
Помести библиотеку Lib_font32.class в папку Libs, что находится в дирекории MidletPascal. Если это сообщение было полезным щелкни "Полезно!"
Не выпрашивайте полезность. Некрасиво. (Piligrim) |
Ответ: Lib_font32: Графические шрифты
Цитата:
Здеь я выложил пример с полосой прокрутки http://forum.boolean.name/showthread.php?t=7592. |
Re: Lib_font32: Графические шрифты
Не понятно, как с помощью Genfont.exe получить немецкий шрифт (с умляутами). Если кто-то знает, поделитесь опытом, пожалуйста.
|
Ответ: Lib_font32: Графические шрифты
хелп
Цитата:
|
Ответ: Lib_font32: Графические шрифты
Скорее всего это либо ошибка при загрузке ресурса (пытается считать файл которого нет или неправильно имя сгенерировал) или глючит твоя процедура StrToUtf8 по декодированию текста из одной кодировки в другую. Попробуй вообще отключить декодирование, font32 должен понимать обе кодировки и сам.
|
Ответ: Lib_font32: Графические шрифты
вот мой проект (т.е. его мини прототип), тема
Когда делаю через формы, текст отображается (я про "StrToUtf8"). Пробовал делать вот так "s:=s +temp;", результат тот же, чистый лист(((( Делаю проверку s Код:
if s='' then begin ..и showForm и addCom тоже отключал. |
Ответ: Lib_font32: Графические шрифты
После DrawTextWindow нужно делать Repaint и хоть какую-то задержку чтобы пользователь смог прочитать что там написано, а у тебя сразу идет переключение в режим форм. К тому же опреатор Align(i) употребляется неправильно. И наверняка много других неточностей. Короче, тут без исходника не разобраться. Очень много мелких ошибок в коде.
|
Ответ: Lib_font32: Графические шрифты
Вложений: 1
Вот так все прекрасно работает:
i:=Format('Текст Текст Текст Текст Текст Текст Текст Текст Текст ', 0); а так нет: i:=Format(s, 0); Вот навалял не большой проект |
Re: Lib_font32: Графические шрифты
Нашёл след. ошибки:
1. res:=OpenResource('/123.txt'); без слэша 2. в файле 123.txt после ### идёт пробел. И т.д., рабочий вариант здесь http://slil.ru/27518243 |
Ответ: Lib_font32: Графические шрифты
Можно ли как-то вставить Enter (переход на следующую строку) в нужном мне месте? Если можно, пример в студию!
|
Ответ: Lib_font32: Графические шрифты
Вложений: 1
Сам пользую такую функцию вывода текста с принудительными переносами. В архиве мидлет в котором используется такая функция.
//многострочное отображение длинной строки //st - строка; x, y координаты вывода; w, h - ширина и высота в буквах!!!; dlt - пропустить строк function DrawLongStr(st : string; x, y : integer; w, h : integer; dlt : integer) : boolean; var s, ss : string; i, j, n : integer; prn : integer; begin DrawLongStr := true; if dlt > 0 then begin n := w * dlt; s := Copy(st, n, Length(st)); end else s := st; for i := 1 to h do begin if Length(s) < w then begin DrawString(s, x, y + ((i - 1) * h_ltr)); DrawLongStr := false; Break; end; ss := Copy(s, 0, w); //принудительные переносы!!! prn := -1; prn := pos(ss, perenos); if prn > -1 then begin ss := Copy(s, 0, prn); prn := prn + 1; end else prn := w; s := Copy(s, prn{w}, Length(s)); DrawString(ss, x, y + ((i - 1) * h_ltr)); end; end; |
Ответ: Lib_font32: Графические шрифты
AVIZO, а исходник не зя)))
Цитата:
Цитата:
|
Ответ: Lib_font32: Графические шрифты
Исходник чего???
Вроде бы функцию выложил полностью. В ней все прозрачно (хотя можно сделать элегантнее). |
Ответ: Lib_font32: Графические шрифты
А именно в библиотеке font32 можно как-то вставить Enter или хотя бы получить высоту текста? Если нет, то предлагаю создателю это сделать, если не трудно.
|
Ответ: Lib_font32: Графические шрифты
Winner, можно так:
В тексте на пустой строке, там, где надо установить перенос, ставим решетку. Если строка равна "#", то строка равна "chr(32) + chr(13)" |
Ответ: Lib_font32: Графические шрифты
Т.е. chr(32) + chr(13) - это и есть мой Enter? Можно немного разъяснить новичку этот момент?
|
Ответ: Lib_font32: Графические шрифты
Для переводов строки в разных операционных системах используются разные байты.
Винда - chr(13)+chr(10) Линукс - chr(10) Мак - chr(13) Обычно когда ты ЭНТЕР нажимаешь в текстовом редакторе, то вставляются именно эти символы (свои на каждой ОС). chr(32) - это вроде пробел, он-то тут причём? |
Ответ: Lib_font32: Графические шрифты
Возможно это так, но в инструкции написано, иначе
|
Ответ: Lib_font32: Графические шрифты
Richik, в инструкции к чему?
|
Ответ: Lib_font32: Графические шрифты
Lib_font32.txt
Цитата:
|
Ответ: Lib_font32: Графические шрифты
Здесь видимо просто добавляется пробел, для того, чтобы текст не упирался в край экрана (32dec=20hex, а это точно пробел), потом уже идет 13dec, это перевод строки.
|
Ответ: Lib_font32: Графические шрифты
Алгоритм разбиения текста работает так, что ему нужен пробел перед знаком переноса. Иначе перенос срабатывать не будет.
|
Ответ: Lib_font32: Графические шрифты
я же говорил :p
офтоп)) |
Ответ: Lib_font32: Графические шрифты
odd, ты не мог бы сделать, чтобы у шрифтов оставалась прозрачность и чтоб в генераторе можно было задать цвет в RGB... Просто как-то не очень красиво смотрится белый прямоугольник вокруг текста, а если выбрать белый цвет шрифта, то вобще нифига не видно... Сделай плиз если не трудно...
|
Ответ: Lib_font32: Графические шрифты
Не понимаю в чем проблема? Там отлично поддерживается прозрачность. Просто загрузи шрифт в Photoshop и сделай там прозрачный фон в самой картинке вместо белого фона. Либо перекрась белый фон на прозрачный с помощью либы Lib_alpha. Просто генератор шрифтов не очень хороший, не умеет делать шрифты с прозрачным фоном. Вечно потом приходится самому ручками доделывать. Аналогично поступаешь и с перекраской шрифта. В любом случае с перекраской или без без Photoshop не обойтись. Он нужен хотя бы для уменьшения веса самой картинки. Можно подобрать такой алгоритм сжатия, что размер картинки уменьшится в 2 и более раз.
|
Ответ: Lib_font32: Графические шрифты
odd, Спасибо, я так и делал... просто если размер шрифта маленький, бывает что Photoshop буквы обрезает, и они становятся непохожими на сам шрифт...
Можно поподробнее про сжатие картинки в Photoshop? |
Ответ: Lib_font32: Графические шрифты
Для сжатия готовой картинки нажимаешь
File --> Save for Web... И там выставляешь оптимальные значения для сжатия, там есть предпросмотр и пишется размер получаемого файла. Для шрифта, как правило, оптимальный формат PNG-8, с двумя цветами. Для других картинок поэкспериментируй с форматами и количеством цветов. |
Ответ: Lib_font32: Графические шрифты
odd
В font32 есть поддержка скролинга текста по вертикали, а можно добавить поддержку скролинга строки по горизонтали (справо-налево)? Что бы можно было сделать циклическую бегущую строку. |
Ответ: Lib_font32: Графические шрифты
а так разве нельзя?
repeat fillrect(0,0,176,220); x:=x+1; drawstring('бегущая строка',x,5); until (.....) и строка будет двигаться вправо |
Часовой пояс GMT +4, время: 02:36. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot