Перейти к содержимому
ECS

Библиотека пользовательского интерфейса "GUI"

Рекомендуемые сообщения

Этот параметр сообщает экранному буферу, что нужно отобразить  не только изменившиеся с последней отрисовки пиксели, а вообще все сразу. Обычно эта необходимость возникает при запуске скриптов, работающих с GPU напрямую в обход концепции экранного буфера. То есть в случае майноси практически никогда. Разве что для каких-нибудь старых игр или скринсейверов фича может быть востребованной...

 

В доке по workspace он указан, хотя и без пояснений. Могу добавить инфу на всякий, если нужно:

 

image.png.1dda246b8f4ed63840b2616fd6abb322.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 04.03.2022 в 10:34, ECS сказал:

Этот параметр сообщает экранному буферу, что нужно отобразить  не только изменившиеся с последней отрисовки пиксели, а вообще все сразу. Обычно эта необходимость возникает при запуске скриптов, работающих с GPU напрямую в обход концепции экранного буфера. То есть в случае майноси практически никогда. Разве что для каких-нибудь старых игр или скринсейверов фича может быть востребованной...

 

В доке по workspace он указан, хотя и без пояснений. Могу добавить инфу на всякий, если нужно:

 

image.png.1dda246b8f4ed63840b2616fd6abb322.png

