디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

귀욤 GUI 툴킷에서 Button 실제 코드

나르시갤로그로 이동합니다. 2025.11.08 02:12:04
조회 115 추천 0 댓글 4

두둥....

이 코드는 실험 버전이고 추후 새로 작성할 것이다.ㅋㅋㅋ


/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* g-button.c
* Copyright (C) 2023 Hodong Kim, All rights reserved.
* Unauthorized copying of this software, via any medium is strictly prohibited.
* Proprietary and confidential.
* Written by Hodong Kim <hodong@nimfsoft.art>
*/
#include "g-button.h"
#include "c-mem.h"
#include <stdlib.h>
#include "c-str.h"
#include <string.h>
#include "guiyom.h"
#include "g-graphics.h"

void g_button_free (GButton* button)
{
GWidget* widget = (GWidget*) button;

if (widget->window)
XDestroyWindow (g_display, widget->window);

g_surface_free (button->surface);
free (button->text);
free (button);
g_fini ();
}

void cb_button_expose (GWidget* widget, XEvent* event)
{
GButton* button = (GButton*) widget;
c_log_info ("cb_button_expose: %s", button->text);

if (!button->surface)
{
c_log_info ("g_surface_new");
button->surface = g_surface_new (g_display, widget->window);
}

GCanvas* canvas = g_canvas_new (button->surface);

g_canvas_clear (canvas, SK_COLOR_WHITE);

if (event->type == ButtonPress)
g_canvas_set_color (canvas, sk_color_set_argb (0xff, 0x88, 0x88, 0x88));
else
g_canvas_set_color (canvas, sk_color_set_argb (0xff, 0xcc, 0xcc, 0xcc));

sk_rect_t rect = { 0, 0, button->widget.width, button->widget.height };
g_canvas_draw_rect (canvas, &rect);

GFont font = { 0 };
font.size = 14;

g_canvas_set_color (canvas, sk_color_set_argb (0xff, 0x00, 0x00, 0x00));
g_canvas_draw_simple_text (canvas, button->text, strlen (button->text),
kUTF8, 10, 20, &font);

g_canvas_free (canvas);
g_surface_flush (button->surface);

XFlush (g_display);
}

static void cb_button_realize (GWidget* widget)
{
c_log_info ("cb_button_realize");
Window parent_window;
GWidget* parent = widget->parent;

while (parent && !parent->window)
{
c_log_info ("parent: %p", parent);
parent = parent->parent;
}

if (parent)
{
parent_window = parent->window;
c_log_info ("parent_window: %lu", (unsigned long) parent_window);
}
else
{
parent_window = DefaultRootWindow (g_display);
}

widget->window = XCreateSimpleWindow (g_display,
parent_window, widget->x, widget->y,
widget->width, widget->height, 0,
BlackPixel (g_display, DefaultScreen (g_display)),
WhitePixel (g_display, DefaultScreen (g_display)));
XSelectInput (g_display, widget->window,
ExposureMask | ButtonPressMask | ButtonReleaseMask);
c_hash_map_insert (g_windows, C_UINT_TO_VOIDP (widget->window), widget);
XMapWindow (g_display, widget->window);
}

