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

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

?? xrandrmain.c

?? rotate and resize window in x system
?? C
字號:
/*
 * $XFree86: xc/programs/xrandr/xrandr.c,v 1.11 2002/10/14 18:01:43 keithp Exp $
 *
 * Copyright ? 2001 Keith Packard, member of The XFree86 Project, Inc.
 * Copyright ? 2002 Hewlett Packard Company, Inc.
 *
 * Permission to use, copy, modify, distribute, and sell this software and its
 * documentation for any purpose is hereby granted without fee, provided that
 * the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation, and that the name of Keith Packard or HP not be used in
 * advertising or publicity pertaining to distribution of the software without
 * specific, written prior permission.  Keith Packard and HP makes no
 * representations about the suitability of this software for any purpose.  It
 * is provided "as is" without express or implied warranty.
 *
 * KEITH PACKARD and HP DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
 * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 *
 * Blame Jim Gettys for any bugs; he wrote most of the client side code,
 * and part of the server code for randr.
 */

#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xlibint.h>
#include <X11/Xproto.h>
#include <X11/extensions/Xrandr.h>
#include <X11/extensions/Xrender.h>	/* we share subpixel information */
#include <string.h>
#include <stdlib.h>

static char *program_name;

static char *direction[5] = {
  "normal", 
  "left", 
  "inverted", 
  "right",
  "\n"};

/* subpixel order */
static char *order[6] = {
  "unknown",
  "horizontal rgb",
  "horizontal bgr",
  "vertical rgb",
  "vertical bgr",
  "no subpixels"};


static void
usage(void)
{
  fprintf(stderr, "usage: %s [options]\n", program_name);
  fprintf(stderr, "  where options are:\n");
  fprintf(stderr, "  -display <display> or -d <display>\n");
  fprintf(stderr, "  -help\n");
  fprintf(stderr, "  -o <normal,inverted,left,right,0,1,2,3>\n");
  fprintf(stderr, "            or --orientation <normal,inverted,left,right,0,1,2,3>\n");
  fprintf(stderr, "  -q        or --query\n");
  fprintf(stderr, "  -s <size>/<width>x<height> or --size <size>/<width>x<height>\n");
  fprintf(stderr, "  -r <rate> or --rate <rate>\n");
  fprintf(stderr, "  -v        or --version\n");
  fprintf(stderr, "  -x        (reflect in x)\n");
  fprintf(stderr, "  -y        (reflect in y)\n");
  fprintf(stderr, "  --screen <screen>\n");
  fprintf(stderr, "  --verbose\n");
  
  exit(1);
  /*NOTREACHED*/
}

