Документация к свободной библиотеке exif.obj, для ОС Колибри. Эта библиотека создана для просмотра информации находящейся в изображениях в формате Exif. Информация эта создается цифровыми фотокамерами и содержит разные параметры например такие как: название фирмы производителя, модель камеры, и т.д.
Последнее обновление библиотеки 22.07.14.
Функции работают с указателями на структуры app1 или на app1_child. Пример структуры:
align 4 h_app1: dd 0 ;+0 указатель на количество тегов и на сами теги dd 0 ;+4 смещение добавляемое к указателям в тегах dw 0 ;+8 параметр, отвечающий за порядок следования байтовdw 0 ;+10 идентификатор для группы тегов
Эта функция ищет начало Exif данных. Если они найдены то заполняется структура app1. Если не найдены, то первый параметр в структуре делается равным 0. Пример:
stdcall [exif_get_app1], [open_file],h_app1 ... h_app1 dd 0,0,0
где open_file - указатель на данные файла изображения (пока поддерживаются только *.jpg и *.jpeg).
h_app1 - структура для запоминания начала Exif данных.
Заполняет текстовую строку именем параметра из Exif и его значением. Пример:
stdcall [exif_get_app1_tag], h_app1,3,txt_buf,80 ... h_app1 dd 0,0,0 txt_buf rb 80
где h_app1 - структура заполенная в exif_get_app1 или в exif_get_app1_child.
3 - порядковый номер параметра.
txt_buf - текстовый буфер для заполнения.
80 - максимальная длина текста.
Есть простые теги с информацией а есть теги указывающие на списки других тегов. Эта функция берет указатель на начало списка дочерних тегов. Пример:
stdcall [exif_get_app1_child], h_app1,h_child,0x8769 ... h_app1 dd 0,0,0 h_child dd 0,0,0
где h_app1 - структура заполенная в exif_get_app1 или в exif_get_app1_child.
h_child - структура для заполения данных списка дочерних тегов.
0x8769 - код тега (находящегося в списке тегов h_app1), который является указателем на список других дочерних тегов.
В даном примере функция берет тег 0x8769 и пытается найти его в списке h_app1, если находит то заполняет по нему значения в структуре h_child. Далее к списку h_child можно применять функцию exif_get_app1_tag для взятия значения этих тегов. С помощью этой функции мы как бы переходим внутрь некой "папки" с тегами, которые сразу достать не можем.
Здесь приведены некоторые константы, которые могут использоватся как 3-й параметр для функции exif_get_app1_child. Эти константы обозначают специальные теги, которые содержат смещение на дочерние параметры, которые находятся в Exif.
Обозначает дополнительные параметры Exif.
Обозначает параметры GPS.
Пример таблицы экспорта, расчитанной на использование макроса @use_library_mem:
align 4 import_exif: exif_get_app1 dd sz_exif_get_app1 exif_get_app1_tag dd sz_exif_get_app1_tag exif_get_app1_child dd sz_exif_get_app1_child dd 0,0 sz_exif_get_app1 db 'exif_get_app1',0 sz_exif_get_app1_tag db 'exif_get_app1_tag',0 sz_exif_get_app1_child db 'exif_get_app1_child',0
15.07.14 - первая версия библиотеки, пример использования.