Теперь всё стало ясно, спасибо :gamer2:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Наткнулся на печальные баги :(

При добавлении строки меню (GUI.menu) в titledWindow окно превращается в обычный GUI.window, то есть исчезает вся шапка окна (заголовок окна, фон и три кнопки close, maximize...).

Таким же образом добавил менюшку в tabbedWindow - эффект похожий (тёмно-серая шапка с кнопками и вкладками обрезается на треть).

 

В обоих случаях меню, конечно, рисуется, но мне и шапка окна нужна. Что же делать? :o

 

Вот скрины: https://imgur.com/a/8kFBjXq

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
22 часа назад, kaka888 сказал:

Наткнулся на печальные баги

Печальные баги - это, видимо, GUI.menu(1, 1, ...) вместо GUI.menu(1, 2, ...)? Ты же сам расположил менюху на Y = 1, где уже чиллит титловая строка. Разумеется, менюха ее перекрыла

 

На всякий случай уточню, что гуйка работает с заранее известными координатами и размерами всех объектов, ничего не рассчитывая автоматически без ведома кодера - это не WPF/UWP с адаптивной версткой, т.к. ресурсы компов люто лимитированы. Исключения, конечно, есть в виде всяких GUI.layout или GUI.table, но это капля в море. Поэтому любая смена позиции или ресайз виджетов требует ручной обработки

 

А, и еще кое-что: GUI.titledWindow tabbedWindow и иже с ними - просто шаблоны, которые создаются буквально в 10 строчек кода на основе базового объекта окна GUI.window, но с учётом твоих личных нужд. В них попросту заранее выставлены нужные координаты и подогнаны размеры, ничего более

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
35 минут назад, ECS сказал:

Печальные баги - это, видимо, GUI.menu(1, 2, ...) вместо GUI.menu(1, 1, ...)? Ты же сам расположил менюху на Y = 1, где уже чиллит титловая строка. Разумеется, менюха ее перекрыла

 

На всякий случай уточню, что гуйка работает с заранее известными координатами и размерами всех объектов, ничего не рассчитывая автоматически без ведома кодера - это не WPF/UWP с адаптивной версткой, т.к. ресурсы компов люто лимитированы. Исключения, конечно, есть в виде всяких GUI.layout или GUI.table, но это капля в море. Поэтому любая смена позиции или ресайз виджетов требует ручной обработки

 

А, и еще кое-что: GUI.titledWindow tabbedWindow и иже с ними - просто шаблоны, которые создаются буквально в 10 строчек кода на основе базового объекта окна GUI.window, но с учётом твоих личных нужд. В них попросту заранее выставлены нужные координаты и подогнаны размеры, ничего более

Какое облегчение, я уж думал версия для OpenOS настолько несовершенна :DD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне нужно нарисовать текст(не статический) размером 1\3 высоты экрана. Как бы это лучше всего реализовать? Есть идея построчно рисовать ASCII символами, но решил спросить тут. Должны быть варианты получше.

Изменено пользователем Teen_Romance

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
57 минут назад, Teen_Romance сказал:

Мне нужно нарисовать текст размером 1\3 высоты экрана. Как бы это лучше всего реализовать? Есть идея построчно рисовать ASCI символами, но решил спросить тут. Должны быть варианты получше.

local event = require("event")
local unicode = require("unicode")
local component = require("component")

local screen = component.screen
local gpu = component.gpu

-- Отображаемый текст
local text = "Hehe u cute"

-- Разрешение по высоте, на основе которого будет подобрана "идеальная" ширина
-- Т.к. строка всего одна, она как раз займет 1/3 высоты экрана
local height = 3

-- Получаем компоновку мульти-блочного экрана и его пиксельную пропорцию
-- Инфа по формуле, если интересно: https://computercraft.ru/topic/2413-kak-ubrat-chyornye-polosy-po-krayam-ekrana-opencomputers/
local aspectWidth, aspectHeight = screen.getAspectRatio()
local proportion = 2 * (16 * aspectWidth - 4.5) / (16 * aspectHeight - 4.5)

-- Рассчитываем разрешение по ширине на основе высоты и пропорции
local width = math.floor(height * proportion)

-- Чистим экран
gpu.setResolution(width, height)
gpu.setBackground(0x220000)
gpu.setForeground(0xFFFFFF)
gpu.fill(1, 1, width, height, " ")

-- Рисуем текст по центру
gpu.set(math.ceil(width / 2 - unicode.len(text) / 2), math.ceil(height / 2), text)

-- Ждем интерактива от юзера
while event.pull() ~= "touch" do

end

image.png.fcce1065f7d99aa902b5420aacafb550.png 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@ECS спасибо за ответ. My bad я не до конца написал что хочу. Большой текст должен находиться на одном экране с текстом поменьше. В центре что то вроде счетчика и сбоку кнопочки и обычный текст. https://prnt.sc/-4Lfi8jY5bSP

Изменено пользователем Teen_Romance

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, Teen_Romance сказал:

@ECS спасибо за ответ. My bad я не до конца написал что хочу. Большой текст должен находиться на одном экране с текстом поменьше. В центре что то вроде счетчика и сбоку кнопочки и обычный текст. https://prnt.sc/-4Lfi8jY5bSP

Зараза! Ну, тогда только ручная растеризация символов, да. Я от недалекого ума эту фичу напрямую через двумерные таблички реализовал. Может, у тебя получится более грамотное решение

 

https://github.com/IgorTimofeev/MineOS/blob/master/Libraries/BigLetters.lua

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Приветствую @ECS , похоже что пастбин забанил Ваш установщик библиотек.
Мне был необходим GUI для пары экспериментов, но похоже что простого способа его установки сейчас нет?
Pastebin.com - Not Found (#404)

image.png.40172859f1641cdc939b76b0a395c624.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, Zigo сказал:

Приветствую @ECS , похоже что пастбин забанил Ваш установщик библиотек.
Мне был необходим GUI для пары экспериментов, но похоже что простого способа его установки сейчас нет?
Pastebin.com - Not Found (#404)

image.png.40172859f1641cdc939b76b0a395c624.png

вродеб всём что осталось только тут: https://github.com/IgorTimofeev/GUI

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, Bumer_32 сказал:

вродеб всём что осталось только тут: https://github.com/IgorTimofeev/GUI

Я брал с текущей разработки, не со старых ресурсов. Буквально по той же самой ссылке которой посвящена данная тема GUI/README.md at 0fadb161469d404d477dd9babfdc9a5aa42ff203 · IgorTimofeev/GUI · GitHub
image.png.b3b2de90dc4ed725e2e54c5e023c07a1.png
пастбинский инстайлер, ставящий все зависимости вместе с самой библиотекой, недоступен. а поскольку я тут делаю очередной интерфейс взаимодействующий с апплайтом и мне требуется поставить несколько разных систем, мне необходим простой способ установки gui, со всеми зависимостями сразу

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 12.02.2024 в 04:07, Zigo сказал:

похоже что пастбин забанил Ваш установщик библиотек

Да, пару лет назад снесли аккаунт. Исходников инсталлера нет, библиотека забыта, саппорта не будет, репозиторий в архиве, писать заново лень. Так что придётся самому

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...