Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт мар 19, 2024 15:50

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 120 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8  След.
Автор Сообщение
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Ср фев 16, 2022 14:42 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Victor__v писал(а):
Есть же яндекс.диск, гугл.диск, на мейле можно хранить.
Несколько гигов для форта за глаза хватит.

А люди до сих пор файлообменниками балуются. Неужели они так много платят за скачку ваших материалов?


Как туда загонять файлы curl'ом ?
По-поводу платят, не понял. Поясните.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Ср фев 16, 2022 17:06 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1285
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
vikt писал(а):


Как туда загонять файлы curl'ом ?
По-поводу платят, не понял. Поясните.[/quote]

1. ХЗ
2. Некоторые файлообменники платять владельцам материал деньги за то, что их скачивают. Лет 5 назад такое точно было, как сейчас см. пункт 1. :)

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Пт мар 18, 2022 14:14 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Отправил через телеграм новую промежуточную версию форта
Еще можно скачать тут
https://anonfiles.com/lbScq3O4xb/less_7z
пасс 12345
На файлообменниках желательно выключать ява-скрипты.
Иначе - вывалка рекламы в огромном количестве.

К предыдущим постам - почему через обменник?
Просто у меня не получается выкладывать бинарные файлы
в гитхаб. Раз с ходу не получилось, то и не стоит время тратить,
что бы разбираться, в ущерб разработки.

Новое. Теперь к файлу 0 добавился еще файл 1 , который тоже
автоматически считывается и интерпретируется при старте системы.
Более менее сносно решена проблема expect в графическом интерфейсе.
Напомню, что в android gui процесс невозможно приостановить, можно
только выйти и повторно войти в interpret.
Или запускать процесс в фоновом режиме. Я так пробовал, но
получаются еще более уродские решения.

Добавил программу для решения квадратных уравнений, для иллюстрации

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

В общем, Less1, это простейшая android программа, с фортом на борту.
Ее предназначение, тестирование различных мутных android api,
прежде чем вставлять их в основную программу. Особенно тех,
которые по разному работают на различных устройствах.

Следущая разработка будет намного интересней.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Пт мар 18, 2022 20:04 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Если программа установлена и настроены пути, то работать с форт текстами
можно следующим образом.
1) Можно добавить код к файлу 1 и он автоматически загрузится и выполнится.
2) Можно вводить форт-тексты в поле ввода и нажимать intrprt.
3) Ввести имя файла в поле ввода и нажать load.
Можно создать подкаталог( средствами android-системы) поместить туда файл,
и вводить данные так
Код:
cat/filename

потом нажать load и intrprt
Загрузить поставляемый файл q3 - (нахождение корней кв уравнения)


Изображение


Изображение

нажимаем intrprt и система 3 раза предложит ввести коэфиценты.


Изображение

и выведет решение

Изображение
На последнем скрине вместо символа корня вывела абракадабру,
надо еще поработать с utf кодировкой при загрузке файла.

Исходный код фортпрограммы

Код:
fvariable a fvariable b
fvariable c
fvariable d  fvariable b2a
fvariable x1 fvariable ix
fvariable x2

( 5.5 a f!  6.6 b f!  7.7 c f!  )   

0 4 10  inputTuning   ( настройка ввода  см. ниже )

s" "  2const expectString ( тут ожидаемые строки запоминаютс два числа - адрес и длинна )

: inp   ( тест на float  -1 да . 0 нет )
  expectString
  expect
  expectString
  drop ( сбросить длинну )
  0
  parsenum   (  возвращает N  0 - целое,  3  и на флоат-стеке значение   N  и -1 - ошибка )
  3 = 
    if
      -1  ( на стеке -1 ,true, на фстеке знач )     
      else
      drop 0
    then     
;     

: inpdata
clr                              ( очистка поля ввода  )
s" input a " 0 txt.set    ( меняется текст в текстовом поле 0 на "input a" )
s" a " 4 btn.txt.set      ( меняется текст 4 кнопки с "intrprt" на "A" )
inp                         
if
   a f!     
   clr
    s" input b " 0 txt.set
    s" b " 4 btn.txt.set
    inp
    if 
      b f!
      clr
      s" input C " 0 txt.set
      s" c " 4 btn.txt.set
      inp
      if
        c f!
        s" inp calc show " 0 txt.set
        s" intrpr " 4 btn.txt.set
        then
     then 
    then
