/*
 * Copyright(C) 2000 Проект ИОК
 *
 * Этот файл содержит информацию, являющуюся
 * собственностью компании Крипто Про.
 *
 * Любая часть этого файла не может быть скопирована,
 * исправлена, переведена на другие языки,
 * локализована или модифицирована любым способом,
 * откомпилирована, передана по сети с или на
 * любую компьютерную систему без предварительного
 * заключения соглашения с компанией Крипто Про.
 */

/*!
 * \file $RCSfile$
 * \version $Revision: 143486 $
 * \date $Date:: 2016-08-19 13:11:47 +0300#$
 * \author $Author: sagafyin $
 *
 * \brief Краткое описание модуля.
 *
 * Проект: Базовый визуализатор
 *
 * Функция: hvisdef_hvis_get_table
 */

#if !defined _READER_HVIS_HVISDEF_EXP_H
#define _READER_HVIS_HVISDEF_EXP_H

#include "reader/std_decl.h"
#include "visualizer.h" 

#if defined( _USRDLL )
#define _HVSDEF_DECL _STDEXP_DECL
#else /*defined( _USRDLL )*/
#define _HVSDEF_DECL
#endif /*defined( _USRDLL )*/

#if defined( __cplusplus )
extern "C" {
#endif

#define SAVE_HASH_NUMBER 256
    
    typedef struct _SaveHashStruct SaveHashStruct;
    
    struct _SaveHashStruct {
	BYTE hash[64];
	DWORD hash_len;
	SaveHashStruct *older;
    };

    typedef struct _THVDefContext THVDefContext;

    struct _THVDefContext {
	HWND	parent;
	WCHAR * contname;
	WCHAR * header;
	WORD language;
	BOOL ctx_inited;
	WCHAR * frame_header;
	WCHAR * window_str;
    };

/* Получение точки входа в библиотеку считывателя. */
    _HVSDEF_DECL const TSupSysEHandle* hvisdef_hvis_get_table(void);

/* Функция отображения документа. Платформозависимая.

   Функция отображает документ, который к моменту её вызова уже находится в контексте THVDefContext в адаптированном для печати виде:
   Поле header содержит заголовок окна.
   Поле frame_header содержит заголовок документа, сформулированный в виде вопроса ("Подписать запрос на сертивикат?").
   Поле window_str может быть равно NULL, в этом случае документ не отображается (например, подписывается неизвестный хэш). Если не NULL.
   то в поле содержится TCHAR* - содержащий переносы строк для отображения многострочного документа, оканчивающийся '\0'.
   В структуре также сохранено значение текущей локали и имя контейнера.

   Пользователь может согласиться или отказаться подписывать документ. В первом случае возвращается S_OK, во втором - SCARD_W_CANCELLED_BY_USER.
   Возможен возврат других ошибок при невозможности отобразить окно: NTE_FAIL и др.
*/
    DWORD hvisdef_display_question(THVDefContext * info);
    DWORD hvisdef_wnd_string_local(WORD language, size_t num, WCHAR **str);

#if defined( __cplusplus )
}
#endif

#endif /* !_READER_HVIS_HVISDEF_EXP_H*/
