디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.08 02:12:04
조회 125 추천 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 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48681 65
2902671 나 섹시하냐? ㅇㅇ(222.108) 11.15 16 0
2902669 나님 졸리당.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.15 15 0
2902668 코딩 에디터 다크배경 vs 화이트배경 [1] ㅇㅇ(14.5) 11.15 17 0
2902667 46세 가난한 도태남이라 울었다 [5] 발명도둑잡기(118.216) 11.15 27 0
2902665 로보트 고깃집 발명도둑잡기(118.216) 11.15 8 0
2902663 선 기부 후 소스공개 프로젝트 발명도둑잡기(118.216) 11.15 14 0
2902661 심리상담이 ‘징계’ 폴더에…삼성은 왜? [박대기의 핫클립] 발명도둑잡기(118.216) 11.15 96 0
2902660 귀염만이 모든것을 능가 한당⭐+ By 나님 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.15 20 0
2902659 “주식 대박났다”는 입사동기 살해…“돈 안 빌려줘서” 발명도둑잡기(118.216) 11.15 20 0
2902658 역시 프갤은 냥덩이 없으면 망하는구낭 [3] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.15 25 0
2902657 윤석열 - 내 이름 계엄 풀버전 [14] 발명도둑잡기(118.216) 11.15 45 0
2902656 "AI 버블, 지금 당장 돈 빼라"…2년 만에 입 연 월가 예언가의 경고 발명도둑잡기(118.216) 11.15 14 0
2902655 입시 면접 120% 합격 완벽 솔루션(필승 꿀팁)!I 프갤러(121.142) 11.15 19 1
2902654 군대 월급 발명도둑잡기(118.216) 11.15 12 0
2902653 '축의금 3만원 낸 친구' 눈물의 사연 주인공 밝혀졌다 발명도둑잡기(118.216) 11.15 10 0
2902652 게임기의 한계를 무시한 개발자들이 불가능한 게임을 만든 묘수들 발명도둑잡기(118.216) 11.15 15 0
2902651 오늘은 Ada 라벤스카 프로파일 공부해야지 ㅎㅎ 나르시갤로그로 이동합니다. 11.15 10 0
2902650 나씻주준⭐+ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.15 19 0
2902649 ㄹㅇ 마라톤 휴유증 장난 아닌듯 [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.15 28 0
2902648 스트레스 관리의 모범적인 사례 chironpractor갤로그로 이동합니다. 11.15 22 0
2902647 아시아 최대 이랜드 물류센터 화재 발명도둑잡기(118.216) 11.15 14 0
2902646 딱봐도 프갤 좆망한거같은데 대피소 어디임? [6] 프갤러(125.139) 11.15 66 0
2902644 샤오펑, 휴머노이드 로봇 내부 공개… “사람 아닌 진짜 로봇” 해명 발명도둑잡기(118.216) 11.15 11 0
2902643 난 서브 모니터 안씀 ㅇㅇ(14.5) 11.15 27 0
2902642 [애니뉴스] ScanCat1 - 이미지 글자 추출 프로그램 프갤러(121.172) 11.15 31 0
2902641 이번엔 '센토'…주한미군, 한국서 '생화학전 연구' 논란 / JTBC 발명도둑잡기(118.216) 11.15 15 0
2902640 주한미군철거가 발명도둑잡기(118.216) 11.15 11 0
2902639 10대 폭행한 주한미군…"나도 맞았다"더니 CCTV엔? 발명도둑잡기(118.216) 11.15 12 0
2902637 다음 글은 뭐가 문제인가 나르시갤로그로 이동합니다. 11.15 21 0
2902636 나님 왤케 특별하실깡?⭐+ [1] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.15 34 0
2902635 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ [1] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.15 26 0
2902634 나는조현병이야 나는내향적이야 손발이시립디다갤로그로 이동합니다. 11.15 33 0
2902633 러빨러 오늘 자존심 상하는 일 있었을 듯 [2] 나르시갤로그로 이동합니다. 11.15 31 1
2902632 국민의힘 갤러리 혐오가 된 현상 우리 모두가 작은 배려가 넥도리아(220.74) 11.15 25 0
2902631 점심 간식 [3] 발명도둑잡기(118.216) 11.15 40 0
2902630 회사에서 자꾸 업무없다고 지랄하는데 어떡해야하냐 [1] 프갤러(222.96) 11.15 52 0
2902629 프갤장애인새끼들 아직도 똑같은소리만 쳐하고 사네 프갤러(182.231) 11.15 41 2
2902628 내가 아는걸 남이 모른다고 [7] 루도그담당(58.239) 11.15 84 0
2902627 레딧에도 러스트 정병 출몰해서 ㅎㅎ 나르시갤로그로 이동합니다. 11.15 36 0
2902626 [대한민국] 신은 있었다! 충격! 태블릿 조작 은폐하는 법원!? 프갤러(121.172) 11.15 21 0
2902624 저 러스트 정병 ㅉㅉ [3] 나르시갤로그로 이동합니다. 11.15 39 0
2902621 이제부터 러스트에 대한 지지를 철회한다. [1] 프갤러(221.146) 11.15 62 0
2902619 러스트의 안정성은 세계 제이이이이이이이일!! [2] 프갤러(221.146) 11.15 50 0
2902614 Rust, light of my code. [2] 프갤러(221.146) 11.15 58 0
2902613 you are pitiful for not knowing that [1] 프갤러(221.146) 11.15 40 0
2902612 msys pacman에 러스트 있네 [5] ㅇㅇ(119.56) 11.15 83 0
2902611 Rust is the way, the gate, and the truth [3] 프갤러(221.146) 11.15 50 0
2902609 에구궁.. 요즘 잼난 만화가 없으니 도파민 고갈된듯.. [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.15 40 0
2902608 why not rust? are you a retard? [5] 프갤러(59.6) 11.15 62 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2