;



: di  b f@ fdup f*   ( b^2 - 4ac )
  4.0 a f@ f* c f@ f*
  f- ;
  : calc
di fdup d f!  fabs fsqrt  2.0 a f@ f* f/  ix f!  ( i sqrt d )
b f@ -2.0  a f@ f* f/  b2a f!  ( -b/2a )

d f@   ." discrm= " f. cr  ( текст печатается в канал  )
;

: sol
    d f@ 0.0  f<  ( if d<0 )
     if
       ." complex 1 = " b2a  f@ f. ." + i√ " ix f@ f. cr
       ." complex 2 = " b2a  f@ f. ." - i√ " ix f@ f. cr     
       else
            d f@  0.0  f=  ( if d=0 )   
     if
            ." one " b2a f@ f.
        else 
           ." one " b2a  f@  ix f@ f+ f.
           ." two " b2a  f@  ix f@ f- f.
       then
    then       
;

: show 0 readchan  ( извлекается текст, записанный в канал 0 и присваивается текстовому полю 0 )
0 txt.set ;

inpdata calc sol show


0 4 10 inputTuning - номер поля ввода 0, 4 кнопка 10 - номер функции
настраивает ввод данных для expect. Пока реализована только 0-функция для консоли,
и 10 для поля с кнопкой. inputTuning ожидается очень сложным словом.

(adrString param) parsenum - самоделка, для интерпретации чисел. Не нашел в dpanth94 ничего,
изобрел свое, не стал тратить время. Оставил на будущее

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Вт мар 22, 2022 01:56 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Клонирование программы.
Программу Less1 можно клонировать, например для того, что бы протестировать
работу с гироскопами или gps, до того, как вставлять код в более сложные проекты.
Для примера создадим простую программу, работающую с gps, исрльзуя android Aide.
https://play.google.com/store/apps/deta ... l=ru&gl=US
Для этого
1. Придумаем название программы и создадим каталог, используя это имя. Например nav0.
2. Копируем из каталога Less1 в каталог nav0 каталог app. Ничего другого копировать не надо.
3. В каталоге app оставляем только каталог src с подкаталогами и файл build.gradle, остальное удаляем.
( Внимание, существует 2 файла build.gradle, используем только тот, который внутри
каталога app. Наиболее важный параметр этого файла MinSdkVersion
MinSdkVersion 14 - программа будет выполнятся на android 4.0 и старше
MinSdkVersion 9 android 2.3 итд.
см https://developer.android.com/guide/top ... dk-element )
4. Затем перейдите в каталог main/src/res/values найдите файл strings.xml.
Найдите в файле
<string name="app_name">prog_name</string>. Замените prog_name на
имя, которое вы хотели бы, чтобы отображалось, когда приложение загружено.


5. Загрузите исходники в android устройство, где установлена aide
Лучше скачать в каталоги, которые принадлежат aide, обычно AppProjects.
6. Заходим в aide, в меню выбираем View/Files
7. заходим в папку nav0 затем в app и файл менеджер предложит открыть
проект. Открываем.
8. Затем в меню aide выбираем Errors, обязательно убеждаемся,
что нет ошибок, и компилируем проект, нажимая на черный треугольник вверху.
Устанавливаем, открываем.

Не забудьте выкачать проект назад, в компьютер, чтобы выкачать файлы,
которые aide добавил к проекту. Они могут понадобится.

Теперь можно развивать новый проект, не затрагивая базового.
Только надо учесть, что запись в sharedPreferenses будет такая же,
как в предыдущем проекте Less1, поэтому в новом проекте будут
доступны те же файлы, что и в Less1, в частности 0 и 1.
О файлах и правах доступа - это отдельная и мутная тема.
Google , начиная с версии android 4.2, запрещает записывать
файлы на карту, кроме как в специальные каталоги.
Об этом позже.

Сейчас буду разрабатывать простейшую программу с фортом, использующую gps,
по итогам, внесу коррективы в проект Less1.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Ср май 11, 2022 14:19 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Если кто читал сообщение выше, не используйте этот способ клонирования программ.
Aide по видимому мутно работает с двумя программами, записанными в один package.
Лучше создайте в aide новый проект с новым package, а затем в ручную
скопируйте файлы, отредактировав строку "package new.project.pac; " в java файлах.
Спрашивайте у меня, в случае чего.
Имя package лучше начинать с "a" и избегать названий типа "com.package.name".
Просто названий программ в самом устройстве, начинающихся с "com"
настолько много, что найти свою программу, будет не легко.

Итак, промежуточный итог. Новая программа может делать тоже самое,
что и предыдущая, но еще может работать с модулем gps, и проигрывать
звуковые файлы. Еще форт тут может читать и записывать текстовые файлы.
Если работа форта c gps разрешена, то по приходу сигнала с gps,
будет вызвано форт слово с именем "getgps" и координаты будут отправлены через
стек плавающей точки. Пользователь может переписать форт слово "getgps", чтобы оно
решало его задачу. Сейчас оно просто преобразует выводит на экран координаты,
записанных в десятичной системе, в систему градусы - десятичные минуты,
наиболее употребительные.
В файле форттекстов, с именем gps также находятся обработчики
add_wp - срабатывают при нажатии кнопки "wpt", добавляют координаты в
цепной список.
saved - обходит цепной список с точками wpt (waypoints), положенных предыдущим
словом, забирает строку с точками трека ( строка формируется процедурой
на java, точек очень много, пришлось бы для форт выделять очень много памяти.
Проблема будет решаться с помощью каналов, что бы можно было бы обрабатывать
на лету.) и все это оформляет в файл, со стандартным форматом "gpx".
Обработчик запускается при нажатии кнопки "bt5"
В общем, не совсем безполезная программа. Трек, записанный с ее помощью.
https://nakarte.me/#m=12/55.99195/37.83 ... wLs8EPQrxg

Изображение

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

Следующей темой будет графика - очень интересная тема.
Там будет рисование карты и отрисовка треков.

Сылка на анон
https://anonfiles.com/98D1o1f0ya/andfrt_7z
Еще отправлю в телеграм

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Ср май 11, 2022 16:31 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
vikt писал(а):
Просто названий программ в самом устройстве, начинающихся с "com"
настолько много, что найти свою программу, будет не легко.
...
Если кто захочет повозиться с программой, напишите, тогда напишу подробней.
Самому разобраться с ней невозможно.
Интересно то, что не ведомо.
Загадочнее проги я ещё не видел!!!

Подожди, я схожу куплю б.у. планшет, чтоб не жалко было. :)

