// vectorView.cpp : implementation of the CVectorView class // #include "stdafx.h" #include "leadvector.h" #include "vecDoc.h" #include "vecView.h" #include "MainFrm.h" #include "Vector.h" #include "leadvectorobject.h" #include "vecprop.h" #include "ltvectorautomation.h" #include "ltvectorcontainer.h" #include "leadvectorlayer.h" #include "leadvectorgroup.h" #include "grplst.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern BOOL gEdit; extern CVectorApp theApp; ///////////////////////////////////////////////////////////////////////////// // CVectorView IMPLEMENT_DYNCREATE(CVectorView, CFormView) BEGIN_MESSAGE_MAP(CMyLEADVector, CWnd) //{{AFX_MSG_MAP(CMyLEADVector) ON_WM_SETFOCUS() ON_WM_KILLFOCUS() ON_WM_SIZE() //}}AFX_MSG_MAP END_MESSAGE_MAP() BEGIN_MESSAGE_MAP(CVectorView, CFormView) //{{AFX_MSG_MAP(CVectorView) ON_WM_SIZE() ON_WM_CREATE() ON_COMMAND(ID_FILE_OPEN, OnFileOpen) ON_COMMAND(ID_EDIT_SELECTALL, OnEditSelectall) ON_COMMAND(ID_EDIT_DESELECTALL, OnEditDeselectall) ON_COMMAND(ID_EDIT_DELETE, OnEditDelete) ON_COMMAND(ID_TOOLS_VERTICES_BIND, OnToolsVerticesBind) ON_UPDATE_COMMAND_UI(ID_TOOLS_VERTICES_BIND, OnUpdateToolsVerticesBind) ON_COMMAND(ID_TOOLS_VERTICES_UNBIND, OnToolsVerticesUnbind) ON_UPDATE_COMMAND_UI(ID_TOOLS_VERTICES_UNBIND, OnUpdateToolsVerticesUnbind) ON_WM_DESTROY() ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs) ON_COMMAND(ID_FILE_NEW, OnFileNew) ON_COMMAND(ID_EDIT_COPY, OnEditCopy) ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy) ON_COMMAND(ID_EDIT_CUT, OnEditCut) ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut) ON_UPDATE_COMMAND_UI(ID_EDIT_DELETE, OnUpdateEditDelete) ON_UPDATE_COMMAND_UI(ID_EDIT_DESELECTALL, OnUpdateEditDeselectall) ON_COMMAND(ID_VIEW_SCALE, OnViewScale) ON_UPDATE_COMMAND_UI(ID_VIEW_SCALE, OnUpdateViewScale) ON_COMMAND(ID_VIEW_ROTATE, OnViewRotate) ON_UPDATE_COMMAND_UI(ID_VIEW_ROTATE, OnUpdateViewRotate) ON_COMMAND(ID_VIEW_TRANSLATE, OnViewTranslate) ON_UPDATE_COMMAND_UI(ID_VIEW_TRANSLATE, OnUpdateViewTranslate) ON_COMMAND(ID_VIEW_CAMERA, OnViewCamera) ON_UPDATE_COMMAND_UI(ID_VIEW_CAMERA, OnUpdateViewCamera) ON_COMMAND(ID_VIEW_VIEWMODE, OnViewViewmode) ON_COMMAND(ID_VIEW_BACKGROUNDCOLOR, OnViewBackgroundcolor) ON_UPDATE_COMMAND_UI(ID_VIEW_BACKGROUNDCOLOR, OnUpdateViewBackgroundcolor) ON_UPDATE_COMMAND_UI(ID_VIEW_VIEWMODE, OnUpdateViewViewmode) ON_UPDATE_COMMAND_UI(ID_EDIT_SELECTALL, OnUpdateEditSelectall) ON_UPDATE_COMMAND_UI(ID_FILE_SAVE_AS, OnUpdateFileSaveAs) ON_COMMAND(ID_LAYER_EDIT, OnLayerEdit) ON_UPDATE_COMMAND_UI(ID_LAYER_EDIT, OnUpdateLayerEdit) ON_COMMAND(IDM_OBJECT_EDIT, OnObjectEdit) ON_UPDATE_COMMAND_UI(IDM_OBJECT_EDIT, OnUpdateObjectEdit) ON_COMMAND(IDM_OBJECT_NEW_ARC, OnObjectNewArc) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_ARC, OnUpdateObjectNewArc) ON_COMMAND(IDM_OBJECT_NEW_ELLIPTICALARC, OnObjectNewEllipticalArc) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_ELLIPTICALARC, OnUpdateObjectNewEllipticalArc) ON_COMMAND(IDM_OBJECT_NEW_CHORD, OnObjectNewChord) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_CHORD, OnUpdateObjectNewChord) ON_COMMAND(IDM_OBJECT_NEW_CIRCLE, OnObjectNewCircle) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_CIRCLE, OnUpdateObjectNewCircle) ON_COMMAND(IDM_OBJECT_NEW_ELLIPSE, OnObjectNewEllipse) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_ELLIPSE, OnUpdateObjectNewEllipse) ON_COMMAND(IDM_OBJECT_NEW_LINE, OnObjectNewLine) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_LINE, OnUpdateObjectNewLine) ON_COMMAND(IDM_OBJECT_NEW_PIE, OnObjectNewPie) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_PIE, OnUpdateObjectNewPie) ON_COMMAND(IDM_OBJECT_NEW_POLYBEZIER, OnObjectNewPolybezier) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_POLYBEZIER, OnUpdateObjectNewPolybezier) ON_COMMAND(IDM_OBJECT_NEW_POLYDRAW, OnObjectNewPolydraw) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_POLYDRAW, OnUpdateObjectNewPolydraw) ON_COMMAND(IDM_OBJECT_NEW_POLYGON, OnObjectNewPolygon) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_POLYGON, OnUpdateObjectNewPolygon) ON_COMMAND(IDM_OBJECT_NEW_POLYLINE, OnObjectNewPolyline) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_POLYLINE, OnUpdateObjectNewPolyline) ON_COMMAND(IDM_OBJECT_NEW_RASTER, OnObjectNewRaster) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_RASTER, OnUpdateObjectNewRaster) ON_COMMAND(IDM_OBJECT_NEW_RECTANGLE, OnObjectNewRectangle) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_RECTANGLE, OnUpdateObjectNewRectangle) ON_COMMAND(IDM_OBJECT_NEW_TEXT, OnObjectNewText) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_TEXT, OnUpdateObjectNewText) ON_COMMAND(IDM_OBJECT_NEW_VERTEX, OnObjectNewVertex) ON_UPDATE_COMMAND_UI(IDM_OBJECT_NEW_VERTEX, OnUpdateObjectNewVertex) ON_COMMAND(ID_OPTIONS_HITTEST, OnOptionsHittest) ON_UPDATE_COMMAND_UI(ID_OPTIONS_HITTEST, OnUpdateOptionsHittest) ON_COMMAND(ID_OPTIONS_RENDER, OnOptionsRender) ON_UPDATE_COMMAND_UI(ID_OPTIONS_RENDER, OnUpdateOptionsRender) ON_COMMAND(ID_OPTIONS_APPLYTRANSFORMATION, OnOptionsApplytransformation) ON_UPDATE_COMMAND_UI(ID_OPTIONS_APPLYTRANSFORMATION, OnUpdateOptionsApplytransformation) ON_COMMAND(ID_VIEW_EXTENT, OnViewExtent) ON_UPDATE_COMMAND_UI(ID_VIEW_EXTENT, OnUpdateViewExtent) ON_COMMAND(ID_VIEW_TOOLBAR, OnViewToolbar) ON_UPDATE_COMMAND_UI(ID_VIEW_TOOLBAR, OnUpdateViewToolbar) ON_WM_ERASEBKGND() ON_COMMAND(ID_EDIT_UNDO, OnEditUndo) ON_COMMAND(ID_EDIT_REDO, OnEditRedo) ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo) ON_UPDATE_COMMAND_UI(ID_EDIT_REDO, OnUpdateEditRedo) ON_COMMAND(ID_FILE_PRINT, OnFilePrint) ON_UPDATE_COMMAND_UI(ID_FILE_PRINT, OnUpdateFilePrint) ON_COMMAND(IDM_OBJECT_PROPERTIES, OnObjectProperties) ON_UPDATE_COMMAND_UI(IDM_OBJECT_PROPERTIES, OnUpdateObjectProperties) ON_COMMAND(IDM_EDIT_PASTE_OBJECTS, OnEditPasteObjects) ON_COMMAND(IDM_EDIT_PASTE_LAYERS, OnEditPasteLayers) ON_UPDATE_COMMAND_UI(IDM_EDIT_PASTE_OBJECTS, OnUpdateEditPasteObjects) ON_UPDATE_COMMAND_UI(IDM_EDIT_PASTE_LAYERS, OnUpdateEditPasteLayers) ON_COMMAND(ID_GROUP_ADDSELECTEDOBJECTSTO, OnGroupAddselectedobjectsto) ON_UPDATE_COMMAND_UI(ID_GROUP_ADDSELECTEDOBJECTSTO, OnUpdateGroupAddselectedobjectsto) ON_COMMAND(ID_GROUP_EDIT, OnGroupEdit) ON_UPDATE_COMMAND_UI(ID_GROUP_EDIT, OnUpdateGroupEdit) ON_COMMAND(ID_OBJECT_NEW_CLONE, OnObjectNewClone) ON_UPDATE_COMMAND_UI(ID_OBJECT_NEW_CLONE, OnUpdateObjectNewClone) ON_COMMAND(ID_OBJECT_NEW_SPLINE, OnObjectNewSpline) ON_UPDATE_COMMAND_UI(ID_OBJECT_NEW_SPLINE, OnUpdateObjectNewSpline) ON_COMMAND(ID_OBJECT_NEW_HBEZIER, OnObjectNewHBezier) ON_UPDATE_COMMAND_UI(ID_OBJECT_NEW_HBEZIER, OnUpdateObjectNewHBezier) ON_COMMAND(ID_HELP_ENABLECONTEXTSENSITIVEHELP, OnHelpEnablecontextsensitivehelp) ON_UPDATE_COMMAND_UI(ID_HELP_ENABLECONTEXTSENSITIVEHELP, OnUpdateHelpEnablecontextsensitivehelp) ON_COMMAND(ID_HELP_ENABLEVECTORDIALOGHELPBUTTON, OnHelpEnablevectordialoghelpbutton) ON_UPDATE_COMMAND_UI(ID_HELP_ENABLEVECTORDIALOGHELPBUTTON, OnUpdateHelpEnablevectordialoghelpbutton) ON_COMMAND(ID_OPTIONS_INVERTCOLORS, OnOptionsInvertcolors) ON_COMMAND(ID_OBJECT_EXPLODE, OnObjectExplode) ON_UPDATE_COMMAND_UI(ID_OBJECT_EXPLODE, OnUpdateObjectExplode) ON_WM_KEYDOWN() //}}AFX_MSG_MAP ON_MESSAGE(WM_DOREALIZE, OnDoRealize) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CVectorView construction/destruction CVectorView::CVectorView() : CFormView(CVectorView::IDD) { //{{AFX_DATA_INIT(CVectorView) //}}AFX_DATA_INIT // TODO: add construction code here m_bImageLoaded=FALSE; m_nSaveIndex = 0; } CVectorView::~CVectorView() { } void CVectorView::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CVectorView) DDX_Control(pDX, IDC_GROUPLIST, m_GroupList); DDX_Control(pDX, IDC_LEADTOOLBARCTRL1, m_LEADToolBar1); DDX_Control(pDX, IDC_LEADVECTORCTRL1, m_LEADVector1); //}}AFX_DATA_MAP } BOOL CVectorView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CFormView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CVectorView diagnostics #ifdef _DEBUG void CVectorView::AssertValid() const { CFormView::AssertValid(); } void CVectorView::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } CVectorDoc* CVectorView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CVectorDoc))); return (CVectorDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CVectorView message handlers void CVectorView::OnSize(UINT nType, int cx, int cy) { CFormView::OnSize(nType, cx, cy); if(::IsWindow(m_LEADVector1.m_hWnd)) { CRect rcClient; GetClientRect(&rcClient); m_LEADVector1.MoveWindow(&rcClient); } } int CVectorView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFormView::OnCreate(lpCreateStruct) == -1) return -1; GetParent()->GetWindowText(m_csCaption); return 0; } void CVectorView::OnInitialUpdate() { SIZE size; CFormView::OnInitialUpdate(); m_LEADVector1.UnlockSupport(L_SUPPORT_VECTOR, L_KEY_VECTOR); UNLOCKSUPPORT(m_LEADVector1); gEdit=TRUE; if(m_LEADVector1.IsSupportLocked(L_SUPPORT_VECTOR)) gEdit = FALSE; m_LEADVector1.SetAutoRepaint(TRUE); m_LEADVector1.SetEnableMethodErrors(FALSE); CMenu* pMenu=NULL; pMenu = GetParent()->GetMenu(); // pMenu->CheckMenuItem(ID_ENGINE_OPTIONS_USEDOUBLEBUFFER, MF_BYCOMMAND|MF_CHECKED); m_LEADVector1.SetUseDoubleBuffer(TRUE); m_LEADVector1.SetVectorEngine(VECTOR_ENGINE_GDI); pMenu->CheckMenuItem(ID_ENGINE_SETENGINE_GDI, MF_BYCOMMAND|MF_CHECKED); m_LEADVector1.SetBackErase(TRUE); m_LEADVector1.SetViewMode(VECTOR_VIEWMODE_FIT); pMenu->CheckMenuItem(ID_TOOLS_VIEWMODE_FIT, MF_BYCOMMAND|MF_CHECKED); m_LEADVector1.SetPolygonMode( VECTOR_POLYGON_FILL ); m_LEADVector1.SetUseDoubleBuffer( TRUE ); m_LEADVector1.SetAppearance(0); CRect rcClient; GetClientRect(&rcClient); m_LEADVector1.MoveWindow(&rcClient); if(gEdit) { m_LEADToolBar1.CreateToolbar((long)m_LEADVector1.m_hWnd, "Vector Tools", TOOLBAR_VECTOR); m_LEADToolBar1.SetRowCount(8); CRect rcWin; GetWindowRect(&rcWin); m_LEADToolBar1.SetXPosition(max(0, rcWin.left-70)); m_LEADToolBar1.SetYPosition(max(0, rcWin.top)); } size.cx = 0; size.cy = 0; SetScrollSizes(MM_TEXT, size); } void CVectorView::OnFileOpen() { short nRet; CFileDialog OpenDlg(TRUE); CVecPropDlg Dlg; static char szFileName[ _MAX_PATH ] = ""; m_LEADVector1.SetMousePointer(11); OpenDlg.m_ofn.lpstrFilter = "All Files (*.*)\0" "*.*\0" "AutoCAD (*.dxf;*.dwg;*.dwf)\0" "*.dxf;*.dwg;*.dwf\0" "Computer Graphics Metafile (*.cgm)\0" "*.cgm\0" "Corel Presentation Exchange (CMX)\0" "*.cmx\0" "HP-GL/HP-GL2 (*.plt)\0" "*.plt\0" "LEAD Vector (*.vec)\0" "*.vec\0" "Mac PICT (*.pct)\0" "*.pct\0" "Micrografx DRW (*.drw)\0" "*.drw\0" "MicroStation DGN (*.dgn)\0" "*.dgn\0" "Windows Metafile (*.wmf;*.emf)\0" "*.wmf;*.emf\0" "Gerber File Format (*.gbr)\0" "*.gbr\0" "ESRI (*.shp)\0" "*.shp\0" "Printer Command Language(*.pcl;*.prn;*.prt)\0" "*.pcl;*.prn;*.prt\0" "Scalable Vector Graphics (*.svg)\0" "*.svg\0" "Word Perfect Graphics (*.wpg)\0" "*.wpg\0" "Compressed Windows Metafile (WMZ)\0" "*.wmz\0\0"; if(OpenDlg.DoModal()!=IDOK) { m_LEADVector1.SetMousePointer( 0 ); return; } m_LEADVector1.Free(); m_LEADVector1.ShowWindow(SW_HIDE); m_LEADVector1.ModifyStyle(WS_VISIBLE,0,SWP_DRAWFRAME); m_LEADVector1.SetBackColor( RGB( 0xFF, 0xFF, 0xFF ) ); nRet = m_LEADVector1.Load(OpenDlg.GetFileName()); m_LEADVector1.SetMousePointer(2); if(nRet != 0) { CString csOut; csOut.Format("Error %d loading file!", nRet); AfxMessageBox(csOut); m_LEADVector1.ShowWindow(SW_SHOW); m_LEADVector1.ModifyStyle(0,WS_VISIBLE,SWP_DRAWFRAME); m_bImageLoaded = FALSE; m_LEADVector1.Free(); return; } m_bImageLoaded = TRUE; //get properties Dlg.m_bDoubleBuffer = m_LEADVector1.GetUseDoubleBuffer(); Dlg.m_dblMinX = m_LEADVector1.GetParallelogramMinX(); Dlg.m_dblMinY = m_LEADVector1.GetParallelogramMinY(); Dlg.m_dblMinZ = m_LEADVector1.GetParallelogramMinZ(); Dlg.m_dblMaxX = m_LEADVector1.GetParallelogramMaxX(); Dlg.m_dblMaxY = m_LEADVector1.GetParallelogramMaxY(); Dlg.m_dblMaxZ = m_LEADVector1.GetParallelogramMaxZ(); Dlg.m_bNew = FALSE; if(Dlg.DoModal() == IDOK) { m_LEADVector1.SetUseDoubleBuffer(Dlg.m_bDoubleBuffer); m_LEADVector1.SetParallelogramMinX(Dlg.m_dblMinX); m_LEADVector1.SetParallelogramMinY(Dlg.m_dblMinY); m_LEADVector1.SetParallelogramMinZ(Dlg.m_dblMinZ); m_LEADVector1.SetParallelogramMaxX(Dlg.m_dblMaxX); m_LEADVector1.SetParallelogramMaxY(Dlg.m_dblMaxY); m_LEADVector1.SetParallelogramMaxZ(Dlg.m_dblMaxZ); m_LEADVector1.SetVectorEngine(Dlg.m_iEngine); //Automation by default if(gEdit) { if(m_LEADVector1.GetVectorUserMode() != VECTOR_USERMODE_MANUAL) m_LEADVector1.SetVectorUserMode(VECTOR_USERMODE_MANUAL); OnViewToolbar(); } } else m_LEADVector1.Free(); CRect rcClient; GetClientRect(&rcClient); m_LEADVector1.MoveWindow(&rcClient); m_LEADVector1.ShowWindow(SW_SHOW); m_LEADVector1.ModifyStyle(0,WS_VISIBLE,SWP_DRAWFRAME); m_nSelectedCount = 0; m_LEADVector1.EnumObjects(VECTOR_FLAGS_SELECTED_ONLY); m_LEADVector1.SetWindowText( szFileName ); m_LEADVector1.ForceRepaint(); } void CVectorView::OnFileSaveAs() { short nRet; static char szSaveFileFilter[] = { "LEAD Vector (VEC)\0" "*.vec\0" "AutoCAD DWF\0" "*.dwf\0" "AutoCAD DXF\0" "*.dxf\0" "Computer Graphics Metafile (CGM)\0" "*.cgm\0" "HP-GL2 (PLT)\0" "*.plt\0" "Mac PICT (PCT)\0" "*.pct\0" "Micrografx (DRW)\0" "*.drw\0" "Windows Metafile (WMF)\0" "*.wmf\0" "Windows Enhanced Metafile (EMF)\0" "*.emf\0" "Gerber File Format (GBR)\0" "*.gbr\0" "ESRI (SHP)\0" "*.shp\0" "Printer Command Language (PRN)\0" "*.prn\0" "Scalable Vector Graphics (SVG)\0" "*.svg\0" "Word Perfect Graphics (WPG)\0" "*.wpg\0" "Compressed Windows Metafile (WMZ)\0" "*.wmz\0\0" }; static OPENFILENAME OpenFileName; static CHAR szFileName[ _MAX_PATH ] = ""; static CHAR szFileTitle[ _MAX_PATH ] = ""; lstrcpy( szFileName, "" ); lstrcpy( szFileTitle, "" ); OpenFileName.lStructSize = sizeof( OPENFILENAME ); OpenFileName.hwndOwner = this->m_hWnd; OpenFileName.hInstance = NULL; OpenFileName.lpstrFilter = szSaveFileFilter; OpenFileName.lpstrCustomFilter = NULL; OpenFileName.nMaxCustFilter = 0; OpenFileName.nFilterIndex = m_nSaveIndex; OpenFileName.lpstrFile = szFileName; OpenFileName.nMaxFile = sizeof( szFileName ); OpenFileName.lpstrFileTitle = szFileName; OpenFileName.nMaxFileTitle = sizeof( szFileName ); OpenFileName.lpstrInitialDir = NULL; OpenFileName.lpstrTitle = "Save Vector As"; OpenFileName.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; OpenFileName.nFileOffset = 0; OpenFileName.nFileExtension = 0; OpenFileName.lpstrDefExt = ""; OpenFileName.lCustData = 0L; OpenFileName.lpfnHook = NULL; OpenFileName.lpTemplateName = NULL; m_LEADVector1.SetMousePointer(11); nRet = 0; int nFormat; if(!GetSaveFileName( &OpenFileName )) return; else { m_nSaveIndex = OpenFileName.nFilterIndex; switch( m_nSaveIndex ) { case 1: nFormat = FILE_VECTOR_DUMP; break; case 2: nFormat = FILE_DWF; break; case 3: nFormat = FILE_DXF; break; case 4: nFormat = FILE_CGM; break; case 5: nFormat = FILE_PLT; break; case 6: nFormat = FILE_PCT; break; case 7: nFormat = FILE_DRW; break; case 8: nFormat = FILE_WMF; break; case 9: nFormat = FILE_EMF; break; case 10: nFormat = FILE_GERBER; break; case 11: nFormat = FILE_SHP; break; case 12: nFormat = FILE_PCL; break; case 13: nFormat = FILE_SVG; break; case 14: nFormat = FILE_VWPG; break; case 15: nFormat = FILE_WMZ; break; default: return; } nRet = m_LEADVector1.Save(szFileName, nFormat); } m_LEADVector1.SetMousePointer(2); if(nRet != 0) { CString csOut; csOut.Format("Error %d saving file!", nRet); AfxMessageBox(csOut); } } void CVectorView::OnEditSelectall() { if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) m_LEADVector1.AutoSelect(VECTOR_AUTOMATION_SELTYPE_ALL, 0); else { m_LEADVector1.SetAutoRepaint(FALSE); m_LEADVector1.SelectAllObjects(TRUE); m_LEADVector1.SetAutoRepaint(TRUE); } } void CVectorView::OnEditDeselectall() { if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) m_LEADVector1.AutoSelect(VECTOR_AUTOMATION_SELTYPE_NONE, 0); else { m_LEADVector1.SetAutoRepaint(FALSE); m_LEADVector1.SelectAllObjects(FALSE); m_LEADVector1.SetAutoRepaint(TRUE); } } void CVectorView::OnEditDelete() { if(m_LEADVector1.IsAnObjectSelected()) { if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) m_LEADVector1.AutoDelete(0); else m_LEADVector1.DeleteObjects(VECTOR_SELECTED_OBJECTS); } else m_LEADVector1.DeleteObjects(VECTOR_ALL_OBJECTS); } void CVectorView::OnToolsVerticesBind() { if(m_LEADVector1.GetVertexBindMode() != VECTOR_BIND_VERTICES) m_LEADVector1.SetVertexBindMode(VECTOR_BIND_VERTICES); } void CVectorView::OnUpdateToolsVerticesBind(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); pCmdUI->SetCheck(m_LEADVector1.GetVertexBindMode()==VECTOR_BIND_VERTICES ? 1:0); } void CVectorView::OnToolsVerticesUnbind() { if(m_LEADVector1.GetVertexBindMode() != VECTOR_UNBIND_VERTICES) m_LEADVector1.SetVertexBindMode(VECTOR_UNBIND_VERTICES); } void CVectorView::OnUpdateToolsVerticesUnbind(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); pCmdUI->SetCheck(m_LEADVector1.GetVertexBindMode()==VECTOR_UNBIND_VERTICES ? 1:0); } void CVectorView::OnDestroy() { if(m_LastSelectedObject.m_lpDispatch) m_LastSelectedObject.ReleaseDispatch(); m_LEADVector1.SetToolbarControl(NULL); CFormView::OnDestroy(); } BEGIN_EVENTSINK_MAP(CVectorView, CFormView) //{{AFX_EVENTSINK_MAP(CVectorView) ON_EVENT(CVectorView, IDC_LEADVECTORCTRL1, 5 /* KeyDown */, OnKeyDownLeadvectorctrl1, VTS_I2 VTS_I2) ON_EVENT(CVectorView, IDC_LEADVECTORCTRL1, 8 /* MouseMove */, OnMouseMoveLeadvectorctrl1, VTS_I2 VTS_I2 VTS_R8 VTS_R8) ON_EVENT(CVectorView, IDC_LEADVECTORCTRL1, 9 /* MouseDown */, OnMouseDownLeadvectorctrl1, VTS_I2 VTS_I2 VTS_R8 VTS_R8) ON_EVENT(CVectorView, IDC_LEADVECTORCTRL1, 11 /* VectorObjects */, OnVectorObjectsLeadvectorctrl1, VTS_DISPATCH) ON_EVENT(CVectorView, IDC_LEADVECTORCTRL1, 14 /* VectorContainer */, OnVectorContainerLeadvectorctrl1, VTS_I2 VTS_I2 VTS_I2 VTS_I2) ON_EVENT(CVectorView, IDC_LEADTOOLBARCTRL1, 1 /* ToolBarButton */, OnToolBarButtonLeadtoolbarctrl1, VTS_DISPATCH VTS_I4 VTS_I4) ON_EVENT(CVectorView, IDC_LEADVECTORCTRL1, 16 /* VectorGroups */, OnVectorGroupsLeadvectorctrl1, VTS_DISPATCH) ON_EVENT(CVectorView, IDC_LEADVECTORCTRL1, 17 /* Help */, OnHelpLeadvectorctrl1, VTS_I4 VTS_I4 VTS_I4) ON_EVENT(CVectorView, IDC_LEADVECTORCTRL1, 2 /* Resize */, OnResizeLeadvectorctrl1, VTS_NONE) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() void CVectorView::OnKeyDownLeadvectorctrl1(short KeyCode, short Shift) { double dMinX; double dMinY; double dMinZ; double dMaxX; double dMaxY; double dMaxZ; UINT uNewWidth; UINT uNewHeight; int nWidthDiff; int nHeightDiff; int nTemp; if ( (VK_ADD != KeyCode) && (VK_SUBTRACT != KeyCode) ) return; if ( VK_ADD == KeyCode ) { nTemp = 90; } else { nTemp = 110; } dMinX = m_LEADVector1.GetParallelogramMinX( ); dMinY = m_LEADVector1.GetParallelogramMinY( ); dMinZ = m_LEADVector1.GetParallelogramMinZ( ); dMaxX = m_LEADVector1.GetParallelogramMaxX( ); dMaxY = m_LEADVector1.GetParallelogramMaxY( ); dMaxZ = m_LEADVector1.GetParallelogramMaxZ( ); uNewWidth = MulDiv( (int)( dMaxX - dMinX ), nTemp, 100 ); uNewHeight = MulDiv( (int)( dMaxY - dMinY ), nTemp, 100 ); nWidthDiff = uNewWidth - (int)( dMaxX - dMinX ); nHeightDiff = uNewHeight - (int)( dMaxY - dMinY ); dMinX -= nWidthDiff / 2; dMinY -= nHeightDiff / 2; dMaxX += nWidthDiff / 2; dMaxY += nHeightDiff / 2; m_LEADVector1.SetParallelogramMinX( dMinX ); m_LEADVector1.SetParallelogramMinY( dMinY ); m_LEADVector1.SetParallelogramMaxX( dMaxX ); m_LEADVector1.SetParallelogramMaxY( dMaxY ); m_LEADVector1.ForceRepaint(); m_LEADVector1.SetAutoScroll(TRUE); m_LEADVector1.SetAutoRepaint(TRUE); if(KeyCode == VK_DELETE) { if(m_LEADVector1.IsAnObjectSelected()) m_LEADVector1.DeleteObjects(VECTOR_SELECTED_OBJECTS); } } void CVectorView::OnMouseDownLeadvectorctrl1(short Button, short Shift, double x, double y) { if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) return; if(m_bImageLoaded && gEdit) { //toggle selection of hittest object if(m_LEADVector1.HitTest(x, y)) { if(m_LEADVector1.GetCurrentObject().GetSelected()) m_LEADVector1.GetCurrentObject().SetSelected(FALSE); else m_LEADVector1.GetCurrentObject().SetSelected(TRUE); if(m_LastSelectedObject.m_lpDispatch) m_LastSelectedObject.ReleaseDispatch(); m_LastSelectedObject = m_LEADVector1.GetCurrentObject(); m_LEADVector1.ForceRepaint(); } } } void CVectorView::OnMouseMoveLeadvectorctrl1(short Button, short Shift, double x, double y) { CString csOut; CString csTemp; double dx,dy; /* if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) return;*/ m_LEADVector1.PhysicalToLogical(x, y); dx = m_LEADVector1.GetLogicalX(); dy = m_LEADVector1.GetLogicalY(); if(m_bImageLoaded) { ((CMainFrame *)(theApp.GetMainWnd()))->UpdateStatusBar(dx,dy); /* m_LEADVector1.PhysicalToLogical(x, y); csTemp.Format("(%0.6f,%0.6f)", m_LEADVector1.GetLogicalX(), m_LEADVector1.GetLogicalY() ); csOut = m_csCaption + " - " + csTemp; GetParent()->SetWindowText(csOut); */ } } void CVectorView::OnVectorObjectsLeadvectorctrl1(LPDISPATCH pObject) { m_nSelectedCount++; if(m_LastSelectedObject.m_lpDispatch) m_LastSelectedObject.ReleaseDispatch(); pObject->AddRef(); m_LastSelectedObject.AttachDispatch(pObject); if(m_bAddToGroup) { CLEADVectorObject Object; Object.AttachDispatch(pObject); Object.InsertInGroup(m_nGroupIndex); Object.DetachDispatch(); } } void CVectorView::OnFileNew() { CVecPropDlg Dlg; CLEADVectorLayer RootLayer; BOOL bReset; long nReset; bReset = FALSE; if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) { m_LEADVector1.EnableUndo(FALSE); nReset = m_LEADVector1.GetUndoLevel(); m_LEADVector1.SetUndoLevel(0); bReset = TRUE; } //get properties Dlg.m_dblMinX = 0.0f; Dlg.m_dblMinY = 0.0f; Dlg.m_dblMinZ = 0.0f; Dlg.m_dblMaxX = 100.0f; Dlg.m_dblMaxY = 100.0f; Dlg.m_dblMaxZ = 0.0f; Dlg.m_iEngine = 0; Dlg.m_bDoubleBuffer = TRUE; Dlg.m_bNew = TRUE; if(Dlg.DoModal() == IDOK) { m_LEADVector1.Free(); m_bImageLoaded = FALSE; m_LEADVector1.ShowWindow(SW_HIDE); m_LEADVector1.SetMousePointer(2); m_LEADVector1.SetUseDoubleBuffer(Dlg.m_bDoubleBuffer); m_LEADVector1.SetParallelogramMinX(Dlg.m_dblMinX); m_LEADVector1.SetParallelogramMinY(Dlg.m_dblMinY); m_LEADVector1.SetParallelogramMinZ(Dlg.m_dblMinZ); m_LEADVector1.SetParallelogramMaxX(Dlg.m_dblMaxX); m_LEADVector1.SetParallelogramMaxY(Dlg.m_dblMaxY); m_LEADVector1.SetParallelogramMaxZ(Dlg.m_dblMaxZ); m_LEADVector1.SetVectorEngine(Dlg.m_iEngine); m_LEADVector1.AddLayer("RootLayer", TRUE, FALSE, 0, 0); RootLayer = m_LEADVector1.GetLayerByName("RootLayer"); RootLayer.SetActive(); m_LEADVector1.Reset(VECTOR_RESET_ALL); m_bImageLoaded = TRUE; m_LEADVector1.SetBackColor(RGB( 255, 255, 255 )); //Automation by default if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_MANUAL) OnViewToolbar(); m_LEADVector1.SetBackColor(RGB( 255, 255, 255 )); m_LEADVector1.ShowWindow(SW_SHOW); m_nSelectedCount = 0; m_LEADVector1.EnumObjects(VECTOR_FLAGS_SELECTED_ONLY); if(bReset) { m_LEADVector1.EnableUndo(TRUE); m_LEADVector1.SetUndoLevel(nReset); } m_LEADVector1.SetWindowText( "Untitled" ); } } void CVectorView::OnEditCopy() { if(m_LEADVector1.IsAnObjectSelected()) { if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) m_LEADVector1.AutoCopy(0); else m_LEADVector1.Copy(VECTOR_FLAGS_SELECTED_ONLY); } else m_LEADVector1.Copy(0); m_nSelectedCount = 0; m_LEADVector1.EnumObjects(VECTOR_FLAGS_SELECTED_ONLY); } void CVectorView::OnUpdateEditCopy(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnEditCut() { if(m_LEADVector1.IsAnObjectSelected()) { if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) m_LEADVector1.AutoCut(0); else { m_LEADVector1.Copy(VECTOR_FLAGS_SELECTED_ONLY); m_LEADVector1.DeleteObjects(VECTOR_SELECTED_OBJECTS); } } else { m_LEADVector1.Copy(0); m_LEADVector1.DeleteObjects(VECTOR_ALL_OBJECTS); } m_nSelectedCount = 0; m_LEADVector1.EnumObjects(VECTOR_FLAGS_SELECTED_ONLY); } void CVectorView::OnUpdateEditCut(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnUpdateEditDelete(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnUpdateEditDeselectall(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnViewScale() { if(m_LEADVector1.IsAnObjectSelected() == TRUE) m_LEADVector1.ShowScaleDlg(VECTOR_DLG_SELECTED_ONLY | VECTOR_DLG_SHOWPREVIEW | VECTOR_DLG_AUTOPROCESS); else m_LEADVector1.ShowScaleDlg(VECTOR_DLG_SHOWPREVIEW | VECTOR_DLG_AUTOPROCESS); } void CVectorView::OnUpdateViewScale(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded); } void CVectorView::OnViewRotate() { if(m_LEADVector1.IsAnObjectSelected() == TRUE) m_LEADVector1.ShowRotateDlg(VECTOR_DLG_SELECTED_ONLY | VECTOR_DLG_SHOWPREVIEW | VECTOR_DLG_AUTOPROCESS); else m_LEADVector1.ShowRotateDlg(VECTOR_DLG_SHOWPREVIEW | VECTOR_DLG_AUTOPROCESS); } void CVectorView::OnUpdateViewRotate(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded); } void CVectorView::OnViewTranslate() { if(m_LEADVector1.IsAnObjectSelected() == TRUE) m_LEADVector1.ShowTranslateDlg(VECTOR_DLG_SELECTED_ONLY | VECTOR_DLG_SHOWPREVIEW | VECTOR_DLG_AUTOPROCESS); else m_LEADVector1.ShowTranslateDlg(VECTOR_DLG_SHOWPREVIEW | VECTOR_DLG_AUTOPROCESS); } void CVectorView::OnUpdateViewTranslate(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded); } void CVectorView::OnViewCamera() { m_LEADVector1.SetCameraDlgDistance(m_LEADVector1.GetCameraDistance()); m_LEADVector1.SetCameraDlgUsePerspective(m_LEADVector1.GetCameraUsePerspective()); m_LEADVector1.SetCameraDlgLookAtX(m_LEADVector1.GetCameraLookAtX()); m_LEADVector1.SetCameraDlgLookAtY(m_LEADVector1.GetCameraLookAtY()); m_LEADVector1.SetCameraDlgLookAtZ(m_LEADVector1.GetCameraLookAtZ()); m_LEADVector1.SetCameraDlgPhi(m_LEADVector1.GetCameraPhi()); m_LEADVector1.SetCameraDlgTheta(m_LEADVector1.GetCameraPhi()); m_LEADVector1.ShowCameraDlg(VECTOR_DLG_SHOWPREVIEW | VECTOR_DLG_AUTOPROCESS); } void CVectorView::OnUpdateViewCamera(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded); } void CVectorView::OnViewViewmode() { m_LEADVector1.ShowViewModeDlg(VECTOR_DLG_SHOWPREVIEW | VECTOR_DLG_AUTOPROCESS); } void CVectorView::OnUpdateViewViewmode(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded); } void CVectorView::OnViewBackgroundcolor(void) { INT nRet; theApp.m_pRasterColorDlg->UIFlags = COLOR_SHOW_OLDCOLOR | COLOR_SHOW_NEWCOLOR | COLOR_SHOW_NAME | COLOR_COLORSPACE_SHOW_HUE | COLOR_COLORSPACE_SHOW_BRIGHTNESS | COLOR_COLORSPACE_SHOW_WHEEL | COLOR_COLORSPACE_SHOW_RGB | COLOR_COLORSPACE_SHOW_CMY | COLOR_COLORSPACE_SHOW_CMYK | COLOR_COLORSPACE_SHOW_LAB | COLOR_COLORMODEL_SHOW_RGB | COLOR_COLORMODEL_SHOW_HSB | COLOR_COLORMODEL_SHOW_HLS | COLOR_COLORMODEL_SHOW_CMY | COLOR_COLORMODEL_SHOW_CMYK | COLOR_COLORMODEL_SHOW_LAB; theApp.m_pRasterColorDlg->SelectedColor= m_LEADVector1.GetBackColor(); nRet= theApp.m_pRasterColorDlg->ShowColorDlg ((long)this->m_hWnd); if ( nRet == 0 && theApp.m_pRasterColorDlg->DialogStatus ==DLG_OK ) m_LEADVector1.SetBackColor(theApp.m_pRasterColorDlg->SelectedColor); } void CVectorView::OnUpdateViewBackgroundcolor(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded); } void CVectorView::OnUpdateEditSelectall(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnUpdateFileSaveAs(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnLayerEdit() { m_LEADVector1.ShowEditAllLayersDlg(0); } void CVectorView::OnUpdateLayerEdit(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectEdit() { short nRet; nRet = m_LEADVector1.AutoEditObject(m_LastSelectedObject.GetHObject()); } void CVectorView::OnUpdateObjectEdit(CCmdUI* pCmdUI) { m_nSelectedCount = 0; m_LEADVector1.EnumObjects(VECTOR_FLAGS_SELECTED_ONLY); pCmdUI->Enable(m_bImageLoaded && gEdit && (m_nSelectedCount==1) && (m_LEADVector1.GetVectorUserMode()==VECTOR_USERMODE_AUTO)); } void CVectorView::OnObjectProperties() { short nRet; nRet = m_LEADVector1.ShowEditObjectDlg(m_LastSelectedObject.GetHObject()); } void CVectorView::OnUpdateObjectProperties(CCmdUI* pCmdUI) { m_nSelectedCount = 0; m_LEADVector1.EnumObjects(VECTOR_FLAGS_SELECTED_ONLY); pCmdUI->Enable(m_bImageLoaded && gEdit && (m_nSelectedCount==1)); } void CVectorView::OnObjectNewArc() { m_LEADVector1.ShowNewObjectDlg(VECTOR_ARC, -1); } void CVectorView::OnUpdateObjectNewArc(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewEllipticalArc() { m_LEADVector1.ShowNewObjectDlg(VECTOR_ELLIPTICALARC, -1); } void CVectorView::OnUpdateObjectNewEllipticalArc(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewChord() { m_LEADVector1.ShowNewObjectDlg(VECTOR_CHORD, -1); } void CVectorView::OnUpdateObjectNewChord(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewCircle() { m_LEADVector1.ShowNewObjectDlg(VECTOR_CIRCLE, -1); } void CVectorView::OnUpdateObjectNewCircle(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewEllipse() { m_LEADVector1.ShowNewObjectDlg(VECTOR_ELLIPSE, -1); } void CVectorView::OnUpdateObjectNewEllipse(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewLine() { m_LEADVector1.ShowNewObjectDlg(VECTOR_LINE, -1); } void CVectorView::OnUpdateObjectNewLine(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewPie() { m_LEADVector1.ShowNewObjectDlg(VECTOR_PIE, -1); } void CVectorView::OnUpdateObjectNewPie(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewPolybezier() { m_LEADVector1.ShowNewObjectDlg(VECTOR_POLYBEZIER, -1); } void CVectorView::OnUpdateObjectNewPolybezier(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewPolydraw() { m_LEADVector1.ShowNewObjectDlg(VECTOR_POLYDRAW, -1); } void CVectorView::OnUpdateObjectNewPolydraw(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewPolygon() { m_LEADVector1.ShowNewObjectDlg(VECTOR_POLYGON, -1); } void CVectorView::OnUpdateObjectNewPolygon(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewPolyline() { m_LEADVector1.ShowNewObjectDlg(VECTOR_POLYLINE, -1); } void CVectorView::OnUpdateObjectNewPolyline(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewRaster() { m_LEADVector1.ShowNewObjectDlg(VECTOR_RASTER, -1); } void CVectorView::OnUpdateObjectNewRaster(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewRectangle() { m_LEADVector1.ShowNewObjectDlg(VECTOR_RECTANGLE, -1); } void CVectorView::OnUpdateObjectNewRectangle(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewText() { m_LEADVector1.ShowNewObjectDlg(VECTOR_TEXT, -1); } void CVectorView::OnUpdateObjectNewText(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnObjectNewVertex() { m_LEADVector1.ShowNewObjectDlg(VECTOR_VERTEX, -1); } void CVectorView::OnUpdateObjectNewVertex(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnOptionsHittest() { m_LEADVector1.SetHitTestDlgDistance(m_LEADVector1.GetHitTestDistance()); m_LEADVector1.SetHitTestDlgFlags(m_LEADVector1.GetHitTestFlags()); m_LEADVector1.ShowHitTestDlg(VECTOR_DLG_AUTOPROCESS); } void CVectorView::OnUpdateOptionsHittest(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded); } void CVectorView::OnOptionsRender() { m_LEADVector1.SetRenderDlgAmbientColor(m_LEADVector1.GetAmbientColor()); m_LEADVector1.SetRenderDlgPolygonMode(m_LEADVector1.GetPolygonMode()); m_LEADVector1.SetRenderDlgUseLights(m_LEADVector1.GetUseLights()); m_LEADVector1.ShowRenderDlg(VECTOR_DLG_SHOWPREVIEW | VECTOR_DLG_AUTOPROCESS); } void CVectorView::OnUpdateOptionsRender(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded); } void CVectorView::OnOptionsApplytransformation() { m_LEADVector1.ApplyTransformation(); } void CVectorView::OnUpdateOptionsApplytransformation(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnViewExtent() { //Reset the vector m_LEADVector1.Reset(VECTOR_RESET_ALL); } void CVectorView::OnUpdateViewExtent(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded); } void CVectorView::OnViewToolbar() { LPDISPATCH pToolbar=NULL; if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) { // Turn off Vector Automation m_LEADVector1.SetVectorUserMode(VECTOR_USERMODE_MANUAL); m_LEADToolBar1.SetVisible(FALSE); m_LEADVector1.SetToolbarControl(NULL); //release toolbar } else { // Turn on Vector Automation m_LEADVector1.SetVectorUserMode(VECTOR_USERMODE_AUTO); m_LEADToolBar1.SetVisible(TRUE); //m_LEADVector1.GetAutoContainer( )->SetActive( ); //set active container pToolbar = (LPDISPATCH)m_LEADToolBar1.GetControlUnknown(); m_LEADVector1.SetToolbarControl(pToolbar); //set toolbar } } void CVectorView::OnUpdateViewToolbar(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_LEADVector1.GetVectorUserMode()==VECTOR_USERMODE_AUTO); pCmdUI->Enable(gEdit); } void CMyLEADVector::OnSetFocus(CWnd* pOldWnd) { CLEADVector::OnSetFocus(pOldWnd); } void CMyLEADVector::OnKillFocus(CWnd* pWnd) { // this->SetToolbarControl(NULL); //release toolbar } void CMyLEADVector::OnSize(UINT nType, int cx, int cy) { if(this->GetVectorUserMode() == VECTOR_USERMODE_AUTO) { ( this->GetAutoContainer() ).SetLimitLeft(0); ( this->GetAutoContainer() ).SetLimitTop(0); ( this->GetAutoContainer() ).SetLimitWidth(cx); ( this->GetAutoContainer() ).SetLimitHeight(cy); } } BOOL CVectorView::OnEraseBkgnd(CDC* pDC) { CRect rcClip; pDC->GetClipBox(rcClip); //pDC->GetBoundsRect(rcClip,0); CRgn *pRgn = (CRgn*) &rcClip; //pDC->FillRgn(pRgn,pDC->(pDC->GetBkColor())); FillRect(pDC->m_hDC,&rcClip,CreateSolidBrush(pDC->GetBkColor()) ); return TRUE; } void CVectorView::OnEditUndo() { m_LEADVector1.Undo(0); } void CVectorView::OnEditRedo() { m_LEADVector1.Redo(0); } void CVectorView::OnUpdateEditUndo(CCmdUI* pCmdUI) { BOOL bRet; bRet = (m_LEADVector1.GetVectorUserMode()==VECTOR_USERMODE_AUTO) && m_LEADVector1.CanUndo(); pCmdUI->Enable( bRet ); } void CVectorView::OnUpdateEditRedo(CCmdUI* pCmdUI) { BOOL bRet; bRet = (m_LEADVector1.GetVectorUserMode()==VECTOR_USERMODE_AUTO) && m_LEADVector1.CanRedo(); pCmdUI->Enable( bRet ); } void CVectorView::OnFilePrint() { long hDC; RECT Rect; if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) m_LEADVector1.AutoRender(0); //will fit to page else { hDC = m_LEADVector1.PrintStart(); //you can specify the location and size Rect.left = GetDeviceCaps( (HDC) hDC, PHYSICALOFFSETX ); Rect.top = GetDeviceCaps( (HDC) hDC, PHYSICALOFFSETY ); Rect.right = GetDeviceCaps( (HDC) hDC, PHYSICALWIDTH ) - Rect.left * 2; Rect.bottom = GetDeviceCaps( (HDC) hDC, PHYSICALHEIGHT ) - Rect.top * 2; m_LEADVector1.Render(hDC, Rect.left, Rect.top, Rect.right, Rect.bottom); m_LEADVector1.PrintEnd(hDC); } } void CVectorView::OnUpdateFilePrint(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded); } void CVectorView::OnEditPasteObjects() { if(m_LEADVector1.ClipboardReady()) { if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) m_LEADVector1.AutoPaste(VECTOR_FLAGS_COPY_INTO_ACTIVE_LAYER); else m_LEADVector1.Paste(VECTOR_FLAGS_COPY_INTO_ACTIVE_LAYER); } } void CVectorView::OnEditPasteLayers() { if(m_LEADVector1.ClipboardReady()) { if(m_LEADVector1.GetVectorUserMode() == VECTOR_USERMODE_AUTO) m_LEADVector1.AutoPaste(VECTOR_FLAGS_COPY_LAYERS_ONLY); else m_LEADVector1.Paste(VECTOR_FLAGS_COPY_LAYERS_ONLY); } } void CVectorView::OnUpdateEditPasteObjects(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit && m_LEADVector1.ClipboardReady()); } void CVectorView::OnUpdateEditPasteLayers(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit && m_LEADVector1.ClipboardReady()); } void CVectorView::OnVectorContainerLeadvectorctrl1(short nEventType, short nObjectType, short nState, short nStatus) { if(nEventType == VECTOR_CONTAINER_EVENT_ERROR) { if(nStatus != 0) { CString csOut; csOut.Format("Error %d\n", nStatus); MessageBox(csOut, "Error", MB_OK); } } } void CVectorView::OnToolBarButtonLeadtoolbarctrl1(LPDISPATCH Button, long nButtonID, long dwData) { if(nButtonID == -1) OnViewToolbar(); } void CVectorView::OnGroupAddselectedobjectsto() { CGroupListDlg GroupDlg; if((m_LEADVector1.IsAnObjectSelected()) && (m_LEADVector1.GetGroupCount() > 0)) { m_GroupList.ResetContent(); m_LEADVector1.EnumGroups(); GroupDlg.m_pList = &m_GroupList; if(GroupDlg.DoModal() == IDOK) { m_bAddToGroup = TRUE; m_nGroupIndex = GroupDlg.m_nIndex; m_LEADVector1.EnumObjects(VECTOR_FLAGS_SELECTED_ONLY); m_bAddToGroup = FALSE; } } } void CVectorView::OnUpdateGroupAddselectedobjectsto(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit && m_LEADVector1.IsAnObjectSelected() && (m_LEADVector1.GetGroupCount() > 0)); } void CVectorView::OnGroupEdit() { short nRet; nRet = m_LEADVector1.ShowEditAllGroupsDlg(0); } void CVectorView::OnUpdateGroupEdit(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit); } void CVectorView::OnVectorGroupsLeadvectorctrl1(LPDISPATCH pGroup) { CLEADVectorGroup Group; Group.AttachDispatch(pGroup); m_GroupList.InsertString(-1, Group.GetName()); Group.DetachDispatch(); } void CVectorView::OnObjectNewClone() { m_LEADVector1.ShowNewObjectDlg(VECTOR_CLONE, -1); } void CVectorView::OnUpdateObjectNewClone(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit && (m_LEADVector1.GetGroupCount()>0)); } void CVectorView::OnObjectNewSpline() { m_LEADVector1.ShowNewObjectDlg(VECTOR_SPLINE, -1); } void CVectorView::OnUpdateObjectNewSpline(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit ); } void CVectorView::OnObjectNewHBezier() { m_LEADVector1.ShowNewObjectDlg(VECTOR_HPOLYBEZIER, -1); } void CVectorView::OnUpdateObjectNewHBezier(CCmdUI* pCmdUI) { pCmdUI->Enable(m_bImageLoaded && gEdit ); } void CVectorView::OnHelpEnablecontextsensitivehelp() { m_LEADVector1.SetEnableHelp( !m_LEADVector1.GetEnableHelp( ) ); } void CVectorView::OnUpdateHelpEnablecontextsensitivehelp(CCmdUI* pCmdUI) { pCmdUI->SetCheck( m_LEADVector1.GetEnableHelp( ) ? 1 : 0 ); pCmdUI->Enable( m_bImageLoaded ); } void CVectorView::OnHelpEnablevectordialoghelpbutton() { m_LEADVector1.SetEnableDlgHelpButton( !m_LEADVector1.GetEnableDlgHelpButton( ) ); } void CVectorView::OnUpdateHelpEnablevectordialoghelpbutton(CCmdUI* pCmdUI) { pCmdUI->SetCheck( m_LEADVector1.GetEnableDlgHelpButton( ) ? 1 : 0 ); pCmdUI->Enable( m_bImageLoaded && m_LEADVector1.GetEnableHelp( ) ); } void CVectorView::OnHelpLeadvectorctrl1(long nDlgID, long hElement, long nCtlID) { char szBuffer[ 255 ]; if( 0 == hElement && 0 == nCtlID ) { /* dialog help button */ sprintf( szBuffer, "Help button for dialog %d", nDlgID ); } else { /* context sensitive help */ sprintf( szBuffer, "Context sensitive help for dialog %d, control %d", nDlgID, nCtlID ); } MessageBox( szBuffer ); } void CVectorView::OnOptionsInvertcolors() { m_LEADVector1.InvertColors( ); } void CVectorView::OnObjectExplode() { m_LEADVector1.ExplodeObjects( VECTOR_FLAGS_SELECTED_ONLY ); } void CVectorView::OnUpdateObjectExplode(CCmdUI* pCmdUI) { short nEngine = m_LEADVector1.GetVectorEngine( ); pCmdUI->Enable( m_LEADVector1.IsAnObjectSelected( ) && ( nEngine == VECTOR_ENGINE_GDI ) ); } void CVectorView::OnResizeLeadvectorctrl1() { RECT Rect; CLTVectorContainer AutContainer; if( ::IsWindow( m_LEADVector1.m_hWnd ) && VECTOR_USERMODE_AUTO == m_LEADVector1.GetVectorUserMode( ) ) { AutContainer = m_LEADVector1.GetAutoContainer( ); ::GetClientRect( m_LEADVector1.m_hWnd, &Rect ); AutContainer.SetLimitLeft( 0 ); AutContainer.SetLimitTop( 0 ); AutContainer.SetLimitWidth( Rect.right ); AutContainer.SetLimitHeight( Rect.bottom ); } } LRESULT CVectorView::OnDoRealize(WPARAM wParam, LPARAM lParam) { if( !IsWindow(m_LEADVector1.m_hWnd)) return FALSE; if(lParam) { return m_LEADVector1.SendMessage(WM_PALETTECHANGED, wParam); } else { return m_LEADVector1.SendMessage(WM_QUERYNEWPALETTE,0); } } void CVectorView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { if (bActivate) { OnDoRealize((WPARAM)theApp.m_pMainWnd->m_hWnd, (LPARAM) FALSE); } CFormView::OnActivateView(bActivate, pActivateView, pDeactiveView); } BOOL CVectorView::OpenDroppedFile( CString strFilePath ) { short nRet; CVecPropDlg Dlg; m_LEADVector1.Free(); m_LEADVector1.SetMousePointer(11); m_LEADVector1.ShowWindow(SW_HIDE); m_LEADVector1.ModifyStyle(WS_VISIBLE,0,SWP_DRAWFRAME); m_LEADVector1.SetBackColor( RGB( 0xFF, 0xFF, 0xFF ) ); nRet = m_LEADVector1.Load(strFilePath); m_LEADVector1.SetMousePointer(2); if(nRet != 0) { CString csOut; csOut.Format("Error %d loading file!", nRet); AfxMessageBox(csOut); m_LEADVector1.ShowWindow(SW_SHOW); m_LEADVector1.ModifyStyle(0,WS_VISIBLE,SWP_DRAWFRAME); } m_bImageLoaded = TRUE; //get properties Dlg.m_bDoubleBuffer = m_LEADVector1.GetUseDoubleBuffer(); Dlg.m_dblMinX = m_LEADVector1.GetParallelogramMinX(); Dlg.m_dblMinY = m_LEADVector1.GetParallelogramMinY(); Dlg.m_dblMinZ = m_LEADVector1.GetParallelogramMinZ(); Dlg.m_dblMaxX = m_LEADVector1.GetParallelogramMaxX(); Dlg.m_dblMaxY = m_LEADVector1.GetParallelogramMaxY(); Dlg.m_dblMaxZ = m_LEADVector1.GetParallelogramMaxZ(); Dlg.m_bNew = FALSE; if(Dlg.DoModal() == IDOK) { m_LEADVector1.SetUseDoubleBuffer(Dlg.m_bDoubleBuffer); m_LEADVector1.SetParallelogramMinX(Dlg.m_dblMinX); m_LEADVector1.SetParallelogramMinY(Dlg.m_dblMinY); m_LEADVector1.SetParallelogramMinZ(Dlg.m_dblMinZ); m_LEADVector1.SetParallelogramMaxX(Dlg.m_dblMaxX); m_LEADVector1.SetParallelogramMaxY(Dlg.m_dblMaxY); m_LEADVector1.SetParallelogramMaxZ(Dlg.m_dblMaxZ); m_LEADVector1.SetVectorEngine(Dlg.m_iEngine); //Automation by default if(gEdit) { if(m_LEADVector1.GetVectorUserMode() != VECTOR_USERMODE_MANUAL) m_LEADVector1.SetVectorUserMode(VECTOR_USERMODE_MANUAL); OnViewToolbar(); } } else m_LEADVector1.Free(); CRect rcClient; GetClientRect(&rcClient); m_LEADVector1.MoveWindow(&rcClient); m_LEADVector1.ShowWindow(SW_SHOW); m_LEADVector1.ModifyStyle(0,WS_VISIBLE,SWP_DRAWFRAME); m_nSelectedCount = 0; m_LEADVector1.EnumObjects(VECTOR_FLAGS_SELECTED_ONLY); m_LEADVector1.SetWindowText( strFilePath ); m_LEADVector1.ForceRepaint(); return true; }