Смысл: пусть плагин помещает в клипборд нужные данные.
Как?
"Граббим" экран (Alt-Ins). После нажатия Enter формируется массив данных FAR_CHAR_INFO и передается плагину (OpenW).
Если плагин вернул NULL (или никто из плагинов не откликнулся на запрос), то ФАР сам помещает в буфер обмена подготовленные данные.
Иначе плагин помещает данные в буфер обмена в нужном формате (RTF, HTML, BMP, etc.) и возвращает 1 (в этом случае ФАР с клипбордом ничего не делает и вся ответственность на плагине).
Как это всё видится с точки зрения АПИ (для обсуждения)?
В OpenW передается OPEN_GRABBER (12) и структура GrabberInfo:
Code: Select all
struct GrabberInfo{
size_t StructSize; // размер структуры GrabberInfo
FAROPENGRABBERFLAGS Flags; // флаги
SMALL_RECT Area; // координаты выделенного блока относительно начала экранного буфера
COORD SizeBuffer; // размеры передаваемых данных (по высоте и ширине)
FAR_CHAR_INFO *Buffer; // данные
};
Флаги FAROPENGRABBERFLAGS:
FOGF_STREAM - блок поточный (пока такого нет, на будущее), в этом случае SizeBuffer.Y=1, а SizeBuffer.X - размер.
Замечания, предложения?