void KTBrushEditor::paintEvent(QPaintEvent *e) { QFrame::paintEvent(e); if ( m_editor->editing ) { QImage *editArea = displayDevice(); QPainter painter( editArea ) ; painter.setRenderHint(QPainter::Antialiasing); painter.setPen(Qt::black); editArea->fill(qRgb(255, 255, 255)); painter.save(); drawEditor(&painter); painter.restore(); painter.end(); painter.begin(this); painter.translate(QPoint(width()/2-50, (height() - editArea->height())/2 )); painter.drawImage(QPoint(0, 0), *editArea); painter.drawRect(editArea->rect()); } else { DDisplayPath::paintEvent(e); } }
int main(int argc, wchar_t* argv[]) { bool all = false; bool systemDriveSource = false; DWORD flags = 0; std::wstring sourcePath; std::wstring targetPath; argc--; argv++; //Remove program name while(argc) { //Accept if it's a switch -- that is, it begins with - or / if (wcslen(argv[0]) > 1 && (argv[0][0] == L'-' || argv[0][0] == L'/')) { //Loop through specified switches. for (wchar_t * strIt = argv[0] + 1; strIt != argv[0] + wcslen(argv[0]); strIt++) { switch (*strIt) { case L'A': case L'a': all = true; break; case L'S': case L's': systemDriveSource = true; break; case L'R': case L'r': flags |= DDD_RAW_TARGET_PATH; break; case L'D': case L'd': flags |= DDD_REMOVE_DEFINITION; break; case L'E': case L'e': flags |= DDD_EXACT_MATCH_ON_REMOVE; break; case L'N': case L'n': flags |= DDD_NO_BROADCAST_SYSTEM; default: throw std::runtime_error("Unrecognised option to DOSDEV!"); } } } else //NOT a switch { sourcePath = argv[0]; if (argc > 1) { targetPath = argv[1]; } break; //Commandline processing finished, break out of the FOR } argc--; argv++; } if (systemDriveSource) { wchar_t systemDrive[4]; targetPath = sourcePath; if (!ExpandEnvironmentStrings(L"%SYSTEMDRIVE%", systemDrive, 3)) throw std::runtime_error("Systemdrive could not be enumerated."); sourcePath.assign(systemDrive); } if (sourcePath.length()) //We are defining a device { DefineDosDevice(flags, sourcePath.c_str(), targetPath.empty() ? NULL : targetPath.c_str()); } //Print device list std::vector<std::wstring> driveStrings; wchar_t *drivesBuffer = NULL; DWORD error = 0; DWORD currentSize = 0; const DWORD incrementSize = 2048; do { delete [] drivesBuffer; currentSize += incrementSize; drivesBuffer = new wchar_t[currentSize]; error = QueryDosDevice(NULL, drivesBuffer, currentSize); } while (error == 0 && GetLastError() == ERROR_INSUFFICIENT_BUFFER); if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) return -1; for(wchar_t *bufferWalker = drivesBuffer; *bufferWalker; bufferWalker += wcslen(bufferWalker) + 1) { driveStrings.push_back(bufferWalker); } delete [] drivesBuffer; if (driveStrings.empty()) return 0; std::sort(driveStrings.begin(), driveStrings.end(), deviceSorter); std::vector<std::wstring>::const_iterator stringsWalker = driveStrings.begin(); for (; stringsWalker != driveStrings.end() && StringIsDriveLetter(*stringsWalker); stringsWalker++) { displayDevice(*stringsWalker); } if (all && stringsWalker != driveStrings.end()) { logger << L"\r\n"; for (; stringsWalker != driveStrings.end(); stringsWalker++) { displayDevice(*stringsWalker); } } #ifndef NDEBUG system("pause"); #endif return 0; }
QPoint KTBrushEditor::mapToEditor(const QPoint &p) { return p - QPoint( width()/2 - displayDevice()->width()/2, height()/2 - displayDevice()->height()/2); }