// dim1Doc.cpp : implementation of the CDim1Doc class // #include "stdafx.h" #include "dimens.h" #include "dimensDc.h" #include "chgDlg.h" #include "dimensVw.h" #include"windowsx.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDim1Doc IMPLEMENT_DYNCREATE(CDim1Doc, CDocument) BEGIN_MESSAGE_MAP(CDim1Doc, CDocument) //{{AFX_MSG_MAP(CDim1Doc) ON_COMMAND(ID_FILE_SAVE, OnFileSave) ON_COMMAND(ID_OPTION_GET, OnOptionChg) ON_UPDATE_COMMAND_UI(ID_OPTION_GET, OnUpdateOptionGet) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDim1Doc construction/destruction CDim1Doc::CDim1Doc() { memset(&m_FileInfo, 0, sizeof(FILEINFO)); } CDim1Doc::~CDim1Doc() { } BOOL CDim1Doc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE; // TODO: add reinitialization code here // (SDI documents will reuse this document) return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CDim1Doc serialization void CDim1Doc::Serialize(CArchive& ar) { if (ar.IsStoring()) { // TODO: add storing code here } else { // TODO: add loading code here } } ///////////////////////////////////////////////////////////////////////////// // CDim1Doc diagnostics #ifdef _DEBUG void CDim1Doc::AssertValid() const { CDocument::AssertValid(); } void CDim1Doc::Dump(CDumpContext& dc) const { CDocument::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CDim1Doc commands BOOL CDim1Doc::OnOpenDocument(LPCTSTR lpszPathName) { if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; lstrcpy(m_szPathName, lpszPathName); // TODO: Add your specialized creation code here CDim1App* pTheApp = (CDim1App*) AfxGetApp(); CDimView* pView = (CDimView*) GetView(); if((pTheApp!=NULL) && (pView!=NULL)) { OPENDLGPARAMS FOParm; memset(&FOParm,0,sizeof(OPENDLGPARAMS)); pTheApp->LeadDlg.GetOpenParams(&FOParm,sizeof(OPENDLGPARAMS)); pView->m_LBitmapWnd.SetFileName((L_TCHAR L_FAR *)lpszPathName); m_FileInfo.uStructSize = sizeof(FILEINFO); pView->m_LBitmapWnd.File()->GetInfo(&m_FileInfo, sizeof(FILEINFO)); L_INT nRet = pView->m_LBitmapWnd.Load(m_FileInfo.BitsPerPixel,ORDER_BGRORGRAY,(FOParm.pFileData)? FOParm.pFileData[0].nPageNumber : 1); if (nRet != SUCCESS) return false; } return TRUE; } CView * CDim1Doc::GetView() { POSITION pos = GetFirstViewPosition(); return(GetNextView(pos)); } void CDim1Doc::OnFileSave() { // TODO: Add your command handler code here CDim1App* pTheApp = (CDim1App*) AfxGetApp(); CDimView* pView = (CDimView*) GetView(); SAVEDLGPARAMS SaveParms; pView->m_LBitmapWnd.DialogFile()->GetSaveParams(&SaveParms, sizeof(SAVEDLGPARAMS)); SaveParms.uStructSize = sizeof(SAVEDLGPARAMS); SaveParms.nBitsPerPixel = pView->m_LBitmapWnd.GetBitsPerPixel(); SaveParms.nFormat = FILE_BMP; SaveParms.nQFactor = 2; SaveParms.nStampBits = 24; SaveParms.nStampWidth = 120; SaveParms.nStampHeight = 120; SaveParms.uSaveMulti = MULTIPAGE_OPERATION_REPLACE ; SaveParms.uDlgFlags = DLG_SAVE_SHOW_FILEOPTIONS_PROGRESSIVE | DLG_SAVE_SHOW_FILEOPTIONS_MULTIPAGE | DLG_SAVE_SHOW_FILEOPTIONS_STAMP | DLG_SAVE_SHOW_FILEOPTIONS_QFACTOR | DLG_SAVE_SHOW_FILEOPTIONS_J2KOPTIONS | DLG_SAVE_SHOW_FILEOPTIONS_BASICJ2KOPTIONS ; pView->m_LBitmapWnd.DialogFile()->SetSaveParams(&SaveParms); pView->m_LBitmapWnd.DialogFile()->EnableAutoProcess(); L_INT nRet= pView->m_LBitmapWnd.DialogFile()->DoModalSave(AfxGetMainWnd()->m_hWnd); if (nRet==SUCCESS_DLG_OK) //put the caption { L_TCHAR zsFileName[255]; L_TCHAR zsName[50]; L_TCHAR zsExt[5]; memset(zsFileName,0,sizeof(zsFileName)); memset(zsName,0,sizeof(zsName)); memset(zsExt,0,sizeof(zsExt)); L_UINT uSize = sizeof(zsFileName); pView->m_LBitmapWnd.GetFileName(zsFileName,&uSize); _tsplitpath(zsFileName,NULL,NULL,zsName,zsExt); lstrcat(zsName,zsExt); pView->GetDocument() ->SetTitle(zsName); m_FileInfo.uStructSize = sizeof(FILEINFO); pView->m_LBitmapWnd.File()->GetInfo(&m_FileInfo,sizeof(FILEINFO)); pView->m_LBitmapWnd.Load(); } } void CDim1Doc::OnOptionChg() { CDim1App* pTheApp = (CDim1App*)AfxGetApp(); CDimView* pView = (CDimView*)GetView(); L_INT iRetCode; int i; pDIMENSION pDim = NULL; LBuffer LBuf; LFileSettings fileSettings; if(pView->m_LBitmapWnd.IsAllocated()) iRetCode= pView->m_LBitmapWnd.File()->ReadLoadResolutions(NULL,&pView->iDimCount); pView->pfileDim = (pDIMENSION) GlobalAllocPtr(GHND, sizeof(DIMENSION) * pView->iDimCount); CString str; L_INT iCount = pView->iDimCount; i = 0; iRetCode = pView->m_LBitmapWnd.File()->ReadLoadResolutions(&pView->pfileDim[i], &pView->iDimCount); ChangeResDlg dlg(NULL, pView->pfileDim, pView->iDimCount); if (dlg.DoModal() == IDOK) { i = dlg.m_nIndexWidth; fileSettings.SetLoadResolution(m_FileInfo.Format, pView->pfileDim[i].nWidth, pView->pfileDim[i].nHeight); pView->m_LBitmapWnd.Load(m_szPathName,0, ORDER_BGR); } pView->m_LBitmapWnd.Repaint(); } void CDim1Doc::OnUpdateOptionGet(CCmdUI* pCmdUI) { switch(m_FileInfo.Format) { case FILE_PCD: case FILE_FPX: case FILE_FPX_SINGLE_COLOR: case FILE_FPX_JPEG: case FILE_FPX_JPEG_QFACTOR: case FILE_JBIG: pCmdUI->Enable(TRUE); break; default: pCmdUI->Enable(FALSE); break; } }