[Cmake-commits] [cmake-commits] hoffman committed CMakeLists.txt 1.8.12.1 1.8.12.2 HelloWorldX11.cxx NONE 1.2.2.2

cmake-commits at cmake.org cmake-commits at cmake.org
Sun Apr 20 20:45:01 EDT 2008


Update of /cvsroot/CMake/CMake/Tests/X11
In directory public:/mounts/ram/cvs-serv31631/Tests/X11

Modified Files:
      Tag: CMake-2-6
	CMakeLists.txt 
Added Files:
      Tag: CMake-2-6
	HelloWorldX11.cxx 
Log Message:
ENH: merge in from main tree


Index: CMakeLists.txt
===================================================================
RCS file: /cvsroot/CMake/CMake/Tests/X11/CMakeLists.txt,v
retrieving revision 1.8.12.1
retrieving revision 1.8.12.2
diff -C 2 -d -r1.8.12.1 -r1.8.12.2
*** CMakeLists.txt	25 Mar 2008 23:59:46 -0000	1.8.12.1
--- CMakeLists.txt	21 Apr 2008 00:44:59 -0000	1.8.12.2
***************
*** 1,5 ****
  # a simple C only test case
  cmake_minimum_required (VERSION 2.6)
! PROJECT (UseX11 C)
  
  INCLUDE (${CMAKE_ROOT}/Modules/FindX11.cmake)
--- 1,5 ----
  # a simple C only test case
  cmake_minimum_required (VERSION 2.6)
! PROJECT (UseX11 CXX C)
  
  INCLUDE (${CMAKE_ROOT}/Modules/FindX11.cmake)
***************
*** 24,26 ****
--- 24,35 ----
    INCLUDE_DIRECTORIES(${X11_INCLUDE_DIR})
    TARGET_LINK_LIBRARIES(UseX11 ${X11_LIBRARIES})
+   IF(APPLE)
+     ADD_EXECUTABLE(HelloWorldX11 HelloWorldX11.cxx)
+     TARGET_LINK_LIBRARIES(HelloWorldX11 ${X11_LIBRARIES})
+     install( TARGETS HelloWorldX11 DESTINATION bin)
+     # build a CPack driven installer package
+     set(CPACK_PACKAGE_NAME HelloWorldX11Package)
+     set(CPACK_PACKAGE_EXECUTABLES HelloWorldX11 HelloWorldX11)
+     include(CPack)
+   ENDIF(APPLE)
  ENDIF(X11_FOUND)

--- NEW FILE: HelloWorldX11.cxx ---

/*** START MAIN.H ***/
/* http://www.geocities.com/jeff_louie/x11/helloworld.htm* */
/*
 *  main.h
 *  TestX
 *
 *  Created by Jeff Louie on Tue Feb 03 2004.
 *  Copyright (c) 2004 __MyCompanyName__. All rights reserved.
 *
 */
 

#ifndef MAIN_H
#define MAIN_H 1

#include <iostream>

/* include the X library headers */
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>

class Main {

public:
  // constructor
  Main(int argc, char * const argv[]);
  //virtual ~Main();
        

private:
        

  /* here are our X variables */
  Display *dis;
  int screen;
  Window win;
  GC gc;

  /* here are our X routines declared! */
  void init_x();
  void close_x();
  void redraw();
  int delay(int i);

};

#endif

/*** END MAIN.H ***/

/*** START MAIN.CPP ***/

// modified from Brian Hammond's Howdy program at 
// http://www.insanityengine.com/doc/x11/xintro.html
// jeff louie 02.05.2004



int main (int argc, char * const argv[]) {
  Main m(argc, argv);
  return 0;
}

//Main::~Main() {;};
Main::Main (int argc, char * const argv[]) {
  XEvent event;           // XEvent declaration
  KeySym key;             // KeyPress Events
  char text[255];         // char buffer for KeyPress Events

  init_x();

  // event loop
  while(1) {     
  // get the next event and stuff it into our event variable.
  // Note:  only events we set the mask for are detected!
  XNextEvent(dis, &event);
                                

  switch (event.type) {
  int x;
  int y;
  case Expose:
    if (event.xexpose.count==0) {
    redraw();
    }
    break;
  case KeyPress:
    if (XLookupString(&event.xkey,text,255,&key,0)==1) {
    // use the XLookupString routine to convert the invent
    // KeyPress data into regular text.  Weird but necessary...
    if ((text[0]=='q') || (text[0]=='Q')) {
    close_x();
    }
    else {
    // echo key press
    printf("You pressed the %c key!\n",text[0]);
    }
    }
    break;
  case ButtonPress:
    // get cursor position
    x= event.xbutton.x;
    y= event.xbutton.y;
    strcpy(text,"X is FUN!");
    XSetForeground(dis,gc,rand()%event.xbutton.x%255);
    // draw text at cursor
    XDrawString(dis,win,gc,x,y, text, strlen(text));
    break;
  default:
    printf("Unhandled event.\n");
  }
  }
}

void Main::init_x() {  
  unsigned long black,white;

  dis=XOpenDisplay(NULL);
  screen=DefaultScreen(dis);
  black=BlackPixel(dis,screen),
    white=WhitePixel(dis, screen);
  win=XCreateSimpleWindow(dis,DefaultRootWindow(dis),0,0, 
                          300, 300, 5,black, white);
  XSetStandardProperties(dis,win,"Hello World","Hi",None,NULL,0,NULL);
  XSelectInput(dis, win, ExposureMask|ButtonPressMask|KeyPressMask);
  // get Graphics Context
  gc=XCreateGC(dis, win, 0,0);        
  XSetBackground(dis,gc,white);
  XSetForeground(dis,gc,black);
  XClearWindow(dis, win);
  XMapRaised(dis, win);
};

void Main::close_x() {
  XFreeGC(dis, gc);
  XDestroyWindow(dis,win);
  XCloseDisplay(dis);     
  exit(1);                                
};

void Main::redraw() {
  XClearWindow(dis, win);
};



More information about the Cmake-commits mailing list