int
main (int argc, char **argv)
{
  Display       *dpy;
  XRRScreenSize *sizes;
  XRRScreenConfiguration *sc;
  int		nsize;
  int		nrate;
  short		*rates;
  Window	root;
  Status	status = RRSetConfigFailed;
  int		rot = -1;
  int		verbose = 0, query = 0;
  Rotation	rotation, current_rotation, rotations;
  XEvent	event;
  XRRScreenChangeNotifyEvent *sce;    
  char          *display_name = NULL;
  int 		i, j;
  SizeID	current_size;
  short		current_rate;
  int		rate = -1;
  int		size = -1;
  int		dirind = 0;
  int		setit = 0;
  int		screen = -1;
  int		version = 0;
  int		event_base, error_base;
  int		reflection = 0;
  int		width = 0, height = 0;
  int		have_pixel_size = 0;
  int		ret = 0;

  program_name = argv[0];
  if (argc == 1) query = 1;
  for (i = 1; i < argc; i++) {
    if (!strcmp ("-display", argv[i]) || !strcmp ("-d", argv[i])) {
      if (++i>=argc) usage ();
      display_name = argv[i];
      continue;
    }
    if (!strcmp("-help", argv[i])) {
      usage();
      continue;
    }
    if (!strcmp ("--verbose", argv[i])) {
      verbose = 1;
      continue;
    }

    if (!strcmp ("-s", argv[i]) || !strcmp ("--size", argv[i])) {
      if (++i>=argc) usage ();
      if (sscanf (argv[i], "%dx%d", &width, &height) == 2)
	have_pixel_size = 1;
      else {
	size = atoi (argv[i]);
	if (size < 0) usage();
      }
      setit = 1;
      continue;
    }

    if (!strcmp ("-r", argv[i]) || !strcmp ("--rate", argv[i])) {
      if (++i>=argc) usage ();
      rate = atoi (argv[i]);
      if (rate < 0) usage();
      setit = 1;
      continue;
    }

    if (!strcmp ("-v", argv[i]) || !strcmp ("--version", argv[i])) {
      version = 1;
      continue;
    }

    if (!strcmp ("-x", argv[i])) {
      reflection |= RR_Reflect_X;
      setit = 1;
      continue;
    }
    if (!strcmp ("-y", argv[i])) {
      reflection |= RR_Reflect_Y;
      setit = 1;
      continue;
    }
    if (!strcmp ("--screen", argv[i])) {
      if (++i>=argc) usage ();
      screen = atoi (argv[i]);
      if (screen < 0) usage();
      continue;
    }
    if (!strcmp ("-q", argv[i]) || !strcmp ("--query", argv[i])) {
      query = 1;
      continue;
    }
    if (!strcmp ("-o", argv[i]) || !strcmp ("--orientation", argv[i])) {
      char *endptr;
      if (++i>=argc) usage ();
      dirind = strtol(argv[i], &endptr, 0);
      if (*endptr != '\0') {
	for (dirind = 0; dirind < 4; dirind++) {
	  if (strcmp (direction[dirind], argv[i]) == 0) break;
	}
	if ((dirind < 0) || (dirind > 3))  usage();
      }
      rot = dirind;
      setit = 1;
      continue;
    }
    usage();
  }
  if (verbose) query = 1;

  dpy = XOpenDisplay (display_name);

  if (dpy == NULL) {
      fprintf (stderr, "Can't open display %s\n", display_name);
      exit (1);
  }
  if (screen < 0)
    screen = DefaultScreen (dpy);
  if (screen >= ScreenCount (dpy)) {
    fprintf (stderr, "Invalid screen number %d (display has %d)\n",
	     screen, ScreenCount (dpy));
    exit (1);
  }

  root = RootWindow (dpy, screen);

  sc = XRRGetScreenInfo (dpy, root);

  if (sc == NULL) 
      exit (1);
  
  current_size = XRRConfigCurrentConfiguration (sc, &current_rotation);

  sizes = XRRConfigSizes(sc, &nsize);

  if (have_pixel_size) {
    for (size = 0; size < nsize; size++)
    {
      if (sizes[size].width == width && sizes[size].height == height)
	break;
    }
  }
  else if (size < 0)
    size = current_size;

  if (size >= nsize) usage();

  if (rot < 0)
  {
    for (rot = 0; rot < 4; rot++)
	if (1 << rot == (current_rotation & 0xf))
	    break;
  }

  current_rate = XRRConfigCurrentRate (sc);

  if (rate < 0)
  {
    if (size == current_size)
	rate = current_rate;
    else
	rate = 0;
  }

  if (version) {
    int major_version, minor_version;
    XRRQueryVersion (dpy, &major_version, &minor_version);
    printf("Server reports RandR version %d.%d\n", 
	   major_version, minor_version);
  }

  if (query) {
    printf(" SZ:    Pixels          Physical       Refresh\n");
    for (i = 0; i < nsize; i++) {
      printf ("%c%-2d %5d x %-5d  (%4dmm x%4dmm )",
	   i == current_size ? '*' : ' ',
	   i, sizes[i].width, sizes[i].height,
	   sizes[i].mwidth, sizes[i].mheight);
      rates = XRRConfigRates (sc, i, &nrate);
      if (nrate) printf ("  ");
      for (j = 0; j < nrate; j++)
	printf ("%c%-4d",
		i == current_size && rates[j] == current_rate ? '*' : ' ',
		rates[j]);
      printf ("\n");
    }
  }

  rotations = XRRConfigRotations(sc, &current_rotation);

  rotation = 1 << rot ;
  if (query) {
    for (i = 0; i < 4; i ++) {
      if ((current_rotation >> i) & 1) 
	printf("Current rotation - %s\n", direction[i]);
    }

    printf("Current reflection - ");
    if (current_rotation & (RR_Reflect_X|RR_Reflect_Y))
    {
	if (current_rotation & RR_Reflect_X) printf ("X Axis ");
	if (current_rotation & RR_Reflect_Y) printf ("Y Axis");
    }
    else
	printf ("none");
    printf ("\n");
    

    printf ("Rotations possible - ");
    for (i = 0; i < 4; i ++) {
      if ((rotations >> i) & 1)  printf("%s ", direction[i]);
    }
    printf ("\n");

    printf ("Reflections possible - ");
    if (rotations & (RR_Reflect_X|RR_Reflect_Y))
    {
        if (rotations & RR_Reflect_X) printf ("X Axis ");
	if (rotations & RR_Reflect_Y) printf ("Y Axis");
    }
    else
	printf ("none");
    printf ("\n");
  }

  if (verbose) { 
    printf("Setting size to %d, rotation to %s\n",  size, direction[rot]);

    printf ("Setting reflection on ");
    if (reflection)
    {
	if (reflection & RR_Reflect_X) printf ("X Axis ");
	if (reflection & RR_Reflect_Y) printf ("Y Axis");
    }
    else
	printf ("neither axis");
    printf ("\n");

    if (reflection & RR_Reflect_X) printf("Setting reflection on X axis\n");

    if (reflection & RR_Reflect_Y) printf("Setting reflection on Y axis\n");
  }

  /* we should test configureNotify on the root window */
  XSelectInput (dpy, root, StructureNotifyMask);

  if (setit) XRRSelectInput (dpy, root,
			RRScreenChangeNotifyMask);
  if (setit) status = XRRSetScreenConfigAndRate (dpy, sc,
						 DefaultRootWindow (dpy), 
	       (SizeID) size, (Rotation) (rotation | reflection), rate, CurrentTime);
  
  XRRQueryExtension(dpy, &event_base, &error_base);

  if (setit && status == RRSetConfigFailed) {
     printf ("Failed to change the screen configuration!\n");
     ret = 1;
  }

  if (verbose && setit) {
    if (status == RRSetConfigSuccess)
      {
	while (1) {
	int spo;
	XNextEvent(dpy, (XEvent *) &event);
	
	printf ("Event received, type = %d\n", event.type);
	/* update Xlib's knowledge of the event */
	XRRUpdateConfiguration (&event);
	if (event.type == ConfigureNotify)
	  printf("Received ConfigureNotify Event!\n");

	switch (event.type - event_base) {
	case RRScreenChangeNotify:
	  sce = (XRRScreenChangeNotifyEvent *) &event;

	  printf("Got a screen change notify event!\n");
	  printf(" window = %d\n root = %d\n size_index = %d\n rotation %d\n", 
	       (int) sce->window, (int) sce->root, 
	       sce->size_index,  sce->rotation);
	  printf(" timestamp = %ld, config_timestamp = %ld\n",
	       sce->timestamp, sce->config_timestamp);
	  printf(" Rotation = %x\n", sce->rotation);
	  printf(" %d X %d pixels, %d X %d mm\n",
		 sce->width, sce->height, sce->mwidth, sce->mheight);
	  printf("Display width   %d, height   %d\n",
		 DisplayWidth(dpy, screen), DisplayHeight(dpy, screen));
	  printf("Display widthmm %d, heightmm %d\n", 
		 DisplayWidthMM(dpy, screen), DisplayHeightMM(dpy, screen));
	  spo = sce->subpixel_order;
	  if ((spo < 0) || (spo > 5))
	    printf ("Unknown subpixel order, value = %d\n", spo);
	  else printf ("new Subpixel rendering model is %s\n", order[spo]);
	  break;
	default:
	  if (event.type != ConfigureNotify) 
	    printf("unknown event received, type = %d!\n", event.type);
	}
	}
      }
  }
  XRRFreeScreenConfigInfo(sc);
  return(ret);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本va在线观看| 国内久久精品视频| 亚洲精品五月天| 东方aⅴ免费观看久久av| 日韩伦理av电影| 欧美一级在线视频| 99久久伊人精品| 免费在线观看成人| 亚洲综合视频在线观看| 久久久另类综合| 4438x成人网最大色成网站| 99精品欧美一区| 国产一二三精品| 日本v片在线高清不卡在线观看| 国产精品久久综合| 久久婷婷成人综合色| 欧美日韩aaaaa| www.亚洲国产| 欧美亚洲国产一卡| 91久久奴性调教| av一本久道久久综合久久鬼色| 成人丝袜18视频在线观看| 五月婷婷综合激情| 欧美岛国在线观看| 日韩和欧美的一区| 亚洲视频在线一区| 国产亚洲欧美中文| 日本欧洲一区二区| 色呦呦网站一区| 色婷婷综合久久久久中文一区二区| 日韩精品国产欧美| 国精品**一区二区三区在线蜜桃| 成人久久视频在线观看| 91福利社在线观看| 日韩一区二区中文字幕| 国产精品三级电影| 午夜精品一区二区三区三上悠亚 | 蜜桃av噜噜一区| 亚洲一本大道在线| 日韩专区一卡二卡| 本田岬高潮一区二区三区| 成人a区在线观看| 成人午夜激情视频| 99久久综合精品| 欧美日韩一二区| 欧美一区二区精品在线| 欧美性xxxxxxxx| 日韩一级片网址| 国产视频一区不卡| 首页国产丝袜综合| 国产精品99久久不卡二区| www.性欧美| 日韩欧美在线影院| 亚洲免费在线看| 美女网站色91| 欧美日韩一区在线观看| 精品国产精品网麻豆系列| 亚洲激情一二三区| 国产一区三区三区| 色婷婷av一区二区三区之一色屋| 久久综合色播五月| 中文字幕在线不卡视频| 男人的j进女人的j一区| 丰满岳乱妇一区二区三区| 99久久免费国产| 国产一区二区剧情av在线| 成人黄色综合网站| 日韩欧美国产午夜精品| 成人国产免费视频| 偷窥国产亚洲免费视频| 亚洲欧美韩国综合色| 91色九色蝌蚪| 欧美国产日韩a欧美在线观看| 五月激情综合网| 色综合天天狠狠| 国产精品青草久久| 激情欧美一区二区| 欧美一区二区在线不卡| 一区二区在线观看视频在线观看| 国产成人自拍网| 精品国产成人在线影院| 欧美丝袜第三区| 亚洲视频在线一区| 成人av网址在线观看| 久久久久国产精品麻豆ai换脸| 日韩专区欧美专区| 欧美一区二区三区四区视频 | 国产精品一区二区果冻传媒| 欧美乱熟臀69xxxxxx| 亚洲中国最大av网站| 欧美性受xxxx| 亚洲综合在线观看视频| 欧美精品自拍偷拍| 国产激情精品久久久第一区二区| 精品精品国产高清一毛片一天堂| 热久久久久久久| 精品欧美一区二区三区精品久久| 久久精品国产亚洲aⅴ| 久久久久久免费| 91丨porny丨国产| 午夜激情一区二区三区| 欧美一区二区三区免费大片| 久久激情五月婷婷| 中文字幕免费不卡| 欧美在线观看一二区| 日本不卡一二三| 日韩美女啊v在线免费观看| 99国产精品国产精品毛片| 日本亚洲电影天堂| 一区二区三区中文字幕精品精品 | 91蜜桃婷婷狠狠久久综合9色| 亚洲欧洲一区二区三区| 亚洲欧美日本韩国| 亚洲精品免费在线播放| 午夜欧美电影在线观看| 亚洲激情第一区| 欧美日韩一区国产| 青青草成人在线观看| 精品国精品自拍自在线| 国产精品一区不卡| 亚洲欧美在线aaa| 在线视频一区二区免费| 亚洲一二三区在线观看| 欧美一区二区三区四区久久 | 国产精品18久久久久久久久久久久| 亚洲欧美激情一区二区| 久久这里只精品最新地址| 欧美亚洲国产bt| 色婷婷久久一区二区三区麻豆| 国产九九视频一区二区三区| 亚洲18女电影在线观看| 亚洲黄色片在线观看| 亚洲精品一线二线三线| 欧美久久婷婷综合色| 欧美体内she精高潮| 欧洲亚洲国产日韩| 成人精品国产一区二区4080| 国产一区二区福利视频| 韩国av一区二区三区在线观看| 亚洲国产精品久久一线不卡| 亚洲美女视频一区| 亚洲电影第三页| 亚洲电影一区二区| 亚洲韩国一区二区三区| 亚洲黄色小视频| 亚洲mv在线观看| 免费高清在线视频一区·| 日韩**一区毛片| 蜜桃av一区二区| 国产精品99久久久| 欧美中文一区二区三区| 91国偷自产一区二区开放时间 | 欧美猛男男办公室激情| 欧美体内she精高潮| 欧美va亚洲va在线观看蝴蝶网| 91精品国产综合久久久蜜臀粉嫩| 三级精品在线观看| 婷婷一区二区三区| 国产美女在线观看一区| 成人app在线观看| 亚洲国产精品嫩草影院| 日韩一区二区三区高清免费看看| 韩日av一区二区| 亚洲国产精品天堂| 欧美激情综合五月色丁香 | 制服丝袜av成人在线看| 成人精品gif动图一区| 麻豆精品国产91久久久久久| 亚洲精品久久久蜜桃| 国产亚洲综合色| 日韩午夜av一区| 欧美午夜精品电影| av网站免费线看精品| 国产精品自拍毛片| 欧美bbbbb| 亚洲超碰精品一区二区| 亚洲欧美区自拍先锋| 国产亚洲精品精华液| 欧美成人综合网站| 777午夜精品免费视频| 色欧美日韩亚洲| 成人国产在线观看| 国产乱色国产精品免费视频| 日韩高清国产一区在线| 亚洲最新视频在线播放| 最新国产精品久久精品| 国产婷婷精品av在线| 精品av综合导航| 欧美电影免费观看完整版| 69堂精品视频| 欧美精品日韩一区| 欧美人妖巨大在线| 欧美日韩中文一区| 91福利国产精品| 在线视频一区二区三区| 91在线云播放| 91婷婷韩国欧美一区二区| 99精品欧美一区二区三区小说 | 精品视频在线免费观看| 色播五月激情综合网|