static void * t3d_init (Display *dpy, Window window) { struct state *st = (struct state *) calloc (1, sizeof(*st)); st->dpy = dpy; st->window = window; st->dpy = dpy; st->window = window; initialize(st); initColor(st,st->r,st->g,st->b); init_3d(st); st->zeit=(struct tm *)malloc(sizeof(struct tm)); init_kugel(st); st->startx=st->scrnWidth/2; st->starty=st->scrnHeight/2; st->scrnH2=st->startx; st->scrnW2=st->starty; st->vspeed=0; vektorprodukt(st->x,st->y,st->v); viewpoint(st/*m,v*/); setink (BlackPixelOfScreen(st->xgwa.screen)); XFillRectangle (st->dpy, st->window, st->gc, 0, 0, st->scrnWidth, st->scrnHeight); XQueryPointer (st->dpy, st->window, &st->junk_win, &st->junk_win, &st->junk, &st->junk, &st->px, &st->py, &st->kb); return st; }
int main(int argc, char **argv) { glutInitWindowSize(600, 600); glutInit(&argc, argv); parse_args(argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("Lorenz Attractors"); init_3d(); init_graphics(); /* draw the first POINTMASK points in each color */ while(rp < POINTMASK) { next_line(rv, &rp); next_line(bv, &bp); next_line(gv, &gp); next_line(yv, &yp); next_line(mv, &mp); } eyex[0] = eyex[1] = eyex[2] = 0.; eyel[0] = rv[rp][0]; eyel[1] = rv[rp][1]; eyel[2] = rv[rp][2]; glPushMatrix(); move_eye(); redraw(); glPopMatrix(); glutReshapeFunc(Reshape); glutKeyboardFunc(Key); glutIdleFunc(Draw); glutDisplayFunc(Draw); glutMainLoop(); return 0; /* ANSI C requires main to return int. */ }
void ENTRYPOINT three_d_init() { tr_mem_open( hInstDLL, "THREE_D" ); init_3d( &Three_d ); }
bool UsbAudioControl(void) { uint16_t Msg = 0; #ifndef FUNC_MIXER_SRC_EN AudioSampleRateSet(44100); #endif #ifdef FUNC_USB_AUDIO_EN if(gSys.CurModuleID == MODULE_ID_USB_AUDIO) { APP_DBG("Enter usb-audio\n"); } #endif #ifdef FUNC_USB_READER_EN if(gSys.CurModuleID == MODULE_ID_USB_READER) { APP_DBG("Enter sd reader\n"); } #endif #ifdef FUNC_USB_AUDIO_READER_EN if(gSys.CurModuleID == MODULE_ID_USB_AUDIO_READER) { APP_DBG("Enter usb-audio-reader\n"); } #endif if(!IsPcLink()) { APP_DBG("device not ready!\n"); return FALSE; } TimeOutSet(&UsbAudioFreqAdjustTimer, 1000); NVIC_EnableIRQ(USB_IRQn); UsbSetCurrentPort(PC_PORT_NUM); // 选择USB端口 APP_DBG("IsPcLink() OK!\n"); #ifdef FUNC_USB_AUDIO_EN if(gSys.CurModuleID == MODULE_ID_USB_AUDIO) { // 单独USB声卡模式,PC识别出USB声卡 APP_DBG("MODULE_ID_USB_AUDIO\n"); DeviceAudioSetMode(USB_DEVICE_AUDIO); gDeviceVID = 0x0000; gDevicePID = 0x0201; gDeviceString_Manu = "MVSILICON"; //max length: 32bytes gDeviceString_Product = "MV USB AUDIO"; //max length: 32bytes gDeviceString_SerialNumber = "20130617A002"; //max length: 32bytes } #endif #ifdef FUNC_USB_READER_EN if(gSys.CurModuleID == MODULE_ID_USB_READER) { // 单独USB读卡器模式,PC识别出USB读卡器 APP_DBG("MODULE_ID_USB_READER\n"); DeviceAudioSetMode(USB_DEVICE_READER); DeviceStorInit(); gDeviceVID = 0x0000; gDevicePID = 0x1000; gDeviceString_Manu = "MVSILICON"; // max length: 32bytes gDeviceString_Product = "USB CARD READER"; // max length: 32bytes gDeviceString_SerialNumber = "20130617B002"; // max length: 32bytes } #endif #ifdef FUNC_USB_AUDIO_READER_EN if(gSys.CurModuleID == MODULE_ID_USB_AUDIO_READER) { // 一线通模式,PC同时识别出USB声卡和USB读卡器 APP_DBG("MODULE_ID_USB_AUDIO_READER\n"); DeviceAudioSetMode(USB_DEVICE_AUDIO_READER); DeviceStorInit(); gDeviceVID = 0x0000; gDevicePID = 0x0201; gDeviceString_Manu = "MVSILICON"; // max length: 32bytes gDeviceString_Product = "MV USB AUDIO"; // max length: 32bytes gDeviceString_SerialNumber = "20130617C002"; // max length: 32bytes } #endif //USB读卡器模式下,设备管理器中显示的磁盘驱动器名称 gDeviceString_MassStor_Vendor = "MVSI"; // max length: 8bytes gDeviceString_MassStor_Product = "USB CARD READER"; // max length: 16bytes gDeviceString_MassStor_Ver = "V2.0"; // max length: 4bytes //USB声卡模式下,回调函数指针初始化 gFpDeviceAudioMuteEn = DeviceAudioMuteEn; // PC端执行MUTE命令时,回调此函数 gFpDeviceAudioMuteDis = DeviceAudioMuteDis; // PC端执行UNMUTE命令时,回调此函数 gFpDeviceAudioSetVolume = DeviceAudioSetVolume; // PC端改变音量时,回调此函数 UsbDeviceEnableInt(DEVICE_CONTROL_EP, DeviceAudioOnCmd); UsbDeviceEnableInt(DEVICE_BULK_OUT_EP, DeviceAudioOnCmd); // CodecDacChannelSel(DAC_CH_DECD_L | DAC_CH_DECD_R); // select dac channel UsbDeviceInit(); // NVIC_EnableIRQ(DECODER_IRQn); AudioAnaSetChannel(gSys.MicEnable ? AUDIO_CH_MIC : AUDIO_CH_NONE); MixerConfigFormat(MIXER_SOURCE_USB, USB_DAC_FREQ, MIXER_FORMAT_STERO); mixer_pcm_format = MIXER_FORMAT_STERO; MixerConfigVolume(MIXER_SOURCE_USB, 4000, 4000); MixerUnmute(MIXER_SOURCE_USB); MixerEnable(MIXER_SOURCE_USB); AudioLeftVolume = (AUDIO_MAX_VOLUME*3)/4; AudioRightVolume = (AUDIO_MAX_VOLUME*3)/4; APP_DBG("AudioLeftVolume = %d\n", AudioLeftVolume); #ifdef FUNC_AUDIO_DRC_EFFECT_EN if(gSys.AudioDRCEffectFlag) { if(DRC_ERROR_OK != init_drc(&gSys.AudioDRCEffectHandle, MIXER_FORMAT_STERO, USB_DAC_FREQ, AUDIO_EFFECT_PARAM_DRC_THRESHHOLD, 0, AUDIO_EFFECT_PARAM_DRC_RATIO, AUDIO_EFFECT_PARAM_DRC_ATTACK_TIME, AUDIO_EFFECT_PARAM_DRC_RELEASE_TIME, AUDIO_EFFECT_PARAM_DRC_CROSSOVER_FREQ)) { APP_DBG("Init DRC Effect fail,close\n"); gDRCEffectInited = FALSE; } else { gDRCEffectInited = TRUE; } } #endif #ifdef FUNC_AUDIO_3D_EFFECT_EN if(gSys.Audio3dEffectFlag) { if(THREE_D_ERROR_OK != init_3d(&gSys.Audio3dEffectHandle, MIXER_FORMAT_STERO, USB_DAC_FREQ, AUDIO_EFFECT_PARAM_3D_BASS, AUDIO_EFFECT_PARAM_3D_MID_BOOST)) { //gSys.Audio3dEffectFlag = 0; APP_DBG("Init 3D Effect fail,close\n"); g3dEffectInited = FALSE; } else { g3dEffectInited = TRUE; } } #endif #ifdef FUNC_AUDIO_VB_EFFECT_EN if(gSys.AudioVbEffectFlag) { if(VB_ERROR_OK != init_vb(&gSys.AudioVbEffectHandle, MIXER_FORMAT_STERO, USB_DAC_FREQ, AUDIO_EFFECT_PARAM_VB_CUTOFF_FREQ, AUDIO_EFFECT_PARAM_VB_LIMITER_EN)) { gVbEffectInited = FALSE; } else { gVbEffectInited = TRUE; } } #endif SetModeSwitchState(MODE_SWITCH_STATE_DONE); while(Msg != MSG_COMMON_CLOSE) { //UsbDeviceDisableInt(DEVICE_BULK_OUT_EP); DeviceStorProcess(); //UsbDeviceEnableInt(DEVICE_BULK_OUT_EP, DeviceAudioOnCmd); DeviceAudioProcess(); #if (!defined (OUTPUT_CHANNEL_CLASSD)) && (!defined (OUTPUT_CHANNEL_DAC_CLASSD)) //classd模式下,采用的clk mode = normal mode,禁止使用硬件微调 #ifndef FUNC_SOFT_ADJUST_EN UsbAudioFreqAdjust(); #endif #endif Msg = MsgRecv(10);// 消息接收,无消息阻塞20ms,有消息立即返回 if(Msg == MSG_USB_DEVICE_INTERRUPT_CB) { UsbIntFlag = FALSE; } switch(Msg) { case MSG_POWER: gSys.NextModuleID = MODULE_ID_STANDBY; case MSG_MODE: // mode change,end of this mode APP_DBG("CHANGE_MODE\n"); // mode change,end of this mode Msg = MSG_COMMON_CLOSE; break; case MSG_PLAY_PAUSE: APP_DBG("PLAY_PAUSE\n"); DeviceAudioSendPcCmd(PC_CMD_PLAY_PAUSE); break; case MSG_PRE: APP_DBG("PRE\n"); DeviceAudioSendPcCmd(PC_CMD_PRE); SoundRemind(SOUND_PREV_TRACK); break; case MSG_NEXT: APP_DBG("NEXT\n"); DeviceAudioSendPcCmd(PC_CMD_NEXT); SoundRemind(SOUND_NEXT_TRACK); break; case MSG_STOP: APP_DBG("STOP\n"); DeviceAudioSendPcCmd(PC_CMD_STOP); break; case MSG_MUTE: APP_DBG("MUTE\n"); DeviceAudioSendPcCmd(PC_CMD_MUTE); break; #ifdef FUNC_RECORD_EN case MSG_REC: //录音 gSys.ModuleIDBackUp = gSys.CurModuleID; gSys.NextModuleID = MODULE_ID_RECORDER; gSys.RecordState = RECORD_STATE_REC; gSys.RecordSource = RECORD_SOURCE_LINEIN; Msg = MSG_COMMON_CLOSE; break; #endif #ifdef FUNC_REC_PLAYBACK_EN case MSG_REC_PLAYBACK: EnterRecBackPlay(gSys.CurModuleID, IsUDiskLink() ? DEV_ID_USB : DEV_ID_SD, TRUE, 0, 0); break; #endif default: CommonMsgProccess(Msg); break; } } #ifdef FUNC_USB_AUDIO_EN if(gSys.CurModuleID == MODULE_ID_USB_AUDIO) { APP_DBG("Leave usb-audio\n"); } #endif #ifdef FUNC_USB_READER_EN if(gSys.CurModuleID == MODULE_ID_USB_READER) { APP_DBG("Leave sd reader\n"); } #endif #ifdef FUNC_USB_AUDIO_READER_EN if(gSys.CurModuleID == MODULE_ID_USB_AUDIO_READER) { APP_DBG("Leave usb-audio-reader\n"); } #endif MixerMute(MIXER_SOURCE_USB); MixerDisable(MIXER_SOURCE_USB); UsbDeviceDisConnect(); // 退出前断开usb device,停止接收数据,以免与SD/U盘播放产生冲突 #ifdef FUNC_USB_EN UsbSetCurrentPort(UDISK_PORT_NUM); // set usb host port #endif return TRUE;//OK }