You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
249 lines
6.5 KiB
C++
249 lines
6.5 KiB
C++
#include "StdAfx.h"
|
|
#include "resource.h" // 主符号
|
|
#include ".\itemgrid.h"
|
|
#include "SigmaDoc.h"
|
|
#include "MxnFormat\AxisLayout.h"
|
|
|
|
namespace NItem
|
|
{
|
|
|
|
CItemEditGrid::CItemEditGrid(CSigmaDoc* ppDoc)
|
|
: CItemEditNet(ppDoc)
|
|
, m_pGrid(NULL)
|
|
{
|
|
this->SetType(ITEM_GRID);
|
|
}
|
|
|
|
CItemEditGrid::~CItemEditGrid(void)
|
|
{
|
|
if(m_pGrid) delete m_pGrid;
|
|
m_pGrid=NULL;
|
|
}
|
|
|
|
int CItemEditGrid::Create(RectangularCSGridData * pData, CDC* pDC)
|
|
{
|
|
GetDC()->Create(pDC);
|
|
if (pData == NULL)
|
|
return -1;
|
|
|
|
CRect8 rect(pData->left, pData->top, pData->right, pData->bottom);
|
|
m_pGrid = new CGridding;
|
|
*(CRect8*)m_pGrid = rect;
|
|
|
|
m_pGrid->m_step.SetSize(pData->stepX, pData->stepY);
|
|
//自动根据单位设置文字大小
|
|
//step=GetDoc()->GetCurrentUnitScale();
|
|
m_pGrid->ScaleProperty(1000, 1000);
|
|
|
|
m_pGrid->SetProjection(&(GetDoc()->GetDraw()->m_ExchangeXYZ));
|
|
|
|
COLORREF color = RGB(pData->girdColorR, pData->girdColorG, pData->girdColorB);
|
|
|
|
m_pGrid->m_szText.cy = pData->textHeight;
|
|
m_pGrid->m_szText.cx = pData->textHeight*0.4;
|
|
m_pGrid->m_ptBase.x0 = pData->baseX;
|
|
m_pGrid->m_ptBase.y0 = pData->baseY;
|
|
|
|
TextFormat = pData->textScale;
|
|
SetTextFormat(m_pGrid);
|
|
|
|
MarkText = pData->notatioinMode;
|
|
SetMarkText(m_pGrid);
|
|
|
|
DisplayIdea = pData->showMode;
|
|
SetDisplayIdea(m_pGrid);
|
|
|
|
ItemEditNetData data;
|
|
data.blackOutterBorder = pData->blackOutterBorder;
|
|
data.borderColorR = pData->borderColorR;
|
|
data.borderColorG = pData->borderColorG;
|
|
data.borderColorB = pData->borderColorB;
|
|
data.borderThickness = pData->borderThickness;
|
|
data.isShowOutBorder = pData->isShowOutBorder;
|
|
|
|
ChangeSetting(&data, m_pGrid);
|
|
|
|
CGridding* pGrid = new CGridding;
|
|
*pGrid = *m_pGrid;
|
|
POSITION pos = AddElement(pGrid, DOUBLEFOX_GRID, FALSE);
|
|
GetDoc()->GetDraw()->SetElementColor(pos, color);
|
|
CItem::SetPos(pos);
|
|
delete m_pGrid;
|
|
m_pGrid = NULL;
|
|
|
|
COne* pOne = GetDoc()->GetDraw()->GetAt(pos);
|
|
pOne->Draw(*GetDC());
|
|
//GetView()->Select(pos);
|
|
return 1;
|
|
}
|
|
|
|
int CItemEditGrid::GetStepAndRange(RectangularCSGridData * pData)
|
|
{
|
|
if (pData == NULL)
|
|
return -1;
|
|
|
|
CRect8 rect = GetRect();
|
|
pData->left = rect.left;
|
|
pData->top = rect.top;
|
|
pData->right = rect.right;
|
|
pData->bottom = rect.bottom;
|
|
|
|
//自动计算步长
|
|
CAxisLayout al(rect.left, rect.right, 1);
|
|
TIntervalStep<double> sx = al.sd;
|
|
double step = min(sx.step, al.sd.step);
|
|
pData->stepX = pData->stepY = step;
|
|
pData->textHeight = step / 25.0;
|
|
pData->borderThickness = pData->textHeight / 2.0;
|
|
return 1;
|
|
}
|
|
|
|
void CItemEditGrid::DoLButtonUp(CDC* pDC)
|
|
{
|
|
}
|
|
|
|
void CItemEditGrid::OnDraw(CXyDC* pDC)
|
|
{
|
|
//if(m_pGrid==NULL) return;
|
|
//pDC->Draw(*m_pGrid);
|
|
}
|
|
|
|
/*
|
|
BOOL CItemEditGrid::InitPropertyGrid(CXTPPropertyGrid& grid)
|
|
{
|
|
if(this->IsEditState())
|
|
{
|
|
COne* pOne=(COne*)GetDoc()->GetDraw()->GetAt(GetPos());
|
|
color=pOne->color;
|
|
CGridding* pValue=(CGridding*)pOne->GetValue();
|
|
InitPropertyGrid(grid,pValue);
|
|
}
|
|
else if(m_pGrid)
|
|
{
|
|
this->InitPropertyGrid(grid,m_pGrid);
|
|
CItemEditNet::InitPropertyGrid(grid,m_pNet);
|
|
}
|
|
|
|
CItem::InitPropertyGrid(grid);
|
|
return 0;
|
|
}
|
|
|
|
BOOL CItemEditGrid::OnGridItemChangeValue(CXTPPropertyGridItem* pItem)
|
|
{
|
|
if(this->IsEditState())
|
|
{
|
|
CGridding* pValue=(CGridding*)GetDoc()->GetDraw()->GetAtValue(GetPos());
|
|
return OnGridItemChangeValue(pItem,pValue);
|
|
}
|
|
//为增加状态时
|
|
BOOL rt=OnGridItemChangeValue(pItem,m_pGrid);
|
|
CItemEditNet::OnGridItemChangeValue(pItem,m_pNet);
|
|
return rt;
|
|
}
|
|
|
|
BOOL CItemEditGrid::InitPropertyGrid(CXTPPropertyGrid& grid, CGridding* pValue)
|
|
{
|
|
if(pValue==NULL) return FALSE;
|
|
CXTPPropertyGridItem* pItem;
|
|
CPropertyGridItemAdd ItemAdd(NULL);
|
|
CString strFormat=GetFloatFormatString();
|
|
|
|
GetTextFormat(pValue);
|
|
GetDisplayIdea(pValue);
|
|
GetMarkText(pValue);
|
|
|
|
//网格//IDS_STRING_GRID_ITEM//网格
|
|
pItem=grid.AddCategory(IDS_STRING_GRID); ItemAdd.SetItem(pItem); pItem->Expand();
|
|
|
|
m_step = GetUnitMode().toPrintUnit(pValue->m_step);
|
|
pItem=ItemAdd.AddItemUnitSize8(IDS_GI_GRID_STEP_GRID, GetUnit(), m_step, &m_step); pItem->Expand();
|
|
|
|
ItemAdd.AddItemCombo(IDS_GI_GRID_VIEW, IDS_GI_GRID_VIEW_COMBO, DisplayIdea, &DisplayIdea);
|
|
ItemAdd.AddItemColor(IDS_GI_COLOR, color, NULL);
|
|
|
|
//文字
|
|
pItem=grid.AddCategory(IDS_STRING_Text); ItemAdd.SetItem(pItem); pItem->Expand();
|
|
|
|
//ItemAdd.AddItemSize(IDS_STRING_TEXT_SIZE, pValue->m_szText, NULL, IDS_STRING_WIDTH, IDS_STRING_HEIGHT);
|
|
m_szText = GetUnitMode().toPrintUnit(pValue->m_szText);
|
|
ItemAdd.AddItemUnitDouble(IDS_STRING_TEXT_HEIGHT, GetUnit(), m_szText.cy, strFormat, &m_szText.cy);
|
|
|
|
ItemAdd.AddItemCombo(IDS_GI_GRID_SCALE, IDS_GI_GRID_SCALE_COMBO, TextFormat, &TextFormat);
|
|
ItemAdd.AddItemCombo(IDS_GI_GRID_MARK, IDS_GI_GRID_MARK_COMBO, MarkText, &MarkText);
|
|
|
|
//高级设置
|
|
pItem=grid.AddCategory(IDS_STRING_SETTING); ItemAdd.SetItem(pItem); pItem->Expand();
|
|
|
|
ItemAdd.AddItemPoint(IDS_GI_GRID_BASE, pValue->m_ptBase, NULL); //基数
|
|
ItemAdd.AddItemSize8(IDS_GI_GRID_COEFFICIENT,pValue->m_szCoefficient,NULL); //系数
|
|
ItemAdd.AddItemRect(IDS_GI_COORDINATE_RECT, *(CRect8*)pValue, NULL); //范围
|
|
|
|
//边框
|
|
return InitPropertyGrid_Frame(grid, pValue);
|
|
}
|
|
|
|
BOOL CItemEditGrid::OnGridItemChangeValue(CXTPPropertyGridItem* pItem, CGridding* pValue)
|
|
{
|
|
if(pValue==NULL) return FALSE;
|
|
COne* pOne=NULL;
|
|
if(IsEditState()) pOne=(COne*)GetDoc()->GetDraw()->GetAt(GetPos());
|
|
|
|
BOOL bUpdate=FALSE;
|
|
switch(pItem->GetID())
|
|
{
|
|
case IDS_GI_COLOR:
|
|
color=atol(pItem->GetValue());
|
|
if(pOne) pOne->color=color;
|
|
bUpdate=TRUE;
|
|
break;
|
|
case IDS_GI_GRID_STEP_GRID:
|
|
{
|
|
CSize8 sz=((CCustomItemPoint*)pItem)->GetValuePoint();
|
|
if(m_step.cx>ZERO) pValue->m_step.cx = GetUnitMode().toRealUnit(m_step.cx);
|
|
if(m_step.cy>ZERO) pValue->m_step.cy = GetUnitMode().toRealUnit(m_step.cy);
|
|
}
|
|
bUpdate=TRUE;
|
|
break;
|
|
case IDS_STRING_TEXT_HEIGHT:
|
|
pValue->m_szText.cy = GetUnitMode().toRealUnit(m_szText.cy);
|
|
pValue->m_szText.cx = pValue->m_szText.cy*0.4;
|
|
bUpdate=TRUE;
|
|
break;
|
|
case IDS_GI_GRID_BASE:
|
|
pValue->m_ptBase=((CCustomItemPoint*)pItem)->GetValuePoint();
|
|
bUpdate=TRUE;
|
|
break;
|
|
case IDS_GI_GRID_COEFFICIENT:
|
|
{
|
|
CSize8 sz=((CCustomItemPoint*)pItem)->GetValuePoint();
|
|
if(sz.cx<ZERO || sz.cy<ZERO) break;
|
|
}
|
|
pValue->m_szCoefficient=((CCustomItemPoint*)pItem)->GetValuePoint();
|
|
bUpdate=TRUE;
|
|
break;
|
|
case IDS_GI_COORDINATE_RECT:
|
|
*(CRect8*)pValue=((CCustomItemRect*)pItem)->GetValueRect8();
|
|
bUpdate=TRUE;
|
|
break;
|
|
case IDS_GI_GRID_VIEW:
|
|
SetDisplayIdea(pValue);
|
|
bUpdate=TRUE;
|
|
break;
|
|
case IDS_GI_GRID_SCALE:
|
|
SetTextFormat(pValue);
|
|
bUpdate=TRUE;
|
|
break;
|
|
case IDS_GI_GRID_MARK:
|
|
SetMarkText(pValue);
|
|
bUpdate=TRUE;
|
|
break;
|
|
default:
|
|
bUpdate=OnGridItemChangeValue_Frame(pItem, pValue);
|
|
break;
|
|
}
|
|
return bUpdate | CItem::OnGridItemChangeValue(pItem);
|
|
}
|
|
*/
|
|
}//namespace
|
|
|