home *** CD-ROM | disk | FTP | other *** search
/ Mastering Visual Basic 6 / mastvb6.iso / leadtools / ocx32.lt / Drawdoc.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-30  |  8.7 KB  |  358 lines

  1. // drawDoc.cpp : implementation of the CDrawDoc class
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "draw.h"
  6.  
  7. #include "drawDoc.h"
  8. #include "thickdlg.h"
  9. #include "LeadDlg.h"
  10. #include "..\..\..\..\include\ltdlgocx.h"
  11.  
  12. #ifdef _DEBUG
  13. #define new DEBUG_NEW
  14. #undef THIS_FILE
  15. static char THIS_FILE[] = __FILE__;
  16. #endif
  17.  
  18. extern CDrawApp theApp;
  19.  
  20. /////////////////////////////////////////////////////////////////////////////
  21. // CDrawDoc
  22.  
  23. IMPLEMENT_DYNCREATE(CDrawDoc, CDocument)
  24.  
  25. BEGIN_MESSAGE_MAP(CDrawDoc, CDocument)
  26.     //{{AFX_MSG_MAP(CDrawDoc)
  27.     ON_COMMAND(ID_COLOR_BLACK, OnColorBlack)
  28.     ON_UPDATE_COMMAND_UI(ID_COLOR_BLACK, OnUpdateColorBlack)
  29.     ON_COMMAND(ID_COLOR_BLUE, OnColorBlue)
  30.     ON_UPDATE_COMMAND_UI(ID_COLOR_BLUE, OnUpdateColorBlue)
  31.     ON_COMMAND(ID_COLOR_GREEN, OnColorGreen)
  32.     ON_UPDATE_COMMAND_UI(ID_COLOR_GREEN, OnUpdateColorGreen)
  33.     ON_COMMAND(ID_COLOR_RED, OnColorRed)
  34.     ON_UPDATE_COMMAND_UI(ID_COLOR_RED, OnUpdateColorRed)
  35.     ON_COMMAND(ID_COLOR_WHITE, OnColorWhite)
  36.     ON_UPDATE_COMMAND_UI(ID_COLOR_WHITE, OnUpdateColorWhite)
  37.     ON_COMMAND(ID_DRAW_COPY, OnDrawCopy)
  38.     ON_UPDATE_COMMAND_UI(ID_DRAW_COPY, OnUpdateDrawCopy)
  39.     ON_COMMAND(ID_DRAW_DISABLE, OnDrawDisable)
  40.     ON_UPDATE_COMMAND_UI(ID_DRAW_DISABLE, OnUpdateDrawDisable)
  41.     ON_COMMAND(ID_DRAW_OBJECT, OnDrawObject)
  42.     ON_UPDATE_COMMAND_UI(ID_DRAW_OBJECT, OnUpdateDrawObject)
  43.     ON_COMMAND(ID_DRAW_PASTE, OnDrawPaste)
  44.     ON_UPDATE_COMMAND_UI(ID_DRAW_PASTE, OnUpdateDrawPaste)
  45.     ON_COMMAND(ID_THICKNESS, OnThickness)
  46.     ON_COMMAND(ID_OBJECT_ELLIPSE, OnObjectEllipse)
  47.     ON_UPDATE_COMMAND_UI(ID_OBJECT_ELLIPSE, OnUpdateObjectEllipse)
  48.     ON_COMMAND(ID_OBJECT_LINE, OnObjectLine)
  49.     ON_UPDATE_COMMAND_UI(ID_OBJECT_LINE, OnUpdateObjectLine)
  50.     ON_COMMAND(ID_OBJECT_RECTANGLE, OnObjectRectangle)
  51.     ON_UPDATE_COMMAND_UI(ID_OBJECT_RECTANGLE, OnUpdateObjectRectangle)
  52.     ON_COMMAND(ID_DRAW_ZOOMIN, OnDrawZoomin)
  53.     ON_UPDATE_COMMAND_UI(ID_DRAW_ZOOMIN, OnUpdateDrawZoomin)
  54.     ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)
  55.     //}}AFX_MSG_MAP
  56.     // Enable default OLE container implementation
  57. //    ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, COleDocument::OnUpdatePasteMenu)
  58. //    ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE_LINK, COleDocument::OnUpdatePasteLinkMenu)
  59. //    ON_UPDATE_COMMAND_UI(ID_OLE_EDIT_CONVERT, COleDocument::OnUpdateObjectVerbMenu)
  60. //    ON_COMMAND(ID_OLE_EDIT_CONVERT, COleDocument::OnEditConvert)
  61. //    ON_UPDATE_COMMAND_UI(ID_OLE_EDIT_LINKS, COleDocument::OnUpdateEditLinksMenu)
  62. ///    ON_COMMAND(ID_OLE_EDIT_LINKS, COleDocument::OnEditLinks)
  63. //    ON_UPDATE_COMMAND_UI(ID_OLE_VERB_FIRST, COleDocument::OnUpdateObjectVerbMenu)
  64.     //}}AFX_MSG_MAP
  65. END_MESSAGE_MAP()
  66.  
  67. /////////////////////////////////////////////////////////////////////////////
  68. // CDrawDoc construction/destruction
  69.  
  70. static const WCHAR BASED_CODE _szLicString[] =
  71.     L"LEADTOOLS OCX Copyright (c) 1998 LEAD Technologies, Inc.";
  72.  
  73. CDrawDoc::CDrawDoc()
  74. {
  75.     CRect   rcClient(0,0,1,1);
  76.     BSTR lpLic = SysAllocString(_szLicString);
  77.     m_Lead.Create("", 0, rcClient, theApp.m_pMainWnd, 0,NULL,FALSE,lpLic);
  78.     m_Lead.ShowWindow(SW_HIDE);
  79.     SysFreeString(lpLic);
  80.  
  81.  
  82.     nColor = ID_COLOR_BLACK;
  83.     nObject = ID_OBJECT_ELLIPSE;
  84.     nThickness = 3;
  85.     nDraw = ID_DRAW_DISABLE;
  86. }
  87.  
  88. CDrawDoc::~CDrawDoc()
  89. {
  90.     m_Lead.DestroyWindow();
  91. }
  92.  
  93. /////////////////////////////////////////////////////////////////////////////
  94. // CDrawDoc serialization
  95.  
  96. void CDrawDoc::Serialize(CArchive& ar)
  97. {
  98.     if (ar.IsStoring())
  99.     {
  100.         // TODO: add storing code here
  101.     }
  102.     else
  103.     {
  104.         // TODO: add loading code here
  105.     }
  106. }
  107.  
  108. /////////////////////////////////////////////////////////////////////////////
  109. // CDrawDoc diagnostics
  110.  
  111. #ifdef _DEBUG
  112. void CDrawDoc::AssertValid() const
  113. {
  114.     CDocument::AssertValid();
  115. }
  116.  
  117. void CDrawDoc::Dump(CDumpContext& dc) const
  118. {
  119.     CDocument::Dump(dc);
  120. }
  121. #endif //_DEBUG
  122.  
  123. /////////////////////////////////////////////////////////////////////////////
  124. // CDrawDoc commands
  125. void CDrawDoc::OnColorBlack() 
  126. {
  127.     nColor = ID_COLOR_BLACK;
  128. }
  129.  
  130. void CDrawDoc::OnColorBlue() 
  131. {
  132.     nColor = ID_COLOR_BLUE;
  133. }
  134.  
  135. void CDrawDoc::OnColorGreen() 
  136. {
  137.     nColor = ID_COLOR_GREEN;
  138. }
  139.  
  140. void CDrawDoc::OnColorRed() 
  141. {
  142.     nColor = ID_COLOR_RED;
  143. }
  144.  
  145. void CDrawDoc::OnColorWhite() 
  146. {
  147.     nColor = ID_COLOR_WHITE;
  148. }
  149.  
  150. void CDrawDoc::OnUpdateColorBlack(CCmdUI* pCmdUI) 
  151. {
  152.     pCmdUI->SetCheck( nColor == ID_COLOR_BLACK );
  153. }
  154.  
  155. void CDrawDoc::OnUpdateColorBlue(CCmdUI* pCmdUI) 
  156. {
  157.     pCmdUI->SetCheck( nColor == ID_COLOR_BLUE );
  158. }
  159.  
  160. void CDrawDoc::OnUpdateColorGreen(CCmdUI* pCmdUI) 
  161. {
  162.     pCmdUI->SetCheck( nColor == ID_COLOR_GREEN );
  163. }
  164.  
  165. void CDrawDoc::OnUpdateColorRed(CCmdUI* pCmdUI) 
  166. {
  167.     pCmdUI->SetCheck( nColor == ID_COLOR_RED );
  168. }
  169.  
  170. void CDrawDoc::OnUpdateColorWhite(CCmdUI* pCmdUI) 
  171. {
  172.     pCmdUI->SetCheck( nColor == ID_COLOR_WHITE );
  173. }
  174.  
  175. void CDrawDoc::OnDrawCopy() 
  176. {
  177.     nDraw = ID_DRAW_COPY;
  178. }
  179.  
  180. void CDrawDoc::OnDrawDisable() 
  181. {
  182.     nDraw = ID_DRAW_DISABLE;
  183.     UpdateAllViews(NULL, (LPARAM)1, NULL);
  184. }
  185.  
  186. void CDrawDoc::OnDrawObject() 
  187. {
  188.     nDraw = ID_DRAW_OBJECT;
  189. }
  190.  
  191. void CDrawDoc::OnDrawPaste() 
  192. {
  193.     nDraw = ID_DRAW_PASTE;
  194. }
  195.  
  196. void CDrawDoc::OnUpdateDrawCopy(CCmdUI* pCmdUI) 
  197. {
  198.     pCmdUI->SetCheck( nDraw == ID_DRAW_COPY );
  199. }
  200.  
  201. void CDrawDoc::OnUpdateDrawDisable(CCmdUI* pCmdUI) 
  202. {
  203.     pCmdUI->SetCheck( nDraw == ID_DRAW_DISABLE );
  204. }
  205.  
  206. void CDrawDoc::OnUpdateDrawObject(CCmdUI* pCmdUI) 
  207. {
  208.     pCmdUI->SetCheck( nDraw == ID_DRAW_OBJECT );
  209. }
  210.  
  211. void CDrawDoc::OnUpdateDrawPaste(CCmdUI* pCmdUI) 
  212. {
  213.     pCmdUI->SetCheck( nDraw == ID_DRAW_PASTE );
  214. }
  215.  
  216. void CDrawDoc::OnThickness() 
  217. {
  218.     CThickDlg   dlg;
  219.     dlg.nThickness = nThickness;
  220.     if( dlg.DoModal() == IDOK )
  221.     {
  222.         nThickness = dlg.nThickness;
  223.     }
  224. }
  225.  
  226. BOOL CDrawDoc::OnOpenDocument(LPCTSTR lpszPathName) 
  227. {
  228.     int nRet;
  229.  
  230.     if(lpszPathName)
  231.     {
  232.          nRet = m_Lead.Load(lpszPathName, 0, 1, 1);
  233.         if( nRet )
  234.         {
  235.             theApp.DisplayLEADError(nRet);
  236.             return FALSE;
  237.         }
  238.         return TRUE;
  239.     }
  240.     else
  241.         return FALSE;
  242. }
  243.  
  244. BOOL CDrawDoc::OnSaveDocument(LPCTSTR lpszPathName) 
  245. {
  246.     int nRet;
  247.  
  248.     if(lpszPathName)
  249.     {
  250.         nRet = m_Lead.Save((LPSTR)lpszPathName, m_nFormat, m_nBits, m_nQFactor, m_fMultipage);
  251.         if(nRet)
  252.         {
  253.             theApp.DisplayLEADError(nRet);
  254.             return(FALSE);
  255.         }
  256.         SetModifiedFlag(FALSE);
  257.         return(TRUE);
  258.     }
  259.     return(FALSE);
  260. }
  261.  
  262. void CDrawDoc::OnObjectEllipse() 
  263. {
  264.     nObject = ID_OBJECT_ELLIPSE;
  265. }
  266.  
  267. void CDrawDoc::OnObjectLine() 
  268. {
  269.     nObject = ID_OBJECT_LINE;
  270. }
  271.  
  272. void CDrawDoc::OnObjectRectangle() 
  273. {
  274.     nObject = ID_OBJECT_RECTANGLE;
  275. }
  276.  
  277. void CDrawDoc::OnUpdateObjectEllipse(CCmdUI* pCmdUI) 
  278. {
  279.     pCmdUI->SetCheck( nObject == ID_OBJECT_ELLIPSE );
  280. }
  281.  
  282. void CDrawDoc::OnUpdateObjectLine(CCmdUI* pCmdUI) 
  283. {
  284.     pCmdUI->SetCheck( nObject == ID_OBJECT_LINE );
  285. }
  286.  
  287. void CDrawDoc::OnUpdateObjectRectangle(CCmdUI* pCmdUI) 
  288. {
  289.     pCmdUI->SetCheck( nObject == ID_OBJECT_RECTANGLE );
  290. }
  291.  
  292. void CDrawDoc::OnDrawZoomin() 
  293. {
  294.     nDraw = ID_DRAW_ZOOMIN;
  295. }
  296.  
  297. void CDrawDoc::OnUpdateDrawZoomin(CCmdUI* pCmdUI) 
  298. {
  299.     pCmdUI->SetCheck( nDraw == ID_DRAW_ZOOMIN );
  300.     
  301. }
  302.  
  303. void CDrawDoc::SetTitle(LPCTSTR lpszTitle) 
  304. {
  305.     // Trim the title if it contains the info that we add here.
  306.     CString szNewTitle = lpszTitle;
  307.     int nPos = szNewTitle.Find("(");
  308.     if (nPos > 0)
  309.         szNewTitle = szNewTitle.Left(nPos - 1);
  310.  
  311.     // Create strings for the bitmap width, height, and BPS
  312.     CString sWidth, sHeight, sBPS;
  313.     sWidth.Format("%d",(int)m_Lead.GetBitmapWidth());
  314.     sHeight.Format("%d",(int)m_Lead.GetBitmapHeight());
  315.     sBPS.Format("%d",(int)m_Lead.GetBitmapBits());
  316.     
  317.     // Add the bitmap width, height, and BPS to the title
  318.     szNewTitle += " (" + sWidth + " x " + sHeight 
  319.         + " - " + sBPS + " BPP)";
  320.  
  321.     // Call the MFC function with the updated title.
  322.     CDocument::SetTitle(szNewTitle);
  323. }
  324.  
  325. void CDrawDoc::OnFileSaveAs() 
  326. {
  327.    CLeadDlg LTCommDlg;
  328.    RECT rcWin;
  329.    BOOL bContinue=FALSE;
  330.    CString sFileName;
  331.    int nRet;
  332.    
  333.    ::SetRect(&rcWin, 0, 0, 1, 1);
  334.  
  335.    if(LTCommDlg.Create(NULL,0,rcWin,theApp.m_pMainWnd,100))
  336.    {
  337.       LTCommDlg.SetEnableMethodErrors(FALSE);
  338.       LTCommDlg.SetFileDlgFlags(0);
  339.       LTCommDlg.SetSaveFormatFlags(DLG_FS_ALL);
  340.       LTCommDlg.SetDialogTitle("Save File");
  341.       LTCommDlg.SetUIFlags( DLG_FS_95STYLE | DLG_FS_MULTIPAGE | DLG_FS_QFACTOR );
  342.       nRet = LTCommDlg.FileSave((long)theApp.m_pMainWnd->m_hWnd);
  343.       if(nRet == 0)
  344.          bContinue = TRUE;
  345.    }
  346.    if(bContinue)
  347.    {
  348.       sFileName = LTCommDlg.GetFileName();
  349.       m_nFormat = LTCommDlg.GetSaveFormat();
  350.       m_nBits = LTCommDlg.GetSaveBitsPerPixel();
  351.       m_nQFactor = LTCommDlg.GetSaveQFactor();
  352.       m_fMultipage = LTCommDlg.GetSaveMulti();
  353.       m_Lead.SetSaveInterlaced(LTCommDlg.GetSaveInterlaced());
  354.       OnSaveDocument((LPCTSTR)sFileName);
  355.    }
  356.    return;
  357. }
  358.