void StackLayout::processLine(uint8_t *pixelData, int dataOffset)
{
	if (itemNr < 0)
		return;
	if (itemScanLine >= getItemHeight(itemNr)) {
		itemScanLine = 0;
		if (--itemNr < 0)
			return;
		currentNumberWidth = getNumberWidth(itemNr + firstLevelVisible);
	}
	DisplayItem *item = NULL;
	if (itemNr < getItems().getLength())
		item = getItems().getAt(itemNr);
	if (itemScanLine == 0 && item) {
		if (drawOffsetX <= item->getX())
			item->initLineScanning(0, 0, drawWidth - item->getX());
		else
			item->initLineScanning(0, drawOffsetX - item->getX(), drawWidth);
	}

	if (itemNr > 0)
		drawNumber(pixelData, dataOffset, itemNr + firstLevelVisible);
	if (item != NULL && isItemVisible(item)) {
		if (itemScanLine < item->getHeight()) {
			if (drawOffsetX <= item->getX())
				item->processLine(pixelData, dataOffset + item->getX() - drawOffsetX);
			else
				item->processLine(pixelData, dataOffset);
		}
	}

	itemScanLine++;
}
void StackLayout::initLineScanning(int scanLine, int drawOffsetX, int drawWidth)
{
	itemNr = upperItemNr;
	itemScanLine = upperItemScanStart + scanLine;
	while (itemScanLine > getItemHeight(itemNr)) {
		itemScanLine -= getItemHeight(itemNr);
		itemNr--;
	}
	this->drawOffsetX = drawOffsetX;
	this->drawWidth = drawWidth;
	currentNumberWidth = getNumberWidth(itemNr + firstLevelVisible);
	DisplayItem *item = NULL;
	if (itemNr < getItems().getLength())
		item = getItems().getAt(itemNr);
	if (item) {
		if (drawOffsetX <= item->getX())
			item->initLineScanning(scanLine - item->getY(), 0, drawWidth - item->getX());
		else
			item->initLineScanning(scanLine - item->getY(), drawOffsetX - item->getX(), drawWidth);
	}
}