| 123456789101112131415161718192021222324252627282930313233343536373839 |
- #include "pagination.h"
- #include "calc.h"
- PageInfo pagination_paged(int totalElements, int elementsPerPage, int selectedElement)
- {
- PageInfo pageInfo;
- pageInfo.currentPage = (selectedElement / elementsPerPage) + 1;
- pageInfo.start = (pageInfo.currentPage - 1) * elementsPerPage;
- pageInfo.end = clamp(pageInfo.start + elementsPerPage - 1, 0, totalElements - 1);
- pageInfo.position = selectedElement - pageInfo.start;
- return pageInfo;
- }
- ContinuousPageInfo pagination_continuous_centered(int totalElements, int elementsPerPage, int selectedElement)
- {
- ContinuousPageInfo pageInfo;
- int halfToShow = elementsPerPage / 2;
- pageInfo.start = selectedElement - halfToShow;
- pageInfo.end = selectedElement + halfToShow;
- if (pageInfo.start < 0)
- {
- pageInfo.start = 0;
- pageInfo.end = clamp(elementsPerPage - 1, 0, totalElements - 1);
- }
- else if (pageInfo.end >= totalElements)
- {
- pageInfo.end = totalElements - 1;
- pageInfo.start = clamp(totalElements - elementsPerPage, 0, totalElements - 1);
- }
- pageInfo.position = selectedElement - pageInfo.start;
- return pageInfo;
- }
|