/* Copyright (c) 2024 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved. */ /*--------------------------------------------------------------------*\ Pro/TOOLKIT includes \*--------------------------------------------------------------------*/ #include "ProToolkit.h" #include "ProMdl.h" #include "ProDisplist.h" #include "ProMessage.h" #include "ProMenu.h" #include "ProUtil.h" /*--------------------------------------------------------------------*\ Pro/DEVELOP includes \*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*\ C System includes \*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*\ Application includes \*--------------------------------------------------------------------*/ #include "TestError.h" #include "TestGraphics.h" #include "UtilMatrix.h" #include "UtilMessage.h" /*--------------------------------------------------------------------*\ Macros \*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*\ Data types \*--------------------------------------------------------------------*/ typedef enum tag_DispListActions { DISP_LIST_DEL = 0, DISP_LIST_CREATE, DISP_LIST_DISPLAY } DispListActions; /*--------------------------------------------------------------------*\ Application global/external data \*--------------------------------------------------------------------*/ /*---------------------------------------------------------------------*\ Functions declaration \*---------------------------------------------------------------------*/ int ProTest2dDisplistMenu( void*, int ); int ProTest2dDisplist( void*, int ); int ProTest3dDisplistMenu( void*, int ); int ProTest3dDisplist( void*, int ); int ProTestDisplistInvalidate( ProMdl*, int ); int ProTestDisplistDraw( void ); int ProTestEntityDrawMenu( void* p_dummy, int int_dummy ); /*---------------------------------------------------------------------*\ Function: ProTest2dDisplistMenu() Purpose: On-button function. Set up the display list menu Returns: 0 - success; -1 - error. Now ignored. \*---------------------------------------------------------------------*/ int ProTest2dDisplistMenu( void* p_dummy, int int_dummy ) { ProError status; int menu_id; /* The identifier of the created menu */ int action; ProMdl part; /* Get current Pro/E object */ status = ProMdlCurrentGet( &part ); TEST_CALL_REPORT( "ProMdlCurrentGet()", "ProTest2dDisplistMenu()", status, status != PRO_TK_NO_ERROR); if( status == PRO_TK_BAD_CONTEXT ) { ProUtilMsgPrint( "gen", "TEST %0s", "An object is required" ); return (PRO_TK_GENERAL_ERROR); } /*---------------------------------*\ Create new menu Disp List \*---------------------------------*/ /* Load base menu from file */ status = ProMenuFileRegister( (char*)"Disp List", (char*)"tkdlist.mnu", &menu_id ); TEST_CALL_REPORT( "ProMenuFileRegister()", "ProTest2dDisplistMenu()", status, status != PRO_TK_NO_ERROR ); /* Define menu buttons */ ProMenubuttonActionSet( (char*)"Disp List", (char*)"Cre DispList", (ProMenubuttonAction)ProTest2dDisplist, NULL, DISP_LIST_CREATE ); ProMenubuttonActionSet( (char*)"Disp List",(char*) "Del DispList", (ProMenubuttonAction)ProTest2dDisplist, NULL, DISP_LIST_DEL ); ProMenubuttonActionSet( (char*)"Disp List",(char*) "Disp DispList", (ProMenubuttonAction)ProTest2dDisplist, NULL, DISP_LIST_DISPLAY ); ProMenubuttonActionSet( (char*)"Disp List",(char*) "Invld DispList", (ProMenubuttonAction)ProTestDisplistInvalidate, &part, 0 ); ProMenubuttonActionSet((char*) "Disp List",(char*) "Done", (ProMenubuttonAction)ProMenuDelete, NULL, 0 ); ProMenubuttonActionSet((char*) "Disp List",(char*) "Disp List", (ProMenubuttonAction)ProMenuDelete, NULL, 0 ); /*--------------------------*\ Run menu Disp List \*--------------------------*/ status = ProMenuCreate( PROMENUTYPE_MAIN,(char*) "Disp List", &menu_id ); TEST_CALL_REPORT( "ProMenuCreate()", "ProTest2dDisplistMenu()", status, status != PRO_TK_NO_ERROR ); if( status == PRO_TK_NO_ERROR ) { status = ProMenuProcess((char*) "Disp List", &action ); TEST_CALL_REPORT( "ProMenuProcess()", "ProTest2dDisplistMenu()", status, status != PRO_TK_NO_ERROR ); } return (PRO_TK_NO_ERROR); } /*---------------------------------------------------------------------*\ Function: ProTest2dDisplist() Purpose: On-button function. Manipulate a 2D diplay list. Returns: 0 - success; Now ignored. \*---------------------------------------------------------------------*/ int ProTest2dDisplist( void* p_dummy, int option ) { ProError status; int id; /* The disp list id */ ProMatrix matrix; /* Points are in the object's csys */ status = ProWindowCurrentMatrixGet( matrix ); TEST_CALL_REPORT( "ProWindowCurrentMatrixGet()", "ProTest2dDisplist()", status, status != PRO_TK_NO_ERROR ); switch( option ) { case DISP_LIST_DEL: /* Delete */ /* Get the display list id */ ProUtilMsgPrint( "gen", "TEST %0s", "Enter the Display List id: " ); status = ProMessageIntegerRead( NULL, &id ); TEST_CALL_REPORT( "ProMessageIntegerRead()", "ProTest2dDisplist()", status, status != PRO_TK_NO_ERROR ); if( status != PRO_TK_NO_ERROR ) break; /* Delete the specified display list */ status = ProDisplist2dDelete( id ); TEST_CALL_REPORT( "ProDisplist2dDelete()", "ProTest2dDisplist()", status, status != PRO_TK_NO_ERROR ); break; case DISP_LIST_CREATE: /* Create */ /* Get the display list id */ ProUtilMsgPrint( "gen", "TEST %0s", "Enter the Display List id: "); status = ProMessageIntegerRead( NULL, &id ); TEST_CALL_REPORT( "ProMessageIntegerRead()", "ProTest2dDisplist()", status, status != PRO_TK_NO_ERROR ); if( status != PRO_TK_NO_ERROR ) break; status = ProDisplist2dCreate( id, matrix, (ProDisplistCallback)ProTestDisplistDraw ); TEST_CALL_REPORT( "ProDisplist2dCreate()", "ProTest2dDisplist()", status, status != PRO_TK_NO_ERROR ); /* bug in the function ProDisplist2dDisplay() */ status = ProDisplist2dDisplay( id, matrix ); TEST_CALL_REPORT( "ProDisplist2dDisplay()", "ProTest2dDisplist()", status, 0 ); break; case DISP_LIST_DISPLAY: /* Display */ /* Get the display list id */ ProUtilMsgPrint( "gen", "TEST %0s", "Enter the Display List id: "); status = ProMessageIntegerRead( NULL, &id ); TEST_CALL_REPORT( "ProMessageIntegerRead()", "ProTest2dDisplist()", status, status != PRO_TK_NO_ERROR ); if( status != PRO_TK_NO_ERROR ) break; /* bug in the function ProDisplist2dDisplay() */ status = ProDisplist2dDisplay( id, matrix ); TEST_CALL_REPORT( "ProDisplist2dDisplay()", "ProTest2dDisplist()", status, 0 ); break; default: break; } ProWindowRepaint( PRO_VALUE_UNUSED ); return (PRO_TK_NO_ERROR); } /*---------------------------------------------------------------------*\ Function: ProTest3dDisplistMenu() Purpose: On-button function. Set up the display list menu Returns: 0 - success; -1 - error. Now ignored. \*---------------------------------------------------------------------*/ int ProTest3dDisplistMenu( void* p_dummy, int int_dummy ) { ProError status; int menu_id; /* The identifier of the created menu */ int action; ProMdl part; /* Get current Pro/E object */ status = ProMdlCurrentGet( &part ); TEST_CALL_REPORT( "ProMdlCurrentGet()", "ProTest3dDisplistMenu()", status, status != PRO_TK_NO_ERROR); if( status == PRO_TK_BAD_CONTEXT ) { ProUtilMsgPrint( "gen", "TEST %0s", "An object is required" ); return (PRO_TK_GENERAL_ERROR); } /*---------------------------------*\ Create new menu Disp List \*---------------------------------*/ /* Load base menu from file */ status = ProMenuFileRegister( (char*)"Disp List", (char*)"tkdlist.mnu", &menu_id ); TEST_CALL_REPORT( "ProMenuFileRegister()", "ProTest3dDisplistMenu()", status, status != PRO_TK_NO_ERROR ); /* Define menu buttons */ ProMenubuttonActionSet( (char*)"Disp List", (char*)"Cre DispList", (ProMenubuttonAction)ProTest3dDisplist, NULL, DISP_LIST_CREATE ); ProMenubuttonActionSet( (char*)"Disp List", (char*)"Del DispList", (ProMenubuttonAction)ProTest3dDisplist, NULL, DISP_LIST_DEL ); ProMenubuttonActionSet( (char*)"Disp List", (char*)"Disp DispList", (ProMenubuttonAction)ProTest3dDisplist, NULL, DISP_LIST_DISPLAY ); ProMenubuttonActionSet( (char*)"Disp List", (char*)"Invld DispList", (ProMenubuttonAction)ProTestDisplistInvalidate, &part, 0 ); ProMenubuttonActionSet( (char*)"Disp List", (char*)"Done", (ProMenubuttonAction)ProMenuDelete, NULL, 0 ); ProMenubuttonActionSet( (char*)"Disp List", (char*)"Disp List", (ProMenubuttonAction)ProMenuDelete, NULL, 0 ); /*--------------------------*\ Run menu Disp List \*--------------------------*/ status = ProMenuCreate( PROMENUTYPE_MAIN, (char*)"Disp List", &menu_id ); TEST_CALL_REPORT( "ProMenuCreate()", "ProTest3dDisplistMenu()", status, status != PRO_TK_NO_ERROR ); if( status == PRO_TK_NO_ERROR ) { status = ProMenuProcess( (char*)"Disp List", &action ); TEST_CALL_REPORT( "ProMenuProcess()", "ProTest3dDisplistMenu()", status, status != PRO_TK_NO_ERROR ); } return (PRO_TK_NO_ERROR); } /*---------------------------------------------------------------------*\ Function: ProTest3dDisplist() Purpose: On-button function. Manipulate a 3D diplay list. Returns: 0 - success; Now ignored. \*---------------------------------------------------------------------*/ int ProTest3dDisplist( void* p_dummy, int option ) { ProError status; int id; /* The disp list id */ ProMatrix matrix; /* Points are in the object's csys */ status = ProWindowCurrentMatrixGet( matrix ); TEST_CALL_REPORT( "ProWindowCurrentMatrixGet()", "ProTest3dDisplist()", status, status != PRO_TK_NO_ERROR ); switch( option ) { case DISP_LIST_DEL: /* Delete */ /* Get the display list id */ ProUtilMsgPrint( "gen", "TEST %0s", "Enter the Display List id: " ); status = ProMessageIntegerRead( NULL, &id ); TEST_CALL_REPORT( "ProMessageIntegerRead()", "ProTest3dDisplist()", status, status != PRO_TK_NO_ERROR ); if( status != PRO_TK_NO_ERROR ) break; /* Delete the specified display list */ status = ProDisplist3dDelete( id ); TEST_CALL_REPORT( "ProDisplist3dDelete()", "ProTest3dDisplist()", status, status != PRO_TK_NO_ERROR ); break; case DISP_LIST_CREATE: /* Create */ /* Get the display list id */ ProUtilMsgPrint( "gen", "TEST %0s", "Enter the Display List id: "); status = ProMessageIntegerRead( NULL, &id ); TEST_CALL_REPORT( "ProMessageIntegerRead()", "ProTest3dDisplist()", status, status != PRO_TK_NO_ERROR ); if( status != PRO_TK_NO_ERROR ) break; status = ProDisplist3dCreate( id, (ProDisplistCallback)ProTestDisplistDraw ); TEST_CALL_REPORT( "ProDisplist3dCreate()", "ProTest3dDisplist()", status, status != PRO_TK_NO_ERROR ); status = ProDisplist3dDisplay( id, matrix ); TEST_CALL_REPORT( "ProDisplist3dDisplay()", "ProTest3dDisplist()", status, status != PRO_TK_NO_ERROR ); break; case DISP_LIST_DISPLAY: /* Display */ /* Get the display list id */ ProUtilMsgPrint( "gen", "TEST %0s", "Enter the Display List id: "); status = ProMessageIntegerRead( NULL, &id ); TEST_CALL_REPORT( "ProMessageIntegerRead()", "ProTest3dDisplist()", status, status != PRO_TK_NO_ERROR ); if( status != PRO_TK_NO_ERROR ) break; status = ProDisplist3dDisplay( id, matrix ); TEST_CALL_REPORT( "ProDisplist3dDisplay()", "ProTest3dDisplist()", status, status != PRO_TK_NO_ERROR ); break; default: break; } ProWindowRepaint( PRO_VALUE_UNUSED ); return (PRO_TK_NO_ERROR); } /*---------------------------------------------------------------------*\ Function: ProTestDisplistInvalidate() Purpose: On-button function. Invalidate the 2 or 3 dimensional display list Returns: 0 - success; -1 - error. Now ignored. \*---------------------------------------------------------------------*/ int ProTestDisplistInvalidate( ProMdl* p_model, int int_dummy ) { ProError status; status = ProDisplistInvalidate( *p_model ); TEST_CALL_REPORT( "ProDisplistInvalidate()", "ProTestDisplistInvalidate()", status, status != PRO_TK_NO_ERROR ); return (status == PRO_TK_NO_ERROR) ? 0 : (PRO_TK_GENERAL_ERROR); } /*---------------------------------------------------------------------*\ Function: ProTestDisplistDraw() Purpose: Call some graphics functions to create the disp list Returns: PRO_TK_NO_ERROR - success; \*---------------------------------------------------------------------*/ int ProTestDisplistDraw( void ) { TEST_CALL_REPORT("ProDisplistCallback()", "ProTestDisplistDraw()", (ProError)0, 0); ProTestEntityDrawMenu (NULL, 0); return PRO_TK_NO_ERROR; }