GButton* g_button_new (const char* text)
{
c_log_info ("g_button_new");
g_init ();
GButton* button = c_calloc (1, sizeof (GButton));
button->text = c_strdup (text);
button->widget.x = 0;
button->widget.y = 0;
button->widget.width = 100;
button->widget.height = 30;

button->widget.realize = cb_button_realize;
button->widget.expose = cb_button_expose;
button->widget.free_func = (GWidgetFreeFunc) g_button_free;

return button;
}

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이성 보는 눈 없어서 걱정되는 스타는? 운영자 25/11/10 - -
AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
2901726 ㄴㅐ년은 올해보다 더 바쁘겟구낭.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 62 0
2901725 pyside 불편하네 프갤러(221.167) 11.09 64 0
2901724 슬레이어즈 트라이 주제곡이 날 겨냥하노 이기 [5] 슈퍼막코더(116.64) 11.09 101 0
2901723 나는조현병이야 나는내향적이야 손발이시립디다갤로그로 이동합니다. 11.09 67 0
2901722 ㅆㅇㅆ는 저 성격으로 사업 절대 성공못함 [1] ㅇㅇ(93.152) 11.09 156 7
2901721 겨울 모기가 쌔긴쌔당 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 38 0
2901719 방일방이방삼방사방오방육방칠방팔 [2] 배구공(119.202) 11.09 61 0
2901718 나무식혜나무식혜나무식혜나무식혜나무식혜나무식혜 배구공(119.202) 11.09 43 0
2901717 개나리개나리개나리개나리개나리개나리개나리 [1] 배구공(119.202) 11.09 62 0
2901716 왜 나이들거나 여자 작가들은 쓸데 없는 싸구려 신파극을 꾸역꾸역 넣는걸ㄲ [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 102 1
2901715 C++ 개발자는 여전히 경쟁력 높을라나 [4] ㅇㅇ(118.235) 11.09 141 0
2901713 나님을 보면 왜 사회 지능이 높아야 하는지 알 수 있음 ㅇㅅㅇ [3] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 94 0
2901712 사람은 어차피 [5] 루도그담당(58.239) 11.09 136 0
2901711 월 580받는 개발자인데 백준보고 개씹벽느껴지네 ㅋㅋ [9] ㅇㅇ갤로그로 이동합니다. 11.09 159 0
2901709 ☆*:.。. o(≧▽≦)o .。.:*☆ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 52 0
2901708 왜 방충망까지 살짝 열려잇엇징.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 62 0
2901707 모기약 빼느라 창문 열어놨더니 벌레 들어온듯.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 62 0
2901706 할짝할짝.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 43 0
2901705 너의 췌장이 먹구시포❤+ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 34 0
2901704 떽! 모렁이 너 일루안와잇?! ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 59 0
2901703 제미니 왜 구라까냐 [1] 프갤러(182.216) 11.09 62 0
2901702 키우는 동물에 따른 차이점 빅데이터 분석 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 44 0
2901701 동우가 똑똑한건 맞는데 [5] 루도그담당(58.239) 11.09 141 1
2901700 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 59 0
2901699 슬슬 저도 화가 나네요 [9] 에이도비갤로그로 이동합니다. 11.09 135 0
2901698 그런데 ㅆㅇㅆ 쟤 저러고 금방 다시옴 [2] ㅇㅇ(124.48) 11.09 109 1
2901697 동해가서 물회랑 둠칫둠칫국 먹구싶당 [5] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 91 0
2901696 배고프다 [8] ㅇㅇ(122.199) 11.09 80 0
2901695 배고프다 배구공(119.202) 11.09 43 0
2901694 배고프다 ㅇㅇ(122.199) 11.09 41 0
2901693 닭가슴살은 절대 클린푸드가 아님 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 50 0
2901691 배고프다 배구공(119.202) 11.09 32 0
2901690 배고프다 배구공(119.202) 11.09 42 0
2901689 배고프다 배구공(119.202) 11.09 30 0
2901688 배고프다 배구공(119.202) 11.09 33 0
2901687 회나 구이가 은근 포만감 오래가는듯 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 36 0
2901686 ㅇㅇ 념글 보내라 걍 안올란다. 너네 정병들이랑 있기가 힘들어서 안온다. [31] ㅆㅇㅆ찡갤로그로 이동합니다. 11.09 479 9
2901685 돈돈초코볼 배구공(119.202) 11.09 26 0
2901684 서해에서 나는 해산물은 중국 중금속 때문에 꺼려짐 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 37 0
2901683 살 빼는데는 해산물 힘 키우는덴 육고기 [4] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 45 0
2901682 좆솔근 따라가라 [1] ㅇㅇ(211.196) 11.09 56 0
2901681 ㄱㄴ 배구공(119.202) 11.09 27 0
2901678 장거리 함 뛰면 후유증 생각보다 오래가는듯 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 35 0
2901677 뛰뛰하면 오히려 식욕이 감소해서 식사량 줄음 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 37 0
2901676 솔직히 애널두 모기 나오면 진짜 답 없당.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 37 0
2901675 왜 날씨 추워지니까 오히려 모기가 더 쌔진걸깡? ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 27 0
2901673 한달에 1km 씩만 늘려야징 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 29 0
2901672 나님 애널은 모기한테 괴롭힘 안 당하려구 모기약 찐하게 틀구갔다옴 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 36 0
2901671 실베가 내 샌드백 가루로 만듬 [9] ㅇㅇ(211.234) 11.09 86 0
2901668 ㅆㅇㅆ병신새끼 실베까지 가서 온동네에 조리돌림 당하네 ㅇㅇ(211.196) 11.09 72 5
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2