IRWEngineInfoList.cpp
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:2k
源码类别:

图形图象

开发平台:

Visual C++

  1. /********************************************************************
  2. IRWEngineInfoList.cpp - ISee图像读写引擎插件信息列表类实现文件
  3.     版权所有(C) VCHelp-coPathway-ISee workgroup 2000 all member's
  4.     这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用许可证
  5. 条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根据你
  6. 的选择)用任何更新的版本。
  7.     发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定
  8. 目地的隐含的担保。更详细的情况请参阅GNU通用许可证。
  9.     你应该已经和程序一起收到一份GNU通用许可证(GPL)的副本。如果还没有,
  10. 写信给:
  11.     The Free Software Foundation, Inc.,  675  Mass Ave,  Cambridge,
  12.     MA02139,  USA
  13. 如果你在使用本软件时有什么问题或建议,用以下地址可以与我们取得联
  14. 系:
  15. http://isee.126.com
  16. http://www.vchelp.net
  17. 或:
  18. iseesoft@china.com
  19. 作  者:YZ
  20.     e-mail:yzfree@sina.com
  21.     功能实现:图像读写插件的信息类实现代码,简化了对插件信息的管理。
  22. 文件版本:
  23. Build 00007
  24. Date  2000-12-4
  25. ********************************************************************/
  26. #include "stdafx.h"
  27. #include "IRWEngineInfoList.h"
  28. _IRWEC_InfoList::_IRWEC_InfoList()
  29. {
  30. ZeroAllElement();
  31. }
  32. _IRWEC_InfoList::~_IRWEC_InfoList()
  33. {
  34. ;
  35. }
  36. int _IRWEC_InfoList::GetMaxElemSize(void)
  37. {
  38. return _IRWEINFOLIST_SIZE;
  39. }
  40. int _IRWEC_InfoList::GetUsedElemSize(void)
  41. {
  42. return m_Count;
  43. }
  44. int _IRWEC_InfoList::GetActiveElemSize(void)
  45. {
  46. return m_Active;
  47. }
  48. void _IRWEC_InfoList::ZeroAllElement()
  49. {
  50. ::ZeroMemory((PVOID)m_info, sizeof(IRWMODULEINFO)*_IRWEINFOLIST_SIZE);
  51. for (int i=0;i<_IRWEINFOLIST_SIZE;i++)
  52. m_info[i].m_SN = i;
  53. m_Count = 0;
  54. m_Active = 0;
  55. }
  56. int _IRWEC_InfoList::AddElement(int num)
  57. {
  58. if ((m_Count + num) > _IRWEINFOLIST_SIZE)
  59. return -1; // 超出队列的容量
  60. m_Count += num;
  61. return m_Count;
  62. }
  63. // 销毁信息数组中的各种资源(该函数必须人工调用!)
  64. int _IRWEC_InfoList::Destroy()
  65. {
  66. int i = GetUsedElemSize();
  67. for (i=0;i<m_Count;i++)
  68. {
  69. if (m_info[i].m_ModuleState >= IRWEMS_CA)
  70. {
  71. VERIFY(m_info[i].m_ModuleState == IRWEMS_CR);
  72. ASSERT((m_info[i].m_hDll)&&(m_info[i].m_IRWPInterFace));
  73. ::FreeLibrary(m_info[i].m_hDll);
  74. }
  75. }
  76. ZeroAllElement();
  77. return i; // 销毁了多少个插件
  78. }
  79. LPIRWMODULEINFO _IRWEC_InfoList::GetAt(int index)
  80. {
  81. ASSERT(index < m_Count); // 不能访问未分配的单元
  82. return (LPIRWMODULEINFO)&(m_info[index]);
  83. }