디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.08 02:12:04
조회 126 추천 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 겨울가전 SALE! 쿨한 겨울 HOT세일 운영자 25/11/12 - -
2901633 고졸국비 30살인데 웹개발 초봉 3000이면 잘한거임? [6] 프갤러(175.208) 11.09 177 0
2901632 틀렸다. 레거시는 그저 무능과 나태함일 뿐이다. 프갤러(211.234) 11.09 83 0
2901631 짐 정리 어떻게 하냐.... 이사갈 집이 정해질지도? 넥도리아(14.35) 11.09 60 0
2901630 코드짜는 여자 << 꼴리지않냐 [12] 루도그담당(58.239) 11.09 175 0
2901629 냥덩이도 장기기증 준비를 발명도둑잡기(118.216) 11.09 58 0
2901628 이천수, 억대 사기혐의 피소 발명도둑잡기(118.216) 11.09 63 0
2901626 이재명이 말하는.. 윤석열이 AI 망친 이유 [1] 발명도둑잡기(118.216) 11.09 96 1
2901624 현역일 땐 나도 기술 중심의 생각을 했었는데 [3] chironpractor갤로그로 이동합니다. 11.09 101 0
2901623 취업하지마 저능아 버러지들 천지다. [2] 프갤러(27.176) 11.09 131 0
2901622 다이소 키보드 저번에 디자인 마음에 드는거 있었는데 이제 없네 프갤러(223.63) 11.09 64 0
2901620 SI 판에 기사 이거 필요하다는데 [3] 프갤러(221.157) 11.09 90 0
2901619 밑천이 다 드러나는데 자꾸 아는척하니까 [5] ㅇㅇ(106.252) 11.09 360 15
2901618 타로 사이트를 몇개월간 쳐만드는것도 제정신 아니긴함 ㅇㅇ(106.252) 11.09 100 4
2901617 여자들은 말투부터가 티가 남 [17] 에이도비갤로그로 이동합니다. 11.09 199 1
2901616 24시간 365일 스파링 갤러리에 오셨습니다 [4] 헬마스터갤로그로 이동합니다. 11.09 83 0
2901615 진짜 악감정 없음. 잘되길 빈다. [2] ㅇㅇ(124.48) 11.09 112 2
2901610 이 글에서 다시 유추할 수 있음. [5] ㅇㅇ(124.48) 11.09 133 5
2901609 기대가 됩니당❤+ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 57 0
2901608 프론트엔드도 쉽지 않은데 정상임? [4] 프갤러(125.131) 11.09 170 0
2901606 나님 넘나 순수행..⭐+ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 60 0
2901605 ㅆㅇㅆ야 취업도 같이 병행해라 [2] ㅇㅇ(124.48) 11.09 126 5
2901604 점마는 내가 저것만 하는줄 아는건가 ㅆㅇㅆ찡갤로그로 이동합니다. 11.09 122 7
2901603 여자들도 디시를 함? [10] 류도그담당(58.239) 11.09 125 0
2901601 악감정은 없는데 이걸로 ㅆㅇㅆ 수익을 유추할 수 있음. [4] ㅇㅇ(124.48) 11.09 160 5
2901600 나님은 남에게 관심이 없어도 남들은 냥덩이에게 관심이 많다는걸 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 57 0
2901599 아 저 정병유동 누군지 알겠네. 저 뚱녀 조현병 [8] ㅆㅇㅆ찡갤로그로 이동합니다. 11.09 181 6
2901598 더닝 크루거 < 이 말 [2] 류도그담당(58.239) 11.09 95 0
2901595 방금 키오스크에서 윈도우 정품인증 워터마크를 봤다. [3] 프갤러(58.227) 11.09 113 0
2901594 ㅆㅇㅆ 정신병심하노 프갤러(106.101) 11.09 117 6
2901592 "한국이 독도 불법 점거" 日시마네현 "다케시마의 날 각료 참석 요청" 발명도둑잡기(118.216) 11.09 54 0
2901591 저새끼 더닝크루거 맞다니까 ㅋㅋ ㅇㅇ(118.235) 11.09 101 3
2901590 아스퍼거 더닝크루거 ㅆㅇㅆ 개쳐맞네 또 ㅋㅋ ㅇㅇ(118.235) 11.09 105 6
2901589 나님 나무위키에 박제된갤만 최소 5곳 이상이네;; [4] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 104 2
2901588 열등감에 ㅆㅇㅆ 괴롭히는거지 저 슼통피는 [4] 프갤러(219.250) 11.09 132 0
2901587 박지현은 녹즙 배달, 류호정은 목수…여의도 떠난 청년 정치인들, 지금은 발명도둑잡기(118.216) 11.09 71 0
2901585 난 저 정병 이해가 안가는게 왜 특정마갤에 [5] ㅆㅇㅆ찡갤로그로 이동합니다. 11.09 160 6
2901584 나님 왤캐 순수할깡..? [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.09 84 0
2901583 다들 일요일 주말인데 [7] 루도그담당(58.239) 11.09 102 0
2901581 ㅆㅇㅆ 백엔드 갤에서 쳐맞으니까 셀프신고삭함 [1] ㅇㅇ(211.234) 11.09 121 7
2901579 ㅆㅇㅆ야 셀프신고삭 자작극좀 적당히해라 [1] ㅇㅇ(211.234) 11.09 92 5
2901578 다중이 정병은 1년넘게 저지랄이고. ㅆㅇㅆ(124.216) 11.09 110 7
2901577 요새 이야기하면서 느끼는게 그냥 누구랑 이야기하는거보다 [9] ㅆㅇㅆ(124.216) 11.09 175 5
2901576 온라인서 확산된 충격 영상…日 '좀비 담배' 비상 발명도둑잡기(118.216) 11.09 103 0
2901575 아무래도 외주가 기본 베이스다보니 현업이랑 이야기할 경우 많은데 [1] ㅆㅇㅆ(124.216) 11.09 108 6
2901571 헤어디자이너 하다가 전향했는데 [5] 프갤러(211.235) 11.09 107 2
2901569 일이 비싼건 없고 싼것만있노 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 11.09 133 7
2901568 멕시코 정부군 남미 마약 카르텔 아파치 공습 영상 배구공(121.151) 11.09 83 0
2901565 할배는 레딧으로 빤스런하기로 했다 ㅋㅋ [3] 나르시갤로그로 이동합니다. 11.09 102 0
2901564 미소녀 연애 시뮬레이션 게임 만들기 - 개요 [1] 프갤러(121.172) 11.09 65 0
2901563 자바는 스스로 좇같은점들을 고칠 생각이 전혀없음 개좇센이랑팜박이임 [1] 타이밍뒷.통수한방(1.213) 11.09 76 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2