Methods Summary |
---|
public static android.print.PageRange | asAbsoluteRange(android.print.PageRange pageRange, int pageCount)
if (PageRange.ALL_PAGES.equals(pageRange)) {
return new PageRange(0, pageCount - 1);
}
return pageRange;
|
public static android.print.PageRange[] | computePrintedPages(android.print.PageRange[] requestedPages, android.print.PageRange[] writtenPages, int pageCount)
// Adjust the print job pages based on what was requested and written.
// The cases are ordered in the most expected to the least expected
// with a special case first where the app does not know the page count
// so we ask for all to be written.
if (Arrays.equals(requestedPages, ALL_PAGES_RANGE)
&& pageCount == PrintDocumentInfo.PAGE_COUNT_UNKNOWN) {
return ALL_PAGES_RANGE;
} else if (Arrays.equals(writtenPages, requestedPages)) {
// We got a document with exactly the pages we wanted. Hence,
// the printer has to print all pages in the data.
return ALL_PAGES_RANGE;
} else if (Arrays.equals(writtenPages, ALL_PAGES_RANGE)) {
// We requested specific pages but got all of them. Hence,
// the printer has to print only the requested pages.
return requestedPages;
} else if (PageRangeUtils.contains(writtenPages, requestedPages, pageCount)) {
// We requested specific pages and got more but not all pages.
// Hence, we have to offset appropriately the printed pages to
// be based off the start of the written ones instead of zero.
// The written pages are always non-null and not empty.
final int offset = -writtenPages[0].getStart();
PageRangeUtils.offset(requestedPages, offset);
return requestedPages;
} else if (Arrays.equals(requestedPages, ALL_PAGES_RANGE)
&& isAllPages(writtenPages, pageCount)) {
// We requested all pages via the special constant and got all
// of them as an explicit enumeration. Hence, the printer has
// to print only the requested pages.
return ALL_PAGES_RANGE;
}
return null;
|
public static boolean | contains(android.print.PageRange[] pageRanges, int pageIndex)Gets whether page ranges contains a given page.
final int rangeCount = pageRanges.length;
for (int i = 0; i < rangeCount; i++) {
PageRange pageRange = pageRanges[i];
if (pageRange.contains(pageIndex)) {
return true;
}
}
return false;
|
public static boolean | contains(android.print.PageRange[] ourRanges, android.print.PageRange[] otherRanges, int pageCount)Checks whether one page range array contains another one.
if (ourRanges == null || otherRanges == null) {
return false;
}
if (Arrays.equals(ourRanges, ALL_PAGES_RANGE)) {
return true;
}
if (Arrays.equals(otherRanges, ALL_PAGES_RANGE)) {
otherRanges[0] = new PageRange(0, pageCount - 1);
}
ourRanges = normalize(ourRanges);
otherRanges = normalize(otherRanges);
// Note that the code below relies on the ranges being normalized
// which is they contain monotonically increasing non-intersecting
// sub-ranges whose start is less that or equal to the end.
int otherRangeIdx = 0;
final int ourRangeCount = ourRanges.length;
final int otherRangeCount = otherRanges.length;
for (int ourRangeIdx = 0; ourRangeIdx < ourRangeCount; ourRangeIdx++) {
PageRange ourRange = ourRanges[ourRangeIdx];
for (; otherRangeIdx < otherRangeCount; otherRangeIdx++) {
PageRange otherRange = otherRanges[otherRangeIdx];
if (otherRange.getStart() > ourRange.getEnd()) {
break;
}
if (otherRange.getStart() < ourRange.getStart()
|| otherRange.getEnd() > ourRange.getEnd()) {
return false;
}
}
}
return (otherRangeIdx >= otherRangeCount);
|
public static int | getNormalizedPageCount(android.print.PageRange[] pageRanges, int layoutPageCount)Gets the number of pages in a normalized range array.
int pageCount = 0;
if (pageRanges != null) {
final int pageRangeCount = pageRanges.length;
for (int i = 0; i < pageRangeCount; i++) {
PageRange pageRange = pageRanges[i];
if (PageRange.ALL_PAGES.equals(pageRange)) {
return layoutPageCount;
}
pageCount += pageRange.getSize();
}
}
return pageCount;
|
public static boolean | isAllPages(android.print.PageRange[] pageRanges, int pageCount)
final int pageRangeCount = pageRanges.length;
for (int i = 0; i < pageRangeCount; i++) {
PageRange pageRange = pageRanges[i];
if (isAllPages(pageRange, pageCount)) {
return true;
}
}
return false;
|
public static boolean | isAllPages(android.print.PageRange pageRanges, int pageCount)
return pageRanges.getStart() == 0 && pageRanges.getEnd() == pageCount - 1;
|
public static boolean | isAllPages(android.print.PageRange[] pageRanges)
final int pageRangeCount = pageRanges.length;
for (int i = 0; i < pageRangeCount; i++) {
PageRange pageRange = pageRanges[i];
if (isAllPages(pageRange)) {
return true;
}
}
return false;
|
public static boolean | isAllPages(android.print.PageRange pageRange)
return PageRange.ALL_PAGES.equals(pageRange);
|
public static android.print.PageRange[] | normalize(android.print.PageRange[] pageRanges)Normalizes a page range, which is the resulting page ranges are
non-overlapping with the start lesser than or equal to the end
and ordered in an ascending order.
if (pageRanges == null) {
return null;
}
final int oldRangeCount = pageRanges.length;
if (oldRangeCount <= 1) {
return pageRanges;
}
Arrays.sort(pageRanges, sComparator);
int newRangeCount = 1;
for (int i = 0; i < oldRangeCount - 1; i++) {
PageRange currentRange = pageRanges[i];
PageRange nextRange = pageRanges[i + 1];
if (currentRange.getEnd() + 1 >= nextRange.getStart()) {
pageRanges[i] = null;
pageRanges[i + 1] = new PageRange(currentRange.getStart(),
Math.max(currentRange.getEnd(), nextRange.getEnd()));
} else {
newRangeCount++;
}
}
if (newRangeCount == oldRangeCount) {
return pageRanges;
}
int normalRangeIndex = 0;
PageRange[] normalRanges = new PageRange[newRangeCount];
for (int i = 0; i < oldRangeCount; i++) {
PageRange normalRange = pageRanges[i];
if (normalRange != null) {
normalRanges[normalRangeIndex] = normalRange;
normalRangeIndex++;
}
}
return normalRanges;
|
public static void | offset(android.print.PageRange[] pageRanges, int offset)Offsets a the start and end of page ranges with the given value.
if (offset == 0) {
return;
}
final int pageRangeCount = pageRanges.length;
for (int i = 0; i < pageRangeCount; i++) {
final int start = pageRanges[i].getStart() + offset;
final int end = pageRanges[i].getEnd() + offset;
pageRanges[i] = new PageRange(start, end);
}
|