#include "stdafx.h" #include "SigmaView.h" //#include "SectionDoc.h" #include "ItemCopyAsImageEx.h" //#include "HSimpleTracker.h" static CItemCopyAsImageEx * getItemItemCopyAsImageEx(CSigmaView * pView) { CItem * pItem = pView->GetItem(); if (pItem == NULL) return NULL; CItemCopyAsImageEx * ciItem = dynamic_cast(pItem); return ciItem; } extern "C" __declspec(dllexport) bool CopyAsImageEx_CopyRectToClipboard(CSigmaView * pView, double scaleFactor) { if (pView == NULL) return false; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return false; return pItem->CopyRectToClipboard(scaleFactor); } extern "C" __declspec(dllexport) void CopyAsImageEx_SetProportionVisible(CSigmaView * pView, bool visible) { if (pView == NULL) return; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return; pItem->SetProportionVisible(visible); } extern "C" __declspec(dllexport) void CopyAsImageEx_SetNetGridVisible(CSigmaView * pView, bool visible) { if (pView == NULL) return; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return; pItem->SetNetGridVisible(visible); } extern "C" __declspec(dllexport) void CopyAsImageEx_SetNetGridParameter(CSigmaView * pView, RectangularCSGridData* pData) { if (pView == NULL) return; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return; pItem->SetNetGridParameter(pData); } extern "C" __declspec(dllexport) int CopyAsImageEx_GetPropotion(CSigmaView * pView, struct ProportionData * pData) { if (pView == NULL) return 0; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return 0; pItem->GetPropotionData(pData); return 1; } extern "C" __declspec(dllexport) void CopyAsImageEx_SetPropotion(CSigmaView * pView, ProportionData* pData) { if (pView == NULL) return; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return; pItem->SetPropotionData(pData); } extern "C" __declspec(dllexport) void CopyAsImageEx_Refresh(CSigmaView * pView, HDC hdc) { if (pView == NULL) return; CDC * pDC = CDC::FromHandle(hdc); if (pDC == NULL) return; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return; pItem->Refresh(pDC); } extern "C" __declspec(dllexport) void CopyAsImageEx_Clear(CSigmaView * pView) { if (pView == NULL) return; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return; pItem->Clear(); } extern "C" __declspec(dllexport) int CopyAsImageEx_SetRange(CSigmaView * pView, int left, int right, int top, int bottom, HDC hdc) { if (pView == NULL) return -1; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return -1; CDC * pDC = CDC::FromHandle(hdc); if (pDC == NULL) return -1; CRect rect; rect.left = left; rect.right = right; rect.top = top; rect.bottom = bottom; if (pItem->SetRange(rect) == -1) return -1; return 1; } extern "C" __declspec(dllexport) void CopyAsImageEx_GetRange(CSigmaView * pView, double& left, double& right, double& top, double& bottom) { if (pView == NULL) { return; } CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return; CRect8 crRange; pItem->GetRange(&crRange); left = crRange.left; right = crRange.right; top = crRange.top; bottom = crRange.bottom; } extern "C" __declspec(dllexport) int CopyAsImageEx_TrackHandle(CSigmaView * pView, int handleIndex, int mouseX, int mouseY, HDC hdc) { if (pView == NULL) return -1; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return -1; CDC * pDC = CDC::FromHandle(hdc); if (pDC == NULL) return -1; pItem->TrackHandle(handleIndex, CPoint(mouseX, mouseY), pDC); return 1; } extern "C" __declspec(dllexport) void CopyAsImageEx_EraseTrackerForRange(CSigmaView * pView, HDC hdc) { if (pView == NULL) return; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return; CDC * pDC = CDC::FromHandle(hdc); if (pDC == NULL) return; //CHSimpleTracker * tracker = pItem->GetTracker(); //if (tracker == NULL) // return; //tracker->Draw(pDC); } //0--左下箭头 1--垂直箭头 2--右下箭头 3--水平箭头 //4--旋转箭头 5--水平剪切箭头 6--垂直剪切箭头 7--平移箭头 //-1 出错 extern "C" __declspec(dllexport) int CopyAsImageEx_GetTrackerHandleCursorType(CSigmaView * pView, int mouseX, int mouseY) { if (pView == NULL) return -1; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return -1; int nHandleType =pItem->HitTest(CPoint(mouseX, mouseY)); //HTRACKER_HANDLE_KIND handleKind = pItem->GetTracker()->HitTest(mouseX, mouseY); //if (handleKind == HTRACKER_HANDLE_KIND_INVALID) // return -1; //if (handleKind == HTRACKER_HANDLE_KIND_CENTER) // return 7; return nHandleType; } extern "C" __declspec(dllexport) int CopyAsImageEx_CopyWindow(CSigmaView * pView, int left, int right, int top, int bottom) { if (pView == NULL) return -1; CItemCopyAsImageEx * pItem = getItemItemCopyAsImageEx(pView); if (pItem == NULL) return -1; CRect rect; rect.left = left; rect.right = right; rect.top = top; rect.bottom = bottom; //pItem->CopyToClipboard(rect); return 1; }