Esempio n. 1
0
void PrintNextImage(volatile void *uselessParameter)
{
    _receivingImage = 0;

    if (previousFileIsValid)
    {
        uint16_t stringLength = strlen(fno.fname) + 1;
        MemCopy(fno.fname, previousFileName, 0, 0, stringLength);
    }

    FRESULT res;
    res = pf_readdir(&dir, &fno);

    if (res == FR_NO_FILE)
    {
        char *rootDir = " ";
        pf_opendir(&dir, rootDir);

        res = pf_readdir(&dir, &fno);
        if (res == FR_NO_FILE)
        {
            return;
        }
    }

    if (!CheckBMPImage(fno.fname))
    {
        previousFileIsValid = true;
        PrintImage(fno.fname);
    }
}
Esempio n. 2
0
void PrintPreviousImage(volatile void *uselessParameter)
{
    _receivingImage = false;

    if (previousFileIsValid)
    {
        if (!CheckBMPImage(previousFileName))
        {
            PrintImage(previousFileName);
        }
    }
}
Esempio n. 3
0
bool CPrintFolder::PrintPage(CDCHandle dc, UINT nPage)
{
	try
	{
		IW::FolderPtr pFolder = _state.Folder.GetFolder();

		int nBkMode = dc.SetBkMode(TRANSPARENT);
		COLORREF clrTextColor = dc.SetTextColor(RGB(0,0,0));
		int nImageRows = m_bPrintOnePerPage ? 1 : _sizeRowsColumns.cy;
		int nImageColumns = m_bPrintOnePerPage ? 1 : _sizeRowsColumns.cx;
		int nImagePerPage = nImageColumns * nImageRows;
		int nMin = nImagePerPage * nPage;
		int nMax = nMin + nImagePerPage;
		int nImage = 0;
		long nNormalCount = pFolder->GetItemCount();
		bool bImage = false;
		bool bSelected = false;
		//bool bIsPreview = OBJ_ENHMETADC == GetObjectType(dc);

		for(int i = 0; i < nNormalCount; i++)
		{
			_pStatus->SetHighLevelProgress(i, nNormalCount);

			bImage = pFolder->IsItemImage(i);
			bSelected = pFolder->IsItemSelected(i);
			
			// Only process if image
			if (bImage && 
				(!m_bPrintSelected || bSelected))
			{
				if (nImage >= nMin && nImage < nMax)
				{
					int nImageThisPage = nImage - nMin;

					CPoint point;
					point.x = _rectExtents.left + (_sizeSection.cx * (nImageThisPage % nImageColumns));
					point.y = _rectExtents.top + (_sizeSection.cy * (nImageThisPage / nImageColumns));
					
					if (m_bShowHeader)
					{
						point.y += m_nHeaderHeight;
					}

					IW::FolderItemLock pItem(pFolder, i);
					if (!PrintImage(dc, pItem, point))
						return false;
				}

				nImage++;
			}			
		}		

		dc.SetBkMode(nBkMode);
		dc.SetTextColor(clrTextColor);
	}
	catch(_com_error &e) 
	{
		IW::CMessageBoxIndirect mb;
		mb.ShowException(IDS_LOW_LEVEL_ERROR_FMT, e);
	}

	return true;
}