/*[]=====================================================================[]*/ /*[] LEADTOOLS for Windows(Class Library) - Version 11 []*/ /*[] []*/ /*[] []*/ /*[] Copyright (c) 1991-2000 LEAD Technologies, Inc. []*/ /*[] All Rights Reserved. []*/ /*[]=====================================================================[]*/ /*---(SaveCB)--------------------------------------------------------------- We have made the assumption that the user has the knowledge of Object Oriented programing of C under Windows. This example will: 1. load the image from a file, whose name is sent through the command line, using LFile::LoadFile(), 2. display the image, 3. save the image to the output directory using a callback and status window. Usage: SAVECB --------------------------------------------------------------------------*/ // SaveView.cpp : implementation of the CSaveView class // #include "stdafx.h" #include "Save.h" #include "UsrFile.h" #include "SaveDoc.h" #include "SaveView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CSaveView IMPLEMENT_DYNCREATE(CSaveView, CView) BEGIN_MESSAGE_MAP(CSaveView, CView) //{{AFX_MSG_MAP(CSaveView) ON_COMMAND(ID_FILE_SAVEAS_32, OnFileSaveas32) ON_COMMAND(ID_FILE_SAVEAS_24, OnFileSaveas24) ON_COMMAND(ID_FILE_SAVEAS_16, OnFileSaveas16) ON_COMMAND(ID_FILE_SAVEAS_1, OnFileSaveas1) ON_COMMAND(ID_FILE_SAVEAS_4, OnFileSaveas4) ON_COMMAND(ID_FILE_SAVEAS_8, OnFileSaveas8) ON_WM_CREATE() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSaveView construction/destruction CSaveView::CSaveView() { // TODO: add construction code here DlgFlag = FALSE; m_LBmpWnd.EnableLocalSettings(FALSE); } CSaveView::~CSaveView() { } BOOL CSaveView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CSaveView drawing void CSaveView::OnDraw(CDC* pDC) { CSaveDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here } ///////////////////////////////////////////////////////////////////////////// // CSaveView diagnostics #ifdef _DEBUG void CSaveView::AssertValid() const { CView::AssertValid(); } void CSaveView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CSaveDoc* CSaveView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSaveDoc))); return (CSaveDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CSaveView message handlers void CSaveView::OnInitialUpdate() { CView::OnInitialUpdate(); } void CSaveView::OnFileSaveas32() { if ( !DlgFlag ) { UserLeadFile.ProgDlg.Create (IDD_STATUS_DLG); DlgFlag = TRUE; } UserLeadFile.ProgDlg.ShowWindow (SW_SHOW); UserLeadFile.ProgDlg.RedrawWindow (); LoadSaveFunction(GetSafeHwnd(), 32); } void CSaveView::OnFileSaveas24() { if ( !DlgFlag ) { UserLeadFile.ProgDlg.Create (IDD_STATUS_DLG); DlgFlag = TRUE; } UserLeadFile.ProgDlg.ShowWindow (SW_SHOW); UserLeadFile.ProgDlg.RedrawWindow (); LoadSaveFunction(GetSafeHwnd(), 24); } void CSaveView::OnFileSaveas16() { if ( !DlgFlag ) { UserLeadFile.ProgDlg.Create (IDD_STATUS_DLG); DlgFlag = TRUE; } UserLeadFile.ProgDlg.ShowWindow (SW_SHOW); UserLeadFile.ProgDlg.RedrawWindow (); LoadSaveFunction(GetSafeHwnd(), 16); } void CSaveView::OnFileSaveas8() { if ( !DlgFlag ) { UserLeadFile.ProgDlg.Create (IDD_STATUS_DLG); DlgFlag = TRUE; } UserLeadFile.ProgDlg.ShowWindow (SW_SHOW); UserLeadFile.ProgDlg.RedrawWindow (); LoadSaveFunction(GetSafeHwnd(), 8); } void CSaveView::OnFileSaveas4() { if ( !DlgFlag ) { UserLeadFile.ProgDlg.Create (IDD_STATUS_DLG); DlgFlag = TRUE; } UserLeadFile.ProgDlg.ShowWindow (SW_SHOW); UserLeadFile.ProgDlg.RedrawWindow (); LoadSaveFunction(GetSafeHwnd(), 4); } void CSaveView::OnFileSaveas1() { if ( !DlgFlag ) { UserLeadFile.ProgDlg.Create (IDD_STATUS_DLG); DlgFlag = TRUE; } UserLeadFile.ProgDlg.ShowWindow (SW_SHOW); UserLeadFile.ProgDlg.RedrawWindow (); LoadSaveFunction(GetSafeHwnd(), 1); } // Load & Save Function L_INT CSaveView::LoadSaveFunction(HWND hWnd, L_INT BitsPerPix) { L_TCHAR buf[80]; /* buffer to hold the error message */ L_INT nRet; L_UINT uFlags ; wsprintf (buf, _T("Image displayed is %d bit"), BitsPerPix); AfxGetMainWnd()->SetWindowText(buf); CSaveApp * theApp = (CSaveApp*) AfxGetApp(); m_LBmpWnd.SetFileName((L_TCHAR *)(LPCTSTR)theApp->m_strFileName); FILEINFO Fileinfo; Fileinfo.uStructSize = sizeof(FILEINFO); m_LBmpWnd.File()->GetInfo(&Fileinfo, sizeof(FILEINFO)); nRet = m_LBmpWnd.File()->LoadFile (0,Fileinfo.Order, LOADFILE_STORE | LOADFILE_ALLOCATE | LOADFILE_NOINTERLACE); if (nRet == SUCCESS) { UserLeadFile.EnableCallBack(TRUE); UserLeadFile.SetBitmap(&m_LBmpWnd); m_LBmpWnd.SetDitheringMethod(FLOYD_STEIN_DITHERING); switch(BitsPerPix) { case 1: UserLeadFile.SetFileName (_T("Bit1.bmp")); UserLeadFile.ProgDlg.SetWindowText (_T("Saving As 1 bit")); break; case 4: UserLeadFile.SetFileName (_T("Bit4.bmp")); UserLeadFile.ProgDlg.SetWindowText (_T("Saving As 4 bit")); break; case 8: UserLeadFile.SetFileName (_T("Bit8.bmp")); UserLeadFile.ProgDlg.SetWindowText (_T("Saving As 8 bit")); break; case 16: UserLeadFile.SetFileName (_T("Bit16.bmp")); UserLeadFile.ProgDlg.SetWindowText (_T("Saving As 16 bit")); break; case 24: UserLeadFile.SetFileName (_T("Bit24.bmp")); UserLeadFile.ProgDlg.SetWindowText (_T("Saving As 24 bit")); break; case 32: default : BitsPerPix= 32; UserLeadFile.SetFileName (_T("Bit32.bmp")); UserLeadFile.ProgDlg.SetWindowText (_T("Saving As 32 bit")); break; } } if (Fileinfo.BitsPerPixel > BitsPerPix) uFlags = SAVEFILE_FIXEDPALETTE; else uFlags = SAVEFILE_OPTIMIZEDPALETTE; nRet = UserLeadFile.SaveFile(FILE_BMP, BitsPerPix, 0, uFlags ); UserLeadFile.ProgDlg.EndDialog (0); if(nRet!=SUCCESS) { LBase::DisplayError(GetSafeHwnd(),nRet); AfxGetMainWnd()->DestroyWindow(); } else { m_LBmpWnd.File()->SetFileName(UserLeadFile.GetFileName()); Fileinfo.uStructSize = sizeof(FILEINFO); m_LBmpWnd.File()->GetInfo(&Fileinfo, sizeof(FILEINFO)); nRet = m_LBmpWnd.File()->LoadFile (0,Fileinfo.Order, LOADFILE_STORE | LOADFILE_ALLOCATE | LOADFILE_NOINTERLACE); MessageBox (_T("Save is Successfully finished ... ") , _T("Success") ); } return nRet; } int CSaveView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; m_LBmpWnd.SetWndHandle (GetSafeHwnd()); return 0; } void CSaveView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { if(bActivate && pActivateView == this) m_LBmpWnd.HandlePalette(WM_QUERYNEWPALETTE,0,0); CView::OnActivateView(bActivate, pActivateView, pDeactiveView); }