// 鼠标按下捕获器 void CDrawWin::mousePressEvent(QMouseEvent* event) { switch(m_curMenuStatus) { case MENU_STATUS_NONE: { qDebug() << __func__ << " " << __LINE__ ; bool bHit,bCtrlHit; m_curShape = HitTest(event,bHit,bCtrlHit); if(m_curShape != NULL) { if(bCtrlHit) { QApplication::setOverrideCursor(Qt::PointingHandCursor); }else { if(bHit) { QApplication::setOverrideCursor(Qt::ClosedHandCursor); } } m_curShape->mousePressEvent(event); } } break; case MENU_STATUS_LINE: { process_line(event); } break; case MENU_STATUS_CIRCLE: { process_circle(event); } break; case MENU_STATUS_RECTANGE: { qDebug() << __func__ << " " << __LINE__ ; process_rectangle(event); } break; case MENU_STATUS_POLYGON: { qDebug() << __func__ << " " << __LINE__ ; process_polygon(event); } break; case MENU_STATUS_ANGLE: { process_angle(event); } break; case MENU_STATIS_DEL: { bool bHit,bCtrlHit; m_curShape = HitTest(event,bHit,bCtrlHit); if(m_curShape != NULL) { if(m_curShape == m_shapeList[0]) { QMessageBox msgBox; msgBox.setText("Can not delete the scale."); msgBox.exec(); break; } if(bHit) { if(m_curShape == m_shapeList[m_shapeList.size() - 1]) { m_shapeList.pop_back(); QApplication::setOverrideCursor(Qt::ArrowCursor); update(); }else { QVector<CShape*>::iterator it = m_shapeList.begin(); for(;it != m_shapeList.end();it++) { if((*it) == m_curShape) { m_shapeList.erase(it); QApplication::setOverrideCursor(Qt::ArrowCursor); update(); } } } } } } break; } }
int processOperator(Drawing d, char *op) { int res = 0; // Look for which operator it is and then process it for (int i = 0; i < N_OPS_AVAILABLE; i++) { if (strlen(op) == strlen(OPS_AVAILABLE[i]) && strcmp(op, OPS_AVAILABLE[i]) == 0) { switch (i) { case 0: res = process_sum(d->stack); break; case 1: res = process_subtraction(d->stack); break; case 2: res = process_multiplication(d->stack); break; case 3: res = process_division(d->stack); break; case 4: res = process_pi(d->stack); break; case 5: res = process_sin(d->stack); break; case 6: res = process_cos(d->stack); break; case 7: res = process_deg(d->stack); break; case 8: res = process_cm(d->stack); break; case 9: res = process_mm(d->stack); break; case 10: res = process_pt(d->stack); break; case 11: res = process_copy(d->stack); break; case 12: res = process_translate(d->stack); break; case 13: res = process_mtranslate(d->stack); break; case 14: res = process_rotate(d->stack); break; case 15: res = process_mrotate(d->stack); break; case 16: res = process_line(d); break; case 17: res = process_circle(d); break; case 18: res = process_fillcircle(d); break; case 19: res = process_show(d->stack); break; case 20: res = process_tan(d->stack); break; case 21: res = process_arcsin(d->stack); break; case 22: res = process_arccos(d->stack); break; case 23: res = process_arctan(d->stack); break; case 24: res = process_eraseline(d); break; case 25: res = process_e(d->stack); break; case 26: res = process_lg(d->stack); break; case 27: res = process_ln(d->stack); break; case 28: res = process_log(d->stack); break; case 29: res = process_abs(d->stack); break; default: res = throw_error(op, PROCESSOR_ERROR_ILEGAL_OP); break; } break; } } return res; }