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++

#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