C:\home\SVGCats_src\src\SVGCat.h
1|// SVGCat.h : SVGCAT アプリケーションのメイン ヘッダー ファイル 2|// 3| 4|#if !defined(AFX_SVGCAT_H__E40331A9_DD87_45AF_BAD9_8DB91F282C8F__INCLUDED_) 5|#define AFX_SVGCAT_H__E40331A9_DD87_45AF_BAD9_8DB91F282C8F__INCLUDED_ 6| 7|#if _MSC_VER > 1000 8|#pragma once 9|#endif // _MSC_VER > 1000 10| 11|#ifndef __AFXWIN_H__ 12| #error include 'stdafx.h' before including this file for PCH 13|#endif 14| 15|#include "resource.h" // メイン シンボル 16| 17|#define CSVGCatApp_Err_Format 4010 18| 19|//#define SVGCats_ScopeMode 20|//#define SVGCats_NewFileAccess 21|//#define SvgCats_DirectInput 22| 23| 24|///////////////////////////////////////////////////////////////////////////// 25|// CSVGCatApp: 26|// このクラスの動作の定義に関しては SVGCat.cpp ファイルを参照してください。 27|// 28| 29|#define SVGCats_AppName "SVG Cats 2" 30| 31|extern CLIPFORMAT SVGCats_ClipFormat; 32|extern CLIPFORMAT SVGCats_ClipFormat2; 33| 34|#define _work_path "system\\work" 35|#define _backup_path "system\\backup" 36| 37|/************************************************************************** 38| 1. <<< [SVGCat_File] SVGファイル >>> 39|***************************************************************************/ 40|class SVGCat_File 41|{ 42|public: 43| long m_id; /* (long)HWND */ 44| bool m_bPagesExist; 45| bool m_bShowing; /* メインウィンドウに表示しているかどうか */ 46| ListX m_pages; /* SVGCat_Page 型リスト, m_prims の要素の所有権も持つが、m_prims にロックされる */ 47| int m_StartPageNum; 48| int m_CurrentPageNum; /* 現在編集中のページ、ロックしているページ */ 49| bool m_bExistBackPage; /* 背景ページが存在するかどうか */ 50| int m_FrontPageNum; /* 背景ページを編集する前の通常ページの番号 */ 51| Canvas m_Canvas; /* 現在のページのキャンバス */ 52| ListX m_prims; /* 現在のページの ListX_ElemX::CadPrim* 型のリスト、要素の所有権は m_pages が持つ */ 53| BOOL m_bBeforeDraw; /* 描画(属性取得)前 */ 54|}; 55| 56|/* NewEmpty_imp で初期化します */ 57| 58|SVGCat_Page* SVGCat_File_getCurrentPage( SVGCat_File* file ); 59|int SVGCat_File_getPageNum( SVGCat_File* file, SVGCat_Page* page ); 60|int SVGCat_File_getMaxPageNum( SVGCat_File* file ); 61|void SVGCat_File_loadPage( SVGCat_File* file, SVGCat_Page* page ); 62|void SVGCat_File_savePage( SVGCat_File* file, SVGCat_Page* page ); 63| 64| 65| 66| 67|/************************************************************************** 68| 2. <<< [SVGCat_Page] ページ >>> 69|***************************************************************************/ 70|typedef struct _SVGCat_Page SVGCat_Page; 71| 72|struct _SVGCat_Page { 73| ListX_Elem inherit_ListX_Elem; 74| Canvas canvas; 75| ListX prims; 76| VARIANT ink; 77| BOOL bBeforeDraw; 78| SVGCat_Page* parent; /* 親。firstChild でなくても設定する */ 79| SVGCat_Page* firstChild; 80| SVGCat_Page* prev; 81| SVGCat_Page* next; 82| char title[256]; 83|}; 84| 85| 86|SVGCat_Page* SVGCat_Page_getChildOver( SVGCat_Page* ); 87| 88|class CSVGCatApp : public CWinApp 89|{ 90|public: 91| enum { mRecent = 8 }; 92| char m_path[_MAX_PATH]; 93| char m_backPath[_MAX_PATH]; 94| char m_RecentPath[mRecent][_MAX_PATH]; 95| int m_nRecentPath; 96| char m_ImgFolderPath[_MAX_PATH]; 97| char m_SaveFolderPath[_MAX_PATH]; 98| bool m_bLowerPath; /* ファイルパスを小文字で扱う */ 99| bool m_bAvoidPatent; /* HTML コードを特許回避する */ 100| bool m_bSingleClick; 101| bool m_bJapanese; 102| bool m_bHideMain; 103| bool m_bCtrlRet; 104| bool m_bBackTransparent; 105| int m_BackupInterval; 106| char m_TimeStampFormat[100]; 107| bool m_bTaskTray; 108| bool m_bAutoSave; 109| bool m_bUpdsk; 110| bool m_bNewTaskTray; 111| char m_KeyNumber[32]; 112| bool m_bForTheFirstTime; 113| WinX_DdeServ m_DdeServ; 114| 115| SVGCat_File m_file; /* SVG ファイル */ 116| HANDLE m_FileSema; /* 排他制御セマフォ */ 117| 118| int m_SplitX; 119| int m_SplitMode; /* 0=ノーマル, 1=最小, 2=最大 */ 120| int m_DefaultImageType; /* デフォルトの画像形式、1=PNG, 2=JPEG */ 121| 122| Undo_Buf* m_UndoBuf; 123| int m_NextID; 124| 125| int m_ErrorLevel; 126| bool m_bNoInkForDebug; 127| 128| /*-------------*/ 129| #ifndef ERRORS_CUT_DEBUG_TOOL 130| void printPrims( ListX* prims, const char* title ); 131| void printPages( const char* title ); 132| void printPages2( SVGCat_File* file, const char* title ); 133| void printPages3( const char* title ); 134| #endif 135| 136| void LoadSVGCatsIni(); 137| void SaveSVGCatsIni( bool bReloadKeyNumber = true ); 138| void ReloadKeyNumber(); 139| time_t MeltKeyNumber( const char* keyNumber ); 140| void Load( const char* path ); 141| void Load_imp( long m_hWnd, SVGCat_File* file, const char* path ); 142| void Load2( const char* path ); 143| void Load_imp2( long m_hWnd, SVGCat_File* file, const char* path ); 144| void LoadPage( long id_hWnd, SVGCat_File* file, const char* path, int* pos ); 145| void Load2( ListX* prims ); 146| void Save( const char* path, bool bTest ); 147| void SaveHtml( const char* path, const char* svg_fname, const char* title, int type ); 148| void formatError(); 149| bool LoadDefaultDesign( const char* path ); 150| void GetDisplayFName( char* fname ); 151| void ChangeBackup(); 152| void GetHtml( char* s ); 153| 154| void NewEmpty(); 155| void NewEmpty_imp( SVGCat_File* file, long id, bool bShowing ); 156| void Finish(); 157| void Finish_imp( SVGCat_File* file ); 158| void ChgPage( SVGCat_File* file, int iNewPage ); 159| void ChgPageByPrims( SVGCat_File* file, ListX* targetPrims ); 160| void NewPage( SVGCat_File* file, int pos ); 161| void ChgToBackPage( SVGCat_File* file ); 162| void SwapPage( SVGCat_File* file, int page1num, int page2num ); 163| void DelPage( SVGCat_File* file ); 164| SVGCat_Page* ImportSVG( SVGCat_File* file, SVGCat_Page* insPos, const char* path, 165| SVGCat_Page** addedLastTopLevelPage, SVGCat_Page** addedLastPage ); 166| void MoveInkWorkFile( SVGCat_File* file, int iSrcPage, 167| int iSrcOverPage, int iDstPage ); 168| int SearchByID( SVGCat_File* file, const char* id, CadPrim** prim ); 169| int SearchByText( SVGCat_File* file, const char* text, CadPrim** prim ); 170| int SearchReverseByText( SVGCat_File* file, const char* text, CadPrim** prim ); 171| int SearchByRect( SVGCat_File* file, int iPage, Rect* rc, CadPrim** prim ); 172| int SearchStrokeByRect( SVGCat_File* file, int iPage, Rect* rc, 173| int nSkip, IInkStrokeDisp** stroke ); 174| ListX* GetCurPrims(); 175| Canvas* GetCurCanvas(); 176| char* GetImgWorkFilePath( long id_hWnd ); 177| char* GetInkWorkFilePath( long id_nWnd, int iPage, InkRasterOperation outRaster ); 178| 179| void ReadRecentFile(); 180| void WriteRecentFile(); 181| void OpenCommercial(); 182| void OpenCommercial2(); 183| void SetRecentFile( const char* path ); 184| void RemoveRecentFile( const char* path ); 185| void RemoveNoExistRecentFile(); 186| 187| int GetNewPrimID(); 188| void AddPrim( SVGCat_File* file, CadPrim* prim ); 189| void AddPrimToBottomLine( SVGCat_File* file, CadPrim* prim ); 190| void AddPrimToTop( SVGCat_File* file, CadPrim* prim ); 191| void RemovePrim( SVGCat_File* file, CadPrim* prim ); 192| void RemovePrimI( SVGCat_File* file, CadPrim* prim ); 193| void RemovePrims( SVGCat_File* file, ListX* prims ); 194| ListX_ElemX* GetBottomLine( SVGCat_File* file ); 195| CadPrim* GetNextForUndoBuf( CadPrim* prim, ListX* selPrims ); 196| CadPrim* GetNearestHandle( int x, int y, int zoom, int mode, int* iHandle, 197| int* dx, int* dy, int* arrow, CadPrim* priorityPrim ); 198| 199| void Align( int iType, ListX* prims, CadPrim* target ); 200| void FitSize( int iType, ListX* prims, CadPrim* target ); 201| void AlignInterval( int iType, ListX* prims ); 202| 203|public: 204| CSVGCatApp(); 205| ~CSVGCatApp(); 206| 207|// オーバーライド 208| // ClassWizard は仮想関数のオーバーライドを生成します。 209| //{{AFX_VIRTUAL(CSVGCatApp) 210| public: 211| virtual BOOL InitInstance(); 212| virtual int ExitInstance(); 213| //}}AFX_VIRTUAL 214| 215|// インプリメンテーション 216| 217|public: 218| //{{AFX_MSG(CSVGCatApp) 219| afx_msg void OnAppAbout(); 220| //}}AFX_MSG 221| DECLARE_MESSAGE_MAP() 222|}; 223| 224|void CSVGCatApp_onErrorExit( CSVGCatApp* ); 225| 226|#define SVGCat_Ink_TypeID 7 227|#define SVGCat_Err_NotSetDrawParam 9231 /* 描画して決まるパラメータがまだ決まっていない */ 228| 229| 230|/* Mapping */ 231|#define SVGCat_File_getCurrentPage( file ) \ 232| ListX_get( &(file)->m_pages, (file)->m_CurrentPageNum - (file)->m_StartPageNum, SVGCat_Page ) 233| 234|#define SVGCat_File_getPageNum( file, page ) \ 235| ( ListX_getI2( &(file)->m_pages, page ) + (file)->m_StartPageNum ) 236| 237|#define SVGCat_File_getMaxPageNum( file ) \ 238| ( ListX_getN( &(file)->m_pages, SVGCat_Page ) + (file)->m_StartPageNum - 1 ) 239| 240| 241|///////////////////////////////////////////////////////////////////////////// 242| 243|//{{AFX_INSERT_LOCATION}} 244|// Microsoft Visual C++ は前行の直前に追加の宣言を挿入します。 245| 246| 247|#endif // !defined(AFX_SVGCAT_H__E40331A9_DD87_45AF_BAD9_8DB91F282C8F__INCLUDED_) 248| 249|