P.S. А хоть какую доку минимальную? :pilot;

_________________
Сотник. SotnikSTO@mail.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Ср май 11, 2022 21:54 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Цитата:
чтоб не жалко было.
Опасность вполне реальная.
Написать Intent, который вызовет браузер с определенным url,
или приложение "телефон " с преднабранным платным номером
проще простого. Конкретно в этой версии такой возможности нет,
но ее очень легко добавить используя исходные тексты.
Но эта программа написана любителем для любителей,
что бы он адаптировал ее к своим нуждам. Для мошенников есть
куча других, не менее легких способов делать гадости.

Есть варианты эмуляции андроид, в том числе и online.
https://compconfig.ru/mobile/emulyator- ... ya-pk.html
Я испробовал только что это.
https://www.apkonline.net
Увидел свои кнопочки.
Можно ли эмулировать gps, не разобрался

Установка программы.
1 способ. Компиляция из исходников.
Наиболее удобно использовать aide, так как проект можно компилировать
прямо на планшете.
https://www.android-ide.com/
google play
https://play.google.com/store/apps/details?id=com.aide.ui&referrer=utm_source%3Daidewebsite%26utm_campaign%3Dhomepage
тема на 4pda
https://4pda.to/forum/index.php?showtopic=319369
В бесплатной версии может работать с 5 java файлами. ( именно по этому
весь код форт-системы впихнут в один файл )
Можно оплатить 850 рублей или воспользоваться крякнутой версией с pda.
(я планирую оплатить, как только научусь пользоваться электронными кошельками)

2 способ Установка apk-файла.
Загрузить файл на устройство и выполнить.
Если не получается, зайти в настройки, безопасность,
разрешить устанавливать из ненадежных источников.
(Андроид считает ненадежными источниками все, кроме google play)
Установить программу, затем вернуться и запретить ненадежные источники.
см.
https://setphone.ru/rukovodstva/kak-ust ... a-android/

