Задачка немного другая - мне нужна табличка в экселе с кординатами всех объектов, цвета, привязки и пр. Ручками -слишком долго, нудно и не наглядно. Поэтому альтернативы визио не вижу - там можно нарисовать все экраны и экспортировать все данные в эксель (точнее даже связать в обе стороны).
А далее у меня уже экслель уже умеет формировать данные для скетча, а скетч умеет эти данные разгребать - т.е. строить полноценное меню.
Для понимания на самом простом примере:
Эксел для текста формируется всего 4 строки:
const byte tstart[] = {0,1,3,7,7,8,8,9,1.....};
const byte ttext[] = { 93,11,11,92,11,10,10,22,91,..... }; // номер текста
const int tx1[] = { 6476,1191,1641,6496,1178,1491,16..... }; //х1-коодината и цвет текста
const int ty1[] = { 8216,20742,20742,8216.....} // у1-координата и номер фонта.
В printallkeys на все про все:
if (tstart[dispScreen+1]-tstart[dispScreen]>0) // если на экране с номером dispScreen есть текстовая информация
for (int N=tstart[dispScreen]; N<tstart[dispScreen+1]; N++) {
getTdata(N); // выдираем все закодированные данные
printText0(nx1, ny1); } // устанавливает цвета в соотвествии с номером и печает из буфера
void getTdata (byte N) {
nx1=tx1[N]&maskX; ny1=ty1[N]&maskY; // получаем координаты текста
Textcolor=(tx1[N]&maskColor)/maskColord; //номер цвета для текста
Font=(ty1[N]&maskFont)/maskFontd; // ... номер фонта (small, big...)
strcpy_P(buffer, (char*)pgm_read_word_near(&(print_[ttext[N]]))) ; // закидываем текст в буфер
}
Для кнопок перехода по меню, слайдеров, переключателей, графиков и пр. несколько сложнее, но суть та же. Тач работает по тому же принципу.