OSDN Git Service

xpiLibraryを追加。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sun, 22 Nov 2009 02:20:31 +0000 (02:20 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sun, 22 Nov 2009 02:20:31 +0000 (02:20 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@144 9df91469-1e22-0410-86e7-ea8537beb833

doc/history.html
doc/readme.html
src/plugin/xpiLibrary/xpiLibrary.cpp [new file with mode: 0644]
src/plugin/xpiLibrary/xpiLibrary.h [new file with mode: 0644]
src/plugin/xpiLibrary/xpiLibrary.vcproj [new file with mode: 0644]
src/tpi.sln

index e880c62..4feea44 100644 (file)
        <li class="chg">書庫名の文字数制限を撤廃。</li>\r
       </ul>\r
      </dd>\r
+     <dt>xpiLibrary</dt>\r
+     <dd>\r
+      <ul>\r
+       <li class="add">新規追加。</li>\r
+      </ul>\r
+     </dd>\r
     </dl>\r
    </dd>\r
    <dt>2009/11/11</dt>\r
index 798d14f..b273e46 100644 (file)
@@ -40,9 +40,9 @@
   <div>※但し、実際の動作はTPIの実装に依存する部分があります。</div>\r
 \r
   <h2>Customize</h2>\r
-  <h3>対応する書庫形式を増やす。</h3>\r
+  <h3>対応する形式を増やす。</h3>\r
   <p>calLibraryとcuiWrapperは、それぞれ<a href="files.html#bin_lib_calLibrary.xml">calLibrary.xml</a>と<a href="files.html#bin_lib_cuiWrapper.xml">cuiWrapper.xml</a>を編集することで対応する書庫形式を増やせます。詳細はxmlファイルの記述を参照してください。</p>\r
-  <p>ã\81¾ã\81\9fã\80\81<a href="files.html#bin_lib">bin/lib</a>以ä¸\8bã\81«SPIã\82\92é\85\8dç½®ã\81\99ã\82\8bã\81\93ã\81¨ã\81«ã\82\88ã\82\8aã\80\81spiLibraryã\81\8c対å¿\9cã\81\99ã\82\8bæ\9b¸åº«形式を増やせます。</p>\r
+  <p>ã\81¾ã\81\9fã\80\81<a href="files.html#bin_lib">bin/lib</a>以ä¸\8bã\81«SPIã\82\84XPIã\82\92é\85\8dç½®ã\81\99ã\82\8bã\81\93ã\81¨ã\81«ã\82\88ã\82\8aã\80\81spiLibraryã\82\84xpiLibraryã\81\8c対å¿\9cã\81\99ã\82\8b形式を増やせます。</p>\r
 \r
   <h3>TPIの動作を変更する。</h3>\r
   <p>calLibraryとcuiWrapperはxmlファイルを編集することで、ライブラリや実行ファイルに渡すコマンドラインを変更できます。</p>\r
 \r
   <h2>Tips</h2>\r
   <h3>NSISやInno Setupのインストーラを展開するには?</h3>\r
-  <p>7z.exeやinnounp.exe を用意した上で、ファイルの拡張子をそれぞれ'.nsis'や'.inno'に変更してから開いてください。</p>\r
+  <p>7z.exeやinnounp.exeを用意した上で、ファイルの拡張子をそれぞれ'.nsis'や'.inno'に変更してから開いてください。</p>\r
+\r
+  <h3>画像の変換機能を利用するには?</h3>\r
+  <p>exbmp.xpiやifDIB.spiを用意した上で、画像ファイルをLycheeで開いてください。</p>\r
 \r
   <h2>Notes</h2>\r
   <p>LycheeはGNU LGPL 2.1の下で配布されています。再配布、改変などの条件については<a href="files.html#doc_license.txt">license.txt</a>を参照してください。また、Lycheeに使用されている画像は、Crystal Projectの画像を使用しています。Crystal Project はGNU LGPL 2.1で配布されている画像集で、<a href="http://www.everaldo.com/">Everaldo.com</a>から入手できます。</p>\r
diff --git a/src/plugin/xpiLibrary/xpiLibrary.cpp b/src/plugin/xpiLibrary/xpiLibrary.cpp
new file mode 100644 (file)
index 0000000..465adb7
--- /dev/null
@@ -0,0 +1,430 @@
+/*******************************************************************************\r
+  TPI - flexible but useless plug-in framework.\r
+  Copyright (C) 2002-2009 Silky\r
+\r
+  This library is free software; you can redistribute it and/or modify it under\r
+  the terms of the GNU Lesser General Public License as published by the Free\r
+  Software Foundation; either version 2.1 of the License, or (at your option)\r
+  any later version.\r
+\r
+  This library is distributed in the hope that it will be useful, but WITHOUT\r
+  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or \r
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License\r
+  for more details.\r
+\r
+  You should have received a copy of the GNU Lesser General Public License along\r
+  with this library; if not, write to the Free Software Foundation, Inc.,\r
+  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\r
+\r
+  $Id$\r
+*******************************************************************************/\r
+\r
+//******************************************************************************\r
+//    Includes\r
+//******************************************************************************\r
+\r
+#include "../../common/header/plugin.h"\r
+#include "../../common/header/plugin-extra.h"\r
+#include "../../common/library/library.h"\r
+#include <wx/file.h>\r
+#include <wx/stdpaths.h>\r
+#include <wx/dir.h>\r
+#include <windows.h>\r
+#include "xpiLibrary.h"\r
+\r
+//******************************************************************************\r
+//    Global varients\r
+//******************************************************************************\r
+\r
+HMODULE g_hLib;\r
+TPI_PROC g_prProc;\r
+wxString g_szArcName;\r
+\r
+//******************************************************************************\r
+//    Entry\r
+//******************************************************************************\r
+\r
+BOOL __stdcall DllMain(HMODULE, DWORD fdwReason, void *)\r
+{\r
+       switch (fdwReason)\r
+       {\r
+       case DLL_PROCESS_DETACH:\r
+               ::FreeLibrary(g_hLib);\r
+               break;\r
+       }\r
+       return TRUE;\r
+}\r
+\r
+//******************************************************************************\r
+//    Callback Wrapper\r
+//******************************************************************************\r
+\r
+int __stdcall CallbackProc(int _nNow, int _nMax, long _lData)\r
+{\r
+       // \8d\\91¢\91Ì\82ð\8f\89\8aú\89»\81B\r
+       TPI_PROCESSINFO piInfo;\r
+       piInfo.uMessage = TPI_MESSAGE_STATUS;\r
+       piInfo.uStatus  = _nNow == 0     ? TPI_STATUS_BEGINPROCESS\r
+                                       : _nNow == _nMax ? TPI_STATUS_ENDPROCESS\r
+                                       : _nNow <  0     ? TPI_STATUS_OPENARCHIVE : TPI_STATUS_INPROCESS;\r
+       piInfo.llProcessedSize       = _nNow;\r
+       piInfo.fiInfo.llUnpackedSize = _nMax;\r
+//     piInfo.fiInfo.fnFileName = * (wxFileName *) _lData;\r
+\r
+       // \83R\81[\83\8b\83o\83b\83N\8aÖ\90\94\82É\91\97\90M\81B\r
+       return g_prProc != NULL && g_prProc(TPI_NOTIFY_COMMON, & piInfo) == TPI_CALLBACK_CANCEL;\r
+}\r
+\r
+//******************************************************************************\r
+//    Inside Functions\r
+//******************************************************************************\r
+\r
+int XpiErrorCodeConvert(int nXpiErrorCode)\r
+{\r
+       switch (nXpiErrorCode)\r
+       {       \r
+       case -1:case XPI_NO_FUNCTION:       return TPI_ERROR_U_USE_LIBRARY;\r
+       case 0:                             return TPI_ERROR_SUCCESS;\r
+       case 1: case XPI_ABORT:             return TPI_ERROR_D_SKIPPED;\r
+       case 2: case XPI_NOT_SUPPRORT:      return TPI_ERROR_ARC_UNSUPPORTED;\r
+       case 3: case XPI_OUT_OF_ORDER:      return TPI_ERROR_ARC_BROKEN_MISC;\r
+       case 4: case XPI_NO_MEMORY:         return TPI_ERROR_D_OUTOFMEMORY;\r
+       case 5: case XPI_MEMORY_ERROR:      return TPI_ERROR_D_USEMEMORY;\r
+       case 6: case XPI_FILE_READ_ERROR:   return TPI_ERROR_IO_ARC_READ;\r
+                       case XPI_OTHER_ERROR:           return TPI_ERROR_UNDEFINED;\r
+                       case XPI_WINDOW_ERROR:      return TPI_ERROR_UNDEFINED;\r
+                       case XPI_FILE_WRITE_ERROR:  return TPI_ERROR_IO_FILE_WRITE;\r
+                       case XPI_END_OF_FILE:       return TPI_ERROR_ARC_BROKEN_MISC;\r
+       default:                            return TPI_ERROR_UNDEFINED;\r
+       }\r
+}\r
+\r
+//******************************************************************************\r
+//    Functions\r
+//******************************************************************************\r
+\r
+#ifdef __cplusplus\r
+extern "C"\r
+{\r
+#endif\r
+\r
+int __stdcall GetPluginInformation\r
+(\r
+       unsigned int _uInfoId,\r
+       wxULongLong,\r
+       void * _pPtr\r
+)\r
+{\r
+       if (_pPtr == NULL)\r
+       {\r
+               return TPI_ERROR_D_PARAMETER;\r
+       }\r
+       switch (_uInfoId)\r
+       {\r
+       case TPI_INFO_VERSION_MAJOR:\r
+       case TPI_INFO_VERSION_MINOR:\r
+               * (int *) _pPtr = 0;\r
+               break;\r
+       case TPI_INFO_VERSION_API:\r
+               * (int *) _pPtr = 2;\r
+               break;\r
+       default:\r
+               return TPI_ERROR_D_PARAMETER;\r
+       }\r
+       return TPI_ERROR_SUCCESS;\r
+}\r
+\r
+int __stdcall GetFormatInformation(TPI_FORMATINFO *, bool)\r
+{\r
+       return TPI_ERROR_D_UNSUPPORTED;\r
+}\r
+\r
+int __stdcall LoadPlugin\r
+(\r
+       const wxString & _szArcName,\r
+       wxULongLong _llSubOption\r
+)\r
+{\r
+       wxStandardPaths p;\r
+       wxString szSPIPath = wxPathOnly(p.GetExecutablePath()) + wxT("/lib/"), szSPIName;\r
+       wxDir fs(szSPIPath);\r
+\r
+       bool b = fs.GetFirst(& szSPIName, wxT("*.spi"));\r
+       while (b)\r
+       {\r
+               // SPI\82ð\83\8d\81[\83h\81B\r
+               wxString szLibName = szSPIPath + szSPIName;\r
+               g_hLib = ::LoadLibrary(szLibName.wchar_str());\r
+               if (g_hLib == NULL)\r
+               {\r
+                       b = fs.GetNext(& szSPIName);\r
+                       continue;\r
+               }\r
+\r
+               // GetPluginInfo\82ð\8eÀ\8ds\81B\r
+               FARPROC fpProc = ::GetProcAddress(g_hLib, "GetPluginInfo");\r
+               char szPluginType[5]; // \8eí\97Þ4bytes + NULL\r
+               if (fpProc == NULL\r
+                       || ((int (PASCAL *)(int, char *, int)) fpProc)(0, szPluginType, sizeof(szPluginType)) < 0\r
+                       || szPluginType[2] != 'I' || szPluginType[3] != 'N')\r
+               {\r
+                       ::FreeLibrary(g_hLib);\r
+                       b = fs.GetNext(& szSPIName);\r
+                       continue;\r
+               }\r
+\r
+               // \8f\91\8cÉ\82É\91Î\89\9e\82µ\82Ä\82¢\82é\82©\83`\83F\83b\83N\81B\r
+               if (CheckArchive(_szArcName, NULL) == TPI_ERROR_SUCCESS)\r
+               {\r
+                       // \91Î\89\9e\82µ\82Ä\82¢\82ê\82Î\8f\88\97\9d\82ð\8fI\97¹\81B\r
+                       return TPI_ERROR_SUCCESS;\r
+               }\r
+\r
+               b = fs.GetNext(& szSPIName);\r
+       }\r
+       return TPI_ERROR_U_LOAD_LIBRARY;\r
+}\r
+\r
+int __stdcall FreePlugin\r
+(\r
+       void * // _pReserved\r
+)\r
+{\r
+       ::FreeLibrary(g_hLib);\r
+       return TPI_ERROR_SUCCESS;\r
+}\r
+\r
+int __stdcall CheckArchive\r
+(\r
+       const wxString & _szArcName,\r
+       int * _nFileCount\r
+)\r
+{\r
+       FARPROC fpProc = ::GetProcAddress(g_hLib, "IsSupported");\r
+       if (fpProc == NULL)\r
+       {\r
+               return TPI_ERROR_U_USE_LIBRARY;\r
+       }\r
+\r
+       wxFile hFile(_szArcName, wxFile::read);\r
+       if (! hFile.IsOpened())\r
+       {\r
+               return TPI_ERROR_IO_ARC_OPEN;\r
+       }\r
+\r
+       char buffer[2050];\r
+       ::ZeroMemory(buffer, sizeof(buffer));\r
+       if (hFile.Read(buffer, sizeof(buffer)) == wxInvalidOffset)\r
+       {\r
+               hFile.Close();\r
+               return TPI_ERROR_IO_ARC_READ;\r
+       }\r
+\r
+       if (! ((BOOL (PASCAL *)(const char *, unsigned long)) fpProc)(_szArcName.ToUTF8(), (unsigned long) buffer))\r
+       {\r
+               hFile.Close();\r
+               return TPI_ERROR_D_UNSUPPORTED;\r
+       }\r
+       hFile.Close();\r
+\r
+       if (_nFileCount != NULL)\r
+       {\r
+               * _nFileCount = 1;\r
+       }\r
+\r
+       return TPI_ERROR_SUCCESS;\r
+}\r
+\r
+int __stdcall OpenArchive\r
+(\r
+       const wxString & _szArcName,\r
+       void * * _hArchive\r
+)\r
+{\r
+       g_szArcName = _szArcName;\r
+       * _hArchive = & g_szArcName;\r
+       return TPI_ERROR_SUCCESS;\r
+}\r
+\r
+int __stdcall CloseArchive\r
+(\r
+       void * _hArchive\r
+)\r
+{\r
+       g_szArcName.Clear();\r
+       return TPI_ERROR_SUCCESS;\r
+}\r
+\r
+int __stdcall GetFileInformation\r
+(\r
+       void * _hArchive,\r
+       TPI_FILEINFO * _fiInfo,\r
+       bool _bFirst\r
+)\r
+{\r
+       if (! _bFirst)\r
+       {\r
+               return TPI_ERROR_S_ENDOFDATA;\r
+       }\r
+\r
+       _fiInfo->fnFileName     = wxFileName(* (wxString *) _hArchive);\r
+       _fiInfo->fnFileName.SetVolume(wxEmptyString);\r
+       _fiInfo->fnFileName.SetPath(wxEmptyString);\r
+       _fiInfo->fnFileName.SetExt(wxT("bmp"));\r
+       _fiInfo->szStoredName   = _fiInfo->fnFileName.GetFullPath();\r
+\r
+       return TPI_ERROR_SUCCESS;\r
+}\r
+\r
+int __stdcall GetArchiveInformation\r
+(\r
+       void * _hArchive,\r
+       TPI_ARCHIVEINFO * _aiInfo\r
+)\r
+{\r
+       // \89æ\91\9c\82Ì\8fî\95ñ\82ð\8eæ\93¾\81B\r
+       FARPROC fpProc = ::GetProcAddress(g_hLib, "GetPictureInfo");\r
+       if (fpProc == NULL)\r
+       {\r
+               return TPI_ERROR_U_USE_LIBRARY;\r
+       }\r
+       PictureInfo piInfo;\r
+       int nErrorCode = XpiErrorCodeConvert(((int (PASCAL *)(const char *, long, unsigned int, PictureInfo *)) fpProc)(((wxString *) _hArchive)->ToUTF8(), 0, 0, & piInfo));\r
+       if (nErrorCode != TPI_ERROR_SUCCESS)\r
+       {\r
+               return nErrorCode;\r
+       }\r
+       _aiInfo->szComment = MB2String((char *) ::LocalLock(piInfo.hInfo));\r
+       ::LocalUnlock(piInfo.hInfo);\r
+       ::LocalFree(piInfo.hInfo);\r
+\r
+       // GetPluginInfo\82ð\8eÀ\8ds\81B\r
+       fpProc = ::GetProcAddress(g_hLib, "GetPluginInfo");\r
+       if (fpProc != NULL)\r
+       {\r
+               char szTemp[20];\r
+               if (((int (PASCAL *)(int, char *, int)) fpProc)(2, szTemp, sizeof(szTemp)) > 0)\r
+               {\r
+                       _aiInfo->fiInfo.szSuffix = MB2String(szTemp);\r
+               }\r
+               if (((int (PASCAL *)(int, char *, int)) fpProc)(3, szTemp, sizeof(szTemp)) > 0)\r
+               {\r
+                       _aiInfo->fiInfo.szTypeName = MB2String(szTemp);\r
+               }\r
+       }\r
+       _aiInfo->fiInfo.fArchive = false;\r
+       _aiInfo->fiInfo.szTPIName = wxT("xpiLibrary");\r
+       _aiInfo->fiInfo.llSupportedCommand = TPI_COMMAND_EXTRACT;\r
+\r
+       return TPI_ERROR_SUCCESS;\r
+}\r
+\r
+int __stdcall Command\r
+(\r
+       unsigned int _uCommand,\r
+       TPI_SWITCHES * _swInfo,\r
+       const wxString & _szArcName,\r
+       const wxArrayString & _szFiles\r
+)\r
+{\r
+       if (_uCommand != TPI_COMMAND_EXTRACT)\r
+       {\r
+               return TPI_ERROR_D_UNSUPPORTED;\r
+       }\r
+\r
+       // \89æ\91\9c\82Ì\8fî\95ñ\82ð\8eæ\93¾\81B\r
+       FARPROC fpProc = ::GetProcAddress(g_hLib, "GetPictureInfo");\r
+       if (fpProc == NULL)\r
+       {\r
+               return TPI_ERROR_U_USE_LIBRARY;\r
+       }\r
+       PictureInfo piInfo;\r
+       int nErrorCode = XpiErrorCodeConvert(((int (PASCAL *)(const char *, long, unsigned int, PictureInfo *)) fpProc)(_szArcName.ToUTF8(), 0, 0, & piInfo));\r
+       if (nErrorCode != TPI_ERROR_SUCCESS)\r
+       {\r
+               return nErrorCode;\r
+       }\r
+\r
+       // \93W\8aJ\8f\88\97\9d\82Ì\82Ý\82ð\8ds\82¤\81B\r
+       fpProc = ::GetProcAddress(g_hLib, "GetPicture");\r
+       if (fpProc == NULL)\r
+       {\r
+               return TPI_ERROR_U_USE_LIBRARY;\r
+       }\r
+\r
+       // \83R\81[\83\8b\83o\83b\83N\82ð\91\97\90M\81B\95Ö\8bX\8fã-1\82ð\91\97\90M\81B\r
+       wxFileName _fnArcName(_szArcName);\r
+       if (CallbackProc(-1, 0, (long) & _fnArcName))\r
+       {\r
+               return TPI_ERROR_D_SKIPPED;\r
+       }\r
+\r
+       // \83\81\83\82\83\8a\8fo\97Í\81B\r
+       HANDLE hInfo, hMemory;\r
+       nErrorCode = XpiErrorCodeConvert(((int (PASCAL *)(const char *, long, unsigned int, HANDLE *, HANDLE *, FARPROC, long)) fpProc)(_szArcName.ToUTF8(), 0, 0, & hInfo, & hMemory, (FARPROC) CallbackProc, 0));\r
+       if (nErrorCode == TPI_ERROR_SUCCESS && (hMemory == NULL || hInfo == NULL))\r
+       {\r
+               return TPI_ERROR_UNDEFINED;\r
+       }\r
+       if (nErrorCode != TPI_ERROR_SUCCESS)\r
+       {\r
+               return nErrorCode;\r
+       }\r
+\r
+       // XPI\82ð\93Ç\82Ý\8d\9e\82Þ\81B\r
+       wxStandardPaths p;\r
+       wxString szXPIPath = wxPathOnly(p.GetExecutablePath()) + wxT("/lib/exbmp.xpi");\r
+       HMODULE hXPI = ::LoadLibrary(szXPIPath.wchar_str());\r
+       if (hXPI == NULL)\r
+       {\r
+               return TPI_ERROR_U_USE_LIBRARY;\r
+       }\r
+\r
+       // \91Î\89\9e\8am\94F\81B\r
+       fpProc = ::GetProcAddress(hXPI, "IsSupported");\r
+       if (fpProc == NULL)\r
+       {\r
+               return TPI_ERROR_U_USE_LIBRARY;\r
+       }\r
+       if (! XpiErrorCodeConvert(((BOOL (PASCAL *)(int)) fpProc)(piInfo.colorDepth)))\r
+       {\r
+               return TPI_ERROR_ARC_UNSUPPORTED;\r
+       }\r
+\r
+       // \8fo\97Í\96¼\8dì\90¬\81B\r
+       wxString szTargetPath = _swInfo->fnDestinationDirectory.GetPathWithSep() + _fnArcName.GetName() + wxT(".bmp");\r
+\r
+       // \8f\91\82«\8d\9e\82Ý\81B\r
+       fpProc = ::GetProcAddress(hXPI, "CreatePicture");\r
+       if (fpProc == NULL)\r
+       {\r
+               return TPI_ERROR_U_USE_LIBRARY;\r
+       }\r
+       nErrorCode = XpiErrorCodeConvert(((int (PASCAL *)(const char *, long, HANDLE *, HANDLE *, PictureInfo *, FARPROC, long)) fpProc)(szTargetPath.ToUTF8(), 0, & hInfo, & hMemory, & piInfo, (FARPROC) CallbackProc, 0));\r
+       ::LocalUnlock(hInfo);\r
+       ::LocalUnlock(hMemory);\r
+       ::LocalFree(hInfo);\r
+       ::LocalFree(hMemory);\r
+       ::FreeLibrary(hXPI);\r
+\r
+       return nErrorCode;\r
+}\r
+\r
+int __stdcall SetCallbackProc\r
+(\r
+       TPI_PROC _prArcProc\r
+)\r
+{\r
+       // \83|\83C\83\93\83^\82ð\95Û\91\81B\r
+       if (_prArcProc == NULL)\r
+       {\r
+               return TPI_ERROR_D_PARAMETER;\r
+       }\r
+       g_prProc = * _prArcProc;\r
+\r
+       return TPI_ERROR_SUCCESS;\r
+}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
diff --git a/src/plugin/xpiLibrary/xpiLibrary.h b/src/plugin/xpiLibrary/xpiLibrary.h
new file mode 100644 (file)
index 0000000..395029f
--- /dev/null
@@ -0,0 +1,52 @@
+/*******************************************************************************
+  TPI - flexible but useless plug-in framework.
+  Copyright (C) 2002-2009 Silky
+
+  This library is free software; you can redistribute it and/or modify it under
+  the terms of the GNU Lesser General Public License as published by the Free
+  Software Foundation; either version 2.1 of the License, or (at your option)
+  any later version.
+
+  This library is distributed in the hope that it will be useful, but WITHOUT
+  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+  for more details.
+
+  You should have received a copy of the GNU Lesser General Public License along
+  with this library; if not, write to the Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+  $Id$
+*******************************************************************************/
+
+//******************************************************************************
+//    Defines
+//******************************************************************************
+
+#define XPI_NO_FUNCTION                        -101
+#define XPI_ALL_RIGHT                  0
+#define XPI_ABORT                              101
+#define XPI_NOT_SUPPRORT               102
+#define XPI_OUT_OF_ORDER               103
+#define XPI_NO_MEMORY                  104
+#define XPI_MEMORY_ERROR               105
+#define XPI_FILE_READ_ERROR            106
+#define        XPI_WINDOW_ERROR                107
+#define XPI_OTHER_ERROR                        108
+#define        XPI_FILE_WRITE_ERROR    109
+#define        XPI_END_OF_FILE                 110
+
+#pragma pack(1)
+
+typedef struct PictureInfo
+{
+       long left, top;
+       long width;
+       long height;
+       WORD x_density;
+       WORD y_density;
+       short colorDepth;
+       HLOCAL hInfo;
+} PictureInfo;
+
+
diff --git a/src/plugin/xpiLibrary/xpiLibrary.vcproj b/src/plugin/xpiLibrary/xpiLibrary.vcproj
new file mode 100644 (file)
index 0000000..f5083ea
--- /dev/null
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="shift_jis"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="8.00"\r
+       Name="xpiLibrary"\r
+       ProjectGUID="{4CE16674-C876-4459-A437-66CA97209E9E}"\r
+       RootNamespace="xpiLibrary"\r
+       Keyword="Win32Proj"\r
+       >\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"\r
+               />\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="Release|Win32"\r
+                       OutputDirectory="..\..\..\bin\lib"\r
+                       IntermediateDirectory="..\..\tmp\xpiLibrary"\r
+                       ConfigurationType="2"\r
+                       CharacterSet="1"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;XPILIBRARY_EXPORTS"\r
+                               RuntimeLibrary="2"\r
+                               WarningLevel="4"\r
+                               Detect64BitPortabilityProblems="true"\r
+                               DebugInformationFormat="3"\r
+                               DisableSpecificWarnings="4819"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="wxmsw28u_core.lib wxbase28u.lib"\r
+                               OutputFile="$(OutDir)/xpiLibrary.dll"\r
+                               GenerateManifest="false"\r
+                               ModuleDefinitionFile="..\..\common\header\plugin.def"\r
+                               SubSystem="2"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                               CommandLine="del $(TargetDir)$(TargetName).exp $(TargetDir)$(TargetName).lib"\r
+                       />\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <File\r
+                       RelativePath="..\..\common\library\library.cpp"\r
+                       >\r
+                       <FileConfiguration\r
+                               Name="Release|Win32"\r
+                               >\r
+                               <Tool\r
+                                       Name="VCCLCompilerTool"\r
+                                       ObjectFile="$(IntDir)\..\common\"\r
+                               />\r
+                       </FileConfiguration>\r
+               </File>\r
+               <File\r
+                       RelativePath=".\xpiLibrary.cpp"\r
+                       >\r
+               </File>\r
+               <File\r
+                       RelativePath=".\xpiLibrary.h"\r
+                       >\r
+               </File>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
index d927efe..6124d7d 100644 (file)
@@ -31,6 +31,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eggArc", "plugin\eggArc\egg
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rarArc", "plugin\rarArc\rarArc.vcproj", "{B4869FAD-3BDE-43C4-9C1E-4F5FE4194920}"\r
 EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xpiLibrary", "plugin\xpiLibrary\xpiLibrary.vcproj", "{4CE16674-C876-4459-A437-66CA97209E9E}"\r
+EndProject\r
 Global\r
        GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
                Release|Win32 = Release|Win32\r
@@ -48,6 +50,8 @@ Global
                {BEE5C119-4DF9-4954-AC14-642B05BCB06A}.Release|Win32.Build.0 = Release|Win32\r
                {B4869FAD-3BDE-43C4-9C1E-4F5FE4194920}.Release|Win32.ActiveCfg = Release|Win32\r
                {B4869FAD-3BDE-43C4-9C1E-4F5FE4194920}.Release|Win32.Build.0 = Release|Win32\r
+               {4CE16674-C876-4459-A437-66CA97209E9E}.Release|Win32.ActiveCfg = Release|Win32\r
+               {4CE16674-C876-4459-A437-66CA97209E9E}.Release|Win32.Build.0 = Release|Win32\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
                HideSolutionNode = FALSE\r
@@ -58,5 +62,6 @@ Global
                {B01B0D18-68C4-4A83-B816-B9D722D38619} = {0E7CC57B-177A-4DFA-ADC7-1BCB89D0C199}\r
                {BEE5C119-4DF9-4954-AC14-642B05BCB06A} = {0E7CC57B-177A-4DFA-ADC7-1BCB89D0C199}\r
                {B4869FAD-3BDE-43C4-9C1E-4F5FE4194920} = {0E7CC57B-177A-4DFA-ADC7-1BCB89D0C199}\r
+               {4CE16674-C876-4459-A437-66CA97209E9E} = {0E7CC57B-177A-4DFA-ADC7-1BCB89D0C199}\r
        EndGlobalSection\r
 EndGlobal\r