source: flair-src/branches/sanscv/lib/FlairCore/src/Image.cpp @ 324

Last change on this file since 324 was 324, checked in by Sanahuja Guillaume, 2 years ago

removing opencv dependency

File size: 2.2 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
4// %flair:license}
5//  created:    2012/03/20
6//  filename:   Image.cpp
7//
8//  author:     Guillaume Sanahuja
9//              Copyright Heudiasyc UMR UTC/CNRS 7253
10//
11//  version:    $Id: $
12//
13//  purpose:    Class defining an image
14//
15/*********************************************************************/
16
17#include "Image.h"
18
19using std::string;
20
21namespace flair {
22namespace core {
23
24char* (*Image::allocFunction)(ssize_t)=Image::DefaultAllocFunction;
25void (*Image::freeFunction)(char*)=Image::DefaultFreeFunction;
26   
27Image::Image(const Object *parent, uint16_t width, uint16_t height,
28                 Type::Format format, string name, bool allocate_data, int n)
29    : io_data(parent, name, n), dataType(width, height, format) {
30  this->allocate_data = allocate_data;
31Printf("Image %s\n",ObjectName().c_str());
32  if (allocate_data) {
33    switch (format) {
34    case Type::Format::YUYV:
35    case Type::Format::UYVY:
36      buffer=allocFunction(width*height*2);
37      break;
38    case Type::Format::BGR:
39      buffer=allocFunction(width*height*3);
40      break;
41    case Type::Format::Gray:
42      buffer=allocFunction(width*height*1);
43      break;
44    default:
45      Err("format not supported");
46      break;
47    }
48  } else {
49    if (n > 1)
50      Err("number of samples!=1 not possible when not allocating data\n");
51    n = 1;
52  }
53
54  SetPtrToCircle((void **)&buffer);
55
56  if (n > 1)
57    prev = new Image(this, width, height, format, name, n - 1);
58}
59
60Image::~Image() {
61  if(allocate_data) freeFunction(buffer);
62}
63
64void Image::RawRead(char *dst) const { Warn("non implementé\n"); }
65
66void Image::RegisterAllocFunction(char*(*func)(ssize_t size)) {
67  if(allocFunction==DefaultAllocFunction) allocFunction=func;
68}
69
70void Image::RegisterFreeFunction(void(*func)(char* buffer)) {
71  if(freeFunction==DefaultFreeFunction) freeFunction=func;
72}
73
74char* Image::DefaultAllocFunction(ssize_t size){
75  Printf("default alloc %i\n",size);
76  return (char*)malloc(size);
77}
78
79void Image::DefaultFreeFunction(char* buffer){
80  Printf("default free\n");
81  free(buffer);
82}
83
84} // end namespace core
85} // end namespace flair
Note: See TracBrowser for help on using the repository browser.