Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/85: Рейтинг темы: голосов - 85, средняя оценка - 4.88
sf73

Как перевернуть массив шрифта

22.04.2015, 23:40. Показов 16623. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как перевернуть массив шрифта (вывод на дисплей). Есть вертикальный шрифт , перевернуть его в горизонтальный, на Cи AVR в atmel studyo 6.2
Грубо говоря, объявляю массив unsykned char verb[i], где i от 0 до 7 и
при выводе буквы считываю из файла шрифта букву побайтно 8 байт в массив verb[] из 8-ми элементов.
к примеру буква П получается
verb[0]=0
verb[1]=127 (т.е. все единички в разрядах)
verb[2]=1
verb[3]=1
verb[4]=1
verb[5]=1
verb[6]=127
verb[7]=0
При таком выводе буква получается на дисплее на боку. нужно повернуть её на 90 градусов.
Нужно как я понимаю считывать поразрядно в первый байт строки и подставлять в столбец, из первого разряда первой строки - в последний разряд первого столбца, второй разряд первой строки - последний разряд уже второго столбца и тд.
Покажите плз как считать один бит из элемента массива и присвоить это значение соответствующему разряду соответствующего значению массива. Понимаю что простой вопрос, но что-то туплю.
киньте плз пример кода. По поиску примеров натыкаюсь только на элементарные битовые операции (установка на портах битов в 0 и 1 ;)

Может алгоритм есть готовый уже? На ум приходит только замена строк столбцами в матрице (транспонирование), поворот квадратной матрицы на 90 градусов. Но не пойму, как с таким массивом как массивом бит работать.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.04.2015, 23:40
Ответы с готовыми решениями:

Как перевернуть массив?
Дан массив из не четных чисел от 1 до 99. - заполнить массив значениями. - вывести на экран (от 1 до 99). - вывести массив в обратном...

Как перевернуть массив?
можете подсказать мне как бы нужно "перевернуть" массив, тоесть последний елемент зделать первым и тд, у меня массив ассоциативный, пока...

Как перевернуть двумерный массив?
Здравствуйте, как перевернуть двумерный массив таким образом, используя цикл for? Знаю лишь как поменять местами главную диагональ с...

23
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
17.05.2015, 21:43
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от oomomstir
На 32/64-битной машине с аппаратными сдвигами на N бит
Вот кстати да, для arm-а картина совершенно другая
Развлекаться так развлекаться ) Приложил листинги всех трёх вариантов для cortex-m3 с оптимизациями -O2 и -O3
Разница стала незначительная, а на -O3 мой вариант уже проигрывает варианту voyd1509

[10.21 Кб]
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
18.05.2015, 01:46
Методы из http://www.hoskirsdelight.org/hdcodetxt ... ose8.c.txt попробуйте - те на арме должны порвать попиксельную обработку, как тузик грелку.
0
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
18.05.2015, 04:37
Цитата Сообщение от Ryus
Это не отменяет того, что матрица шрифта должна быть подготовлена на ПК.
Нет, это да, изначально шрифт готовится на ПК.
Но в неактивный видео буфер он переносится попиксельно.
Т.е. используя простейший алгоритм поставить пиксель/удалить пиксель можно обслуживать и рисование и вывод шрифта.
Причем вывод шрифта любого размера, в любую точку экрана, под любым углом :)
В недостаточную скорость я пока не упирался. Надо будет как нибудь проверить что то типа скроллинга на экранчике 320х240.
Цитата Сообщение от oomomstir
Сдвиг (вывод в позиции, не кратной знакоместу) - тоже отдельная тема, но не очень сложная. Как вы понимаете, делается не попиксельно, а через сдвиги и логические операции.
Мне кажется, это нудный, громоздкий и негибкий алгоритм. Не факт, что его удастся просто и быстро приспособить к попеременному выводу разного по размеру шрифта.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
18.05.2015, 13:00
Btosk Worryor, не в обиду - но вы, похоже, не программист?
Во первых, у программистов особый психоз, и написать "гибкий" алгоритм за счёт снижения производительности на порядок или более - это надо себя ломать. А то так и до slowsort докатиться можно.
Во вторых, программист с опытом сразу видит, как этот алгоритм может быть устроен - и ни нудности, ни громоздкости тут нет. На одну строку - один сдвиг двухбайтового числа на заданное количество бит, OR. Ну и та же операция для маски + AND. Навскидку - получится короче, чем работать по пикселам.

Работа по пикселам оправдана, или когда макетируешь что-то, или когда есть действительно заметная разница в сложности кода, а отрисовка даже после замедления в 10 раз заведомо не является узким местом (например, поворот символа на ПК при сборке прошивки). Или когда графика прямо ориентирована на пикселы (редкий случай, обычно есть или спрайты, или вертикальные/горизонтальные отрезки и прочие прямоугольники).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2015, 13:00
Помогаю со студенческими работами здесь

Как перевернуть одномерный массив?
#include <iostream>; using namespace std; int main() { const int n=3; int myArray={1,2,3}; for (int i=0; i<n; i++){ ...

Как перевернуть массив рандомных чисел?
Имеется массив 20 рандомных чисел. Как мне его перевернуть, чтобы 1 число было в конце, а последнее в начале ( задом наперед)?

Как перевернуть массив или данные в ListBox
В ListBox отображает вначале более старые данные, а нужно новые. var obj = (from o in dj.job_info_dbs ...

Как перевернуть одномерный массив блоками, но сохранив структуру внутри каждого блока
Добрый день! Имеется одномерный массив такого вида: Необходимо перевернуть его блоками, но сохранив структуру внутри блоков...

Как сделать выбор размера шрифта и начертания шрифта в ComboBox
ComboBox и шрифты.( Размер и начертания). Как сделать выбор размера шрифта и начертания шрифта в ComboBox? В С#.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru