Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создать сишарповый враппер для с++ библиотеки 
:(
    Опции темы
Cinemaizer[Олег]
Дата 11.3.2010, 04:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 10.4.2008
Где: Москва

Репутация: нет
Всего: 0



Добрый день всем!
Суть задачи в следующем. Имеется SDK продвинутой графической библиотеки GFL (http://www.xnview.com/en/gfl.html).
На данный момент c# враппера в общедоступном варианте нет, к сожалению, а хотелось бы иметь. К слову, камрады из опенсорс-проекта FreeImage таки идут в ногу со временем и FreeImage.Net C# дистрибуцию выложили (http://freeimage.sourceforge.net/download.html). Однако GFL все же повзрослее по возможностям и скорости, посему выбор пал на нее.
В связи с вышеперечисленным, вопрошаю - как долго и сколько бы стоило создание c#-враппера для GFL ?
Заранее спасибо!  smile 

Это сообщение отредактировал(а) Cinemaizer[Олег] - 11.3.2010, 04:35
PM MAIL WWW   Вверх
mrbrooks
Дата 11.3.2010, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



дорого, долго
PM MAIL   Вверх
Cinemaizer[Олег]
Дата 11.3.2010, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 10.4.2008
Где: Москва

Репутация: нет
Всего: 0



ок.  а если "покомандово"? надеюсь, подешевле и недолго ? smile
если серьезно, то конечно весь арсенал не нужен, сейчас конечно. ряд методов, штук с десяток может..
PM MAIL WWW   Вверх
mrbrooks
Дата 11.3.2010, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



Цитата(Cinemaizer[Олег)
, 11.3.2010,  09:38, post2114171]а если "покомандово"

недолго, дорого


Цитата(Cinemaizer[Олег)
, 11.3.2010,  09:38, post2114171]если серьезно, то конечно весь арсенал не нужен, сейчас конечно. ряд методов, штук с десяток может.. 

сделай сам. опыт получишь хороший. DllImport поможет  smile 
PM MAIL   Вверх
Cinemaizer[Олег]
Дата 11.3.2010, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 10.4.2008
Где: Москва

Репутация: нет
Всего: 0



Да с удовольствием, но... поскольку только только начал понимать азы шарпа, задача для меня оч. сложная... Вот, возьмем к примеру метод 
gflLoadThumbnail . (он мне нужон в первую очередь)

The gflLoadThumbnail function load a picture file as a thumbnail into memory. 

Код

GFL_ERROR gflLoadThumbnail(
  const char * filename,  
  GFL_INT32 width,  
  GFL_INT32 height,  
  GFL_BITMAP ** bitmap,  
  GFL_LOAD_PARAMS * params,  
  GFL_FILE_INFORMATION * informations,  
);


Параметры:

filename : Pointer to a null-terminated string that contains the filename to load. 
width : Width of the thumbnail. 
height : Height of the thumbnail. 
bitmap : Address of a pointer to a GFL_BITMAP structure. 
params : Pointer to a GFL_LOAD_PARAMS structure. 
This structure must be filled correctly. 
informations : Pointer to a GFL_FILE_INFORMATION structure. Can be NULL if you don't want it. 
You must use gflFreeInformation to free his content. 

Return value : The function returns GFL_NO_ERROR if it is successful or a value of GFL_ERROR. 

С типом GFL_INT32 все просто, а как быть с указателями на структуры??? Их тут уйма, и потом еще тянут за собой указатели в структурах... smile
вот, перечислю из хелпа тож...

Код

typedef struct (
  GFL_BITMAP_TYPE Type,  
  GFL_ORIGIN Origin,  
  GFL_INT32 Width,  
  GFL_INT32 Height,  
  GFL_UINT32 BytesPerLine,  
  GFL_INT16 LinePadding,  
  GFL_UINT16 BitsPerComponent,  
  GFL_UINT16 ComponentsPerPixel,  
  GFL_UINT16 BytesPerPixel,  
  GFL_UINT16 Xdpi,  
  GFL_UINT16 Ydpi,  
  GFL_INT16 TransparentIndex,  
  GFL_INT32 ColorUsed,  
  GFL_COLORMAP * ColorMap,  
  GFL_UINT8 * Data,  
  char * Comment,  
  void * MetaData
} GFL_BITMAP


где, 
The GFL_COLORMAP structure is used for colormap. 
Data : Pointer of the picture data. 
Comment : Address of a string used by the comment. You must use gflSetComment to change the comment. 
MetaData : Pointer of Metadata. You must use gflBitmapGetIPTC & gflBitmapGetEXIF to obtain readable data. 

Код

typedef struct (
  GFL_UINT8 Red[256],  
  GFL_UINT8 Green[256],  
  GFL_UINT8 Blue[256]
} GFL_COLORMAP


Red: Array of red components. 
Green: Array of green components. 
Blue: Array of blue components. 

Код

typedef struct (
  GFL_UINT32 Flags,  
  GFL_INT32 FormatIndex,  
  GFL_INT32 ImageWanted,  
  GFL_ORIGIN Origin,  
  GFL_BITMAP_TYPE ColorModel,  
  GFL_UINT32 LinePadding,  
  GFL_UINT8 DefaultAlpha,  
  GFL_UINT8 Reserved1,  
  GFL_UINT16 Reserved2,  
  GFL_INT32 Width,  
  GFL_INT32 Height,  
  GFL_UINT32 Offset,  
  GFL_CORDER ChannelOrder,  
  GFL_CTYPE ChannelType,  
  GFL_UINT16 PcdBase,  
  GFL_UINT16 EpsDpi,  
  GFL_INT32 EpsWidth,  
  GFL_INT32 EpsHeight,  
  GFL_READ_CALLBACK Read,  
  GFL_TELL_CALLBACK Tell,  
  GFL_SEEK_CALLBACK Seek
} GFL_LOAD_PARAMS


Код

typedef struct (
  GFL_BITMAP_TYPE Type,  
  GFL_ORIGIN Origin,  
  GFL_INT32 Width,  
  GFL_INT32 Height,  
  GFL_INT32 FormatIndex,  
  char FormatName[8],  
  char Description[64],  
  GFL_UINT16 Xdpi,  
  GFL_UINT16 Ydpi,  
  GFL_UINT16 BitsPerComponent,  
  GFL_UINT16 ComponentsPerPixel,  
  GFL_INT32 NumberOfImages,  
  GFL_UINT32 FileSize,  
  GFL_COLORMODEL ColorModel,  
  GFL_COMPRESSION Compression,  
  char CompressionDescription[64]
} GFL_LOAD_PARAMS


Короче, сие есть для меня пока труднопроходимый лес :(


Это сообщение отредактировал(а) Cinemaizer[Олег] - 11.3.2010, 14:01
PM MAIL WWW   Вверх
Cinemaizer[Олег]
Дата 11.3.2010, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 10.4.2008
Где: Москва

Репутация: нет
Всего: 0



В какую сторону копать вроде бы нашел (маршалинг, Marshal.StructureToPtr - в нужную сторону смотрю? smile), но... все равно пока туго соображаю как стартовать... :(

Может подскажет кто (кодом имею ввиду..), как мне все эти указатели прописать?

Это сообщение отредактировал(а) Cinemaizer[Олег] - 11.3.2010, 19:59
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.