Skip to content

Commit 3621dad

Browse files
committed
init
0 parents  commit 3621dad

File tree

12 files changed

+808
-0
lines changed

12 files changed

+808
-0
lines changed

.gitignore

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
06_geometry/geometry
2+
71_event/event
3+
04_colormap/colormap
4+
47_graphic/graphic
5+
61_korean/korean
6+
01_blank/ex01
7+
02_window/window
8+
81_locale/locale
9+
51_english/english
10+
03_inner_window/inner

01_blank/ex01.c

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#include <X11/Xlib.h>
2+
#include <unistd.h>
3+
#include <assert.h>
4+
5+
#define NIL (0)
6+
7+
void main()
8+
{
9+
Display *d = XOpenDisplay(0);
10+
assert(d);
11+
Window w = XCreateWindow(d, DefaultRootWindow(d), 0, 0,
12+
200, 100, 0,
13+
CopyFromParent, CopyFromParent, CopyFromParent,
14+
NIL, 0);
15+
XMapWindow(d, w);
16+
XFlush(d);
17+
sleep(3);
18+
XCloseDisplay(d);
19+
}

02_window/window.c

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#include <X11/Xlib.h>
2+
3+
main()
4+
{
5+
Display *d ;
6+
Window w, root ;
7+
8+
d = XOpenDisplay(NULL) ;
9+
10+
root = XDefaultRootWindow (d);
11+
w = XCreateSimpleWindow ( d, root, 50, 50, 400, 300,
12+
2, BlackPixel (d,0), WhitePixel(d,0) );
13+
XMapWindow (d, w);
14+
XFlush (d);
15+
16+
getchar();
17+
18+
XCloseDisplay (d);
19+
}

03_inner_window/inner.c

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#include <X11/Xlib.h>
2+
#include <unistd.h>
3+
4+
int main()
5+
{
6+
Display *d ;
7+
Window root, p, w1, w2, w3 ;
8+
unsigned long Black, White ;
9+
10+
d = XOpenDisplay (NULL);
11+
12+
/* 주 프로그램 부분 시작 */
13+
root = DefaultRootWindow(d);
14+
Black = BlackPixel(d,0);
15+
White = WhitePixel(d,0);
16+
17+
p = XCreateSimpleWindow (d, root, 100, 100,
18+
600, 400, 2, Black, White );
19+
w1 = XCreateSimpleWindow (d, p, 50, 50,
20+
200, 150, 2, Black, White );
21+
w2 = XCreateSimpleWindow (d, p, 200, 100,
22+
200, 150, 2, Black, White );
23+
w3 = XCreateSimpleWindow (d, p, 350, 200,
24+
200, 150, 2, Black, White );
25+
XMapWindow(d, p);
26+
XMapWindow(d, w1);
27+
XMapWindow(d, w2);
28+
XMapWindow(d, w3);
29+
30+
XFlush(d);
31+
sleep(3);
32+
33+
XDestroySubwindows(d, p);
34+
XDestroyWindow(d, p);
35+
/* 주 프로그램 부분 끝 */
36+
37+
XCloseDisplay (d);
38+
39+
return 0;
40+
}

04_colormap/colormap.c

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <X11/Xlib.h>
2+
#include <unistd.h>
3+
4+
int main()
5+
{
6+
Display *d;
7+
Window Root, w;
8+
/* 색상값을 알아낼 때 쓸 변수들 */
9+
Colormap CMap;
10+
XColor color, color_exact;
11+
unsigned long White, Black, Blue, Yellow;
12+
13+
d = XOpenDisplay ( NULL );
14+
15+
/* 원하는 색상 검정/파랑을 얻는 부분 */
16+
CMap = XDefaultColormap ( d, 0 );
17+
XAllocNamedColor ( d, CMap, "white", &color, &color_exact );
18+
White = color.pixel;
19+
// XAllocNamedColor ( d, CMap, "blue", &color, &color_exact );
20+
// Blue = color.pixel;
21+
XAllocNamedColor ( d, CMap, "yellow", &color, &color_exact );
22+
Yellow = color.pixel;
23+
24+
Root = DefaultRootWindow ( d );
25+
w = XCreateSimpleWindow ( d, Root, 100, 100, 600, 400,
26+
10, White, Yellow );
27+
28+
XMapWindow ( d, w );
29+
XFlush ( d );
30+
sleep(10);
31+
32+
XDestroyWindow ( d, w );
33+
XCloseDisplay ( d );
34+
35+
return 0;
36+
}

06_geometry/geometry.c

