⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glwin.c

📁 Delaunay三角形的网格剖分程序
💻 C
📖 第 1 页 / 共 5 页
字号:
      return NULL;    }  w->type = GetMainWindowType(w,w->vInfoMain);    if (GLW_IS_INDEX(w->type)) {    if (w->vInfoMainClass != StaticColor &&	w->vInfoMainClass != StaticGray) {      w->cMapMain = XCreateColormap(w->display, w->root, w->vInfoMain->visual,				    AllocAll);    } else {      w->cMapMain = XCreateColormap(w->display, w->root, w->vInfoMain->visual,				    AllocNone);    }  } else {        /* alt ging schief fuer MESA auf Xterm        w->cMapMain = XCreateColormap(w->display, w->root, w->vInfoMain->visual,       AllocNone);       */	    /* RGB colormap is AllocNone, share the root colormap if possible */    Screen *scr = DefaultScreenOfDisplay(w->display);    if (MaxCmapsOfScreen(scr)==1	&& w->vInfoMain->visual==DefaultVisual(w->display,w->screen)) {      w->cMapMain = DefaultColormap(w->display,w->screen);    }    else {      w->cMapMain = XCreateColormap(w->display, w->root, w->vInfoMain->visual,				    AllocNone);    }  }/* PRE-MESA   glwSetRGBMap(w,256, colorMaps);   */       if (GLW_IS_INDEX(w->type) || w->vInfoMainClass==DirectColor) {    glwSetRGBMap(w,256, colorMaps);  }    if (w->offscreen)    create_pixmap(w,overlayFlag);  else    create_window(w,overlayFlag);    if (!glwAttach(w))    {      glwDestroy(w);      return NULL;	      }   w->isMesa=    (strstr(glXGetClientString(w->display,GLX_VENDOR),"Mesa")!=NULL)||    (strstr(glXGetClientString(w->display,GLX_VERSION),"Mesa")!=NULL)||    (strstr(glXQueryServerString(w->display,w->screen,GLX_VENDOR),"Mesa")!=NULL)||    (strstr(glXQueryServerString(w->display,w->screen,GLX_VERSION),"Mesa")!=NULL);  glwSetFontSize(w,GLW_DEFAULT_FONT_SIZE);  glwSetExposeFunc(w,default_expose_func);  glwTrace("window ok");  return w;}static void update_title(glWindow w){  XTextProperty tp;  if (w->offscreen) return;  if (w->state!=NULL)     {      sprintf(w->xtitle,"%s [ %s ]",w->title,w->state);      XStringListToTextProperty(&w->xtitle, 1, &tp);    }    else      XStringListToTextProperty(&w->title, 1, &tp);    XSetWMProperties(w->display, w->wMain, &tp, 0, 0, 0, 0, 0, 0);  XFlush(w->display);}void glwShowState(glWindow w, char *state){ if (state!=NULL)   {      if (w->state==NULL)       w->state=(char*)malloc(GLW_NAMELEN);     strcpy(w->state,state);   } else  {    free(w->state);    w->state=NULL;  } update_title(w);}void glwSetTitle(glWindow w, char *title){  strcpy(w->title,title);  update_title(w);}char * glwGetTitle(glWindow w){  return w->title;}/*----------------------------------------------------------------*//*----------------------------------------------------------------*//*----------------------------------------------------------------*/void glwStartRecording(		       glWindow win, 		       char *fileNameStub,		       int skip		       ){  FILE *param_file=NULL;  FILE *user_param_file=NULL;  char *user_param_file_name;  user_param_file_name=glwGetDefault(win,"mpegParams",NULL);  if (user_param_file_name!=NULL)     {      user_param_file=fopen(user_param_file_name,"r");      if (user_param_file==NULL)	glwError("user parameter file not found");    }  param_file=fopen(".glwin.mpeg.param","w");  if (user_param_file==NULL)     /* set own default if user       parameter file not given */    {      fprintf(param_file,"PATTERN  IBBPBBPBBPBBPBB\n");      fprintf(param_file,"GOP_SIZE  30\n");      fprintf(param_file,"SLICES_PER_FRAME 1\n");      fprintf(param_file,"PIXEL	HALF\n");      fprintf(param_file,"RANGE	10\n");      fprintf(param_file,"PSEARCH_ALG	LOGARITHMIC\n");      fprintf(param_file,"BSEARCH_ALG	CROSS2\n");      fprintf(param_file,"IQSCALE 8\n");      fprintf(param_file,"PQSCALE 10\n");      fprintf(param_file,"BQSCALE  25\n");      fprintf(param_file,"REFERENCE_FRAME	ORIGINAL\n");    }  else    {      while (!feof(user_param_file))	{	  fgets(glw_string_buffer,GLW_BUFSIZE,user_param_file);	  fputs(glw_string_buffer,param_file);	}      fclose(user_param_file);  }  fprintf(param_file,"BASE_FILE_FORMAT	PNM\n");  fprintf(param_file,"INPUT_DIR stdin\n");  fprintf(param_file,"INPUT_CONVERT *\n");  fprintf(param_file,"INPUT\n");  fprintf(param_file,"END_INPUT\n");  fprintf(param_file,"PNM_SIZE %dx%d\n",win->w,win->h);  fprintf(param_file,"OUTPUT %s.mpg\n",fileNameStub);  fclose(param_file);  win->moviepipe=popen("mpeg_encode .glwin.mpeg.param","w");  win->recorded_frame_num=0;  win->frame_num=0;  win->recording=1;  if (skip<0) skip=0;  win->skip=skip+1;}void glwStopRecording(glWindow win){  win->recording=0;  pclose(win->moviepipe);  printf("%d frames recorded\n",win->recorded_frame_num);}#define GLW_SCREEN_WIDTH 2048char pixelbuf[GLW_SCREEN_WIDTH*3];void glwGrabPPM(glWindow win, FILE *f){  register int i;  assert(f!=NULL);  glPixelStorei(GL_PACK_ALIGNMENT, 1);  glPixelStorei(GL_PACK_SWAP_BYTES, GL_TRUE);  fprintf(f, "P6\n");  fprintf(f, "%d %d\n", win->w, win->h);  fprintf(f, "%d\n", 255);  for(i=1;i<=win->h;i++)    {      glReadPixels(0, win->h-i, win->w,1, GL_RGB, GL_UNSIGNED_BYTE, pixelbuf);      fwrite(pixelbuf, 3, win->w, f);    }}void  glwGrabPPMAndPrint(glWindow w){  FILE *f;  char *command;  command=glwGetDefault(w,"printerCommand","pnmtops | lpr");  f=popen(command,"w");  glwGrabPPM(w,f);  pclose(f);}void  glwDump(              glWindow win,               void * info,               char *fileName,               int w,               int h              ){  FILE *f=fopen(fileName,"w");  glwGrabPPM(win,f);  fclose(f);}/*******************************************/void glwRenderFB(glWindow w){  int size=w->fb_initial_size;  w->fb_size=0;  while (w->fb_size<=0)    {      w->fb_buffer = calloc(size, sizeof(GLfloat));      if (w->fb_buffer==NULL)	{	  glwError("Not enough memory for feedback buffer");	  return;	}      glFeedbackBuffer(size, GL_3D_COLOR, w->fb_buffer);      glRenderMode(GL_FEEDBACK);      w->fb_mode=1;      (*w->RedrawFunc)(w,w->info);      w->fb_mode=0;      w->fb_size = glRenderMode(GL_RENDER);      /*printf("size=%d, fb_size=%d\n", size,w->fb_size); */      if (w->fb_size<=0)	{	  glwResetFB(w);	  size=1.5*size;	}    }  w->fb_initial_size=size;}void glwResetFB(glWindow w){  int i;  for (i=0;i<GLW_FEEDBACK_MAX_STRINGS;i++)    {        if (w->fb_strings[i])	free(w->fb_strings[i]);      w->fb_strings[i]=NULL;    }  w->fb_num_strings=0;    w->fb_size=0;  if (w->fb_buffer!=NULL) free(w->fb_buffer);}float *glwGetFB(glWindow w){  return w->fb_buffer;}int glwGetFBSize(glWindow w){  return w->fb_size;}char *glwGetFBString(glWindow w,int istring){  return w->fb_strings[istring];}double glwGetFBStringSize(glWindow w,int istring){  return w->fb_string_size[istring];}/* * $Log: glwin.c,v $ * Revision 2.49  2000/07/27 12:43:36  schmelze * *** empty log message *** * * Revision 2.48  2000/03/06 14:54:13  fuhrmann * removed toplevel info output * * Revision 2.47  2000/02/22 17:27:06  fuhrmann * * transient_for in glwin * * 0.1a Version of WIASTwoPhase * * Revision 2.46  2000/01/13 17:36:41  fuhrmann * optmized ps output * * Revision 2.45  2000/01/11 16:33:41  fuhrmann * name buffer sizes * * Revision 2.44  1999/11/12 19:50:11  fuhrmann * no abort for X errors * * Revision 2.43  1999/11/10 12:17:21  fuhrmann * sysconlaw.lua, working solve/replay stuff, Append protocol etc. * * Revision 2.42  1999/11/04 17:16:09  philip * string memory bug in glwin * roundoff error in colors in gleps * * Revision 2.41  1999/11/04 16:43:40  philip * removed calloc bug * * Revision 2.40  1999/11/01 18:31:24  fuhrmann * some problem with glXmakecurrent * * Revision 2.39  1999/09/17 16:35:01  fuhrmann * feedback stuff war kaputtrepariert... * * Revision 2.38  1999/09/15 16:16:24  fuhrmann * size_t for feedback buffer * file !=NULL check for dump files * * Revision 2.37  1999/08/19 15:31:46  fuhrmann * strange memory leak in glwDestroy !!! STILL THERE !!! * * Revision 2.36  1999/07/02 10:38:05  fuhrmann * Mesa bug neutralized, gleps reference taken out of glwin * * Revision 2.35  1999/06/30 13:07:50  fuhrmann * font size stuff * * Revision 2.34  1999/06/30 10:55:45  fuhrmann * no exit at token errors * * Revision 2.33  1999/06/30 10:27:25  fuhrmann * some bells &whistles in feedback stuff * * Revision 2.32  1999/06/29 17:56:24  fuhrmann * Feedback buffer is used now... * * Revision 2.31  1999/04/20 17:32:16  fuhrmann * sgi warnings, 3D flux test * * Revision 2.30  1999/04/13 11:43:31  fuhrmann * more thorough checks, k&r stuff deleted * * Revision 2.29  1999/04/08 15:03:15  fuhrmann * glmesh split up * * Revision 2.28  1998/09/04  15:25:48  fuhrmann * skip frame option in StartRecording * * Revision 2.27  1998/07/09  14:39:52  fuhrmann * initialization bug in mpeg stuff removed * * Revision 2.26  1998/07/06  10:45:12  fuhrmann * Increased compiler warning level for all PDELIB-1.7 modules, * removed all bugs, some warnings remain (rcsids, ld_init, unused parameters) * * Revision 2.25  1998/05/18  17:19:27  fuhrmann * if file given in mpeg param ressource is not existent then invoke * default mechanism. * * Revision 2.24  1998/03/11  19:21:04  fuhrmann * Hey we can create batch videos! (still beta, but...) * * Revision 2.23  1998/03/06  16:45:31  fuhrmann * tiff->ppm * print command * video recording * * Revision 2.22  1998/03/05  20:01:24  fuhrmann * interim test version with SGI movie lib : it was a mess... * * Revision 2.21  1998/01/26  11:07:28  schmelze * tests from external working directory, box*test.html * * Revision 2.20  1998/01/14  18:27:34  fuhrmann * Merge mit Ilja * * Revision 2.19  1997/11/27  19:03:09  fuhrmann * glwRecord stuff, PAL-Format, tex-file for keys * * Revision 2.18  1997/11/04  15:53:30  fuhrmann * color scales ; crash with glrnd * * Revision 2.17  1997/10/17  16:54:58  fuhrmann * glwFlush * * Revision 2.16  1997/10/01  15:41:27  fuhrmann * GLW_MOD1 * * Revision 2.15  1997/09/09  17:42:28  fuhrmann * cursor stuff * * Revision 2.14  1997/04/15  08:10:22  fuhrmann * still not clear which font to load... * * Revision 2.13  1997/03/20  18:19:18  fuhrmann * glwGrab in no-tiff case * * Revision 2.12  1997/02/28  17:41:13  fuhrmann * glwGrab code * * Revision 2.11  1997/01/27  14:30:45  fuhrmann * other default font * * Revision 2.10  1996/10/09  16:33:57  fuhrmann * keys next, prev, tab * * Revision 2.9  1996/10/02  11:12:05  fuhrmann * some debugging in visual stuff, no change of algorithm * * Revision 2.8  1996/09/23  17:47:27  fuhrmann * -DUSE_OS_MESA for mesa offscreen contexts * * Revision 2.7  1996/09/19  16:57:34  fuhrmann * typo in glwProcess removed * * Revision 2.6  1996/09/19  16:33:39  fuhrmann * GLW_DEPTH in default mode * redraw first when enterinh glw_process in event mode * * Revision 2.5  1996/09/03  09:22:41  fuhrmann * tiffio.h location changed * * Revision 2.4  1996/09/03  09:09:04  fuhrmann * - fonts & printing characters * - keep aspect ratio * - dump pixmap size can default to window size * * Revision 2.3  1996/08/30  10:47:34  fuhrmann * Default expose function set (glw should redraw in event driven * mode if user has no callbacks set) * * Revision 2.2  1996/04/17  16:47:56  fuhrmann * error in off-screen rendering: PixelAlignment in GL buf was wrong * error in off-screen rendering: wrong count of lines (black upper line in GL dump) fixed * * Revision 2.1  1996/03/12  09:49:27  fuhrmann * Off-screen rendering into memory with large pixmaps using osmesa * * Revision 2.0  1996/02/15  20:26:14  fuhrmann * First meta-stable distribution * * Revision 1.9  1996/02/15  20:25:00  fuhrmann * - Error in return value for glwDump removed * * Revision 1.8  1996/02/15  14:18:20  fuhrmann * - improved behaviour when tiff file not opened * * Revision 1.7  1996/02/09  16:45:02  fuhrmann * - shift keys now part of button mask * - more keysyms available * * Revision 1.6  1996/02/06  09:59:46  fuhrmann * - glwDump ( depends on libtiff.a !) * - glwSetIdleFunc and glwSetDisplayFunc obsolete, *   use glwSetRedrawFunc & glwSetControlMode (better to understand) * * Revision 1.5  1996/01/30  18:36:15  fuhrmann * Changed default title to gltools-1.0 * * Revision 1.4  1995/11/08  12:05:39  fuhrmann * glwSetTitle introduced * * Revision 1.3  1995/10/24  18:34:15  fuhrmann * Namelen von 64 auf 128  ??? * Merge mit libtk 1.1 (dmPolicy stuff) vielleicht unnoetig... * * Revision 1.2  1995/10/24  12:40:51  fuhrmann * Zeilennr in glwError * * Revision 1.1  1995/10/20  15:42:03  fuhrmann * Initial revision * */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -