Đây rốt cuộc là gì?
- Một thư viện tái tạo nhiều phần của API Macintosh Classic "Toolbox"; không phải là triển khai đầy đủ, nhưng đủ để tạo một vài ứng dụng đơn giản.
- Là một tính năng được bổ sung vào trình giả lập MII Apple //e, một trong những dự án dường như đang thách thức kỷ lục thế giới về số lượng tính năng được thêm vào.
Tại sao?
- Cần một thư viện UI cho MII, với ít phụ thuộc và không muốn phong cách kiểu 'game'.
- Ban đầu dùng UI chế độ tức thời Nuklear, nhưng thấy nó rất hạn chế và bất tiện khi cần tùy biến.
- Không hài lòng với bộ máy bố cục UI, và dù hứa hẹn giữ trạng thái, trên thực tế nó lại giữ trạng thái dựa trên giá trị hash.
- Trước đây UI được làm với tinh thần thủ công đầy tâm huyết, nhưng hiện nay nhiều quyết định thường được đưa ra mà không có cảm quan về thiết kế hay tính khả dụng.
- Bắt đầu tự tạo thư viện riêng bằng cách tận dụng nhiều phần đã có sẵn.
Thư viện này làm được gì?
- Có một số "manager" của Macintosh Toolbox và hoạt động theo kiểu của hệ thống hiện đại.
- Được thiết kế để vẽ lên một "màn hình" bằng bộ đệm ARGB và có thể sao chép tới nơi cần thiết.
- Thư viện theo dõi các vùng "invalid" và chỉ vẽ lại phần cần thiết để giảm thiểu overdraw.
Nó khác bản gốc như thế nào?
- Về hình thức, bắt đầu từ MacOS 8/9 nhưng loại bỏ toàn bộ sắc độ xám.
- Về API, nó hoàn toàn bất đồng bộ và không thể vẽ vào cửa sổ hay GrafPort bất cứ khi nào cần như bản gốc.
- Mọi thứ được cấu thành từ mui_window hoặc mui_control.
Trình quản lý cửa sổ
- Có thể tạo và vẽ cửa sổ.
- Có tối đa 15 "layer" và có thể thực hiện clipping, v.v.
Trình quản lý menu
- Cung cấp thanh menu, menu, dấu chọn, phím tắt, v.v. trông như System 7/8 hoặc GS/OS.
Trình quản lý control
- Cung cấp nút bấm, checkbox, radio button, thanh cuộn (dọc), hộp văn bản, v.v.
Trình quản lý danh sách
- Được thiết kế để hiển thị tên tệp và có thể xử lý phím mũi tên, Page Up/Down, bánh xe cuộn, v.v.
Cảnh báo
- Cung cấp kiểu hộp cảnh báo điển hình với nút "Hủy" và "OK".
Tệp chuẩn
- Cung cấp hộp thoại mở tệp.
Trình quản lý tài nguyên
- Không cung cấp trình quản lý tài nguyên.
Phụ thuộc là gì?
- Phụ thuộc bên ngoài duy nhất là libpixman.
- Sử dụng libpixman, libcg, stb_truetype.h, stb_ttc.h, v.v.
Cách build?
- Dùng một Makefile đơn giản; có thể build thư viện và các bản test/demo/sample bằng lệnh 'make' ở thư mục gốc.
Cách dùng?
- Tốt nhất là sửa mui_shell.c và mui_widgets_demo.c để sử dụng.
- Tải mui_widgets_demo.so như một plugin và tự động nạp lại khi phát hiện thay đổi.
FAQ!
- Không cung cấp dark mode, theme, cửa sổ trong suốt, hiệu ứng cube, menu sticky, các công cụ hay framework thời thượng mới nhất, binding ngôn ngữ mới, hỗ trợ Wayland, v.v.
Ý kiến của GN⁺
- Thư viện này là một dự án thú vị tái tạo lại UI Macintosh cổ điển cho phù hợp với các hệ thống hiện đại. Nó có thể gợi cảm giác hoài niệm về thiết kế UI xưa cho các nhà phát triển.
- Một thư viện UI bất đồng bộ phù hợp hơn với phát triển ứng dụng hiện đại, và thư viện này đang chọn cách tiếp cận hiện đại đó.
- Thư viện này có thể đặc biệt hữu ích với các nhà phát triển coi trọng hiệu quả tài nguyên. Việc giảm thiểu overdraw và chỉ vẽ lại phần cần thiết có thể giúp tối ưu hiệu năng.
- Tuy nhiên, thư viện này không cung cấp các tính năng hiện đại như hỗ trợ dark mode hay theme, nên có thể không đáp ứng nhu cầu của mọi nhà phát triển.
- Những thư viện UI hiện đại cung cấp chức năng tương tự có thể kể đến các framework như Qt, GTK hoặc Electron; chúng cung cấp phạm vi tính năng và hỗ trợ rộng hơn.
Chưa có bình luận nào.