Example #1
0
void BufferWidget::doMoveBufferRight()
{
	int f = tabWidget->currentIndex();
	int t = f + 1;

	if(t >= tabWidget->count())
		return;

	moveBuffer(f, t);
	tabWidget->setCurrentIndex(t);
}
Example #2
0
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();
}