SVGCat.h

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|