Files
envi-code/SourceCode/Code2026/tg_shs/shs_annotate/IndexDimDlg.cpp
T
2026-09-28 15:28:50 +08:00

633 lines
17 KiB
C++

// IndexDimDlg.cpp : implementation file
//
#include "stdafx.h"
#include "IndexDimDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CIndexDimDlg dialog
const int maxHisList = 10;
CString CIndexDimDlg::m_strInputUp = _T("");
CString CIndexDimDlg::m_strInputDown = _T("");
CString CIndexDimDlg::m_strDrawing = _T("-");
CString CIndexDimDlg::m_strIndex = _T("1");
int CIndexDimDlg::m_iIndexType=0;
// add by cwk on 060706
extern CString g_sIndexDimFixAngle = _T("90");// [11/12/2007 nsh]
extern BOOL g_bIndexDimFixAngle = FALSE;
BOOL CIndexDimDlg::m_bContinue=TRUE; // Add by lcf on 2005-06-29
BOOL CIndexDimDlg::m_bAddIndex = TRUE; // sg add 090122
int CIndexDimDlg::m_nTextAlign = 2; // sg add 090402
BOOL CIndexDimDlg::m_bDimOnExtent = FALSE; // lgh add 101216, 是否在延长线上标注文字
BOOL CIndexDimDlg::m_bMoreCut = FALSE; // lgh add 101216,是否绘制多段剖切线
BOOL CIndexDimDlg::m_bAddTurn = FALSE; // lgh add 101216, 是否添加一个转折点
// modify by lgy 20120111 标注文字样式要从文字管理中初始化
// CString CIndexDimDlg::m_strDimStyle = _T(""); // lgh add 101216, 标注文字样式。
CString CIndexDimDlg::m_strDimStyle = GetTextStyleName(TS_LABEL);// lgh add 101216, 圆圈文字样式。
IMPLEMENT_DYNAMIC(CIndexDimDlg, CBaseTextDlg)
CIndexDimDlg::CIndexDimDlg(BOOL bEdit, CWnd* pParent /*=NULL*/)
: CBaseTextDlg(CIndexDimDlg::IDD, pParent), m_bEditObj(bEdit)
{
//{{AFX_DATA_INIT(CIndexDimDlg)
// add by cwk on 060706
m_sFixAngle = g_sIndexDimFixAngle;
m_bFixAngle = g_bIndexDimFixAngle;
//}}AFX_DATA_INIT
}
CIndexDimDlg::CIndexDimDlg(BOOL bEdit, UINT Id, CWnd* pParent)
: CBaseTextDlg(Id, pParent), m_bEditObj(bEdit)
{
//{{AFX_DATA_INIT(CIndexDimDlg)
// add by cwk on 060706
m_sFixAngle = g_sIndexDimFixAngle;
m_bFixAngle = g_bIndexDimFixAngle;
//}}AFX_DATA_INIT
}
void CIndexDimDlg::DoDataExchange(CDataExchange* pDX)
{
CBaseTextDlg::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CIndexDimDlg)
// sg modify 090507,仿照图名标注,试着解决“对象编辑中,有时候文字显示有问题”的BUG
if (pDX->m_bSaveAndValidate)
{
DDX_CBString(pDX, IDC_COMBO_INPUTTEXT, m_strInputUp);
DDX_CBString(pDX, IDC_COMBO_INPUTTEXT1, m_strInputDown);
DDX_CBString(pDX, IDC_CMB_DIMTEXT_STYLE, m_strDimStyle); // add by lgh 101216
}
else
{
GetDlgItem(IDC_COMBO_INPUTTEXT)->SetWindowText(m_strInputUp);
GetDlgItem(IDC_COMBO_INPUTTEXT1)->SetWindowText(m_strInputDown);
GetDlgItem(IDC_CMB_DIMTEXT_STYLE)->SetWindowText(m_strDimStyle); // add by lgh 101216
}
DDX_Control(pDX, IDC_COMBO_INPUTTEXT, m_comboInputText);
DDX_Control(pDX, IDC_COMBO_INPUTTEXT1, m_comboInputText1);
// modify by cwk on 060706
if (!m_bEditObj)
{
// [11/12/2007 nsh]
/*DDX_Text(pDX, IDC_EDIT_ANGLE, m_sFixAngle);*/
DDX_Text(pDX,IDC_COMBO1,m_sFixAngle); // 对固定角度的combox映射
}
DDX_Text(pDX, IDC_DRAWING_LABEL, m_strDrawing);
DDX_CBString(pDX, IDC_INDEX_LABEL, m_strIndex);
//Modify by cwk on 060706
DDX_Check(pDX, IDC_CONTINUE, m_bContinue);
DDX_Radio(pDX,IDC_INDEX_RADIO,m_iIndexType);
if (!m_bEditObj)
DDX_Check(pDX, IDC_CHECK1, m_bFixAngle);
// sg add 090122
DDX_Check(pDX, IDC_ADD_INDEX, m_bAddIndex);
DDX_CBIndex(pDX, IDC_COMBO_TEXTALIGN, m_nTextAlign); // sg add 090402
// lgh add 101216
DDX_Check(pDX, IDC_CHK_EXTTEXT, m_bDimOnExtent);
DDX_Check(pDX, IDC_CHK_MORE_CUT, m_bMoreCut);
DDX_Check(pDX, IDC_CHK_ADD_TURN, m_bAddTurn);
DDX_Control(pDX, IDC_CMB_DIMTEXT_STYLE, m_cmbDimStyle);
//}}AFX_DATA_MAP
}
// [11/12/2007 nsh]-------------------
void CIndexDimDlg::ShowFixAngle()
{
this->UpdateData(TRUE);
if(m_iIndexType==0)
{
this->GetDlgItem(IDC_COMBO1)->ShowWindow(SW_SHOW); // 固定角度
this->GetDlgItem(IDC_CHECK1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_ADD_INDEX)->ShowWindow(SW_SHOW); // sg add 090122,索引范围
GetDlgItem(IDC_CHK_ADD_TURN)->ShowWindow(SW_HIDE); // lgh add 101216
GetDlgItem(IDC_CHK_MORE_CUT)->ShowWindow(SW_HIDE); // lgh ...
}
else if(m_iIndexType==1)
{
this->GetDlgItem(IDC_COMBO1)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_CHECK1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_ADD_INDEX)->ShowWindow(SW_HIDE); // sg add 090122
GetDlgItem(IDC_CHK_ADD_TURN)->ShowWindow(SW_SHOW); // lgh add 101216
GetDlgItem(IDC_CHK_MORE_CUT)->ShowWindow(SW_SHOW); // lgh ...
}
this->UpdateData(FALSE);
}//---------------------------------------
BEGIN_MESSAGE_MAP(CIndexDimDlg, CBaseTextDlg)
//{{AFX_MSG_MAP(CIndexDimDlg)
ON_BN_CLICKED(IDC_CHECK1, OnCheckAngle)
// [11/12/2007 nsh]
ON_BN_CLICKED(IDC_SECT_RADIO,ShowFixAngle)
ON_BN_CLICKED(IDC_INDEX_RADIO,ShowFixAngle)
//-----------------------
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CIndexDimDlg message handlers
BOOL CIndexDimDlg::OnInitDialog()
{
CBaseTextDlg::OnInitDialog();
// [11/12/2007 nsh]
if(m_bFixAngle)
{
this->GetDlgItem(IDC_COMBO1)->EnableWindow(m_bFixAngle);
this->UpdateData(FALSE);
}
else
{
this->GetDlgItem(IDC_COMBO1)->EnableWindow(m_bFixAngle);
this->UpdateData(FALSE);
}
if(m_iIndexType==0)
{
if (!m_bModeless)
{
this->GetDlgItem(IDC_COMBO1)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_CHECK1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_ADD_INDEX)->ShowWindow(SW_HIDE);
}
else
{
this->GetDlgItem(IDC_COMBO1)->ShowWindow(SW_SHOW);
this->GetDlgItem(IDC_CHECK1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_ADD_INDEX)->ShowWindow(SW_SHOW);
}
GetDlgItem(IDC_CHK_ADD_TURN)->ShowWindow(SW_HIDE); // lgh add 101216
GetDlgItem(IDC_CHK_MORE_CUT)->ShowWindow(SW_HIDE); // lgh ...
}
else if(m_iIndexType==1)
{
this->GetDlgItem(IDC_COMBO1)->ShowWindow(SW_HIDE);
this->GetDlgItem(IDC_CHECK1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_ADD_INDEX)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CHK_ADD_TURN)->ShowWindow(SW_SHOW); // lgh add 101216
GetDlgItem(IDC_CHK_MORE_CUT)->ShowWindow(SW_SHOW); // lgh ...
}
//////////////////////////////////////////////////
LoadHisText();
LoadDimTextStyle(); // lgh add 101216,初始化标注文字样式。
// sg modify 120706,增加一个判断,如果当前记忆的样式没有的话,那么使用上华固定的文字样式
//m_cmbDimStyle.SetCurSel(m_cmbDimStyle.FindString(0, m_strDimStyle));
int nRet = m_cmbDimStyle.FindStringExact(0, m_strDimStyle);
if (nRet < 0) // 当前图纸没有此样式
{
nRet = m_cmbDimStyle.FindStringExact(0, _T("_TCH_LABEL"));
}
m_cmbDimStyle.SetCurSel(nRet);
m_comboInputText.SetFocus();
UpdateVisible(!m_bEditObj);
return FALSE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
// Modify by lcf On 2005-07-05
CWnd* CIndexDimDlg::GetCurWnd()
{
UpdateData(TRUE);
CWnd *pWnd = this->GetFocus();
CWnd *pWnd2 = NULL;
if(m_comboInputText.m_hWnd == pWnd->GetParent()->m_hWnd) {
pWnd2 = GetDlgItem(IDC_COMBO_INPUTTEXT); // 把CWnd 回传给基类
m_strInputText = m_strInputUp;
}
else if(m_comboInputText1.m_hWnd == pWnd->GetParent()->m_hWnd) {
pWnd2 = GetDlgItem(IDC_COMBO_INPUTTEXT1); // 把CWnd 回传给基类
m_strInputText = m_strInputDown;
}
else
{
int nSel = m_comboInputText.GetWindowTextLength();
m_comboInputText.SetEditSel(nSel, nSel);
pWnd2 = GetDlgItem(IDC_COMBO_INPUTTEXT);
}
return(pWnd2);
}
void CIndexDimDlg::UpdateInputText()
{
CWnd *pWnd = this->GetFocus();
if(m_comboInputText.m_hWnd == pWnd->GetParent()->m_hWnd) {
m_strInputUp = m_strInputText;
}
if(m_comboInputText1.m_hWnd == pWnd->GetParent()->m_hWnd) {
m_strInputDown = m_strInputText;
}
UpdateData(FALSE);
}
void CIndexDimDlg::LoadDimTextStyle()
{
XSymbolList lstStyle(_T("STYLE"));
for (int m =0; m < lstStyle.Length(); m++)
m_cmbDimStyle.AddString(lstStyle[m]);
}
void CIndexDimDlg::OnOK()
{
AddToRecent();
CBaseTextDlg::OnOK();
}
// Add by lcf on 20050708
void CIndexDimDlg::AddToRecent()
{
UpdateData(TRUE);
{
int len = m_lstHistory.Length();
TCHAR strTmpPath[256] = _T("");
GetTempPath(255, strTmpPath);
_tcscat(strTmpPath, _T("index.his"));
#if (ADS>15)
std::
#endif
ofstream out(strTmpPath);
if(m_strInputUp != _T("")) {
out << (const char *)_AS(m_strInputUp) << "\n";
int index = m_lstHistory.Index(m_strInputUp);
if(index >= 0) {
m_lstHistory.Remove(index);
len --;
}
if(len > maxHisList-1) len = maxHisList - 1;
}
for(int i=0; i < len; i++)
out << _AS(m_lstHistory[i]) << "\n";
}
{
int len1 = m_lstHistory1.Length();
TCHAR strTmpPath1[256] = _T("");
GetTempPath(255, strTmpPath1);
_tcscat(strTmpPath1, _T("index1.his"));
#if (ADS>15)
std::
#endif
ofstream out1(strTmpPath1);
if(m_strInputDown != _T("")) {
out1 << (const char *)_AS(m_strInputDown) << "\n";
int index = m_lstHistory1.Index(m_strInputDown);
if(index >= 0) {
m_lstHistory1.Remove(index);
len1 --;
}
if(len1 > maxHisList-1) len1 = maxHisList - 1;
}
for(int i=0; i < len1; i++)
out1 <<_AS(m_lstHistory1[i])<< "\n";
}
m_lstHistory.Reset();
m_lstHistory1.Reset();
m_comboInputText.ResetContent();
m_comboInputText1.ResetContent();
LoadHisText();
}
void CIndexDimDlg::LoadHisText()
{
{
TCHAR strTmpPath[256] = _T("");
GetTempPath(255, strTmpPath);
_tcscat(strTmpPath, _T("index.his"));
#if (ADS>15)
std::
#endif
ifstream in(strTmpPath);
while(!(!in)) {
char line[256];
in.getline(line, 255);
if(!in) break;
m_lstHistory.Append(tstrnew(TString(line)));
}
for (int m =0; m < m_lstHistory.Length(); m++)
m_comboInputText.AddString(m_lstHistory[m]);
}
{
TCHAR strTmpPath[256] = _T("");
GetTempPath(255, strTmpPath);
_tcscat(strTmpPath, _T("index1.his"));
#if (ADS>15)
std::
#endif
ifstream in(strTmpPath);
while(!(!in)) {
char line[256];
in.getline(line, 255);
if(!in) break;
m_lstHistory1.Append(tstrnew(TString(line)));
}
for (int m =0; m < m_lstHistory1.Length(); m++)
m_comboInputText1.AddString(m_lstHistory1[m]);
}
UpdateData(false);
}
// Add by lcf on 20050713,设置“指向索引”、“剖切索引”是否可见
void CIndexDimDlg::UpdateVisible(BOOL bVisible)
{
if (bVisible)
{
GetDlgItem(IDC_INDEX_RADIO)->ShowWindow(SW_SHOW); // 指向索引
GetDlgItem(IDC_SECT_RADIO)->ShowWindow(SW_SHOW); // 剖切索引
}
else
{
GetDlgItem(IDC_INDEX_RADIO)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_SECT_RADIO)->ShowWindow(SW_HIDE);
}
}
// sg add 090415,设置“添加索引范围”是否可见
void CIndexDimDlg::SetSourceExtentVisible(BOOL bVisible)
{
if (bVisible && m_iIndexType==0)
GetDlgItem(IDC_ADD_INDEX)->ShowWindow(SW_SHOW);
else
GetDlgItem(IDC_ADD_INDEX)->ShowWindow(SW_HIDE);
}
void CIndexDimDlg::SetSectRunView(BOOL bVisible)
{
if (bVisible && m_iIndexType==1)
{
GetDlgItem(IDC_CHK_MORE_CUT)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_CHK_ADD_TURN)->ShowWindow(SW_SHOW);
}
else
{
GetDlgItem(IDC_CHK_MORE_CUT)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CHK_ADD_TURN)->ShowWindow(SW_HIDE);
}
}
double CIndexDimDlg::GetUpDimLen()
{
AcDbObjectId textStyle = GetTextStyleId(m_strFontStyle);
if(!textStyle)
return 0.0;
double dHei = _tstof(m_strHeight);
// 初始化宽度,按照单字节计算
int iMoreText = m_strInputUp.IsEmpty() ? 0 : 1; // 如果为空则不计算多余长度,否则多计算一个字符的长度
return CalcTextLen(m_strInputUp, textStyle, dHei, iMoreText);
}
double CIndexDimDlg::GetDownDimLen()
{
AcDbObjectId textStyle = GetTextStyleId(m_strFontStyle);
if(!textStyle)
return 0.0;
double dHei = _tstof(m_strHeight);
// 初始化宽度,按照单字节计算
int iMoreText = m_strInputDown.IsEmpty() ? 0 : 1;
return CalcTextLen(m_strInputDown, textStyle, dHei, iMoreText);
}
BOOL CIndexDimDlg::GetExtendsProp(CString &strUp, CString &strDown, double &dHei, AcDbObjectId &textStyle)
{
UpdateData();
if (m_bDimOnExtent)
{
strUp = m_strInputUp;
strDown = m_strInputDown;
textStyle = GetTextStyleId(m_strFontStyle);
if(!textStyle)
return FALSE;
dHei = _tstof(m_strHeight);
return TRUE;
}
return FALSE;
}
void CIndexDimDlg::Dlg2Obj(TDbSymbIndexPointer *pText)
{
/*
AcDbObjectId idTextStyle = GetTextStyleId(sTextStyle);
if (!idTextStyle)
return;
pText->SetTextStyleId(idTextStyle);
g_nHeight = _tstof(m_strHeight);
pText->SetTextHeight(g_nHeight);
*/
CBaseTextDlg::Dlg2Obj(pText);
pText->SetText1(m_strInputUp);
pText->SetText2(m_strInputDown);
pText->SetIndexLabel(m_strIndex);
pText->SetDrawingLabel(m_strDrawing);
if (m_bModeless) // add by whl on 060324,设置索引符号类型
pText->SetIndexPointer(m_iIndexType==0);
// sg add 090402,增加文字相对于基线的对齐方式
TDbSymbIndexPointer::TSymbIPTextAlign nAlign =
(TDbSymbIndexPointer::TSymbIPTextAlign)(m_nTextAlign + 1);
pText->SetTextAlign(nAlign);
AcDbObjectId idFontStyle = GetTextStyleId(m_strFontStyle);
if (!idFontStyle)
return;
pText->SetDimTextStyle(idFontStyle);
AcDbObjectId idCircleTextStyle = GetTextStyleId(m_strDimStyle);
if (!idCircleTextStyle)
return;
pText->SetTextStyleId(idCircleTextStyle);
}
void CIndexDimDlg::Obj2Dlg(TDbSymbIndexPointer *pText)
{
CBaseTextDlg::Obj2Dlg(pText);
m_strInputUp = pText->GetText1();
m_strInputDown = pText->GetText2();
m_strDrawing = pText->GetDrawingLabel();
m_strIndex = pText->GetIndexLabel();
// sg add 090402,增加文字相对于基线的对齐方式
m_nTextAlign = (int)(pText->GetTextAlign() - 1);
m_strDimStyle = m_strFontStyle;
// lgh add 101224,标注文字样式
AcDbObjectId idDimStyle = pText->GetDimTextStyle();
OPENOBJ_BEGIN(idDimStyle, AcDb::kForRead, AcDbTextStyleTableRecord, pStyle);
ASSERT(pStyle);
const TCHAR* pName = NULL;
if (pStyle->getName(pName) == Acad::eOk && pName != NULL)
m_strFontStyle = pName;
else
AfxMessageBox(_T("文字风格已删除!"));
OPENOBJ_END();
// lgh add 101224,是否在延长线上标注文字
if (pText->GetDimPos() == 1)
m_bDimOnExtent = TRUE;
else
m_bDimOnExtent = FALSE;
}
// add by cwk on 060705
void CIndexDimDlg::OnCheckAngle()
{
// TODO: Add your control notification handler code here
if (m_bFixAngle)
{
m_bFixAngle = false;
/*GetDlgItem(IDC_EDIT_ANGLE)->EnableWindow(FALSE);*/
GetDlgItem(IDC_COMBO1)->EnableWindow(FALSE);// [11/12/2007 nsh]
}
else
{
m_bFixAngle = true;
/*GetDlgItem(IDC_EDIT_ANGLE)->EnableWindow();*/
GetDlgItem(IDC_COMBO1)->EnableWindow();// [11/12/2007 nsh]
}
}
CEditIndexDimDlg::CEditIndexDimDlg(CWnd* pParent /*=NULL*/)
: CIndexDimDlg(TRUE,CEditIndexDimDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CEditIndexDimDlg)
//}}AFX_DATA_INIT
}
void CEditIndexDimDlg::DoDataExchange(CDataExchange* pDX)
{
CIndexDimDlg::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEditIndexDimDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEditIndexDimDlg, CIndexDimDlg)
//{{AFX_MSG_MAP(CEditIndexDimDlg)
ON_BN_CLICKED(IDC_BTN_ADD_CUT, OnAddCut)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CEditIndexDimDlg::AttachObject(TDbSymbIndexPointer *pText)
{
m_pTextAttached = pText;
}
BOOL CEditIndexDimDlg::OnInitDialog()
{
ASSERT(m_pTextAttached != NULL);
CBaseTextDlg::OnInitDialog();
//////////////////////////////////////////////////
LoadHisText();
LoadDimTextStyle(); // lgh add 101216,初始化标注文字样式。
m_cmbDimStyle.SetCurSel(m_cmbDimStyle.FindString(0, m_strDimStyle));
m_comboInputText.SetFocus();
UpdateVisible(!m_bEditObj);
if (m_pTextAttached->IsIndexPointer())
{
GetDlgItem(IDC_BTN_ADD_CUT)->ShowWindow(SW_HIDE);
}
else
{
GetDlgItem(IDC_BTN_ADD_CUT)->ShowWindow(SW_NORMAL);
}
return TRUE;
}
void AddCutLineForIndexPointer(TDbSymbIndexPointer *pText);
void CEditIndexDimDlg::OnAddCut()
{
GetParent()->EnableWindow(TRUE);
GetParent()->SetFocus();
GetParent()->SetActiveWindow();
ShowWindow(SW_HIDE);
// 动态绘制命令
AddCutLineForIndexPointer(m_pTextAttached);
m_pTextAttached->draw();
// 调用CAD窗口立即更新
acedGetAcadDwgView()->Invalidate();
acedGetAcadDwgView()->UpdateWindow();
// 显示对话框
GetParent()->EnableWindow(FALSE);
EnableWindow(TRUE);
SetActiveWindow();
ShowWindow(SW_SHOW);
}
void CEditIndexDimDlg::AdjustExtentProp()
{
TDbSymbIndexPointer *pText = m_pTextAttached;
// if (!pText->HasExtendLine() && m_bDimOnExtent)
if (m_bDimOnExtent)
{ // 原先没有延长线,现在需要表在延长线上,需要计算延长线的长度,其他不管
CString sUpDim = m_strInputUp, sDownDim = m_strInputDown;
AcDbObjectId idDim = GetTextStyleId(m_strDimStyle);
if (!idDim)
return;
double dHei = _tstof(m_strHeight);
double dUpLen = 0.0, dDownLen = 0.0;
if (pText->IsSingleLineText(true))
{
dUpLen = CalcTextLen(sUpDim, idDim, dHei, 1);
}
else
{
dUpLen = CalcMTextLen(sUpDim, idDim, dHei, pText->GetTextWidthUp(), 1);
}
if (pText->IsSingleLineText(false))
{
dDownLen = CalcTextLen(sDownDim, idDim, dHei, 1);
}
else
{
dDownLen = CalcMTextLen(sDownDim, idDim, dHei, pText->GetTextWidthDown(), 1);
}
double dLen = max(dUpLen, dDownLen)/pText->GetPScale();
const double dMinLen = TDbSymbIndexPointer::GetDefaultExtendLineLen();
if (dLen < dMinLen)
dLen = dMinLen;
if (pText->GetExtendLineLen() < dLen)
pText->SetExtendLineLen(dLen);
}
else
pText->SetExtendLineLen(0.0);
pText->SetDimPos(m_bDimOnExtent ? 1 : 0);
}