+151
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
/* 창의 색상 변화와 Geometry 변화 */
2+
3+
#include <X11/Xlib.h>
4+
#include <stdio.h>
5+
#include <unistd.h>
6+
7+
/* 함수 선언 */
8+
unsigned long UsrColorPixel( Display*, char* );
9+
10+
int main()
11+
{
12+
Display *d;
13+
Window w0, w1, w2; /* One TopLevel Window & Two Child Windows */
14+
unsigned long black_pixel;
15+
int w_X1, w_Y1, w_X2, w_Y2; /* 두 자식창의 위치 좌표 */
16+
unsigned int width, height, I; /* 자식창의 폭 & 높이 */
17+
18+
/* 서버와 접속하기 그리고 변수들을 초기화 */
19+
d = XOpenDisplay ( NULL );
20+
21+
black_pixel = BlackPixel ( d, 0 );
22+
width = 200; height = 100;
23+
w_X1 = 10; w_Y1 = 10; w_X2 = width - 10; w_Y2 = height - 10;
24+
25+
/* 자, 시작해볼까요? */
26+
printf( "I will make windows.\n" );
27+
sleep( 2 );
28+
29+
30+
/* 창 하나 그리고 자식창 2개 생성 */
31+
w0 = XCreateSimpleWindow ( d, DefaultRootWindow( d ),
32+
100, 100, width*2, height*2, 1,
33+
black_pixel, WhitePixel( d, 0 ) );
34+
w1 = XCreateSimpleWindow ( d, w0, w_X1, w_Y1, width, height, 1,
35+
black_pixel, UsrColorPixel( d, "magenta" ) );
36+
w2 = XCreateSimpleWindow ( d, w0, w_X2, w_Y2, width, height, 3,
37+
black_pixel, UsrColorPixel( d, "blue" ) );
38+
39+
/* 창과 자식창을 화면상에 표시 */
40+
XMapWindow( d, w0 );
41+
XMapSubwindows( d, w0 );
42+
XFlush( d );
43+
44+
printf( "Unmap & Map.\n" );
45+
sleep( 3 );
46+
47+
48+
49+
/* 창 하나를 UNMAP, MAP */
50+
XUnmapWindow( d, w1 ); XFlush( d );
51+
sleep( 1 );
52+
XMapWindow( d, w1 ); XFlush ( d );
53+
printf( "I will change the color of windows.\n" );
54+
sleep( 3 );
55+
56+
57+
58+
/* 창 하나의 색상을 변경 */
59+
XSetWindowBorder( d, w2, UsrColorPixel( d, "red" ) );
60+
XSetWindowBackground( d, w2, UsrColorPixel( d, "green" ) );
61+
XClearWindow( d, w2 );
62+
XFlush( d ); sleep( 1 );
63+
XSetWindowBackground( d, w0, UsrColorPixel( d, "yellow" ) );
64+
XClearWindow( d, w0 );
65+
XFlush( d );
66+
printf( "I will move windows.\n" );
67+
sleep( 3 );
68+
69+
70+
71+
/* 창 하나씩 이동 */
72+
for ( ; w_X1 < width - 10 ; )
73+
{
74+
XMoveWindow( d, w1, w_X1++, w_Y1 );
75+
XFlush( d );
76+
}
77+
for ( ; w_X1 > 10 ; )
78+
{
79+
XMoveWindow( d, w1, w_X1--, w_Y1 );
80+
XFlush( d );
81+
}
82+
for ( ; w_Y2 > 10 ; )
83+
{
84+
XMoveWindow( d, w2, w_X2, w_Y2-- );
85+
XFlush( d );
86+
}
87+
for ( ; w_Y2 < height - 10 ; )
88+
{
89+
XMoveWindow( d, w2, w_X2, w_Y2++ );
90+
XFlush( d );
91+
}
92+
printf( "I will change the size of windows.\n" );
93+
sleep( 3 );
94+
95+
96+
97+
/* 창의 크기를 확장/축소 */
98+
XResizeWindow ( d, w1, width + 100, height + 50 );
99+
XMoveResizeWindow ( d, w2, w_X2 + 50, w_Y1 + 20,
100+
width - 100, height - 50 );
101+
/* XMoveResize !!! */
102+
XFlush ( d );
103+
printf( "At last, I will change the width of borders.\n" );
104+
sleep( 3 );
105+
106+
107+
108+
/* 창의 테두리 확장 */
109+
for ( I = 1 ; I < 20 ; I++ )
110+
{
111+
XSetWindowBorderWidth ( d, w2, I );
112+
XFlush( d );
113+
}
114+
printf( "Jobs done. Merci.\n" );
115+
sleep( 3 );
116+
117+
118+
119+
/* 창 파괴 & 서버와의 접속 해제 */
120+
XUnmapWindow( d, w0 );
121+
XUnmapSubwindows( d, w0 );
122+
XDestroySubwindows( d, w0 );
123+
XDestroyWindow( d, w0 );
124+
125+
XCloseDisplay( d );
126+
127+
128+
return 0; /* 성공적으로 프로그램을 수행 */
129+
}
130+
131+
132+
/*
133+
134+
UsrColorPixel() : 주어진 이름의 색상에 대한 기본 컬러맵의 픽셀값 반환
135+
136+
*/
137+
138+
unsigned long UsrColorPixel( display, name )
139+
Display *display;
140+
char *name;
141+
{
142+
Colormap cmap;
143+
XColor c0, c1;
144+
145+
cmap = DefaultColormap( display, 0 );
146+
147+
XAllocNamedColor( display, cmap, name, &c0, &c1 );
148+
/* 여기서 우리는 c1 을 아직 이용하지 않습니다. */
149+
150+
return ( c0.pixel );
151+
}

0 commit comments

Comments
 (0)