//---------------------------------------------------------
void CVIEW_Map_3D::On_Command(wxCommandEvent &event)
{
    switch( event.GetId() )
    {
    default:
        return;

    //-----------------------------------------------------
    case ID_CMD_MAP3D_PARAMETERS:
    {
        Parameters_Update(true);

        if( DLG_Parameters(&m_Parameters) )
        {
            Parameters_Update(false);
        }
    }
    return;

    //-----------------------------------------------------
    case ID_CMD_MAP3D_SAVE:
    {
        int				FileType;
        wxString		FileName;
        CSG_Parameters	P(NULL, _TL("Image Resolution"), _TL(""));

        P.Add_Value(NULL, "NX", _TL("Width" ), _TL(""), PARAMETER_TYPE_Int, m_pPanel->GetSize().x, 1, true);
        P.Add_Value(NULL, "NY", _TL("Height"), _TL(""), PARAMETER_TYPE_Int, m_pPanel->GetSize().y, 1, true);

        if( DLG_Image_Save(FileName, FileType) && DLG_Parameters(&P) )
        {
            Set_Buisy_Cursor(true);

            if( P("NX")->asInt() == m_pPanel->GetSize().x
                    &&  P("NY")->asInt() == m_pPanel->GetSize().y )
            {
                m_pPanel->Save_asImage(&FileName);
            }
            else
            {
                wxSize	Size(m_pPanel->GetSize());

                Freeze();
                m_pPanel->SetSize(P("NX")->asInt(), P("NY")->asInt());
                m_pPanel->Save_asImage(&FileName);
                m_pPanel->SetSize(Size);
                Thaw();
            }

            Set_Buisy_Cursor(false);
        }
    }
    return;

    //-----------------------------------------------------
    case ID_CMD_MAP3D_SEQ_POS_EDIT:
    {
        DLG_Table(_TL("Edit 3D-View Sequencer Positions"), m_pPanel->m_Parameters("PLAY")->asTable());
    }
    return;

    //-----------------------------------------------------
    case ID_CMD_MAP3D_SEQ_POS_ADD    :
        m_pPanel->Play_Pos_Add();
        return;
    case ID_CMD_MAP3D_SEQ_POS_DEL    :
        m_pPanel->Play_Pos_Del();
        return;
    case ID_CMD_MAP3D_SEQ_POS_DEL_ALL:
        m_pPanel->Play_Pos_Clr();
        return;
    case ID_CMD_MAP3D_SEQ_PLAY       :
        m_pPanel->Play_Once   ();
        return;
    case ID_CMD_MAP3D_SEQ_PLAY_LOOP  :
        m_pPanel->Play_Loop   ();
        return;
    case ID_CMD_MAP3D_SEQ_SAVE       :
    {
        int			Type;
        wxString	File;

        if( DLG_Image_Save(File, Type) )
        {
            m_pPanel->m_Parameters("PLAY_FILE")->Set_Value(File.wc_str());
            m_pPanel->Play_Save();
        }
    }
    return;

    //-----------------------------------------------------
    case ID_CMD_MAP3D_ROTATE_X_LESS  :
        m_pPanel->Get_Projector().Set_xRotation(m_pPanel->Get_Projector().Get_xRotation() + 4.0 * M_DEG_TO_RAD);
        break;
    case ID_CMD_MAP3D_ROTATE_X_MORE  :
        m_pPanel->Get_Projector().Set_xRotation(m_pPanel->Get_Projector().Get_xRotation() - 4.0 * M_DEG_TO_RAD);
        break;
    case ID_CMD_MAP3D_ROTATE_Y_LESS  :
        m_pPanel->Get_Projector().Set_yRotation(m_pPanel->Get_Projector().Get_yRotation() + 4.0 * M_DEG_TO_RAD);
        break;
    case ID_CMD_MAP3D_ROTATE_Y_MORE  :
        m_pPanel->Get_Projector().Set_yRotation(m_pPanel->Get_Projector().Get_yRotation() - 4.0 * M_DEG_TO_RAD);
        break;
    case ID_CMD_MAP3D_ROTATE_Z_LESS  :
        m_pPanel->Get_Projector().Set_zRotation(m_pPanel->Get_Projector().Get_zRotation() + 4.0 * M_DEG_TO_RAD);
        break;
    case ID_CMD_MAP3D_ROTATE_Z_MORE  :
        m_pPanel->Get_Projector().Set_zRotation(m_pPanel->Get_Projector().Get_zRotation() - 4.0 * M_DEG_TO_RAD);
        break;

    case ID_CMD_MAP3D_SHIFT_X_LESS   :
        m_pPanel->Get_Projector().Set_xShift(m_pPanel->Get_Projector().Get_xShift() - 10.0);
        break;
    case ID_CMD_MAP3D_SHIFT_X_MORE   :
        m_pPanel->Get_Projector().Set_xShift(m_pPanel->Get_Projector().Get_xShift() + 10.0);
        break;
    case ID_CMD_MAP3D_SHIFT_Y_LESS   :
        m_pPanel->Get_Projector().Set_yShift(m_pPanel->Get_Projector().Get_yShift() + 10.0);
        break;
    case ID_CMD_MAP3D_SHIFT_Y_MORE   :
        m_pPanel->Get_Projector().Set_yShift(m_pPanel->Get_Projector().Get_yShift() - 10.0);
        break;
    case ID_CMD_MAP3D_SHIFT_Z_LESS   :
        m_pPanel->Get_Projector().Set_zShift(m_pPanel->Get_Projector().Get_zShift() - 10.0);
        break;
    case ID_CMD_MAP3D_SHIFT_Z_MORE   :
        m_pPanel->Get_Projector().Set_zShift(m_pPanel->Get_Projector().Get_zShift() + 10.0);
        break;

//	case ID_CMD_MAP3D_DRAW_BOX       :	m_pPanel->m_Parameters("DRAW_BOX"    )->Set_Value(m_pPanel->m_Parameters("DRAW_BOX"    )->asBool() ==  true    );	break;
    case ID_CMD_MAP3D_STEREO         :
        m_pPanel->m_Parameters("STEREO"      )->Set_Value(m_pPanel->m_Parameters("STEREO"      )->asBool() == false    );
        break;
    case ID_CMD_MAP3D_STEREO_LESS    :
        m_pPanel->m_Parameters("STEREO_DIST" )->Set_Value(m_pPanel->m_Parameters("STEREO_DIST" )->asDouble() - 2       );
        break;
    case ID_CMD_MAP3D_STEREO_MORE    :
        m_pPanel->m_Parameters("STEREO_DIST" )->Set_Value(m_pPanel->m_Parameters("STEREO_DIST" )->asDouble() + 2       );
        break;
    case ID_CMD_MAP3D_CENTRAL        :
        m_pPanel->m_Parameters("CENTRAL"     )->Set_Value(m_pPanel->m_Parameters("CENTRAL"     )->asBool() == false    );
        break;
    case ID_CMD_MAP3D_CENTRAL_LESS   :
        m_pPanel->m_Parameters("CENTRAL_DIST")->Set_Value(m_pPanel->m_Parameters("CENTRAL_DIST")->asDouble() - 50      );
        break;
    case ID_CMD_MAP3D_CENTRAL_MORE   :
        m_pPanel->m_Parameters("CENTRAL_DIST")->Set_Value(m_pPanel->m_Parameters("CENTRAL_DIST")->asDouble() + 50      );
        break;
    case ID_CMD_MAP3D_INTERPOLATED   :
        m_pPanel->m_Parameters("DRAPE_MODE"  )->Set_Value(m_pPanel->m_Parameters("DRAPE_MODE"  )->asInt() == 0 ? 1 : 0 );
        break;

    case ID_CMD_MAP3D_EXAGGERATE_LESS:
        m_pPanel->m_zScale	-= 0.5;
        break;
    case ID_CMD_MAP3D_EXAGGERATE_MORE:
        m_pPanel->m_zScale	+= 0.5;
        break;

//	case ID_CMD_MAP3D_SRC_RES_LESS   :	m_pPanel->;	break;
//	case ID_CMD_MAP3D_SRC_RES_MORE   :	m_pPanel->;	break;
    }

    Parameters_Update(true);
    m_pPanel->Update_View();
}
Example #2
0
//---------------------------------------------------------
bool CVIEW_Map_3D::_Play(void)
{
	int				iRecord, iStep, iFrame	= 0, type;

	double			xRotate[2], yRotate[2], zRotate[2],
					xShift [2], yShift [2], zShift [2],
					Exagg  [2], Central[2], Steps  [2],
					d;

	wxString		file;

	CSG_Table_Record	*pRecord;

	//-----------------------------------------------------
	if( m_Play.Get_Record_Count() > 1 && m_Play_Mode != PLAY_MODE_NONE )
	{
		if( m_Play_Mode == PLAY_MODE_RUN_SAVE )
		{
			if( !DLG_Image_Save(file, type) )
			{
				m_Play_Mode	= PLAY_MODE_NONE;

				return( false );
			}

			iFrame	= 0;
		}

		//-------------------------------------------------
		PLAYER_READ(0);

		for(iRecord=1; iRecord<m_Play.Get_Record_Count() && m_Play_Mode!=PLAY_MODE_NONE; iRecord++)
		{
			PLAYER_SWAP;
			PLAYER_READ(iRecord);

			for(iStep=0; iStep<Steps[0] && m_Play_Mode!=PLAY_MODE_NONE; iStep++)
			{
				d							= iStep / (double)Steps[0];
				m_pImage->m_xRotate			= PLAYER_SET(xRotate);
				m_pImage->m_yRotate			= PLAYER_SET(yRotate);
				m_pImage->m_zRotate			= PLAYER_SET(zRotate);
				m_pImage->m_xShift			= PLAYER_SET(xShift );
				m_pImage->m_yShift			= PLAYER_SET(yShift );
				m_pImage->m_zShift			= PLAYER_SET(zShift );
				m_pImage->m_xShift			= PLAYER_SET(xShift );
				m_pImage->m_Exaggeration	= PLAYER_SET(Exagg  );
				m_pImage->m_Central			= PLAYER_SET(Central);

				_Parms_Changed();

				if( m_Play_Mode == PLAY_MODE_RUN_SAVE )
				{
					m_pImage->Save(wxString::Format(wxT("%s_%04d.%s"), file.BeforeLast('.').c_str(), iFrame++, file.AfterLast('.').c_str()), type);
				}

				PROCESS_Wait();
			}
		}

		return( m_Play_Mode != PLAY_MODE_NONE );
	}

	m_Play_Mode	= PLAY_MODE_NONE;

	return( false );
}