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

📄 win32_util.c

📁 mesa-6.5-minigui源码
💻 C
字号:
/* Copyright (c) Nate Robins, 1997. *//* portions Copyright (c) Mark Kilgard, 1997, 1998. *//* This program is freely distributable without licensing fees    and is provided without guarantee or warrantee expressed or    implied. This program is -not- in the public domain. */#include "glutint.h"#include "glutstroke.h"#include "glutbitmap.h"#include <sys/timeb.h>/* The following added by Paul Garceau <pgarceau@teleport.com> */#if defined(__MINGW32__)#include <time.h>#include <windows.h>struct timeval;#endifextern StrokeFontRec glutStrokeRoman, glutStrokeMonoRoman;extern BitmapFontRec glutBitmap8By13, glutBitmap9By15, glutBitmapTimesRoman10, glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12, glutBitmapHelvetica18;#ifndef __CYGWIN32__intgettimeofday(struct timeval* tp, void* tzp){  struct timeb tb;  ftime(&tb);  tp->tv_sec = tb.time;  tp->tv_usec = tb.millitm * 1000;  /* 0 indicates that the call succeeded. */  return 0;}#endif/* To get around the fact that Microsoft DLLs only allow functions   to be exported and now data addresses (as Unix DSOs support), the   GLUT API constants such as GLUT_STROKE_ROMAN have to get passed   through a case statement to get mapped to the actual data structure   address. */void*__glutFont(void *font){  switch((int)font) {  case (int)GLUT_STROKE_ROMAN:    return &glutStrokeRoman;  case (int)GLUT_STROKE_MONO_ROMAN:    return &glutStrokeMonoRoman;  case (int)GLUT_BITMAP_9_BY_15:    return &glutBitmap9By15;  case (int)GLUT_BITMAP_8_BY_13:    return &glutBitmap8By13;  case (int)GLUT_BITMAP_TIMES_ROMAN_10:    return &glutBitmapTimesRoman10;  case (int)GLUT_BITMAP_TIMES_ROMAN_24:    return &glutBitmapTimesRoman24;  case (int)GLUT_BITMAP_HELVETICA_10:    return &glutBitmapHelvetica10;  case (int)GLUT_BITMAP_HELVETICA_12:    return &glutBitmapHelvetica12;  case (int)GLUT_BITMAP_HELVETICA_18:    return &glutBitmapHelvetica18;  }  __glutFatalError("font not found.");  /* NOTREACHED */  return NULL; /* MSVC compiler complains if there is no return at all */}int__glutGetTransparentPixel(Display * dpy, XVisualInfo * vinfo){  /* the transparent pixel on Win32 is always index number 0.  So if     we put this routine in this file, we can avoid compiling the     whole of layerutil.c which is where this routine normally comes     from. */  return 0;}void__glutAdjustCoords(Window parent, int* x, int* y, int* width, int* height){  RECT rect;  /* adjust the window rectangle because Win32 thinks that the x, y,     width & height are the WHOLE window (including decorations),     whereas GLUT treats the x, y, width & height as only the CLIENT     area of the window. */  rect.left = *x; rect.top = *y;  rect.right = *x + *width; rect.bottom = *y + *height;  /* must adjust the coordinates according to the correct style     because depending on the style, there may or may not be     borders. */  AdjustWindowRect(&rect, WS_CLIPSIBLINGS | WS_CLIPCHILDREN |		   (parent ? WS_CHILD : WS_OVERLAPPEDWINDOW),		   FALSE);  /* FALSE in the third parameter = window has no menu bar */  /* readjust if the x and y are offscreen */  if(rect.left < 0) {    *x = 0;  } else {    *x = rect.left;  }    if(rect.top < 0) {    *y = 0;  } else {    *y = rect.top;  }  *width = rect.right - rect.left;	/* adjusted width */  *height = rect.bottom - rect.top;	/* adjusted height */}

⌨️ 快捷键说明

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