void BufferWidget::doMoveBufferRight() { int f = tabWidget->currentIndex(); int t = f + 1; if(t >= tabWidget->count()) return; moveBuffer(f, t); tabWidget->setCurrentIndex(t); }
void BufferWidget::doMoveBufferLeft() { int f = tabWidget->currentIndex(); int t = f - 1; if(t < 0) return; moveBuffer(f, t); tabWidget->setCurrentIndex(t); }
void ImageAlphaLut::setOffsetAndSize() { // 设置偏移 for (int i = 0; i < _width; ++i) { // 从左边列开始,一列一列遍历 for (int j = 0 ; j < _height; ++j) { if (getPixelAlpha(i + j * _width)) { // 若有像素,则设置 X 偏移为当前列 _offsetX = i; goto OFFSETX; } } } OFFSETX: for (int i = 0; i < _height; ++i) { // 从上面第一行开始,一行一行遍历 for (int j = 0 ; j < _width; ++j) { if (getPixelAlpha(j + i * _width)) { // 若有像素,则设置 Y 偏移为当前行 _offsetY = i; goto OFFSETY; } } } OFFSETY: auto size = _width * _height; // 设置宽高 // 从右面开始 列 遍历到 X 偏移 for (int i = 0; i < _width - _offsetX; ++i) { // 从下面开始 遍历 列像素 for (int j = 0; j < _height - _offsetY ; ++j) { // 若有像素, 设置宽 i - X 偏移 if (getPixelAlpha(size - 1 - i - j * _width)) { _offsetWidth = _width - _offsetX - i; goto UPWIDTH; } } } UPWIDTH: auto offsetSize = size - 1 - ( _width - _offsetX - _offsetWidth ); // 从下面开始遍历到 Y 偏移 for (int i = 0 ; i < _height - _offsetY; ++i) { // 从右面开始 遍历 行 像素 for (int j = 0; j < _offsetWidth; ++j) { // 若有像素, 设置高 - Y 偏移 if (getPixelAlpha( offsetSize - j - i * _width )) { _offsetHeight = _height - _offsetY - i; goto UPHEIGHT; } } } UPHEIGHT: // 设置偏移 _isOptimize = true; // 更新 BUFF moveBuffer(); }