Структура классов:
Движок
Страница
Регион
Строка
Элемент
Движок.
1. Роли
- Хранить информацию о страницах
* Давать доступ к текущей странице
* Давать возможность выбирать принтер для печати
* Давать возможность на предпросмотр
* Выводить на печать
- Описание.
Инициализация движка:
-Задание размеров листа
-Регистрация шрифтов (стилей ?)
-Создание первого листа, в конструкторе класса
Получение текущего листа происходит через метод currentPage().
Страница.
1. Роли.
-Хранение информации о регионах.
- Задачи.
Страница должна подавать сигнал движку при переполнении, чтобы последний мог корректно создать новый лист в качестве текущего.
При обновлении данных лист должен пересчитывать свой контент на выход за пределы границ листа и в случае нахождении элементов за пределами листа передавать их на другой лист.
Варианты:
-Сигнал движку
-Хранить информацию о следующем листе
-Задавать предельную высоту региону (не даст добавлять данные при превышении высоты региона)
Регион.
1. Роли.
-Хранение информации о строках и свободных элементах.
- Задачи.
Сообщать странице о переполнении. Регион должен упорядочивать контент по вертикали (По центру, к верхней границе, к нижней границе).
-При упорядочиванию по центру высота всех строк вычисляется по принципу height() / rows().count();
-При пристыковке к верхней границе высота всех строк, кроме последней, равна минимальной необходимой высоте строки (максимальная высота содержащегося в ней элемента), высота последней равна height() - сумма высот остальных строк.
-При пристыковке к нижней границе по аналогии.
Строка.
1. Роли.
- Хранение информации о графических элементах
- Задачи.
Сообщать элементам высоту.