void TabletSupport::start() { if(hasDevice()) { auto dispacher = QAbstractEventDispatcher::instance(window_->thread()); dispacher->installNativeEventFilter(this); } }
TabletSupport::TabletSupport(QWidget *window) :wintab_module(nullptr), window_(window), logContext(nullptr) { if(!loadWintab()) { return; } if(!mapWintabFuns()){ qCritical()<<"Error with function mapping!"; return; } if(!hasDevice()){ qCritical()<<"No Device found!"; return; } logContext = new tagLOGCONTEXTA; auto handle = (HWND)window_->winId(); callFunc().ptrWTInfoA(WTI_DEFSYSCTX, 0, logContext); logContext->lcOptions |= CXO_MESSAGES; logContext->lcMoveMask = PACKETDATA; logContext->lcBtnUpMask = logContext->lcBtnDnMask; AXIS TabletX; AXIS TabletY; callFunc().ptrWTInfoA( WTI_DEVICES, DVC_X, &TabletX ); callFunc().ptrWTInfoA( WTI_DEVICES, DVC_Y, &TabletY ); logContext->lcInOrgX = 0; logContext->lcInOrgY = 0; logContext->lcInExtX = TabletX.axMax; logContext->lcInExtY = TabletY.axMax; /* output the data in screen coords */ logContext->lcOutOrgX = logContext->lcOutOrgY = 0; logContext->lcOutExtX = GetSystemMetrics(SM_CXSCREEN); /* move origin to upper left */ logContext->lcOutExtY = -GetSystemMetrics(SM_CYSCREEN); logContext->lcPktData = PACKETDATA; logContext->lcPktMode = PACKETMODE; tabapis.context_ = callFunc().ptrWTOpenA(handle, (LPLOGCONTEXTA)logContext, true); }
void Tool::play(char **argv) { AudioDevice *dev; PlayStream playfile; const char *path = *argv; Linear buffer; Info info; unsigned bufcount, pages; dev = getDevice(); if(!hasDevice() && !dev) { cerr << "no device supported" << endl; exit(-1); } else if(!dev) { cerr << "device unavailable" << endl; exit(-1); } playfile.open(argv); if(!playfile.isOpen()) { cerr << "audiotool: " << path << ": unable to access" << endl; exit(-1); } if(!playfile.isStreamable()) { cerr << "audiotool: " << path << ": missing needed codec" << endl; exit(-1); } playfile.getInfo(&info); if(!dev->setAudio((Rate)info.rate, isStereo(info.encoding), 10)) { cerr << "audiotool: sound device does not support rate" << endl; exit(-1); } bufcount = playfile.getCount(); if(isStereo(info.encoding)) buffer = new Sample[bufcount * 2]; else buffer = new Sample[bufcount]; for(;;) { if(isStereo(info.encoding)) pages = playfile.getStereo(buffer, 1); else pages = playfile.getMono(buffer, 1); if(!pages) break; dev->putSamples(buffer, bufcount); } dev->sync(); delete dev; playfile.close(); exit(0); }