IVGSoft

Пользователи
  • Публикаций

    28
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Весь контент IVGSoft

  1. Господа! Пишу компонент для отображения сообщений чата с анимированными смайликами. Собственно он уже почти готов. Под Windows все работает почти прекрасно. Но столкнулся с одной большой проблемой - скорость прорисовки текста под мобильными платформами. В частности было испытано поведение под Андроид. Когда в сообщении текста не много,то все работает хорошо, но вот если будет большое сообщение, когда почти весь экран в символах, то начинается жуткое торможение. Анализ исходников TTextLayout показал, что для рендеринга используется GPU. Т.е. каждый символ прорисовывается отдельной битмапкой. В этом ничего нового нет, конечно, ведь любой рендеринг текста в глубине так и работает. Но нативное отображение текста по скорости просто не сравнимо! Собственно вопрос, может кто-то пробовал вывести текст на Андроиде через нативный Canvas? И возможно ли это вообще? Смикшировать использование кавы FMX и нативной Андроид в одном компоненте?
  2. Хорошо. Пусть исправит, думаю это многим пригодится. А куда отправили? Сюда - http://www.raysoftware.cn/?p=559
  3. В конце концов получилось исправить. Для interlaced гифок проблема была вообще пустяковая. Одна строчка не в том месте. А вот для optimized все оказалось несколько сложней, но в итоге теперь все гифки отображаются правильно. Пользуйтесь на здоровье! FMX.GifUtils.zip
  4. Может и так, но я уже поборол все эти проблемы. Наконец. Вот, держите! Испробовано на многих гифках.
  5. Если я не ошибаюсь, то автор давно на это забил.
  6. Чем больше пользую, тем больше багов вылазит Пытаюсь исправить. У этого класса есть проблемы с отображением черезстрочных (interlaced) гифок.
  7. Кстати, обнаружилось еще пару багов в китайской либе для анимированных гифок... Вроде бы устранил. Вот листинг :
  8. Добрый день сообществу! Выкладываю на суд первый релизик :) Для создания паков со смайлами служит небольшая утилитка. Пока она позволяет только импортировать смайлы из гифок. IVG.Chatting.zip
  9. Александр, я Вас прекрасно понимаю. Вы вложили много труда в свой продукт и хотите его продвигать. У Вас замечательный продукт, но мне не нужен весь функционал. А платить 340$ лишь за часть функционала я не готов. Желаю Вам удачи в продвижении Вашего, несомненно, прекрасного и интересного продукта! Но давайте не будем разводить оффтоп.
  10. В этом участке кода есть одна маленькая ошибка. Иногда это приводит к тому, что на некоторых кадрах теряется прозрачность. Я заменил на вот такое : GIF_DISPOSAL_BACKGROUND: begin LFrame.FDisbitmap.Clear(LLocalPalette[LGraphicsCtrlExt.ColorIndex].Color); MergeBitmap(tmp, LFrame.FDisbitmap, Bounds(0, 0, LFrameWidth, LFrameHeight), LFrame.FPos.x, LFrame.FPos.Y); end;
  11. Это все замечательно, но чем оно мне поможет?
  12. Да я не зацикливаюсь. Смайлы в чате автоматически конвертируются из мнемоник в графику.
  13. Теперь задача еще интересней. Как сделать мемо со смайлами?
  14. Сообщения чата представлены вот таким интерфейсом
  15. Да, пожалуйста! Не уверен на сколько это поможет сообществу. Нет, сразу через NativeDraw. Оно само на битмапе рисует.
  16. Промежуточный итог. Переписал компонент используя нативный канвас для отрисовки. Скорость на Андроиде на порядок выше. Никаких тормозов. Макс, еще раз большое спасибо за наводку! :)
  17. Пока в мемо анимированных смайлов нет. Еще до этого не дошел. Пока смайлы отрисовываются в самом компоненте чата. Т.е. в мемо ты вводишь их текстовую мнеонику, а чат уже сам находит, что это за смайл и рисует его. Потом по таймеру отрисовывается следующий фрейм смайла, если он в зоне видимости
  18. Добрый день! Собственно вопрос в названии темы. Пробовал прикрутить TFloatAnimation, но пока что-то безуспешно
  19. Спасибо! Я уже догадался, что анимация там не предусмотренна. Я уже слепил из панели и кнопки. Но это же костыль...
  20. Ну, это как вариант. Но интересно использовать именно "коробочный" компонент
  21. Да ничего не удалось. Код? Собственно все связывалось в DesignTime. PropertyName = Height Trigger = IsChecked=true TriggerInverse = IsChecked=false StartValue = 25 StopValue = 80 Duration = 0,5 Он вообще ни на один из триггеров не реагирует