亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? inputdevice.cpp

?? FreeWRLduneInputDevice和FreeWRL一起可以讓用戶用帶有6DoF的輸入設備檢索3D VRML/X3D數據。它基于FreeWRL的"/tmp/inpdev"擴展傳感器輸入接口和w
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
      if (stringncmp(string,"allrot")!=0)         {         set_zero_on_release(num_axis_x,value);         set_zero_on_release(num_axis_y,value);         set_zero_on_release(num_axis_z,value);         }      if (stringncmp(string,"allxyz")!=0)         {         set_zero_on_release(num_axis_xrot,value);         set_zero_on_release(num_axis_yrot,value);         set_zero_on_release(num_axis_zrot,value);             }      }   }// return value (relative to max) which will be ignoredfloat InputDevice::get_zero_size_fraction(int axis_number)   {   if ((zero_size_fraction==NULL) || (axis_number>=number_axes))      return 0;   else      return zero_size_fraction[axis_number];   }void InputDevice::set_zero_size_fraction(int axis_number,float value)   {   if (axis_number<number_axes)      {      if (zero_size_fraction==NULL)         {         zero_size_fraction=new float[number_axes];         for (int i=0;i<number_axes;i++)            zero_size_fraction[i]=0;         }      zero_size_fraction[axis_number]=value;      }   else      fprintf(stderr,"axis number %d do not exist \n",axis_number);   }void InputDevice::set_zero_size_fraction(char* string,float value)   {   for (int i=0;i<sizeof(axesinfo)/sizeof(char*);i++)      if (stringncmp(string,axesinfo[i])==0)         {         set_zero_size_fraction(getAxisFromInformation(string),value);         break;         }   if (stringncmp(string,"all")==0)      {      if (stringncmp(string,"allrot")!=0)         {         set_zero_size_fraction(num_axis_x,value);         set_zero_size_fraction(num_axis_y,value);         set_zero_size_fraction(num_axis_z,value);         }      if (stringncmp(string,"allxyz")!=0)         {         set_zero_size_fraction(num_axis_xrot,value);         set_zero_size_fraction(num_axis_yrot,value);         set_zero_size_fraction(num_axis_zrot,value);             }      }   }int InputDevice::getAxisFromInformation(char* axesinfo)   {   int axis_number;   if      (strcmp(axesinfo,"xrot")==0)      axis_number=num_axis_xrot;   else if (strcmp(axesinfo,"yrot")==0)      axis_number=num_axis_yrot;   else if (strcmp(axesinfo,"zrot")==0)      axis_number=num_axis_zrot;   else if (strcmp(axesinfo,"x")==0)      axis_number=num_axis_x;   else if (strcmp(axesinfo,"y")==0)      axis_number=num_axis_y;   else if (strcmp(axesinfo,"z")==0)      axis_number=num_axis_z;   else       {      fprintf(stderr,"axesinfo %s not understood, using axis 0\n",axesinfo);      axis_number=0;      }   return axis_number;   }void InputDevice::setAxisOfInformation(char* axesinfo,int axis_number)   {   if      (strcmp(axesinfo,"xrot")==0)      num_axis_xrot=axis_number;   else if (strcmp(axesinfo,"yrot")==0)      num_axis_yrot=axis_number;   else if (strcmp(axesinfo,"zrot")==0)      num_axis_zrot=axis_number;   else if (strcmp(axesinfo,"x")==0)      num_axis_x=axis_number;   else if (strcmp(axesinfo,"y")==0)      num_axis_y=axis_number;   else if (strcmp(axesinfo,"z")==0)      num_axis_z=axis_number;   }// destruktive way to cut out the string till next comma// return index to the comma position or -1 if no comma position availablestatic int cut_out_till_next_comma(char* string)   {   char* comma;   // search for comma   comma=strchr(string,',');   if (comma==NULL)      return -1;   else      {      // end of string is placed at comma position                comma[0]=(char)0;      return(comma-string+1);      }   }static bool string2int(int &value,char* string)   {   int characters_read;      sscanf(string,"%d%n",&value,&characters_read);   if (characters_read!=strlen(string))      return(false);   return(true);   }bool InputDevice::argument_is_axis(char* string)   {   for (int i=0;i<sizeof(axesinfo)/sizeof(char*);i++)      if (stringncmp(string,axesinfo[i])==0)         return true;   return false;   }   /* * parse argumentstring  * valid syntax is * * -x|-y|-z|-xrot|-yrot|-zrot=[-][integer_axisnumber][,[factor][,[accel][,[wheel][,ignore]]]] * -all|-allxyz|-allrot=[factor][,[accel][,[wheel][,ignore]]] * * -                  sign of value from axis is swapped * * integer_axisnumber is a integer with the number of the axis, that should  *                    be used for the x y z xrot yrot zrot directions. *                    This number may not be greater than the number of *                    axes of the inputdevice * * factor is a float with a multiplicator for the axes * * accel is a float with a expotential accelerator for the axes * * wheel is the string "wheel" *       wheel means this axis of the inputdevice will not deliver zero  *       if released * * ignore is a float with the value (relative to the maximal value *        from the device) which will be ignored (insensitivity) *   * function returns always true     */bool InputDevice::scan_argument(char *string,char* argument)    {   int next;   bool sign_swap=false;   // skip argument   string=string+strlen(argument);   // skip '='   if (string[0]=='=')      string++;   // read sign of axis   if (string[0]=='-')      {      sign_swap=true;      string++;      }   if (argument_is_axis(argument))      {      // read axisnumber      next=cut_out_till_next_comma(string);      if (next!=1)         {         int characters_read;         int axis_number;         if (!string2int(axis_number,string))            {            fprintf(stderr,"axisnumber %s is not a integer\n",string);            return true;            }         setAxisOfInformation(argument,axis_number);         set_sign_swap(axis_number,sign_swap);         if (next==-1)            return true;         }      // position after comma      string=string+next;      }   // read factor   next=cut_out_till_next_comma(string);   if (next!=1)      {      int characters_read;      float fact;      sscanf(string,"%f%n",&fact,&characters_read);      if (characters_read!=strlen(string))         {         fprintf(stderr,"factor %s is not a float\n",string);         return true;         }      else         {         set_factor(argument,fact);         if (next==-1)            return true;         }      }   // position after comma   string=string+next;   // read acceleration   next=cut_out_till_next_comma(string);   if (next!=1)      {      int characters_read;      float accel;      sscanf(string,"%f%n",&accel,&characters_read);      if (characters_read!=strlen(string))         {         fprintf(stderr,"acceleration %s is not a float\n",string);         return true;         }      else         {         set_acceleration(argument,accel);         if (next==-1)            return true;         }      }   // position after comma   string=string+next;   // wheel/zero_on_release information   next=cut_out_till_next_comma(string);   if (next!=1)      {      if (strcmp(string,"wheel")==0)         set_zero_on_release(argument,false);      else         {         fprintf(stderr,"%s is not the string \"wheel\"\n",string);         return true;         }      if (next==-1)         return true;      }   // position after comma   string=string+next;   // read acceleration   next=cut_out_till_next_comma(string);   if (next!=1)      {      int characters_read;      float ignore;      sscanf(string,"%f%n",&ignore,&characters_read);      if (characters_read!=strlen(string))         {         fprintf(stderr,"zero_size_fraction %s is not a float\n",string);         return true;         }      else         {         set_zero_size_fraction(argument,ignore);         if (next==-1)            return true;         }      }   // position after comma   string=string+next;   fprintf(stderr,"argument %s not understood\n",string);   return true;   }static char* remove_blanks(char* stringIn)   {   char* string=(char*)malloc(strlen(stringIn)+1);   if (string==NULL)       {      perror("in remove_blanks");      return string;      }   // erase whitespaces of ASCII string   string[0]=(char)0;   int stringindex=0;   for (int i=0;i<strlen(stringIn);i++)      {      if ((unsigned char)stringIn[i]>' ')         {         string[stringindex]=stringIn[i];         stringindex++;         string[stringindex]=(char)0;         }      }   return string;   }    void InputDevice::SetAxisInformation(char* info_string)   {   int i;   char* freestring=remove_blanks(info_string);   if (freestring==NULL) return;   char* string=freestring;      if (string[0]=='-')       string++;   bool found=false;   for (i=0;i<sizeof(axesinfo)/sizeof(char*);i++)      {      if (stringncmp(string,axesinfo[i])==0)         {         found=scan_argument(string,axesinfo[i]);         break;         }      }   if (stringncmp(string,"all")==0)      if (stringncmp(string,"allrot")==0)         found=scan_argument(string,"allrot");      else if (stringncmp(string,"allxyz")==0)         found=scan_argument(string,"allxyz");      else          found=scan_argument(string,"all");   if (!found)      {         fprintf(stderr,"%s do not contain",string);      for (i=0;i<sizeof(axesinfo)/sizeof(char*);i++)         fprintf(stderr," -%s or",axesinfo[i]);      fprintf(stderr," -all=wheel\n",info_string);      }   free(freestring);   return;   }// set number of axes// only valid to reduce axes from a bad designed joystickvoid InputDevice::SetNumberAxes(char* argument)   {   char* freestring=remove_blanks(argument);   if (freestring==NULL) return;   char* string=freestring;      if (stringncmp(string,"-axes")!=0)      {      fprintf(stderr,"internal error in InputDevice::SetNumberAxes\n");      return;      }   string=string+strlen("-axes");   if (string[0]=='=')       string++;   int new_number_axes;   if (string2int(new_number_axes,string))         if (new_number_axes<=number_axes)         number_axes=new_number_axes;      else         fprintf(stderr,"only %d axes found, can not decrease to %d\n",                 number_axes,new_number_axes);   free(freestring);   return;         }// Drivers for joystick-like devices// Linux Joystick driver of Linux 2.2 or Linux 2.4/* * based on jstest.c  Version 1.2 * * Copyright (c) 1996-1999 Vojtech Pavlik * * Sponsored by SuSE * * modified by J. "MUFTI" Scheurich 2001-2002 for white_dune * This program can be used to test [..] the features of the Linux * joystick API, including non-blocking [..] access [..].  * It is also intended to * serve as an example implementation for those who wish to learn * how to write their own joystick using applications. */#ifdef LINUX_JOYSTICK # include <sys/ioctl.h># include <sys/time.h># include <sys/types.h># include <fcntl.h># include <unistd.h># include <errno.h>  /* * initialise joystick  * argument "device" is the joystickdevice, eg. "/dev/input/js0" or "/dev/js0"  */ linux_joystick::linux_joystick(char *device) : InputDevice()   {   if ((fd = open(device, O_RDONLY)) < 0)       {      fprintf(stderr,"joystickdevice %s ",device);      perror("joystick initialisation failed: ");      }    factor=0.1;   rotfactor=0.1;   number_axes = 2;   number_buttons = 2;   version = 0x000800;   strcpy(name,"Unknown");   ioctl(fd, JSIOCGVERSION, &version);   ioctl(fd, JSIOCGAXES, &number_axes);   ioctl(fd, JSIOCGBUTTONS, &number_buttons);   ioctl(fd, JSIOCGNAME(NAME_LENGTH), name);   fcntl(fd, F_SETFL, O_NONBLOCK);   if (number_buttons>0)      {       button=new bool[number_buttons];      for (int i=0;i<number_buttons;i++)         button[i]=false;      } # ifdef DEBUG   fprintf(stderr,"Joystick (%s) has %d axes and %d buttons. Driver version is %d.%d.%d.\n",           name, number_axes, number_buttons, version >> 16, (version >> 8) & 0xff,            version & 0xff);# endif   }linux_joystick::~linux_joystick()   {   close(fd);   }bool linux_joystick::readInputDevice(void)   {   bool ret=false;   button_pressed=-1;   button_released=-1;   while (read(fd, &js, sizeof(struct js_event)) == sizeof(struct js_event))        {# ifdef DEBUG       fprintf(strerr,"Event: type %d, time %d, number %d, value %d\n", 	     js.type, js.time, js.number, js.value);# endif      switch(js.type & ~JS_EVENT_INIT)          {         case JS_EVENT_BUTTON:            ret=true;            if (js.value)               {               button[js.number] = true;               button_pressed=js.number;               }            else               {               button[js.number] = false;               button_released=js.number;               }            break;         case JS_EVENT_AXIS:            ret=true;            if (js.number==num_axis_x)               value[0] =  js.value/maxvalue(js.number)*factor;            if (js.number==num_axis_y)               value[1] = -js.value/maxvalue(js.number)*factor;            if (js.number==num_axis_z)               value[2] = -js.value/maxvalue(js.number)*factor;            if (js.number==num_axis_xrot)               value[3] = js.value/maxvalue(js.number)*rotfactor;            if (js.number==num_axis_yrot)               value[4] = js.value/maxvalue(js.number)*rotfactor;            if (js.number==num_axis_zrot)               value[5] = js.value/maxvalue(js.number)*rotfactor;            break;         }      if ((button_pressed!=-1) || (button_released!=-1))         break;      }   if (ret==false)      if ((value[0]!=0) || (value[1]!=0) || (value[2]!=0) ||           (value[3]!=0) || (value[4]!=0) || (value[5]!=0))         {         // deliver constantly values         ret=true;               }   return ret;   } # ifdef TEST_JOYSTICKint main(int argc,char** argv)   {   linux_joystick js=linux_joystick("/dev/input/js0");   while(1)      if (js.readInputDevice())         printf("%f %f %f\n",js.get_x(),js.get_y(),js.get_z());   }# endif#endif// Xinput driver #ifdef HAVE_XINPUT /*  * initialise XInput   * argument "device" is the name of the device, eg. "magellan"   */ xinput::xinput(char *device) : InputDevice()   {   int i;   number_buttons=0;   number_axes=0;   factor=1;   rotfactor=1;   max_value=NULL;   swxinput=(swXinput*) malloc(sizeof(swXinput));   swInitXinputDevice(swxinput,device);   if (swxinput->xinput==NULL)      {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲动漫精品| 男人的j进女人的j一区| 亚洲一区二区在线视频| 看片的网站亚洲| 99国产精品久久久久久久久久| 欧美私人免费视频| 中文字幕乱码久久午夜不卡| 日本午夜精品视频在线观看 | 国产精品中文字幕欧美| 国产激情偷乱视频一区二区三区| 色综合久久中文字幕综合网 | 日韩二区三区四区| 蜜臀久久99精品久久久久宅男| 久久国产精品一区二区| 99久久精品久久久久久清纯| 日韩精品一区二区在线| 亚洲人成精品久久久久久| 久久99热这里只有精品| 91色视频在线| 国产日韩欧美电影| 亚洲成人激情社区| 一本到一区二区三区| 精品av综合导航| 婷婷久久综合九色综合伊人色| 国产精品一区二区三区乱码| 欧美日韩激情一区二区| 综合av第一页| 国产精品一区免费视频| 欧美一区二区三区影视| 亚洲永久免费av| av高清久久久| 国产日本欧美一区二区| 狠狠色丁香婷婷综合久久片| 91精品一区二区三区在线观看| 成人免费一区二区三区在线观看 | 日本高清不卡aⅴ免费网站| 精品999在线播放| 免费高清成人在线| 欧美精品久久久久久久多人混战| 亚洲欧美成人一区二区三区| 国产成人免费高清| 99久精品国产| 欧美图区在线视频| 粉嫩久久99精品久久久久久夜| 亚洲最新视频在线观看| 91日韩在线专区| 久久99精品国产91久久来源| 18欧美亚洲精品| www精品美女久久久tv| 欧美日韩一区二区三区在线| 国产乱色国产精品免费视频| 岛国av在线一区| 国产女人18毛片水真多成人如厕| 黄色成人免费在线| 久久一夜天堂av一区二区三区| 欧美a级理论片| 欧美一区二区三区成人| 美女网站色91| 久久综合一区二区| 亚洲欧美一区二区三区久本道91| 一区二区三区在线观看国产| 国产色婷婷亚洲99精品小说| 久久九九99视频| 欧美一级久久久久久久大片| 欧美色精品在线视频| 亚洲一二三区视频在线观看| 欧美日韩综合色| 日本麻豆一区二区三区视频| 欧美亚洲综合网| 日本系列欧美系列| 国产精品美日韩| 色吊一区二区三区| 日韩av一二三| 国产欧美一区二区三区在线看蜜臀| 成人18精品视频| 亚洲国产wwwccc36天堂| 欧美日韩国产综合视频在线观看 | 宅男噜噜噜66一区二区66| 精品国产欧美一区二区| 91日韩在线专区| 69堂精品视频| 国产精品一区专区| 亚洲精品国产精品乱码不99| 欧美日韩一区在线观看| 国产资源在线一区| 亚洲欧美视频一区| 日韩免费观看2025年上映的电影| 国产一区二区主播在线| 亚洲欧洲综合另类| 日韩精品专区在线影院重磅| 成人手机电影网| 精品在线亚洲视频| 国产91丝袜在线播放九色| 亚洲精品一区二区三区四区高清 | 成人网在线播放| 亚洲1区2区3区视频| 日韩欧美在线123| 精品国产伦理网| 成人免费在线播放视频| 福利视频网站一区二区三区| 欧美男生操女生| 日韩av成人高清| www国产亚洲精品久久麻豆| 亚洲午夜在线电影| 欧美日韩美少妇| 五月开心婷婷久久| 欧美一区二区三区播放老司机| 精品一二三四区| 波多野结衣视频一区| 欧美亚洲一区二区三区四区| 国产精品一区二区视频| 免费成人小视频| 亚洲一本大道在线| 亚洲丝袜另类动漫二区| 国产福利精品一区| 亚洲欧洲韩国日本视频| 精品在线观看免费| 一区二区三区.www| 五月综合激情日本mⅴ| 在线观看免费视频综合| 成人三级在线视频| 国产精品资源在线观看| 麻豆久久久久久| 午夜精品久久久久久久蜜桃app| 中文字幕不卡一区| 久久精品综合网| 国产视频一区在线观看| 欧美成人精品二区三区99精品| 欧美日韩国产高清一区| 91国偷自产一区二区三区成为亚洲经典 | 一本大道久久精品懂色aⅴ| √…a在线天堂一区| 波多野洁衣一区| 亚洲成人黄色影院| 久久久久99精品国产片| proumb性欧美在线观看| 一区二区三区四区视频精品免费 | 亚洲天堂av一区| 91精品国产全国免费观看 | 日本欧美一区二区三区乱码| 欧美伊人精品成人久久综合97 | 91久久香蕉国产日韩欧美9色| 91麻豆精品国产自产在线观看一区| 中文字幕乱码日本亚洲一区二区 | 亚洲视频一区在线| 日韩美女在线视频| 欧美日韩高清影院| 国产精品自在欧美一区| 蜜臀av一区二区在线免费观看| 亚洲国产精品久久艾草纯爱| 欧美国产精品专区| www激情久久| 久久奇米777| 欧美高清精品3d| 91久久国产最好的精华液| 欧美视频中文一区二区三区在线观看| 欧美三级中文字幕| 日韩视频国产视频| 国产午夜精品久久久久久免费视| 中文字幕第一区第二区| 亚洲乱码国产乱码精品精的特点| 亚洲国产精品麻豆| 精品一区二区综合| 99久久精品国产毛片| 欧美精品久久99| 久久久99精品久久| 一区二区三区.www| 狠狠色丁香久久婷婷综合_中| 99精品久久99久久久久| 欧美精品视频www在线观看 | 亚洲成a人片在线不卡一二三区| 日本成人在线电影网| 风间由美一区二区三区在线观看| 91豆麻精品91久久久久久| 日韩亚洲欧美中文三级| 中文字幕五月欧美| 毛片av中文字幕一区二区| 成人综合在线视频| 欧美剧情片在线观看| 成人av网在线| 精品国产区一区| 国产在线精品一区二区夜色 | 亚洲日本在线a| 成人91在线观看| 亚洲欧洲日韩一区二区三区| 久久99久久99小草精品免视看| 91精品国产一区二区| 日本亚洲欧美天堂免费| 欧美裸体一区二区三区| 一级日本不卡的影视| 欧美精品日韩一区| 欧美一区二区三区爱爱| 亚洲乱码国产乱码精品精小说| 国产99久久久精品| 国产日韩精品一区二区三区 | 久草这里只有精品视频| 91精品国产一区二区三区香蕉| 亚洲国产三级在线| 欧美日韩精品一二三区| 亚洲成人资源在线|