[вернуться к оглавлению]

# LibRaw: C API

LibRaw C API является "оберткой" (wrapper) вокруг С++ API, поэтому практически вся документация к функциям C API является набором гиперссылок на соответствующие места описания C++ API.

Содержание

1. Инициализация: libraw_data_t *libraw_init(unsigned int flags);
2. Возвращаемые значения
3. Загрузка данных из файла
4. Вспомогательные функции
5. Постобработка данных, эмуляция поведения dcraw
   - Установка параметров
   - Эмуляция поведения dcraw
6. Запись выходных файлов
7. Запись результатов распаковки в память

## Инициализация: libraw_data_t *libraw_init(unsigned int flags);

Функция возвращает указатель на экземпляр структуры libraw_data_t.
Полученный указатель нужно передавать в качестве первого аргумента во все функции C API (кроме libraw_strerror).

Возвращает: NULL при ошибке, указатель на структуру во всех остальных случаях.

## Возвращаемые значения

Функции C API возвращают EINVAL (см. errno.h) если им передан нулевой указатель в качестве первого аргумента. Во всех прочих случаях транслируется код возврата C++ API.

## Загрузка данных из файла

int libraw_open_file(libraw_data_t*, const char *)
  См. LibRaw::open_file()
int libraw_open_buffer(libraw_data_t*, void *buffer, size_t bufsize)
  См. LibRaw::open_buffer()
int libraw_unpack(libraw_data_t*);
  См. LibRaw::unpack()
int libraw_unpack_thumb(libraw_data_t*);
  См. LibRaw::unpack_thumb()

## Вспомогательные функции

const char* libraw_version()
  См. LibRaw::version()
const char* libraw_versionNumber()
  См. LibRaw::versionNumber()
bool LIBRAW_CHECK_VERSION(major,minor,patch)
  См. LIBRAW_CHECK_VERSION в описании C++ API
int libraw_cameraCount()
  См. LibRaw::cameraCount()
int libraw_cameraList()
  См. LibRaw::cameraList()
void libraw_unpack_function_name(libraw_data_t*);
  См. LibRaw::unpack_function_name()
void libraw_add_masked_borders_to_bitmap(libraw_data_t*);
  См. LibRaw::add_masked_borders_to_bitmap()
void libraw_rotate_fuji_raw(libraw_data_t*);
  См. LibRaw::rotate_fuji_raw()
void libraw_recycle(libraw_data_t*);
  См. LibRaw::recycle()
void libraw_close(libraw_data_t*);
  См. LibRaw::~LibRaw()
const char *libraw_strerror(int errorcode);
  См. libraw_strerror
const char *libraw_streprogress(enum LibRaw_progress);
  См. LibRaw::strprogress
void libraw_set_memerror_handler(libraw_data_t*, memory_callback cb);
  См. LibRaw::set_memerror_handler()
void libraw_set_dataerror_handler(libraw_data_t*,data_callback func);
  См. LibRaw::set_dataerror_handler()
void libraw_set_progress_handler(libraw_data_t*,progress_callback func);
  См. LibRaw::set_progress_handler()

## Постобработка данных, эмуляция поведения dcraw

### Установка параметров

Параметры постобработки для описанных ниже вызовов ставятся, как и для С++ API, модификацией полей структуры libraw_output_params_t:

     libraw_data_t *ptr = libraw_init(0);
     ptr->params.output_tiff = 1; //  выводить в TIFF

Поля структуры описаны в документации на libraw_output_params_t, замечания по их использованию указаны в API notes.

### Эмуляция поведения dcraw

int libraw_adjust_sizes_info_only(libraw_data_t*);
  См. LibRaw::adjust_sizes_info_only()
int libraw_dcraw_document_mode_processing(libraw_data_t*);
  См. LibRaw::dcraw_document_mode_processing()
int libraw_dcraw_process(libraw_data_t* lr);
  См. LibRaw::dcraw_process()

## Запись выходных файлов

int libraw_dcraw_ppm_tiff_writer(libraw_data_t* lr,const char *filename);
  См. LibRaw::dcraw_ppm_tiff_writer()
int libraw_dcraw_thumb_writer(libraw_data_t* lr,const char *fname);
  См. LibRaw::dcraw_thumb_writer()

## Запись результатов распаковки в память

libraw_processed_image_t *libraw_dcraw_make_mem_image(libraw_data_t* lr,int * errcode)
  См. LibRaw::dcraw_make_mem_image()
libraw_processed_image_t *libraw_dcraw_make_mem_thumb(libraw_data_t* lr,int * errcode)
  См. LibRaw::dcraw_make_mem_thumb()

[вернуться к оглавлению]

Last modified: Fri Apr 9 11:34:20 MSD 2010