Далее необходимо настроить пути программы. Для android <=4.0 более менее
любой путь, для старших - android запрещает записывать данные во многие места,
в том числе на sd-карту. кроме определенного пути, обычно типа
/storage/1234-5678/Android/data. В каталоге data, надо с помощью
файл менеджера, поставляемого вместе с устройством, который имеет права
создавать каталоги в любом месте, создать каталог art.nav.one (имя пакета)
не перепутайте art.nav.one, а не art/nav/one
/storage/1234-5678/Android/data/art.nav.one Запомните этот путь.
В этот каталог запись гарантированно будет разрешена.
1234 5678 - имя sd карты. Оно отличается на разных устройствах.
Еще на эту тему
https://webhamster.ru/mytetrashare/inde ... w34hno1mb8
для любителей рискнуть
https://miradmin.ru/sd-android/

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Ср май 11, 2022 23:11 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Далее копируем в этот каталог файлы с именем 0 , 1 , gps.
Потом запускаем программу, нажимаем setup
вводим только что полученный путь в форму, и быстро два раза жмем setup.
Затем выходим из программы, и снова заходим, и если все сделано правильно
появится кнопка load.
В строке редактирования пишем gps и нажимаем load. затем intrprt.
Нажимаем gpson. Ждем сигнала спутников.
В меню включаем пункт lockgps
теперь обработчик gps будет вызывать форт слово getgps и передавать координаты lat lon
через float стек. Слово getgps можно отредактировать на свой вкус в файле gps.

Нажатие кнопки wpt вызывает обработчик add_wp и передает ему параметры через
float стек.
Кнопка bt5 вызывает обработчик saved и формирует gpx-файл из точек трека и точек ,
добавленных wpt.

Обычные фортовские операции вывода
. f. ." kk " emit type
d. - ( работает с ошибкой)
тут выводят данные в канал 0.
Функция readchan читает канал, из прочитанного создает и размещает строку, оставляя на стеке
адрес и длину строки.
Таким образом, что бы увидеть вывод программы, можно выполнить
0 readchan 1 txt.set (или 0 txt.set)
readchan и writechan могут работать и с файлами.
Файл с каналом должен быть связан процедурой assign

s" w" ( запись )
s" file" ( протокол файл - в будущем будет все, что угодно http и прчее )
s" cur" ( относительно текущего каталога )
s" filename"
3 assign ( привязан к 3 каналу )

0 readchan 3 writechan ( вывод программы запишется в файл с именем filename )
writechan оставляет на стеке 0 в случае успеха.
Полезные пункты меню
wakelock - включает/выключает гашение экрана
Предотвращает выключение экрана, хотя экран темнеет. Делает удобным
использование навигации.
Внимание: пунктами меню ftest и path не допустимо, они отладочные,
я не убрал их по невнимательности.

Вывод звука
1.0 1.0 ( громк левая правая 1.0 max )
1
0
1.0 ( cкорость воспроизведения )
3 ( звук под нрмером 3 , тут 0 до 5 )
0 media.play
упрощенная
3 splay ( звук под номером 3 )
Обе функции оставляют на стеке 0 или -100 в случае успеха/ не успеха

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Пт май 13, 2022 02:05 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
vikt писал(а):
Далее копируем в этот каталог файлы с именем 0 , 1 , gps.
Потом запускаем программу, нажимаем setup
вводим только что полученный путь в форму, и быстро два раза жмем setup.
Затем выходим из программы, и снова заходим, и если все сделано правильно
появится кнопка load.
Надо всё засунуть в один apk, и далее нет сложностей.
Ну и рабочие примеры.
Это для освоения главное.

P.S. А хоть какую доку минимальную?
Что это в общем описании.
Только по настройкам сложновато представить общую картину.

_________________
Сотник. SotnikSTO@mail.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Пн май 16, 2022 21:13 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Набил большой ответ, успел посмотреть предосмотр, и исчезло все к чертям.
Там пояснил многое. Опять набивать, это перерасход времени, к тому же опять
может исчезнуть. Может сам сглупил. Короче, ждите следущей версии.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Вт май 17, 2022 20:27 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
vikt писал(а):
Набил большой ответ
...
Короче, ждите следущей версии.
Надо всё засунуть в один apk, и далее нет сложностей. :)

_________________
Сотник. SotnikSTO@mail.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Вт май 17, 2022 23:03 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Цитата:
Надо всё засунуть в один apk

