def createDragData(self):
self.drag = QtGui.QDrag(self)
data = QtCore.QMimeData()
wave_len = self.selection[1] + 1 - self.selection[0]
samples = self.current_data[self.selection[0] * 256 + self.offset:(self.selection[1] + 1) * 256 + self.offset]
data.setData('audio/wavesamples', samples)
data.setText(self.current_source)
path = QtGui.QPainterPath()
sampwidth_int = self.current_sampwidth_int / 2
path.moveTo(0, sampwidth_int - audioop.getsample(samples, self.current_sampwidth, 0))
for s in xrange(1, len(samples)/2):
path.lineTo(s, sampwidth_int - audioop.getsample(samples, self.current_sampwidth, s))
wave_size = self.main.wavetable_view.width() / 64
pixmap = QtGui.QPixmap(wave_size * wave_len, 48)
pixmap.fill(QtCore.Qt.transparent)
qp = QtGui.QPainter(pixmap)
qp.setRenderHints(qp.Antialiasing)
qp.scale((wave_size * wave_len / path.boundingRect().width()), 48. / self.current_sampwidth_int)
qp.drawPath(path)
qp.end()
self.drag.setPixmap(pixmap)
self.drag.setMimeData(data)
self.drag.exec_()
评论列表
文章目录