В принципе файлы 0 , 1 , gps с фортпрограммами можно засунуть в apk,
например в каталоги raw или assets
https://itsobes.ru/AndroidSobes/v-chem-raznitsa-mezhdu-assets-i-raw-resursami/
а потом при первом запуске переписать в пользовательский каталог, что бы
пользователь мог бы их модифицировать.
(файлы 0 и 1 загружаются и интерпретируются автоматически)
Но создать каталог art.nav.one придется в ручную, используя
файл-менеджер, который поставляется вместе с устройством.
Начиная с андроид версии 4.2 google запретил приложениям,
которые не поставляются с устройством, записывать на sd карту,
за исключением каталога
/storage/1234-5678/Android/data/art.nav.one.
Я не нашел на stackoverflow, работающего на всех устройствах способа
автоматизации решения этих проблем.
К тому же, это черновая версия, потом проект будет переписан.
А дока да, моя недоработка. Сейчас завел специальный файл,
куда буду понемногу собирать материалы, из которых можно будет слепить документацию.
А примеры находятся в файле gps. Надо только откомментировать его.
Если немного улучшить исходный файл, включив в него обработку ситуации,
когда gps-не вкдючен или нет сигнала, то программа вполне может стать
полезной, например, несложно написать на форте процедуры, которые
оценивают близость текущего положения к определенным точкам.
И подавать звуковые сигналы. Короче, вести по треку.
В файле gps путевые точки реализованы в виде цепных списков.
Это еще и шпаргалка для реализации этой ценной структуры данных.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Чт июн 23, 2022 02:37 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Реализация canvas, суть.
Можно почитать тут
https://startandroid.ru/ru/uroki/vse-ur ... anvas.html
и тут
https://startandroid.ru/ru/uroki/vse-ur ... tekst.html

Там описывается способ выводить графику на полный экран.
Для моих задач canvas должен занимать только часть экрана,
соседствуя с кнопками и текстовыми полями. Для этого пришлось
немного повозится. Пришлось создать собственный view элемент.
но об этом позже.
Суть графики андроид в том, что необходимо переопределять
функцию onDraw.
Код:
                super(context,    attrs);
                p = new Paint();

         @Override
        protected void onDraw(Canvas canvas) {

                super.onDraw(canvas);
 
                canvas.drawColor(Color.GREEN);
           p.setStrokeWidth(50);
           p.setColor(Color.RED);
           canvas.drawText("width="+displaywidth+" height="+displayheight, 10, 10, p);
/// итд
}

В ней вызываются графические ф-ции.
onDraw вызывается, когда приложение вызывает ф-цию invalidate, прямо вызвать ondraw нельзя.
Я ничего не смог придумать, кроме как присвоить графическим функциям некий код, который
форт-слова записывали в массив, который функция onDraw
исполняла бы в цикле.

В моей реализации это выглядит так

ByteBuffer gmem = ByteBuffer.allocate( 1000 /* max capacity */ ); // память команд

В onDraw

Код:
                byte op = gmem.get();
                 while (op != -1 ) {
                   switch (op) {
                     case 5  : p.setColor(gmem.getInt() );
                     break;
                     case 10 : p.setStrokeWidth( gmem.getInt() ); //
                     break;
                      case 15 : p.setTextSize( gmem.getInt() ); //
                     break;           
                     case 18 : canvas.drawPoint( gmem.getInt(), gmem.getInt() , p);
                       break;
                       case 20 : canvas.drawLine( gmem.getInt(), gmem.getInt(), gmem.getInt(), gmem.getInt() ,p);
                         break;
                   // ..... итд
                      }//sw
                   op = gmem.get(); 
                      } //while

//// get() getInt() загружают байт . целое из памяти и автоматически увеличивают
/// указатель памяти на 1 или 4

Если у кого-то есть идея реализовать графику более эффективно, напишите.
Завтра продолжу.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Чт июн 23, 2022 15:40 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 460
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
Маловат все-таки буфер на 1000 графических примитивов. :) Моя бродилка не влезет.

Кстати, а можно в памяти задать массив на width*height точек, а потом выводить его в canvas в качестве картинки? Или андроидный canvas так не умеет? Если все же умеет, то можно загонять данные в этот массив, а потом скармливать canvas'у. Если добавить в качестве первого элемента в массив gmem вывод какого-то буфера (т.е. фактически некий фон, содержимое которого можно генерировать программно), а уже поверх него выводить прочие тексты, круги и т.д, то должно получиться достаточно удобно и быстро.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 120 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB